From 7aa203150fc1a2ec79c681c13f0d486d531746eb Mon Sep 17 00:00:00 2001 From: George Halkiadakis Date: Sun, 12 Mar 2023 23:57:48 +0200 Subject: error pages; js system to support back/front-end --- html/content/Fonts/CFAstyStd-Bold.woff2 | Bin 27476 -> 0 bytes html/content/Fonts/CFAstyStd-Book.woff2 | Bin 38112 -> 0 bytes html/content/Fonts/CFAstyStd-Medium.woff2 | Bin 27632 -> 0 bytes html/content/Fonts/iconfont.svg | 495 - html/content/Fonts/iconfont.ttf | Bin 52712 -> 0 bytes html/content/Fonts/iconfont.woff | Bin 32812 -> 0 bytes html/content/Fonts/iconfont.woff2 | Bin 28584 -> 0 bytes html/content/Media/atcom.svg | 48 - html/content/Media/email/check.png | Bin 2022 -> 0 bytes html/content/Media/email/product.jpg | Bin 4438 -> 0 bytes html/content/css/email.css | 478 - html/content/css/main.css | 14508 ------------------- html/content/css/main.min.css | 2 - html/content/css/overides.css | 18 - html/content/fonts/CFAstyStd-Bold.woff | Bin 36252 -> 0 bytes html/content/fonts/CFAstyStd-Bold.woff2 | Bin 27476 -> 0 bytes html/content/fonts/CFAstyStd-Book.woff | Bin 58604 -> 0 bytes html/content/fonts/CFAstyStd-Book.woff2 | Bin 38112 -> 0 bytes html/content/fonts/CFAstyStd-Medium.woff | Bin 36568 -> 0 bytes html/content/fonts/CFAstyStd-Medium.woff2 | Bin 27632 -> 0 bytes html/content/fonts/iconfont.svg | 495 - html/content/fonts/iconfont.ttf | Bin 52712 -> 0 bytes html/content/fonts/iconfont.woff | Bin 32812 -> 0 bytes html/content/fonts/iconfont.woff2 | Bin 28584 -> 0 bytes .../1243x385/jpg/files/pageTitleAnakoinoseis.jpg | Bin 394869 -> 0 bytes .../1243x385/jpg/files/pageTitleDiagonismoi.jpg | Bin 393490 -> 0 bytes .../1243x385/jpg/files/pageTitleKatalogoi.jpg | Bin 732690 -> 0 bytes .../1243x385/jpg/files/pageTitleKatastimata.jpg | Bin 425604 -> 0 bytes .../images/1243x385/jpg/files/pageTitleOrario.jpg | Bin 405802 -> 0 bytes html/content/images/1243x385/png/files/emarket.png | Bin 712842 -> 0 bytes .../images/140x42/png/Content/media/appstore.webp | Bin 1654 -> 0 bytes .../140x42/png/Content/media/googlePlay.webp | Bin 1594 -> 0 bytes .../300x300/png/Content/media/sampleProduct.jp2 | Bin 397 -> 0 bytes .../300x300/png/Content/media/sampleProduct.jpg | Bin 522 -> 0 bytes .../300x300/png/Content/media/sampleProduct.png | Bin 688 -> 0 bytes .../300x300/png/Content/media/sampleProduct.webp | Bin 226 -> 0 bytes .../h20/png/Content/media/cards/dinersClub.png | Bin 388 -> 0 bytes .../h20/png/Content/media/cards/dinersClub.webp | Bin 228 -> 0 bytes .../h20/png/Content/media/cards/mastercard.png | Bin 774 -> 0 bytes .../h20/png/Content/media/cards/mastercard.webp | Bin 388 -> 0 bytes .../images/h20/png/Content/media/cards/visa.png | Bin 726 -> 0 bytes .../images/h20/png/Content/media/cards/visa.webp | Bin 390 -> 0 bytes html/content/js/Cart/miniCart.js | 96 - html/content/js/Filters/filterStatus.js | 113 - html/content/js/Filters/filters.js | 110 - html/content/js/Filters/filtersBar.js | 32 - html/content/js/Filters/range.js | 98 - html/content/js/Forms/ajaxForm.js | 188 - html/content/js/Forms/clearinput.js | 16 - html/content/js/Forms/customValidators.js | 11 - html/content/js/Forms/password.js | 15 - html/content/js/Forms/select.js | 52 - html/content/js/Forms/serialize.js | 30 - html/content/js/Forms/textarea.js | 26 - html/content/js/Forms/validateform.js | 3 - html/content/js/Images/lazyload.js | 61 - html/content/js/Modals/modal.js | 6 - html/content/js/Plugins/accordion.js | 43 - html/content/js/Plugins/breadcrumb.js | 9 - html/content/js/Plugins/copy.js | 25 - html/content/js/Plugins/expand.js | 38 - html/content/js/Plugins/expandText.js | 5 - html/content/js/Plugins/fileinput.js | 20 - html/content/js/Plugins/gallery.js | 51 - html/content/js/Plugins/infoPopup.js | 8 - html/content/js/Plugins/initialize.js | 11 - html/content/js/Plugins/intersecting.js | 18 - html/content/js/Plugins/menu.js | 97 - html/content/js/Plugins/quantity.js | 55 - html/content/js/Plugins/scrollShadowHor.js | 42 - html/content/js/Plugins/scrollShadowVert.js | 57 - html/content/js/Plugins/tabs.js | 28 - html/content/js/Plugins/tabtoggle.js | 27 - html/content/js/Plugins/tooltip.js | 45 - html/content/js/Products/productHeader.js | 21 - html/content/js/Products/productImageModal.js | 47 - html/content/js/Products/productattr.js | 11 - html/content/js/Sliders/productsSlider.js | 45 - html/content/js/Sliders/slider.js | 42 - html/content/js/Utils/Event.js | 13 - html/content/js/Utils/EventUtils.js | 75 - html/content/js/Utils/apiready.js | 15 - html/content/js/Utils/confirm.js | 27 - html/content/js/Utils/debounce.js | 16 - html/content/js/Utils/defineApi.js | 9 - html/content/js/Utils/destroyevent.js | 11 - html/content/js/Utils/dom.js | 68 - html/content/js/Utils/domHelper.js | 375 - html/content/js/Utils/enabled.js | 6 - html/content/js/Utils/getApis.js | 17 - html/content/js/Utils/throttle.js | 15 - html/content/js/Utils/whenAll.js | 13 - html/content/js/Wishlist/wishlistbutton.js | 25 - html/content/lib/current-device.min.js | 2 - html/content/lib/emitter/dist/emitter.js | 88 - .../jquery.validate.unobtrusive.js | 432 - .../jquery-validation/dist/additional-methods.js | 1158 -- .../lib/jquery-validation/dist/jquery.validate.js | 1601 -- html/content/lib/jquery/dist/jquery.js | 10872 -------------- html/content/lib/nouislider.min.js | 1 - html/content/lib/plugins/plugins.js | 1130 -- html/content/lib/plugins/plugins.min.js | 1 - html/content/lib/plugins/plugins.setup.js | 178 - html/content/lib/require/AttributePlugin.js | 138 - html/content/lib/require/Require.js | 848 -- html/content/lib/require/plugins.attribute.js | 219 - .../content/lib/require/plugins.attribute.setup.js | 94 - html/content/lib/require/require.files.js | 75 - html/content/lib/require/require.slim.js | 492 - html/content/lib/swiper-bundle.min.js | 14 - html/content/lib/wNumb.min.js | 1 - html/content/media/badges/aplesprakseislogo.svg | 52 - html/content/media/badges/new.svg | 4 - html/content/media/content/omilos-sklaveniti.png | Bin 89090 -> 0 bytes html/content/media/delivery.svg | 24 - html/content/media/deliverySuccess.svg | 22 - html/content/media/exclusive.svg | 5 - html/content/media/icon-mylists-tennis.svg | 1 - html/content/media/icon-mylists-xmas.svg | 5 - html/content/media/logo.svg | 16 - html/content/media/logoWhite.svg | 16 - html/content/media/notsupported.svg | 347 - html/content/media/orderFail.svg | 23 - html/content/media/pickup.svg | 28 - html/content/media/powered-by-google-on-white3.png | Bin 1616 -> 0 bytes html/content/media/secure.png | Bin 1346 -> 0 bytes html/content/media/sklavenitisMask.svg | 15 - html/content/media/tags/bio.svg | 4 - html/content/media/tags/noglutten.svg | 4 - html/content/media/tags/nolaktose.svg | 5 - html/content/media/tags/pge.svg | 54 - html/content/media/tags/vegan.svg | 4 - html/content/media/tickFilled.svg | 4 - html/content/media/wood.png | Bin 27162 -> 0 bytes 134 files changed, 36308 deletions(-) delete mode 100644 html/content/Fonts/CFAstyStd-Bold.woff2 delete mode 100644 html/content/Fonts/CFAstyStd-Book.woff2 delete mode 100644 html/content/Fonts/CFAstyStd-Medium.woff2 delete mode 100644 html/content/Fonts/iconfont.svg delete mode 100644 html/content/Fonts/iconfont.ttf delete mode 100644 html/content/Fonts/iconfont.woff delete mode 100644 html/content/Fonts/iconfont.woff2 delete mode 100644 html/content/Media/atcom.svg delete mode 100644 html/content/Media/email/check.png delete mode 100644 html/content/Media/email/product.jpg delete mode 100644 html/content/css/email.css delete mode 100644 html/content/css/main.css delete mode 100644 html/content/css/main.min.css delete mode 100644 html/content/css/overides.css delete mode 100644 html/content/fonts/CFAstyStd-Bold.woff delete mode 100644 html/content/fonts/CFAstyStd-Bold.woff2 delete mode 100644 html/content/fonts/CFAstyStd-Book.woff delete mode 100644 html/content/fonts/CFAstyStd-Book.woff2 delete mode 100644 html/content/fonts/CFAstyStd-Medium.woff delete mode 100644 html/content/fonts/CFAstyStd-Medium.woff2 delete mode 100644 html/content/fonts/iconfont.svg delete mode 100644 html/content/fonts/iconfont.ttf delete mode 100644 html/content/fonts/iconfont.woff delete mode 100644 html/content/fonts/iconfont.woff2 delete mode 100644 html/content/images/1243x385/jpg/files/pageTitleAnakoinoseis.jpg delete mode 100644 html/content/images/1243x385/jpg/files/pageTitleDiagonismoi.jpg delete mode 100644 html/content/images/1243x385/jpg/files/pageTitleKatalogoi.jpg delete mode 100644 html/content/images/1243x385/jpg/files/pageTitleKatastimata.jpg delete mode 100644 html/content/images/1243x385/jpg/files/pageTitleOrario.jpg delete mode 100644 html/content/images/1243x385/png/files/emarket.png delete mode 100644 html/content/images/140x42/png/Content/media/appstore.webp delete mode 100644 html/content/images/140x42/png/Content/media/googlePlay.webp delete mode 100644 html/content/images/300x300/png/Content/media/sampleProduct.jp2 delete mode 100644 html/content/images/300x300/png/Content/media/sampleProduct.jpg delete mode 100644 html/content/images/300x300/png/Content/media/sampleProduct.png delete mode 100644 html/content/images/300x300/png/Content/media/sampleProduct.webp delete mode 100644 html/content/images/h20/png/Content/media/cards/dinersClub.png delete mode 100644 html/content/images/h20/png/Content/media/cards/dinersClub.webp delete mode 100644 html/content/images/h20/png/Content/media/cards/mastercard.png delete mode 100644 html/content/images/h20/png/Content/media/cards/mastercard.webp delete mode 100644 html/content/images/h20/png/Content/media/cards/visa.png delete mode 100644 html/content/images/h20/png/Content/media/cards/visa.webp delete mode 100644 html/content/js/Cart/miniCart.js delete mode 100644 html/content/js/Filters/filterStatus.js delete mode 100644 html/content/js/Filters/filters.js delete mode 100644 html/content/js/Filters/filtersBar.js delete mode 100644 html/content/js/Filters/range.js delete mode 100644 html/content/js/Forms/ajaxForm.js delete mode 100644 html/content/js/Forms/clearinput.js delete mode 100644 html/content/js/Forms/customValidators.js delete mode 100644 html/content/js/Forms/password.js delete mode 100644 html/content/js/Forms/select.js delete mode 100644 html/content/js/Forms/serialize.js delete mode 100644 html/content/js/Forms/textarea.js delete mode 100644 html/content/js/Forms/validateform.js delete mode 100644 html/content/js/Images/lazyload.js delete mode 100644 html/content/js/Modals/modal.js delete mode 100644 html/content/js/Plugins/accordion.js delete mode 100644 html/content/js/Plugins/breadcrumb.js delete mode 100644 html/content/js/Plugins/copy.js delete mode 100644 html/content/js/Plugins/expand.js delete mode 100644 html/content/js/Plugins/expandText.js delete mode 100644 html/content/js/Plugins/fileinput.js delete mode 100644 html/content/js/Plugins/gallery.js delete mode 100644 html/content/js/Plugins/infoPopup.js delete mode 100644 html/content/js/Plugins/initialize.js delete mode 100644 html/content/js/Plugins/intersecting.js delete mode 100644 html/content/js/Plugins/menu.js delete mode 100644 html/content/js/Plugins/quantity.js delete mode 100644 html/content/js/Plugins/scrollShadowHor.js delete mode 100644 html/content/js/Plugins/scrollShadowVert.js delete mode 100644 html/content/js/Plugins/tabs.js delete mode 100644 html/content/js/Plugins/tabtoggle.js delete mode 100644 html/content/js/Plugins/tooltip.js delete mode 100644 html/content/js/Products/productHeader.js delete mode 100644 html/content/js/Products/productImageModal.js delete mode 100644 html/content/js/Products/productattr.js delete mode 100644 html/content/js/Sliders/productsSlider.js delete mode 100644 html/content/js/Sliders/slider.js delete mode 100644 html/content/js/Utils/Event.js delete mode 100644 html/content/js/Utils/EventUtils.js delete mode 100644 html/content/js/Utils/apiready.js delete mode 100644 html/content/js/Utils/confirm.js delete mode 100644 html/content/js/Utils/debounce.js delete mode 100644 html/content/js/Utils/defineApi.js delete mode 100644 html/content/js/Utils/destroyevent.js delete mode 100644 html/content/js/Utils/dom.js delete mode 100644 html/content/js/Utils/domHelper.js delete mode 100644 html/content/js/Utils/enabled.js delete mode 100644 html/content/js/Utils/getApis.js delete mode 100644 html/content/js/Utils/throttle.js delete mode 100644 html/content/js/Utils/whenAll.js delete mode 100644 html/content/js/Wishlist/wishlistbutton.js delete mode 100644 html/content/lib/current-device.min.js delete mode 100644 html/content/lib/emitter/dist/emitter.js delete mode 100644 html/content/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js delete mode 100644 html/content/lib/jquery-validation/dist/additional-methods.js delete mode 100644 html/content/lib/jquery-validation/dist/jquery.validate.js delete mode 100644 html/content/lib/jquery/dist/jquery.js delete mode 100644 html/content/lib/nouislider.min.js delete mode 100644 html/content/lib/plugins/plugins.js delete mode 100644 html/content/lib/plugins/plugins.min.js delete mode 100644 html/content/lib/plugins/plugins.setup.js delete mode 100644 html/content/lib/require/AttributePlugin.js delete mode 100644 html/content/lib/require/Require.js delete mode 100644 html/content/lib/require/plugins.attribute.js delete mode 100644 html/content/lib/require/plugins.attribute.setup.js delete mode 100644 html/content/lib/require/require.files.js delete mode 100644 html/content/lib/require/require.slim.js delete mode 100644 html/content/lib/swiper-bundle.min.js delete mode 100644 html/content/lib/wNumb.min.js delete mode 100644 html/content/media/badges/aplesprakseislogo.svg delete mode 100644 html/content/media/badges/new.svg delete mode 100644 html/content/media/content/omilos-sklaveniti.png delete mode 100644 html/content/media/delivery.svg delete mode 100644 html/content/media/deliverySuccess.svg delete mode 100644 html/content/media/exclusive.svg delete mode 100644 html/content/media/icon-mylists-tennis.svg delete mode 100644 html/content/media/icon-mylists-xmas.svg delete mode 100644 html/content/media/logo.svg delete mode 100644 html/content/media/logoWhite.svg delete mode 100644 html/content/media/notsupported.svg delete mode 100644 html/content/media/orderFail.svg delete mode 100644 html/content/media/pickup.svg delete mode 100644 html/content/media/powered-by-google-on-white3.png delete mode 100644 html/content/media/secure.png delete mode 100644 html/content/media/sklavenitisMask.svg delete mode 100644 html/content/media/tags/bio.svg delete mode 100644 html/content/media/tags/noglutten.svg delete mode 100644 html/content/media/tags/nolaktose.svg delete mode 100644 html/content/media/tags/pge.svg delete mode 100644 html/content/media/tags/vegan.svg delete mode 100644 html/content/media/tickFilled.svg delete mode 100644 html/content/media/wood.png (limited to 'html/content') diff --git a/html/content/Fonts/CFAstyStd-Bold.woff2 b/html/content/Fonts/CFAstyStd-Bold.woff2 deleted file mode 100644 index 1e64724..0000000 Binary files a/html/content/Fonts/CFAstyStd-Bold.woff2 and /dev/null differ diff --git a/html/content/Fonts/CFAstyStd-Book.woff2 b/html/content/Fonts/CFAstyStd-Book.woff2 deleted file mode 100644 index 0dd75b1..0000000 Binary files a/html/content/Fonts/CFAstyStd-Book.woff2 and /dev/null differ diff --git a/html/content/Fonts/CFAstyStd-Medium.woff2 b/html/content/Fonts/CFAstyStd-Medium.woff2 deleted file mode 100644 index 8067163..0000000 Binary files a/html/content/Fonts/CFAstyStd-Medium.woff2 and /dev/null differ diff --git a/html/content/Fonts/iconfont.svg b/html/content/Fonts/iconfont.svg deleted file mode 100644 index eefc590..0000000 --- a/html/content/Fonts/iconfont.svg +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/html/content/Fonts/iconfont.ttf b/html/content/Fonts/iconfont.ttf deleted file mode 100644 index af098dd..0000000 Binary files a/html/content/Fonts/iconfont.ttf and /dev/null differ diff --git a/html/content/Fonts/iconfont.woff b/html/content/Fonts/iconfont.woff deleted file mode 100644 index 28f14dd..0000000 Binary files a/html/content/Fonts/iconfont.woff and /dev/null differ diff --git a/html/content/Fonts/iconfont.woff2 b/html/content/Fonts/iconfont.woff2 deleted file mode 100644 index 278d0e1..0000000 Binary files a/html/content/Fonts/iconfont.woff2 and /dev/null differ diff --git a/html/content/Media/atcom.svg b/html/content/Media/atcom.svg deleted file mode 100644 index e1c72d6..0000000 --- a/html/content/Media/atcom.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/html/content/Media/email/check.png b/html/content/Media/email/check.png deleted file mode 100644 index b342400..0000000 Binary files a/html/content/Media/email/check.png and /dev/null differ diff --git a/html/content/Media/email/product.jpg b/html/content/Media/email/product.jpg deleted file mode 100644 index fe05396..0000000 Binary files a/html/content/Media/email/product.jpg and /dev/null differ diff --git a/html/content/css/email.css b/html/content/css/email.css deleted file mode 100644 index 0bb6d48..0000000 --- a/html/content/css/email.css +++ /dev/null @@ -1,478 +0,0 @@ -p { - margin: 10px 0; - padding: 0; - color: #0E0C0C; - font-family: Arial, Helvetica, sans-serif; - font-style: normal; - font-weight: normal; - font-size: 15px; - line-height: 24px; - letter-spacing: normal; -} - -table { - border-collapse: collapse; -} - -h1, h2, h3, h4, h5, h6 { - display: block; - margin: 0; - padding: 0; -} - -img, a img { - border: 0; - height: auto; - outline: none; - text-decoration: none; -} - -body, #bodyTable, #bodyCell { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.mcnPreviewText { - display: none !important; -} - -#outlook a { - padding: 0; -} - -img { - -ms-interpolation-mode: bicubic; -} - -table { - mso-table-lspace: 0pt; - mso-table-rspace: 0pt; -} - -.ReadMsgBody { - width: 100%; -} - -.ExternalClass { - width: 100%; -} - -p, a, li, td, blockquote { - mso-line-height-rule: exactly; -} - - a[href^=tel], a[href^=sms] { - color: inherit; - cursor: default; - text-decoration: none; - } - -p, a, li, td, body, table, blockquote { - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -.ExternalClass, .ExternalClass p, .ExternalClass td, .ExternalClass div, .ExternalClass span, .ExternalClass font { - line-height: 100%; -} - -a[x-apple-data-detectors] { - color: inherit !important; - text-decoration: none !important; - font-size: inherit !important; - font-family: inherit !important; - font-weight: inherit !important; - line-height: inherit !important; -} - -.templateContainer { - max-width: 700px !important; -} - -a.mcnButton { - display: block; -} - -.mcnImage, .mcnRetinaImage { - vertical-align: bottom; -} - -.mcnTextContent { - word-break: break-word; -} - - .mcnTextContent img { - height: auto !important; - } - -.mcnDividerBlock { - table-layout: fixed !important; -} - -.noBorder { - border: none !important; -} - -h1 { - color: #333333; - font-family: Arial, Helvetica, sans-serif; - font-size: 16px; - font-style: normal; - font-weight: bold; - line-height: 24px; - letter-spacing: -0.02em; - text-align: center; - padding-bottom: 14px; -} - -h2 { - color: #0E0C0C; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - font-style: normal; - font-weight: bold; - line-height: 30px; - letter-spacing: normal; - text-align: center; - text-transform: uppercase; - padding-bottom: 8px; -} - -h3 { - color: #0E0C0C; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - font-style: normal; - font-weight: bold; - line-height: 30px; - letter-spacing: normal; - text-align: center; - text-transform: uppercase; - padding-bottom: 8px; -} - -h4 { - color: #0E0C0C; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - font-style: normal; - font-weight: bold; - line-height: 30px; - letter-spacing: normal; - text-align: center; - text-transform: uppercase; - padding-bottom: 8px; -} - - h1 span, - h2 span, - h3 span, - h4 span { - font-weight: normal; - text-transform: none; - } - -#templateHeader { - background-color: #ffffff; - background-image: none; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - border-top: 0; - border-bottom: 1px solid #e3e3e3; - padding-top: 0px; - padding-bottom: 20px; -} - - #templateHeader.default { - border: none; - padding: 0; - } - -.headerContainer { - background-color: transparent; - background-image: none; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - border-top: 0; - border-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} - - .headerContainer .mcnTextContent, .headerContainer .mcnTextContent p { - color: #757575; - font-family: Arial, Helvetica, sans-serif; - font-size: 16px; - line-height: 150%; - text-align: left; - } - - .headerContainer .mcnTextContent a, .headerContainer .mcnTextContent p a { - color: #007C89; - font-weight: normal; - text-decoration: underline; - } - -#templateBody { - background-color: #ffffff; - background-image: none; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - border-top: 0; - border-bottom: 0; - padding-top: 24px; - padding-bottom: 32px; -} - - #templateBody a { - color: #F47920; - text-decoration: none; - } - - #templateBody p { - margin: 0; - color: #333333; - font-family: Arial, Helvetica, sans-serif; - font-size: 15px; - font-style: normal; - font-weight: normal; - line-height: 22px; - letter-spacing: -0.02em; - padding-bottom: 5px; - } - -#templateBodyMsg p { - max-width: 586px; -} - -.bodyContainer { - background-color: transparent; - background-image: none; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - border-top: 0; - border-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} - - .bodyContainer .mcnTextContent, - .bodyContainer .mcnTextContent p { - color: #333333; - font-family: Arial, Helvetica, sans-serif; - font-size: 15px; - line-height: 150%; - text-align: left; - } - - .bodyContainer .mcnTextContent a, - .bodyContainer .mcnTextContent p a { - color: #F47920; - font-weight: normal; - text-decoration: underline; - } - -#templateAfterFooter p { - margin: 0; - color: #333333; - font-family: Arial, Helvetica, sans-serif; - font-size: 13px; - font-style: normal; - font-weight: normal; - line-height: 24px; - letter-spacing: 0.02em; -} - - #templateAfterFooter p a { - margin: 0; - color: #F47920; - font-family: Arial, Helvetica, sans-serif; - font-size: 13px; - font-style: normal; - font-weight: normal; - line-height: 24px; - letter-spacing: 0.02em; - } - -#templateFooter { - background-color: #333333; - background-image: none; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - border-top: 0; - border-bottom: 0; - padding-top: 16px; - padding-bottom: 16px; -} - -.footerContainer { - background-color: transparent; - background-image: none; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - border-top: 0; - border-bottom: 0; - padding-top: 0px; - padding-bottom: 0px; - max-width: 700px !important; -} - - .footerContainer .bodyContainer { - padding: 0 30px; - } - - .footerContainer ul { - padding: 0; - margin: 0; - list-style-type: none; - text-align: center; - } - - .footerContainer ul li { - display: inline-block; - margin-right: 30px; - } - - .footerContainer ul li:last-child { - margin-right: 0; - } - - .footerContainer .mcnTextBlockInner, - .footerContainer .mcnTextBlockInner p { - color: #FFF; - font-family: Arial, Helvetica, sans-serif; - font-size: 15px; - line-height: 24px; - letter-spacing: 0.02em; - } - - .footerContainer .mcnTextBlockInner a, - .footerContainer .mcnTextBlockInner p a { - color: #FFF; - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - line-height: 18px; - text-decoration: none; - } - -.templateHeroContainer { - max-width: 700px; -} - -.heroContainer { - position: relative; -} - - .heroContainer img { - display: block; - width: 100%; - height: auto; - } - - .heroContainer p { - color: #FFF; - font-family: Arial, Helvetica, sans-serif; - font-size: 40px; - line-height: 50px; - letter-spacing: -0.02em; - text-transform: uppercase; - padding: 0 120px; - position: absolute; - left: 0; - bottom: 80px; - width: 100%; - text-align: center; - font-weight: normal; - margin: 0; - } - -#templateProducts { - padding: 0 0 90px; -} - - #templateProducts .mcnTextBlockInner { - padding: 0 20px; - } - - #templateProducts span { - display: block; - font-family: Arial, Helvetica, sans-serif; - font-size: 15px; - line-height: 24px; - font-weight: bold; - text-transform: uppercase; - padding-top: 10px; - } - -.column { - display: inline-block; - vertical-align: top; - width: 50%; -} - -.label { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - line-height: 24px; - font-weight: bold; - text-transform: uppercase; - color: #0E0C0C; - padding-bottom: 2px; -} - -strong { - font-family: Arial, Helvetica, sans-serif; - font-weight: bold; -} - -.tdMinWidth { - max-width: 310px; -} - -@media only screen and (max-width:700px) { - .templateContainer { - width: 360px !important; - } - - .bodyContainer { - padding-left: 0 !important; - padding-right: 0 !important; - } - - .footerContainer ul li { - display: block; - margin-right: 0; - margin-bottom: 16px; - } - - .footerContainer ul li:last-child { - margin-bottom: 0; - } - - .heroContainer p { - font-size: 30px; - line-height: 40px; - padding: 0 30px; - bottom: 30px; - } - - .tdMinWidth { - max-width: 200px; - } - - .halfColumn { - padding: 20px 10px 0 !important; - } -} - -/* td { - outline: 1px solid red; -}*/ \ No newline at end of file diff --git a/html/content/css/main.css b/html/content/css/main.css deleted file mode 100644 index be1dea5..0000000 --- a/html/content/css/main.css +++ /dev/null @@ -1,14508 +0,0 @@ -:root { - --top: 0px; - --windowHeight: 100%; - --productPadding: 16px; - --gridSpace: 48px; - --iconButtonSpace: 11px; - --headerHeight: 136px; - --fieldColumnSpace: 16px; - --fieldRowSpace: 20px; - --smallField: 130px; - --checkboxRadioSpace: 16px; - --inputBorderColor: #a6a6a6; - --inputLabelPadding: 16px; - --wrapperXXS: 816px; - --wrapperXS: 984px; - --wrapperS: 1142px; - --wrapper: 1240px; - --wrapperL: 1514px; - --wrapperFull: 1920px; - } /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - *, - *::before, - *::after { - box-sizing: border-box; - } - html { - line-height: 1.15; - -webkit-text-size-adjust: 100%; - } - body { - margin: 0; - -webkit-font-smoothing: antialiased; - } - h1 { - font-size: 2em; - margin: 0.67em 0; - } - hr { - box-sizing: content-box; - height: 0; - overflow: visible; - } - pre { - font-family: monospace, monospace; - font-size: 1em; - } - a { - background-color: transparent; - } - abbr[title] { - border-bottom: none; - text-decoration: underline; - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - } - b, - strong { - font-weight: bolder; - } - code, - kbd, - samp { - font-family: monospace, monospace; - font-size: 1em; - } - small { - font-size: 80%; - } - sub, - sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - sub { - bottom: -0.25em; - } - sup { - top: -0.5em; - } - img { - border-style: none; - } - button, - input, - optgroup, - select, - textarea { - font-family: inherit; - font-size: 100%; - line-height: 1.15; - margin: 0; - } - button, - input { - overflow: visible; - } - button, - select { - text-transform: none; - } - button, - [type="button"], - [type="reset"], - [type="submit"] { - -webkit-appearance: button; - } - button::-moz-focus-inner, - [type="button"]::-moz-focus-inner, - [type="reset"]::-moz-focus-inner, - [type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; - } - button:-moz-focusring, - [type="button"]:-moz-focusring, - [type="reset"]:-moz-focusring, - [type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; - } - fieldset { - padding: 0.35em 0.75em 0.625em; - } - legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; - } - progress { - vertical-align: baseline; - } - textarea { - overflow: auto; - } - [type="checkbox"], - [type="radio"] { - box-sizing: border-box; - padding: 0; - } - [type="number"]::-webkit-inner-spin-button, - [type="number"]::-webkit-outer-spin-button { - height: auto; - } - [type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; - } - [type="search"]::-webkit-search-decoration { - -webkit-appearance: none; - } - ::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; - } - details { - display: block; - } - summary { - display: list-item; - } - template { - display: none; - } - [hidden] { - display: none; - } - - .noUi-target, - .noUi-target * { - -webkit-touch-callout: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-user-select: none; - touch-action: none; - -ms-user-select: none; - -moz-user-select: none; - user-select: none; - box-sizing: border-box; - } - .noUi-target { - position: relative; - } - .noUi-base, - .noUi-connects { - width: 100%; - height: 100%; - position: relative; - z-index: 1; - } - .noUi-connects { - overflow: hidden; - z-index: 0; - } - .noUi-connect, - .noUi-origin { - will-change: transform; - position: absolute; - z-index: 1; - top: 0; - right: 0; - height: 100%; - width: 100%; - -ms-transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -webkit-transform-style: preserve-3d; - transform-origin: 0 0; - -webkit-transform-style: flat; - transform-style: flat; - } - .noUi-txt-dir-rtl.noUi-horizontal .noUi-origin { - left: 0; - right: auto; - } - .noUi-vertical .noUi-origin { - top: -100%; - width: 0; - } - .noUi-horizontal .noUi-origin { - height: 0; - } - .noUi-handle { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - position: absolute; - } - .noUi-touch-area { - height: 100%; - width: 100%; - } - .noUi-state-tap .noUi-connect, - .noUi-state-tap .noUi-origin { - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; - } - .noUi-state-drag * { - cursor: inherit !important; - } - .noUi-horizontal { - height: 18px; - } - .noUi-horizontal .noUi-handle { - width: 34px; - height: 28px; - right: -17px; - top: -6px; - } - .noUi-vertical { - width: 18px; - } - .noUi-vertical .noUi-handle { - width: 28px; - height: 34px; - right: -6px; - bottom: -17px; - } - .noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { - left: -17px; - right: auto; - } - .noUi-target { - background: #fafafa; - border-radius: 4px; - border: 1px solid #d3d3d3; - box-shadow: inset 0 1px 1px #f0f0f0, 0 3px 6px -5px #bbb; - } - .noUi-connects { - border-radius: 3px; - } - .noUi-connect { - background: #3fb8af; - } - .noUi-draggable { - cursor: ew-resize; - } - .noUi-vertical .noUi-draggable { - cursor: ns-resize; - } - .noUi-handle { - border: 1px solid #d9d9d9; - border-radius: 3px; - background: #fff; - cursor: default; - box-shadow: inset 0 0 1px #fff, inset 0 1px 7px #ebebeb, 0 3px 6px -3px #bbb; - } - .noUi-active { - box-shadow: inset 0 0 1px #fff, inset 0 1px 7px #ddd, 0 3px 6px -3px #bbb; - } - .noUi-handle:before, - .noUi-handle:after { - content: ""; - display: block; - position: absolute; - height: 14px; - width: 1px; - background: #e8e7e6; - left: 14px; - top: 6px; - } - .noUi-handle:after { - left: 17px; - } - .noUi-vertical .noUi-handle:before, - .noUi-vertical .noUi-handle:after { - width: 14px; - height: 1px; - left: 6px; - top: 14px; - } - .noUi-vertical .noUi-handle:after { - top: 17px; - } - [disabled] .noUi-connect { - background: #b8b8b8; - } - [disabled].noUi-target, - [disabled].noUi-handle, - [disabled] .noUi-handle { - cursor: not-allowed; - } - .noUi-pips, - .noUi-pips * { - box-sizing: border-box; - } - .noUi-pips { - position: absolute; - color: #999; - } - .noUi-value { - position: absolute; - white-space: nowrap; - text-align: center; - } - .noUi-value-sub { - color: #ccc; - font-size: 10px; - } - .noUi-marker { - position: absolute; - background: #ccc; - } - .noUi-marker-sub { - background: #aaa; - } - .noUi-marker-large { - background: #aaa; - } - .noUi-pips-horizontal { - padding: 10px 0; - height: 80px; - top: 100%; - left: 0; - width: 100%; - } - .noUi-value-horizontal { - -webkit-transform: translate(-50%, 50%); - transform: translate(-50%, 50%); - } - .noUi-rtl .noUi-value-horizontal { - -webkit-transform: translate(50%, 50%); - transform: translate(50%, 50%); - } - .noUi-marker-horizontal.noUi-marker { - margin-left: -1px; - width: 2px; - height: 5px; - } - .noUi-marker-horizontal.noUi-marker-sub { - height: 10px; - } - .noUi-marker-horizontal.noUi-marker-large { - height: 15px; - } - .noUi-pips-vertical { - padding: 0 10px; - height: 100%; - top: 0; - left: 100%; - } - .noUi-value-vertical { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - padding-left: 25px; - } - .noUi-rtl .noUi-value-vertical { - -webkit-transform: translate(0, 50%); - transform: translate(0, 50%); - } - .noUi-marker-vertical.noUi-marker { - width: 5px; - height: 2px; - margin-top: -1px; - } - .noUi-marker-vertical.noUi-marker-sub { - width: 10px; - } - .noUi-marker-vertical.noUi-marker-large { - width: 15px; - } - .noUi-tooltip { - display: block; - position: absolute; - border: 1px solid #d9d9d9; - border-radius: 3px; - background: #fff; - color: #000; - padding: 5px; - text-align: center; - white-space: nowrap; - } - .noUi-horizontal .noUi-tooltip { - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - left: 50%; - bottom: 120%; - } - .noUi-vertical .noUi-tooltip { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - top: 50%; - right: 120%; - } - .noUi-horizontal .noUi-origin > .noUi-tooltip { - -webkit-transform: translate(50%, 0); - transform: translate(50%, 0); - left: auto; - bottom: 10px; - } - .noUi-vertical .noUi-origin > .noUi-tooltip { - -webkit-transform: translate(0, -18px); - transform: translate(0, -18px); - top: auto; - right: 28px; - } - @font-face { - font-family: "swiper-icons"; - src: url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA"); - font-weight: 400; - font-style: normal; - } - :root { - --swiper-theme-color: #007aff; - } - .swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - z-index: 1; - } - .swiper-vertical > .swiper-wrapper { - flex-direction: column; - } - .swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: -webkit-transform; - transition-property: transform; - transition-property: transform, -webkit-transform; - box-sizing: content-box; - } - .swiper-android .swiper-slide, - .swiper-wrapper { - -webkit-transform: translate3d(0px, 0, 0); - transform: translate3d(0px, 0, 0); - } - .swiper-pointer-events { - touch-action: pan-y; - } - .swiper-pointer-events.swiper-vertical { - touch-action: pan-x; - } - .swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: -webkit-transform; - transition-property: transform; - transition-property: transform, -webkit-transform; - } - .swiper-slide-invisible-blank { - visibility: hidden; - } - .swiper-autoheight, - .swiper-autoheight .swiper-slide { - height: auto; - } - .swiper-autoheight .swiper-wrapper { - align-items: flex-start; - transition-property: height, -webkit-transform; - transition-property: transform, height; - transition-property: transform, height, -webkit-transform; - } - .swiper-3d, - .swiper-3d.swiper-css-mode .swiper-wrapper { - -webkit-perspective: 1200px; - perspective: 1200px; - } - .swiper-3d .swiper-wrapper, - .swiper-3d .swiper-slide, - .swiper-3d .swiper-slide-shadow, - .swiper-3d .swiper-slide-shadow-left, - .swiper-3d .swiper-slide-shadow-right, - .swiper-3d .swiper-slide-shadow-top, - .swiper-3d .swiper-slide-shadow-bottom, - .swiper-3d .swiper-cube-shadow { - -webkit-transform-style: preserve-3d; - transform-style: preserve-3d; - } - .swiper-3d .swiper-slide-shadow, - .swiper-3d .swiper-slide-shadow-left, - .swiper-3d .swiper-slide-shadow-right, - .swiper-3d .swiper-slide-shadow-top, - .swiper-3d .swiper-slide-shadow-bottom { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 10; - } - .swiper-3d .swiper-slide-shadow { - background: rgba(0, 0, 0, 0.15); - } - .swiper-3d .swiper-slide-shadow-left { - background-image: linear-gradient( - to left, - rgba(0, 0, 0, 0.5), - rgba(0, 0, 0, 0) - ); - } - .swiper-3d .swiper-slide-shadow-right { - background-image: linear-gradient( - to right, - rgba(0, 0, 0, 0.5), - rgba(0, 0, 0, 0) - ); - } - .swiper-3d .swiper-slide-shadow-top { - background-image: linear-gradient( - to top, - rgba(0, 0, 0, 0.5), - rgba(0, 0, 0, 0) - ); - } - .swiper-3d .swiper-slide-shadow-bottom { - background-image: linear-gradient( - to bottom, - rgba(0, 0, 0, 0.5), - rgba(0, 0, 0, 0) - ); - } - .swiper-css-mode > .swiper-wrapper { - overflow: auto; - scrollbar-width: none; - -ms-overflow-style: none; - } - .swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { - display: none; - } - .swiper-css-mode > .swiper-wrapper > .swiper-slide { - scroll-snap-align: start start; - } - .swiper-horizontal.swiper-css-mode > .swiper-wrapper { - -ms-scroll-snap-type: x mandatory; - scroll-snap-type: x mandatory; - } - .swiper-vertical.swiper-css-mode > .swiper-wrapper { - -ms-scroll-snap-type: y mandatory; - scroll-snap-type: y mandatory; - } - .swiper-centered > .swiper-wrapper::before { - content: ""; - flex-shrink: 0; - order: 9999; - } - .swiper-centered.swiper-horizontal - > .swiper-wrapper - > .swiper-slide:first-child { - -webkit-margin-start: var(--swiper-centered-offset-before); - margin-inline-start: var(--swiper-centered-offset-before); - } - .swiper-centered.swiper-horizontal > .swiper-wrapper::before { - height: 100%; - min-height: 1px; - width: var(--swiper-centered-offset-after); - } - .swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { - -webkit-margin-before: var(--swiper-centered-offset-before); - margin-block-start: var(--swiper-centered-offset-before); - } - .swiper-centered.swiper-vertical > .swiper-wrapper::before { - width: 100%; - min-width: 1px; - height: var(--swiper-centered-offset-after); - } - .swiper-centered > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; - } - .swiper-virtual.swiper-css-mode .swiper-wrapper::after { - content: ""; - position: absolute; - left: 0; - top: 0; - pointer-events: none; - } - .swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { - height: 1px; - width: var(--swiper-virtual-size); - } - .swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { - width: 1px; - height: var(--swiper-virtual-size); - } - :root { - --swiper-navigation-size: 44px; - } - .swiper-button-prev, - .swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - var(--swiper-navigation-size) / 2); - z-index: 10; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - color: var(--swiper-navigation-color, var(--swiper-theme-color)); - } - .swiper-button-prev.swiper-button-disabled, - .swiper-button-next.swiper-button-disabled { - opacity: 0.35; - cursor: auto; - pointer-events: none; - } - .swiper-button-prev:after, - .swiper-button-next:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; - } - .swiper-button-prev, - .swiper-rtl .swiper-button-next { - left: 10px; - right: auto; - } - .swiper-button-prev:after, - .swiper-rtl .swiper-button-next:after { - content: "prev"; - } - .swiper-button-next, - .swiper-rtl .swiper-button-prev { - right: 10px; - left: auto; - } - .swiper-button-next:after, - .swiper-rtl .swiper-button-prev:after { - content: "next"; - } - .swiper-button-lock { - display: none; - } - .swiper-pagination { - position: absolute; - text-align: center; - transition: 300ms opacity; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - z-index: 10; - } - .swiper-pagination.swiper-pagination-hidden { - opacity: 0; - } - .swiper-pagination-fraction, - .swiper-pagination-custom, - .swiper-horizontal > .swiper-pagination-bullets, - .swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - left: 0; - width: 100%; - } - .swiper-pagination-bullets-dynamic { - overflow: hidden; - font-size: 0; - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { - -webkit-transform: scale(0.33); - transform: scale(0.33); - position: relative; - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { - -webkit-transform: scale(1); - transform: scale(1); - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { - -webkit-transform: scale(1); - transform: scale(1); - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { - -webkit-transform: scale(0.66); - transform: scale(0.66); - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { - -webkit-transform: scale(0.33); - transform: scale(0.33); - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { - -webkit-transform: scale(0.66); - transform: scale(0.66); - } - .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { - -webkit-transform: scale(0.33); - transform: scale(0.33); - } - .swiper-pagination-bullet { - width: var( - --swiper-pagination-bullet-width, - var(--swiper-pagination-bullet-size, 8px) - ); - height: var( - --swiper-pagination-bullet-height, - var(--swiper-pagination-bullet-size, 8px) - ); - display: inline-block; - border-radius: 50%; - background: var(--swiper-pagination-bullet-inactive-color, #000); - opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); - } - button.swiper-pagination-bullet { - border: none; - margin: 0; - padding: 0; - box-shadow: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } - .swiper-pagination-clickable .swiper-pagination-bullet { - cursor: pointer; - } - .swiper-pagination-bullet:only-child { - display: none !important; - } - .swiper-pagination-bullet-active { - opacity: var(--swiper-pagination-bullet-opacity, 1); - background: var(--swiper-pagination-color, var(--swiper-theme-color)); - } - .swiper-vertical > .swiper-pagination-bullets, - .swiper-pagination-vertical.swiper-pagination-bullets { - right: 10px; - top: 50%; - -webkit-transform: translate3d(0px, -50%, 0); - transform: translate3d(0px, -50%, 0); - } - .swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, - .swiper-pagination-vertical.swiper-pagination-bullets - .swiper-pagination-bullet { - margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; - display: block; - } - .swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, - .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - width: 8px; - } - .swiper-vertical - > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic - .swiper-pagination-bullet, - .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic - .swiper-pagination-bullet { - display: inline-block; - transition: 200ms top, 200ms -webkit-transform; - transition: 200ms transform, 200ms top; - transition: 200ms transform, 200ms top, 200ms -webkit-transform; - } - .swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, - .swiper-pagination-horizontal.swiper-pagination-bullets - .swiper-pagination-bullet { - margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); - } - .swiper-horizontal - > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, - .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); - white-space: nowrap; - } - .swiper-horizontal - > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic - .swiper-pagination-bullet, - .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic - .swiper-pagination-bullet { - transition: 200ms left, 200ms -webkit-transform; - transition: 200ms transform, 200ms left; - transition: 200ms transform, 200ms left, 200ms -webkit-transform; - } - .swiper-horizontal.swiper-rtl - > .swiper-pagination-bullets-dynamic - .swiper-pagination-bullet { - transition: 200ms right, 200ms -webkit-transform; - transition: 200ms transform, 200ms right; - transition: 200ms transform, 200ms right, 200ms -webkit-transform; - } - .swiper-pagination-progressbar { - background: rgba(0, 0, 0, 0.25); - position: absolute; - } - .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { - background: var(--swiper-pagination-color, var(--swiper-theme-color)); - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - -webkit-transform: scale(0); - transform: scale(0); - -webkit-transform-origin: left top; - transform-origin: left top; - } - .swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { - -webkit-transform-origin: right top; - transform-origin: right top; - } - .swiper-horizontal > .swiper-pagination-progressbar, - .swiper-pagination-progressbar.swiper-pagination-horizontal, - .swiper-vertical - > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, - .swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { - width: 100%; - height: 4px; - left: 0; - top: 0; - } - .swiper-vertical > .swiper-pagination-progressbar, - .swiper-pagination-progressbar.swiper-pagination-vertical, - .swiper-horizontal - > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, - .swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { - width: 4px; - height: 100%; - left: 0; - top: 0; - } - .swiper-pagination-lock { - display: none; - } - .swiper-zoom-container { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - text-align: center; - } - .swiper-zoom-container > img, - .swiper-zoom-container > svg, - .swiper-zoom-container > canvas { - max-width: 100%; - max-height: 100%; - -o-object-fit: contain; - object-fit: contain; - } - .swiper-slide-zoomed { - cursor: move; - } - .swiper-lazy-preloader { - width: 42px; - height: 42px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -21px; - margin-top: -21px; - z-index: 10; - -webkit-transform-origin: 50%; - transform-origin: 50%; - -webkit-animation: swiper-preloader-spin 1s infinite linear; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; - } - .swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; - } - .swiper-lazy-preloader-black { - --swiper-preloader-color: #000; - } - @-webkit-keyframes swiper-preloader-spin { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - @keyframes swiper-preloader-spin { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - .swiper-fade.swiper-free-mode .swiper-slide { - transition-timing-function: ease-out; - } - .swiper-fade .swiper-slide { - pointer-events: none; - transition-property: opacity; - } - .swiper-fade .swiper-slide .swiper-slide { - pointer-events: none; - } - .swiper-fade .swiper-slide-active, - .swiper-fade .swiper-slide-active .swiper-slide-active { - pointer-events: auto; - } - html.noScroll, - html.noScroll body { - overflow: hidden; - height: calc(var(--windowHeight) - 1px); - } - body.menuOpened { - left: 0; - overflow: hidden; - position: fixed; - top: 0; - width: 100%; - height: 100%; - } - body:not(.menuOpened) .mainLayer { - opacity: 0; - pointer-events: none; - } - .section { - margin-bottom: 64px; - } - .sectionTitle { - align-items: flex-end; - display: flex; - flex-wrap: wrap; - justify-content: space-between; - margin-bottom: 20px; - text-align: left; - } - .sectionTitle--center { - justify-content: center; - } - .sectionTitle h2 { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.53; - color: #333; - margin: 0; - } - .sectionTitle h2 + p { - margin-top: 4px; - } - .sectionTitle p { - color: #404040; - font-size: 1rem; - line-height: 1.467; - } - .sectionTitle p:last-child { - margin-bottom: 0; - } - .sectionTitle .link, - .sectionTitle .text a, - .text .sectionTitle a, - .sectionTitle p a, - p .sectionTitle a { - margin-top: 4px; - } - .pageTitle { - position: relative; - height: 100px; - } - .mainLayout__content .pageTitle { - margin-left: calc(-1 * var(--mainLayoutSpace)); - width: calc(100% + var(--mainLayoutSpace) * 2); - } - .pageTitle img { - -o-object-fit: cover; - object-fit: cover; - width: 100%; - height: 100%; - } - .pageTitle .wrapper { - align-items: center; - display: inline-flex; - flex-direction: column; - justify-content: center; - position: relative; - text-align: center; - height: 100%; - } - .pageTitle h1 { - color: var(--fontcolor); - font-size: 2.875rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.0435; - margin: 0; - } - .pageTitle .em { - color: #f47920; - } - .pageTitle p { - color: #595959; - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.375; - margin: 0; - } - .pageTitle.pageTitle--image h1 { - text-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - } - .pageTitle--big { - align-items: center; - background: #f2efe8; - display: flex; - justify-content: center; - -webkit-mask: url(//storage.googleapis.com/pythia-files/emarket/sklavenitisMask.svg) center no-repeat; - mask: url(//storage.googleapis.com/pythia-files/emarket/sklavenitisMask.svg) center no-repeat; - -webkit-mask-size: auto 100%; - mask-size: auto 100%; - margin: 0 0 56px; - position: relative; - text-align: center; - height: 385px; - } - .pageTitle--big img { - -o-object-fit: cover; - object-fit: cover; - height: 100%; - max-width: 1243px; - } - .pageTitle--big h1 { - color: #fff; - font-size: 4.375rem; - line-height: 1; - text-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - } - [v-cloak]:not([v-cloak="visibility"]) { - display: none; - } - [v-cloak="visibility"] { - visibility: hidden; - } - .printRow { - margin-top: 24px; - padding-top: 16px; - text-align: right; - } - .printRow--border { - border-top: 1px solid #c2c2c2; - } - .asideHeader { - align-items: center; - background: #f2efe8; - display: flex; - flex-direction: column; - justify-content: center; - height: 100px; - } - .asideHeader__title { - color: #333; - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.334; - margin: 0; - } - .asideHeader__title:not(:last-child) { - margin-bottom: 4px; - } - .asideHeader__text { - color: #838385; - font-size: 0.875rem; - font-weight: 500; - line-height: 1.286; - } - .ordersBanner { - background: #f2efe8; - border-radius: 8px; - overflow: hidden; - padding: 32px; - position: relative; - } - .ordersBanner__img { - position: absolute; - right: 0; - top: 0; - width: 46%; - height: 100%; - } - .ordersBanner__img img { - -o-object-fit: cover; - object-fit: cover; - -o-object-position: left center; - object-position: left center; - width: 100%; - height: 100%; - } - .ordersBanner__icon { - flex-shrink: 0; - font-size: 3.4375rem; - margin-right: 32px; - } - .ordersBanner__text { - color: #333; - font-size: 1.0625rem; - letter-spacing: -0.03em; - line-height: 1.411; - margin: 0; - position: relative; - max-width: 496px; - } - .pageNav { - display: flex; - justify-content: space-between; - margin: 24px 0; - } - .pill { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - background-color: #8dc63f; - border-radius: 100px; - color: #fff; - display: inline-block; - padding: 5px 12px; - } - @font-face { - font-family: "cfastystd"; - font-display: swap; - font-style: normal; - font-weight: 400; - src: url("../fonts/CFAstyStd-Book.woff2") format("woff2"), - url("../fonts/CFAstyStd-Book.woff") format("woff"); - } - @font-face { - font-family: "cfastystd"; - font-display: swap; - font-style: normal; - font-weight: 500; - src: url("../fonts/CFAstyStd-Medium.woff2") format("woff2"), - url("../fonts/CFAstyStd-Medium.woff") format("woff"); - } - @font-face { - font-family: "cfastystd"; - font-display: swap; - font-style: normal; - font-weight: 700; - src: url("../fonts/CFAstyStd-Bold.woff2") format("woff2"), - url("../fonts/CFAstyStd-Bold.woff") format("woff"); - } - .clearfix::after { - clear: both; - content: ""; - display: table; - } - .hide-text { - overflow: hidden; - padding: 0; - text-indent: 101%; - white-space: nowrap; - } - .visually-hidden { - border: 0; - clip: rect(0 0 0 0); - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - height: 1px; - } - .row { - display: flex; - flex-wrap: wrap; - } - .row--noWrap { - flex-wrap: nowrap; - } - .row--vStart { - align-items: flex-start; - } - .row--vCenter { - align-items: center; - } - .row--vEnd { - align-items: flex-end; - } - .row--hStart { - justify-content: flex-start; - } - .row--hCenter { - justify-content: center; - } - .row--hEnd { - justify-content: flex-end; - } - .row--space { - flex-wrap: nowrap; - justify-content: space-between; - } - .btnWrap { - --buttonsMarginH: 6px; - --buttonsMarginV: 6px; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; - margin: 0 0 40px; - } - .btnWrap.field { - --buttonsMarginH: 24px; - } - .btnWrap--noMargin { - margin-bottom: 0; - } - .btnWrap--hCenter { - justify-content: center; - } - .btnWrap--hEnd { - justify-content: flex-end; - } - .btnWrap--hSpaceB { - justify-content: space-between; - } - .btnWrap--column { - flex-direction: column; - } - .btnWrap--column > *:not(:last-child) { - margin-bottom: var(--buttonsMarginV); - margin-right: 0; - } - .btnWrap .button { - margin: var(--buttonsMarginV) var(--buttonsMarginH); - } - .productThumbs .swiper-button-prev:before, - .productThumbs .swiper-button-next:before, - .productThumbs__slide:after, - .orderTrack__action:after, - .myList__new:after, - .myList__title:after, - .myList__icon:after, - .myList--box:after, - .landingItem--box .landingItem__title:after, - .landingItem__title:before, - .landingItem__link:before, - .addBox__link:before, - .userNav__link:after, - .contentBox__link:before, - .playvideo__icon, - .table tbody tr:after, - .storeHours:after, - .searchInput__submitInput, - .quantity.quantity--init .quantity__input, - .quantity--init:after, - .product__title:before, - .output--init .output__button:after, - .output__mainLink:after, - .loginWrap__img img, - .radiobutton__border, - .filtersApply .loader, - .contestBnr:after, - .catalogue__link:before, - .loginBtn .iconButton:after, - .loginBtn .selectedFilters__remove:after, - .article__link:before, - .pageTitle figure, - .pageTitle--big figure { - inset: 0; - position: absolute; - width: 100%; - height: 100%; - } - .separate { - margin: 0 16px; - } - .txtRight { - text-align: right; - } - .noWrap { - white-space: nowrap; - } - .couponBlock__clear, - .couponBlock__btn, - .playvideo__icon, - .social__link, - .iconButton, - .selectedFilters__remove, - .footer__listLink { - --buttonColor: #838385; - --buttonColorHover: #595959; - --buttonColorActive: #f47920; - } - .sitemapnav__link, - .myList__title, - .landingItem--box .landingItem__title, - .landingItem__link, - .pagination__link, - .output__link, - .output__mainLink, - .select__option, - .autocomplete__option, - .checkbox__label a, - .radiobutton__label a, - .deliveryTypeInfo__link, - .link, - .text a, - p a, - .iconButton--black, - .breadcrumb__itemLink { - --buttonColor: #333; - --buttonColorHover: #838385; - --buttonColorActive: #f47920; - } - .link--orange, - .iconButton--orange, - .button { - --buttonColor: #f47920; - --buttonColorHover: #f68d41; - --buttonColorActive: #c75808; - } - .button.button--green, - .button.miniBasketButton.active { - --buttonColor: #74b11f; - --buttonColorHover: #8dc63f; - --buttonColorActive: #588718; - } - .select__listWrap, - .autocomplete, - .range__input, - .field__input, - .textarea__field, - .select__button { - border: 1px solid var(--inputBorderColor); - border-radius: 8px; - } - .range__input, - .field__input, - .textarea__field, - .select__button { - color: #333; - font-size: 0.9375rem; - padding: 8px 16px; - width: 100%; - height: 48px; - } - .input-validation-error.range__input, - .input-validation-error.field__input, - .input-validation-error.textarea__field, - .input-validation-error.select__button, - .field--error .range__input, - .field--error .field__input, - .field--error .textarea__field, - .field--error .select__button { - border-color: #d91a32; - } - .range__input:focus, - .field__input:focus, - .textarea__field:focus, - .select--open .select__button { - border-color: #f47920; - outline: none; - } - .field-validation-error, - .field__helper { - font-size: 0.75rem; - font-weight: 400; - letter-spacing: initial; - line-height: 1.33; - color: #595959; - display: block; - margin: 7px 0 0 0; - padding-left: var(--inputLabelPadding); - } - .field-validation-error ~ .field-validation-error, - .field__helper ~ .field-validation-error { - margin-top: 2px; - } - .field__input:-moz-read-only { - background-color: #ececec; - border-color: #ececec; - color: #838385; - pointer-events: none; - } - .field__input:read-only { - background-color: #ececec; - border-color: #ececec; - color: #838385; - pointer-events: none; - } - .listsBlock__bg, - .minibasket__overlay, - .userMenu__overlay, - .notifications__overlay, - .modal__bg, - .mainLayer { - background-color: rgba(51, 51, 51, 0.9); - left: 0; - position: fixed; - top: 0; - transition: opacity 250ms ease-in-out; - z-index: 9; - width: 100%; - height: 100%; - } - .minibasket__inner { - -webkit-transform: translateX(100%); - transform: translateX(100%); - transition: -webkit-transform 300ms ease-out 120ms; - transition: transform 300ms ease-out 120ms; - transition: transform 300ms ease-out 120ms, - -webkit-transform 300ms ease-out 120ms; - } - .minibasket.active .minibasket__inner { - -webkit-transform: translateX(0); - transform: translateX(0); - transition: -webkit-transform 350ms ease-out; - transition: transform 350ms ease-out; - transition: transform 350ms ease-out, -webkit-transform 350ms ease-out; - } - .miniCart.active .miniCart__holder, - .miniCart.active .miniCart__main { - opacity: 1; - transition: opacity 300ms ease-out 240ms; - } - .miniCart__holder, - .miniCart__main { - opacity: 0; - transition: opacity 240ms ease-out; - } - @font-face { - font-family: "iconfont"; - src: url("https://sklavenitishtml.dev.atcom.gr/Content/Fonts/iconfont.eot"); - src: url("https://sklavenitishtml.dev.atcom.gr/Content/Fonts/iconfont.eot?") - format("eot"), - url("../Fonts/iconfont.woff2") format("woff2"), - url("../Fonts/iconfont.woff") format("woff"), - url("../Fonts/iconfont.ttf") format("truetype"), - url("../Fonts/iconfont.svg") format("svg"); - } - .couponBlock__clear:before, - .couponBlock__btn:before, - .productThumbs .swiper-button-next:after, - .productThumbs .swiper-button-prev:after, - .addToCartButton--added:before, - .addToCartButton:before, - .myList--box.myList--fav:before, - .myList--box:before, - .sideBasket__title:before, - .topnav__selected:before, - .timetableNav--prev:before, - .timetableNav--next:before, - .swiper-button-next:after, - .swiper-button-prev:after, - .sidemenu__selected:before, - .searchInput__submit:before, - .range__submit:before, - .quantity__message--removed:before, - .quantity__message--added:before, - .quantity__btn--dec:before, - .quantity__btn--inc:before, - .quantity--init:before, - .errorMsg:before, - .select__button:after, - .checkbox__icon:before, - .radiobutton--check .radiobutton__icon:after, - .radiobutton--box .radiobutton__icon:after, - .selectedFilters__remove:before, - .filter__titleIcon:before, - .content__zoomimg:before, - .acc.open > .acc__header .acc__icon.icon-edit:before, - .icon-zoomOut:before, - .icon-zoomIn:before, - .icon-youtube:before, - .icon-warning:before, - .icon-visibilityOff:before, - .togglePassword.disabled:before, - .filters:not(.filters--checked) .togglePassword.filtersClearAll:before, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.togglePassword:before, - .filter:not(.filter--checked) .filtersLinks button.togglePassword:before, - .icon-visibility:before, - .togglePassword:before, - .icon-vegetables:before, - .icon-twitter:before, - .icon-trolley:before, - .icon-time:before, - .icon-tickOutline:before, - .icon-tickFilled:before, - .icon-tick:before, - .statusMessage--success:before, - .icon-storeSevice1:before, - .icon-store:before, - .icon-shipping:before, - .icon-settings:before, - .icon-searchList:before, - .icon-search:before, - .field__inputSubmit:before, - .icon-schedule:before, - .icon-sausages:before, - .icon-safePay:before, - .icon-revertRight:before, - .icon-revertLeft:before, - .icon-restaurant:before, - .icon-remove:before, - .icon-refresh:before, - .icon-readyMeals:before, - .icon-print:before, - .icon-plus:before, - .icon-play:before, - .icon-pinterest:before, - .icon-pin:before, - .icon-pet:before, - .icon-party:before, - .icon-parking:before, - .icon-paper:before, - .icon-orders:before, - .icon-onePlusOne:before, - .icon-nuts:before, - .icon-newProduct:before, - .icon-mylists-wreath:before, - .icon-mylists-woman:before, - .icon-mylists-winter:before, - .icon-mylists-volleyball:before, - .icon-mylists-umbrella:before, - .icon-mylists-triangle:before, - .icon-mylists-trailer:before, - .icon-mylists-sun:before, - .icon-mylists-store:before, - .icon-mylists-star:before, - .icon-mylists-sea:before, - .icon-mylists-plane:before, - .icon-mylists-mountain:before, - .icon-mylists-mask:before, - .icon-mylists-man:before, - .icon-mylists-leaf:before, - .icon-mylists-ktirio:before, - .icon-mylists-ktiria:before, - .icon-mylists-kite:before, - .icon-mylists-house2:before, - .icon-mylists-hospital:before, - .icon-mylists-home:before, - .icon-mylists-handHeart:before, - .icon-mylists-grandpa:before, - .icon-mylists-grandma:before, - .icon-mylists-glasses:before, - .icon-mylists-girl:before, - .icon-mylists-gift:before, - .icon-mylists-football:before, - .icon-mylists-easterEgg:before, - .icon-mylists-earth:before, - .icon-mylists-dog:before, - .icon-mylists-dinner:before, - .icon-mylists-diamond:before, - .icon-mylists-cupcake:before, - .icon-mylists-cocktail:before, - .icon-mylists-cloud:before, - .icon-mylists-circle:before, - .icon-mylists-championCup:before, - .icon-mylists-champagne:before, - .icon-mylists-cat:before, - .icon-mylists-camp:before, - .icon-mylists-boy:before, - .icon-mylists-boat:before, - .icon-mylists-block:before, - .icon-mylists-birthdayHat:before, - .icon-mylists-birthdaycake:before, - .icon-mylists-bird:before, - .icon-mylists-basketball:before, - .icon-mylists-basket:before, - .icon-mylists-barakia:before, - .icon-mylists-balloon:before, - .icon-mylists-baby:before, - .icon-multipleSearch:before, - .icon-minimarketFood:before, - .icon-milkBeverages:before, - .icon-mailCircle:before, - .icon-mail:before, - .icon-logout:before, - .icon-location2:before, - .icon-location:before, - .icon-instagram:before, - .icon-info:before, - .icon-house:before, - .icon-help:before, - .icon-hearts:before, - .icon-heart:before, - .icon-frozen:before, - .icon-freshMeat:before, - .icon-form:before, - .icon-fish:before, - .icon-filters:before, - .icon-fav:before, - .icon-facemask:before, - .icon-facebook:before, - .icon-eggs:before, - .icon-edit:before, - .icon-download:before, - .icon-directions2:before, - .icon-directions:before, - .icon-delete:before, - .icon-cream:before, - .icon-cosmetics:before, - .icon-copy:before, - .icon-cone:before, - .icon-closeRoundedOutline:before, - .icon-closeRounded:before, - .icon-closeOutline:before, - .icon-close:before, - .field__inputClear:before, - .statusMessage--error:before, - .icon-cleaning:before, - .icon-cheese:before, - .icon-card:before, - .icon-call:before, - .icon-cafe:before, - .icon-breakfast:before, - .icon-bisquite:before, - .icon-bio:before, - .icon-beverages:before, - .icon-bell:before, - .icon-basketTimer:before, - .icon-basket:before, - .icon-bakery:before, - .icon-babytoy:before, - .icon-babyFoods:before, - .icon-arrowUp:before, - .goToTop:before, - .icon-arrowRight32:before, - .icon-arrowRight:before, - .mainNav__link--hasChildren:before, - .icon-arrowRight--circle:before, - .icon-arrowRight--b:before, - .icon-arrowLeft32:before, - .icon-arrowLeft:before, - .megamenu__back:before, - .icon-arrowLeft--b:before, - .icon-arrowDown:before, - .icon-appetizers:before, - .icon-alert:before, - .icon-alcohol:before, - .icon-addCircle:before, - .icon-addCircle--b:before, - .icon-add:before, - .icon-account:before { - font-family: "iconfont"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-style: normal; - font-display: swap; - font-variant: normal; - font-weight: normal; - text-decoration: none; - text-transform: none; - display: inline-block; - line-height: 1; - vertical-align: top; - } - .icon-account:before { - content: ""; - } - .icon-add:before { - content: ""; - } - .icon-addCircle--b:before { - content: ""; - } - .icon-addCircle:before { - content: ""; - } - .icon-alcohol:before { - content: ""; - } - .icon-alert:before { - content: ""; - } - .icon-appetizers:before { - content: ""; - } - .icon-arrowDown:before { - content: ""; - } - .icon-arrowLeft--b:before { - content: ""; - } - .icon-arrowLeft:before, - .megamenu__back:before { - content: ""; - } - .icon-arrowLeft32:before { - content: ""; - } - .icon-arrowRight--b:before { - content: ""; - } - .icon-arrowRight--circle:before { - content: ""; - } - .icon-arrowRight:before, - .mainNav__link--hasChildren:before { - content: ""; - } - .icon-arrowRight32:before { - content: ""; - } - .icon-arrowUp:before, - .goToTop:before { - content: ""; - } - .icon-babyFoods:before { - content: ""; - } - .icon-babytoy:before { - content: ""; - } - .icon-bakery:before { - content: ""; - } - .icon-basket:before { - content: ""; - } - .icon-basketTimer:before { - content: ""; - } - .icon-bell:before { - content: ""; - } - .icon-beverages:before { - content: ""; - } - .icon-bio:before { - content: ""; - } - .icon-bisquite:before { - content: ""; - } - .icon-breakfast:before { - content: ""; - } - .icon-cafe:before { - content: ""; - } - .icon-call:before { - content: ""; - } - .icon-card:before { - content: ""; - } - .icon-cheese:before { - content: ""; - } - .icon-cleaning:before { - content: ""; - } - .icon-close:before, - .field__inputClear:before, - .statusMessage--error:before { - content: ""; - } - .icon-closeOutline:before { - content: ""; - } - .icon-closeRounded:before { - content: ""; - } - .icon-closeRoundedOutline:before { - content: ""; - } - .icon-cone:before { - content: ""; - } - .icon-copy:before { - content: ""; - } - .icon-cosmetics:before { - content: ""; - } - .icon-cream:before { - content: ""; - } - .icon-delete:before { - content: ""; - } - .icon-directions:before { - content: ""; - } - .icon-directions2:before { - content: ""; - } - .icon-download:before { - content: ""; - } - .icon-edit:before { - content: ""; - } - .icon-eggs:before { - content: ""; - } - .icon-facebook:before { - content: ""; - } - .icon-facemask:before { - content: ""; - } - .icon-fav:before { - content: ""; - } - .icon-filters:before { - content: ""; - } - .icon-fish:before { - content: ""; - } - .icon-form:before { - content: ""; - } - .icon-freshMeat:before { - content: ""; - } - .icon-frozen:before { - content: ""; - } - .icon-heart:before { - content: ""; - } - .icon-hearts:before { - content: ""; - } - .icon-help:before { - content: ""; - } - .icon-house:before { - content: ""; - } - .icon-info:before { - content: ""; - } - .icon-instagram:before { - content: ""; - } - .icon-location:before { - content: ""; - } - .icon-location2:before { - content: ""; - } - .icon-logout:before { - content: ""; - } - .icon-mail:before { - content: ""; - } - .icon-mailCircle:before { - content: ""; - } - .icon-milkBeverages:before { - content: ""; - } - .icon-minimarketFood:before { - content: ""; - } - .icon-multipleSearch:before { - content: ""; - } - .icon-mylists-baby:before { - content: ""; - } - .icon-mylists-balloon:before { - content: ""; - } - .icon-mylists-barakia:before { - content: ""; - } - .icon-mylists-basket:before { - content: ""; - } - .icon-mylists-basketball:before { - content: ""; - } - .icon-mylists-bird:before { - content: ""; - } - .icon-mylists-birthdaycake:before { - content: ""; - } - .icon-mylists-birthdayHat:before { - content: ""; - } - .icon-mylists-block:before { - content: ""; - } - .icon-mylists-boat:before { - content: ""; - } - .icon-mylists-boy:before { - content: ""; - } - .icon-mylists-camp:before { - content: ""; - } - .icon-mylists-cat:before { - content: ""; - } - .icon-mylists-champagne:before { - content: ""; - } - .icon-mylists-championCup:before { - content: ""; - } - .icon-mylists-circle:before { - content: ""; - } - .icon-mylists-cloud:before { - content: ""; - } - .icon-mylists-cocktail:before { - content: ""; - } - .icon-mylists-cupcake:before { - content: ""; - } - .icon-mylists-diamond:before { - content: ""; - } - .icon-mylists-dinner:before { - content: ""; - } - .icon-mylists-dog:before { - content: ""; - } - .icon-mylists-earth:before { - content: ""; - } - .icon-mylists-easterEgg:before { - content: ""; - } - .icon-mylists-football:before { - content: ""; - } - .icon-mylists-gift:before { - content: ""; - } - .icon-mylists-girl:before { - content: ""; - } - .icon-mylists-glasses:before { - content: ""; - } - .icon-mylists-grandma:before { - content: ""; - } - .icon-mylists-grandpa:before { - content: ""; - } - .icon-mylists-handHeart:before { - content: ""; - } - .icon-mylists-home:before { - content: ""; - } - .icon-mylists-hospital:before { - content: ""; - } - .icon-mylists-house2:before { - content: ""; - } - .icon-mylists-kite:before { - content: ""; - } - .icon-mylists-ktiria:before { - content: ""; - } - .icon-mylists-ktirio:before { - content: ""; - } - .icon-mylists-leaf:before { - content: ""; - } - .icon-mylists-man:before { - content: ""; - } - .icon-mylists-mask:before { - content: ""; - } - .icon-mylists-mountain:before { - content: ""; - } - .icon-mylists-plane:before { - content: ""; - } - .icon-mylists-sea:before { - content: ""; - } - .icon-mylists-star:before { - content: ""; - } - .icon-mylists-store:before { - content: ""; - } - .icon-mylists-sun:before { - content: ""; - } - .icon-mylists-trailer:before { - content: ""; - } - .icon-mylists-triangle:before { - content: ""; - } - .icon-mylists-umbrella:before { - content: ""; - } - .icon-mylists-volleyball:before { - content: ""; - } - .icon-mylists-winter:before { - content: ""; - } - .icon-mylists-woman:before { - content: ""; - } - .icon-mylists-wreath:before { - content: ""; - } - .icon-newProduct:before { - content: ""; - } - .icon-nuts:before { - content: ""; - } - .icon-onePlusOne:before { - content: ""; - } - .icon-orders:before { - content: ""; - } - .icon-paper:before { - content: ""; - } - .icon-parking:before { - content: ""; - } - .icon-party:before { - content: ""; - } - .icon-pet:before { - content: ""; - } - .icon-pin:before { - content: ""; - } - .icon-pinterest:before { - content: ""; - } - .icon-play:before { - content: ""; - } - .icon-plus:before { - content: ""; - } - .icon-print:before { - content: ""; - } - .icon-readyMeals:before { - content: ""; - } - .icon-refresh:before { - content: ""; - } - .icon-remove:before { - content: ""; - } - .icon-restaurant:before { - content: ""; - } - .icon-revertLeft:before { - content: ""; - } - .icon-revertRight:before { - content: ""; - } - .icon-safePay:before { - content: ""; - } - .icon-sausages:before { - content: ""; - } - .icon-schedule:before { - content: ""; - } - .icon-search:before, - .field__inputSubmit:before { - content: ""; - } - .icon-searchList:before { - content: ""; - } - .icon-settings:before { - content: ""; - } - .icon-shipping:before { - content: ""; - } - .icon-store:before { - content: ""; - } - .icon-storeSevice1:before { - content: ""; - } - .icon-tick:before, - .statusMessage--success:before { - content: ""; - } - .icon-tickFilled:before { - content: ""; - } - .icon-tickOutline:before { - content: ""; - } - .icon-time:before { - content: ""; - } - .icon-trolley:before { - content: ""; - } - .icon-twitter:before { - content: ""; - } - .icon-vegetables:before { - content: ""; - } - .icon-visibility:before, - .togglePassword:before { - content: ""; - } - .icon-visibilityOff:before, - .togglePassword.disabled:before, - .filters:not(.filters--checked) .togglePassword.filtersClearAll:before, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.togglePassword:before, - .filter:not(.filter--checked) .filtersLinks button.togglePassword:before { - content: ""; - } - .icon-warning:before { - content: ""; - } - .icon-youtube:before { - content: ""; - } - .icon-zoomIn:before { - content: ""; - } - .icon-zoomOut:before { - content: ""; - } - html { - font-size: 16px; - } - body { - color: #333; - font: 400 100%/1.4 "cfastystd", Trebuchet MS, sans-serif; - line-height: 1.3; - } - [class^="icon-"], - [class*=" icon-"] { - display: inline-block; - line-height: 1; - vertical-align: top; - } - input[type="submit"] { - cursor: pointer; - } - input, - textarea, - button, - select, - a { - -webkit-tap-highlight-color: transparent; - } - figure { - margin: 0; - } - img { - max-width: 100%; - } - h1 { - font-size: 2.875rem; - font-weight: 700; - letter-spacing: -0.03em; - } - h2 { - font-weight: 700; - } - h3 { - font-size: 1.25rem; - font-weight: 700; - letter-spacing: -0.02em; - margin: 0 0 32px; - } - h4 { - font-size: 1rem; - font-weight: 700; - letter-spacing: -0.02em; - margin: 0 0 20px; - } - h4:not(:first-child) { - margin-top: 30px; - } - b, - strong, - .bold { - font-weight: bold; - } - .text, - p { - color: #404040; - font-size: 1rem; - line-height: 1.47; - margin: 0 0 32px; - } - .text a, - p a { - text-decoration: underline; - } - .text--s { - font-size: 0.8125rem; - margin: 0; - } - .text--b { - color: #333; - font-size: 1rem; - font-weight: bold; - } - .text--pending { - color: orange; - } - a { - text-decoration: none; - transition: color 250ms ease; - } - ul { - list-style: none; - margin: 20px 0; - padding: 0; - } - ul.listS { - margin: 0 0 24px; - } - ul.listS li { - font-size: 0.8125rem; - line-height: 1.3; - } - ul.listS li:after { - top: 4px; - } - ul.listL { - margin: 24px 0 40px; - } - ul.listL li { - font-size: 1.25rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.5; - margin-bottom: 20px; - padding-left: 28px; - } - ul.listL li:after { - background-color: #f47920; - top: 11px; - width: 8px; - height: 8px; - } - ul.listCols { - -webkit-column-count: 5; - -moz-column-count: 5; - column-count: 5; - } - ul.listCols li { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - padding-left: 0; - margin-bottom: 20px; - } - ul.listCols li:after { - display: none; - } - ul li { - line-height: 1.2; - margin: 0 0 3px; - padding-left: 12px; - position: relative; - } - ul li:after { - width: 5px; - height: 5px; - background: #404040; - border-radius: 50%; - content: ""; - display: block; - left: 0; - position: absolute; - top: 6px; - } - ul ol li { - padding-left: 0; - } - ul ol li:after { - content: none; - } - ol { - margin: 20px 0; - padding: 0 0 0 20px; - } - .list--orange li:after { - background-color: #f47920; - } - .address, - .orderSum__col, - address { - color: #666; - font-size: 0.875rem; - font-style: normal; - line-height: 1.8; - } - .footer { - --footerSpaceTop: 80px; - background-color: #404040; - margin-top: var(--footerSpaceTop); - } - .footer__main { - display: flex; - justify-content: space-between; - padding: 40px 0 48px; - } - .footer--checkout .footer__main { - padding: 24px 0; - } - .footer__col { - --footerColSpace: 40px; - } - .footer__title { - color: #4d4d4d; - font-size: 0.9375rem; - font-weight: 600; - margin: 0 0 16px; - } - .footer__list { - margin: 0; - } - .footer__list li { - padding-left: 0; - margin: 0; - } - .footer__list li:after { - display: none; - } - .footer__listItem { - color: #8c8c8c; - font-size: 0.9375rem; - line-height: 1.2; - margin: 0; - } - .footer__listLink { - display: inline-block; - padding: 8px 0; - vertical-align: top; - } - .footer__apps { - margin: 24px 0 0; - } - .footer__apps p { - color: #8c8c8c; - font-size: 0.9375rem; - margin: 0 0 8px; - } - .footer__apps figure { - width: 100%; - } - .footer__apps figure picture { - display: block; - padding-top: calc(42 / 140 * 100%); - position: relative; - width: 100%; - } - .footer__apps figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .footer__appsInner { - display: flex; - flex-wrap: wrap; - } - .footer__appsLink { - margin-bottom: 8px; - width: 140px; - } - .footer__appsLink:not(:last-child) { - margin-right: 8px; - } - .footer__btm { - align-items: center; - border-top: 1px solid rgba(255, 255, 255, 0.2); - display: flex; - justify-content: space-between; - padding: 16px 0; - } - .footer__copy { - color: #fff; - font-weight: 400; - line-height: 1; - margin: 0; - } - .footer__atcom { - line-height: 1; - padding: 8px 0; - } - .footer__atcom img { - display: inline-block; - vertical-align: top; - width: 160px; - height: 13px; - } - .footer__text:last-child { - margin-bottom: 0; - } - .wrapper { - margin: 0 auto; - padding: 0 var(--gridSpace); - width: 100%; - max-width: calc(var(--wrapper) + var(--gridSpace) * 2); - } - .wrapper--xxs { - --wrapper: var(--wrapperXXS); - } - .wrapper--xs { - --wrapper: var(--wrapperXS); - } - .wrapper--s { - --wrapper: var(--wrapperS); - } - .wrapper--l { - --wrapper: var(--wrapperL); - } - .wrapper--full { - --wrapper: var(--wrapperFull); - } - .wrapper .wrapper { - padding: 0; - } - .col { - max-width: 100%; - flex-grow: 1; - flex-basis: 0; - } - .col-1 { - flex-basis: 8.3333333333%; - max-width: 8.3333333333%; - } - .col-2 { - flex-basis: 16.6666666667%; - max-width: 16.6666666667%; - } - .col-3 { - flex-basis: 25%; - max-width: 25%; - } - .col-4 { - flex-basis: 33.3333333333%; - max-width: 33.3333333333%; - } - .col-5 { - flex-basis: 41.6666666667%; - max-width: 41.6666666667%; - } - .col-6 { - flex-basis: 50%; - max-width: 50%; - } - .col-7 { - flex-basis: 58.3333333333%; - max-width: 58.3333333333%; - } - .col-8 { - flex-basis: 66.6666666667%; - max-width: 66.6666666667%; - } - .col-9 { - flex-basis: 75%; - max-width: 75%; - } - .col-10 { - flex-basis: 83.3333333333%; - max-width: 83.3333333333%; - } - .col-11 { - flex-basis: 91.6666666667%; - max-width: 91.6666666667%; - } - .col-12 { - flex-basis: 100%; - max-width: 100%; - } - .header { - background-color: #fff; - left: 0; - position: -webkit-sticky; - position: sticky; - top: var(--top); - z-index: 9; - height: var(--headerHeight); - } - .header__top { - padding: 16px 0; - } - .header__leftBlock { - align-items: center; - display: inline-flex; - } - .header__topInner { - align-items: center; - display: flex; - justify-content: space-between; - } - .header--checkout .header__topInner { - position: relative; - } - .header__logo { - flex-shrink: 0; - margin-right: auto; - width: 296px; - height: 38px; - } - .header__logo h1 { - font-size: 0; - margin: 0; - } - .header__logo img { - width: 100%; - } - .header--checkout .header__logo { - left: 50%; - position: absolute; - top: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - } - .header__tools { - align-items: center; - display: flex; - } - .header__tool { - margin-left: 20px; - } - .mainContainer { - display: grid; - grid-template-areas: "header" "main" "footer"; - grid-template-columns: minmax(0, 1fr); - grid-template-rows: auto 1fr auto; - min-height: 100vh; - } - .header { - grid-area: header; - } - .main { - grid-area: main; - } - .footer { - grid-area: footer; - } - .mainLayout { - --mainLayoutSpace: 32px; - } - .mainLayout__content { - padding: 0 var(--mainLayoutSpace); - } - .mainLayout .wrapper { - --gridSpace: 0px; - } - .acc { - border-bottom: 1px solid #c2c2c2; - } - .acc--border { - border: 1px solid #fff; - border-radius: 4px; - } - .acc--border .acc__header { - padding: 16px; - } - .acc--border .acc__content { - padding: 8px 16px 16px; - } - .acc--box { - background-color: #f5f5f5; - } - .acc--box .acc__header { - justify-content: space-between; - padding: 24px; - } - .acc--box .acc__content { - padding: 8px 24px 24px; - } - .acc--stripe { - border: none; - margin: 24px 0; - } - .acc--stripe .acc__header { - background-color: #f2efe8; - border-radius: 8px; - font-size: 1.25rem; - margin-bottom: 24px; - padding: 16px; - } - .acc--stripe .acc__header:before { - font-size: 1.5rem; - margin-right: 8px; - } - .acc--disabled .acc__header { - cursor: auto; - pointer-events: none; - } - .acc--disabled .acc__headerInnerTitle { - pointer-events: all; - } - .acc--disabled .acc__icon { - display: none; - } - .acc--disabled .acc__content { - display: none; - } - .acc--beige { - border: none; - margin-bottom: 30px; - } - .acc--beige .acc__header { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - background-color: #f2efe8; - border-radius: 8px; - padding: 16px; - } - .acc--beige .acc__content { - padding: 10px 30px; - } - .acc--beige .acc__content .listCols { - margin: 0; - } - .acc--colorStripe { - border: none; - margin-bottom: 20px; - } - .acc--colorStripe .acc__header { - background-color: #fef8c6; - border-radius: 8px; - color: #000; - font-size: 0.8125rem; - font-weight: 500; - padding: 12px; - } - .acc--colorStripe .acc__icon { - font-size: 1.5rem; - } - .acc--colorStripe .acc__content { - padding: 0; - } - .acc__title { - margin: 0; - } - .acc__content { - padding: 0 0 20px; - } - .acc__content > .form:last-child { - margin-bottom: 0; - } - .acc__content p:last-child { - margin: 0; - } - .acc__content--md { - max-width: 822px; - } - .acc__error { - flex-basis: 100%; - flex-grow: 1; - } - .acc__error p { - font-size: 0.75rem; - font-weight: 400; - letter-spacing: initial; - line-height: 1.33; - color: #d91a32; - margin: 0; - } - .acc__header { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - align-items: center; - color: #333; - cursor: pointer; - display: flex; - justify-content: space-between; - padding: 24px 0; - } - .acc--inline .acc__header { - font-size: 0.875rem; - } - .acc__header > * { - pointer-events: none; - } - .acc__header--md { - padding: 16px 0; - } - .acc__header--md .acc__title { - font-size: 1rem; - font-weight: 500; - line-height: 1.375; - } - .acc__header--lg { - padding: 16px 0; - } - .acc__header--lg .acc__title { - font-size: 1.25rem; - line-height: 1.5; - } - .acc__headerInfo { - font-weight: 400; - margin-left: 4px; - } - .acc__headerInner { - display: flex; - flex-grow: 1; - } - .acc__headerInnerTitle { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - align-items: center; - color: #333; - display: flex; - position: relative; - } - .acc__headerInnerTitle [class^="icon-"], - .acc__headerInnerTitle [class*=" icon-"] { - color: #838385; - font-size: 1.5rem; - margin-right: 10px; - } - .acc__headerInnerTitle--info { - flex-wrap: wrap; - font-weight: 400; - margin-left: 20px; - } - .acc__headerInnerTitle--info .link, - .acc__headerInnerTitle--info .text a, - .text .acc__headerInnerTitle--info a, - .acc__headerInnerTitle--info p a, - p .acc__headerInnerTitle--info a { - font-weight: 500; - } - .open .acc__headerInnerTitle--info { - display: none; - } - .acc__headerInnerTitle--sum { - justify-content: flex-end; - flex-grow: 1; - flex-shrink: 0; - font-weight: 400; - margin-left: auto; - padding-left: 20px; - text-align: right; - } - .open .acc__headerInnerTitle--sum { - display: none; - } - .acc__headerInnerTitle--large { - font-size: 1.375rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.36; - } - .acc__icon { - color: #838385; - font-size: 2rem; - padding: 0; - -webkit-transform-origin: center; - transform-origin: center; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - } - .acc__icon--sml { - font-size: 1.5rem; - } - .acc__icon.icon-edit { - font-size: 1.5rem; - } - .acc__title + .acc__icon { - margin-left: 32px; - } - .acc:not(.open) .acc__content { - display: none; - } - .acc.open > .acc__header .acc__icon:not(.icon-edit) { - -webkit-transform: rotate(-180deg); - transform: rotate(-180deg); - } - .acc.open > .acc__header .acc__icon.icon-edit:before { - content: ""; - } - .acc-section { - margin-bottom: 56px; - } - .acc-section__title { - border-bottom: 1px solid #c2c2c2; - font-size: 1.375rem; - font-weight: 700; - margin-bottom: 0; - padding-bottom: 12px; - } - .acc-section__title--pdlg { - padding-bottom: 40px; - } - .article { - border-radius: 8px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); - overflow: hidden; - position: relative; - } - .article__img figure { - width: 100%; - } - .article__img figure picture { - display: block; - padding-top: calc(184 / 296 * 100%); - position: relative; - width: 100%; - } - .article__img figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .article__info { - padding: 20px; - } - .article__date { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - color: #838385; - } - .article__dateWrap { - display: inline-block; - font-size: 0; - margin-bottom: 13px; - } - .article__dateWrap span:not(.pill) { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - } - .article__dateWrap .pill { - margin-left: 12px; - position: relative; - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - .article__title { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - color: #333; - margin-bottom: 8px; - } - .article__text { - font-size: 1rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.5; - color: #404040; - margin-bottom: 0; - --maxLines: 4; - line-clamp: var(--maxLines); - display: -webkit-box; - overflow: hidden; - text-overflow: ellipsis; - -webkit-line-clamp: var(--maxLines); - -webkit-box-orient: vertical; - } - .article__text p:last-child { - margin-bottom: 0; - } - .article__link { - color: inherit; - } - .article__link:before { - content: ""; - } - .article--wide .article__img figure { - width: 100%; - } - .article--wide .article__img figure picture { - display: block; - padding-top: calc(314 / 1258 * 100%); - position: relative; - width: 100%; - } - .article--wide .article__img figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .article--wide .article__date { - margin-bottom: 4px; - } - .article--wide .article__title { - font-size: 1.625rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.38; - margin-bottom: 16px; - } - .article--wide .article__info { - padding: 32px; - } - .articleFeatured { - margin-bottom: 32px; - } - .articleList { - --productSpaceH: 20px; - --productSpaceV: 20px; - display: flex; - justify-content: center; - flex-wrap: wrap; - gap: var(--productSpaceV) var(--productSpaceH); - } - .articleList .article { - width: calc(25% - 3 * var(--productSpaceH) / 4); - } - .articleList .article--horizontal { - width: 100%; - } - .articleList .swiper-slide .article { - width: 100%; - } - .articleList--column { - --productSpaceV: 32px; - margin-bottom: 32px; - } - .articleList--contests { - margin-bottom: 60px; - justify-content: flex-start; - } - .articleDetails__date { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - } - .articleDetails__dateWrap { - align-items: center; - color: #838385; - display: inline-flex; - margin-bottom: 4px; - } - .articleDetails__dateWrap span { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - margin-right: 4px; - } - .articleDetails__title { - font-size: 1.875rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - margin: 0; - max-width: 746px; - } - .articleDetails__title:after { - content: ""; - display: block; - background-color: #f47920; - width: 54px; - height: 8px; - margin: 16px auto 16px 0; - } - .autocomplete__googlelogo { - margin: 12px 18px 0 auto; - width: 93px; - height: 13px; - text-align: right; - display: block; - background-image: url(../media/powered-by-google-on-white3.png); - background-position: right; - background-repeat: no-repeat; - background-size: contain; - } - .bnr { - background-color: #404040; - color: #fff; - padding: 22px 0; - } - .bnr__inner { - position: relative; - display: flex; - align-items: center; - } - .bnr__icon { - color: inherit; - font-size: 1.5rem; - } - .bnr__close { - font-size: 1.5rem; - } - .bnr__text { - min-height: 24px; - display: flex; - align-items: center; - margin: 0 16px 0 18px; - flex-grow: 1; - } - .bnr p { - font-size: 0.8125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.15; - color: inherit; - } - .bnr p:last-of-type { - margin-bottom: 0; - } - .breadcrumb__list { - display: flex; - list-style: none; - margin: 0; - padding: 0; - } - .breadcrumb__item { - color: #333; - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.143; - margin: 2px 0; - padding: 0; - position: relative; - } - .breadcrumb__item--disabled { - color: #a6a6a6; - font-weight: 400; - } - .breadcrumb__item:after { - display: none; - } - .breadcrumb__itemLink { - color: var(--buttonColor); - font-weight: 400; - text-decoration: underline; - } - .breadcrumb__itemLink:active { - color: var(--buttonColorActive); - } - button { - -webkit-appearance: none; - -moz-appearance: none; - background: transparent; - border: none; - margin: 0; - } - .button { - align-items: center; - background-color: var(--buttonColor); - border: none; - border-radius: 8px; - color: #fff; - display: inline-flex; - font-family: "cfastystd", Trebuchet MS, sans-serif; - font-size: 0.9375rem; - font-weight: 500; - justify-content: center; - letter-spacing: -0.03em; - padding: 8px 24px; - transition: color 350ms ease, background-color 350ms ease; - min-height: 48px; - } - .button .icon { - font-size: 1.5rem; - margin-right: 8px; - } - .button:not(.disabled) { - cursor: pointer; - } - .button:not(.disabled):active { - background-color: var(--buttonColorActive); - } - .button.disabled, - .filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.button, - .filter:not(.filter--checked) .filtersLinks button.button, - .filters:not(.filters--checked) .button.filtersClearAll { - background-color: #ececec; - color: #a6a6a6; - } - .button--s { - font-size: 0.8125rem; - letter-spacing: -0.02em; - min-height: 34px; - } - .button--s .icon { - margin: -3px 4px -3px 0; - } - .button--border { - background-color: transparent; - border: 1px solid var(--buttonColor); - color: var(--buttonColor); - transition: color 350ms ease, border-color 350ms ease; - } - .button--border:not(.disabled):active { - background: transparent; - border-color: var(--buttonColorActive); - color: var(--buttonColorActive); - } - .button--border.disabled, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.button--border, - .filter:not(.filter--checked) .filtersLinks button.button--border, - .filters:not(.filters--checked) .button--border.filtersClearAll { - background: transparent; - border-color: #d8d8d8; - color: #a6a6a6; - } - .button--full { - width: 100%; - } - .button--alt { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - border-color: #c2c2c2; - color: #333; - display: flex; - flex: 1 1 auto; - justify-content: space-between; - padding: 16px; - transition: background-color 250ms ease-out; - } - .button--alt:not(.disabled):active { - background: #f2efe8; - border-color: #c2c2c2; - color: inherit; - } - .button--alt:not(.disabled):active .icon { - color: #f47920; - } - .button--alt .icon { - color: #f47920; - } - .button--alt .icon:last-child { - margin: 0; - margin-left: 0; - } - .iconButton, - .selectedFilters__remove { - color: var(--buttonColor); - font-size: 2rem; - line-height: 1; - padding: 0; - } - .iconButton--dark { - --buttonColor: #595959; - --buttonColorHover: #838385; - } - .iconButton--border { - border: 1px solid var(--buttonColor); - border-radius: 50%; - font-size: 1.5rem; - padding: 4px; - } - .iconButton--border:not(.disabled):active { - border-color: var(--buttonColorActive); - } - .iconButton--border.iconButton--s, - .iconButton--border.selectedFilters__remove { - padding: 0; - } - .iconButton--opacityBg { - background: rgba(255, 255, 255, 0.6); - } - .iconButton--square { - border-radius: 4px; - } - .iconButton--shadow { - background-color: #fff; - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - border-radius: 4px; - } - .iconButton--xs { - font-size: 1rem; - padding: 8px; - } - .iconButton--s, - .selectedFilters__remove { - font-size: 1.5rem; - } - .iconButton--b { - font-size: 1.75rem; - } - .iconButton--xb { - font-size: 1.625rem; - padding: 8px; - } - .iconButton:not(.disabled), - .selectedFilters__remove:not(.disabled) { - cursor: pointer; - } - .iconButton:not(.disabled):active, - .selectedFilters__remove:not(.disabled):active { - color: var(--buttonColorActive); - } - .link, - .text a, - p a { - align-items: center; - color: var(--buttonColor); - display: inline-flex; - font-family: "cfastystd", Trebuchet MS, sans-serif; - font-size: 0.9375rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1; - padding: 0; - transition: color 250ms ease; - } - .link .icon, - .text a .icon, - p a .icon { - font-size: 1.5rem; - } - .link .icon:first-child, - .text a .icon:first-child, - p a .icon:first-child { - margin-right: 4px; - } - .link .icon:last-child, - .text a .icon:last-child, - p a .icon:last-child { - margin-left: 4px; - } - .link:not(.disabled), - .text a:not(.disabled), - p a:not(.disabled) { - cursor: pointer; - } - .link:not(.disabled):active, - .text a:not(.disabled):active, - p a:not(.disabled):active { - color: var(--buttonColorActive); - } - .link.disabled, - .filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.link, - .filter:not(.filter--checked) .filtersLinks button.link, - .filters:not(.filters--checked) .link.filtersClearAll, - .text a.disabled, - .text .filters:not(.filters--checked) a.filtersClearAll, - .filters:not(.filters--checked) .text a.filtersClearAll, - p a.disabled, - p .filters:not(.filters--checked) a.filtersClearAll, - .filters:not(.filters--checked) p a.filtersClearAll { - color: #a6a6a6; - cursor: default; - } - .link--s, - .minibasket .listTools .link, - .minibasket .listTools .text a, - .text .minibasket .listTools a, - .minibasket .listTools p a, - p .minibasket .listTools a { - font-size: 0.8125rem; - letter-spacing: -0.02em; - } - .link--m { - font-size: 0.875rem; - } - .link--m .icon { - font-size: 1.25rem; - } - .link--b { - font-size: 1rem; - letter-spacing: -0.02em; - } - .link--xb { - font-size: 1.375rem; - } - .link--xb .icon { - font-size: 2rem; - } - .link--underline { - text-decoration: underline; - } - .link--orangeIcon .icon { - color: #f47920; - } - .link--orange .icon { - color: inherit; - } - .loginBtn { - align-items: center; - color: #333; - display: flex; - position: relative; - } - .loginBtn .iconButton, - .loginBtn .selectedFilters__remove { - margin-left: 8px; - } - .loginBtn .iconButton:after, - .loginBtn .selectedFilters__remove:after { - content: ""; - } - .cardRow { - display: flex; - align-items: center; - position: relative; - min-height: 66px; - } - .cardRow__logo { - flex-shrink: 0; - font-size: 0; - margin-right: 12px; - width: 36px; - } - .cardRow__logo [class^="icon-"], - .cardRow__logo [class*=" icon-"] { - font-size: 2rem; - color: #838385; - } - .cardRow__logo img { - width: 100%; - -o-object-fit: contain; - object-fit: contain; - } - .cardRow__info { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - display: flex; - flex-flow: column; - align-items: flex-start; - } - .cardRow__status { - font-size: 0.8125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.15; - color: #74b11f; - display: none; - margin-bottom: 2px; - } - .cardRow__msg { - color: #d91a32; - position: absolute; - right: 0; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - max-width: 130px; - } - .cardRow__number { - color: #333; - } - .cardRow__expiration { - color: #a6a6a6; - } - .cardRow__add { - font-size: 0.9375rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.46; - color: #333; - } - .cardRow.disabled, - .filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.cardRow, - .filter:not(.filter--checked) .filtersLinks button.cardRow, - .filters:not(.filters--checked) .cardRow.filtersClearAll { - padding-right: 130px; - } - .cardRow.disabled .cardRow__logo, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.cardRow - .cardRow__logo, - .filter:not(.filter--checked) .filtersLinks button.cardRow .cardRow__logo, - .filters:not(.filters--checked) .cardRow.filtersClearAll .cardRow__logo { - opacity: 0.5; - } - .cardRow.disabled .cardRow__number, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.cardRow - .cardRow__number, - .filter:not(.filter--checked) .filtersLinks button.cardRow .cardRow__number, - .filters:not(.filters--checked) .cardRow.filtersClearAll .cardRow__number, - .cardRow.disabled .cardRow__expiration, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.cardRow - .cardRow__expiration, - .filter:not(.filter--checked) .filtersLinks button.cardRow .cardRow__expiration, - .filters:not(.filters--checked) .cardRow.filtersClearAll .cardRow__expiration { - color: #a6a6a6; - } - .catalogueList { - --productSpaceH: 32px; - --productSpaceV: 24px; - display: flex; - flex-wrap: wrap; - gap: var(--productSpaceV) var(--productSpaceH); - } - .catalogueList .catalogue { - width: calc(50% - 1 * var(--productSpaceH) / 2); - } - .catalogueList .catalogue--wide { - width: 100%; - } - .catalogue { - border-radius: 8px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); - overflow: hidden; - position: relative; - } - .catalogue__img figure { - width: 100%; - } - .catalogue__img figure picture { - display: block; - padding-top: calc(463 / 617 * 100%); - position: relative; - width: 100%; - } - .catalogue__img figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .catalogue__info { - padding: 20px; - text-align: center; - } - .catalogue__title { - font-size: 1.25rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.5; - color: #333; - margin-bottom: 4px; - } - .catalogue__text { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - color: #333; - margin-bottom: 0; - } - .catalogue__text p:last-child { - margin-bottom: 0; - } - .catalogue__link { - color: inherit; - } - .catalogue__link:before { - content: ""; - } - .icon-bakery:before { - color: #a98848; - } - .icon-vegetables:before { - color: #8dc63f; - } - .icon-fish:before { - color: #91d1e5; - } - .icon-freshMeat:before { - color: #e59191; - } - .icon-milkBeverages:before { - color: #d6d0c6; - } - .icon-cream:before { - color: #f0b9c3; - } - .icon-cheese:before { - color: #efd57b; - } - .icon-eggs:before { - color: #cec0a8; - } - .icon-sausages:before { - color: #cec0a8; - } - .icon-appetizers:before { - color: #cec0a8; - } - .icon-readyMeals:before { - color: #8ebf86; - } - .icon-frozen:before { - color: #a8ccce; - } - .icon-alcohol:before { - color: #7c766b; - } - .icon-beverages:before { - color: #91d1e5; - } - .icon-nuts:before { - color: #bda57b; - } - .icon-bisquite:before { - color: #d2917c; - } - .icon-breakfast:before { - color: #a98848; - } - .icon-babyFoods:before { - color: #cdce89; - } - .icon-minimarketFood:before { - color: #cec0a8; - } - .icon-pet:before { - color: #6f6554; - } - .icon-party:before { - color: #e995b3; - } - .icon-paper:before { - color: #d6d5d5; - } - .icon-cosmetics:before { - color: #e589dc; - } - .icon-cleaning:before { - color: #a8ccce; - } - .icon-house:before { - color: #b1ddbd; - } - .icon-house2:before { - color: #337933; - } - .icon-babytoy:before { - color: #d378a9; - } - .icon-bio:before { - color: #25a131; - } - .icon-facemask:before { - color: #6bb3c2; - } - .icon-newProduct:before { - color: #ea0c00; - } - .icon-onePlusOne:before { - color: #333; - } - .icon-exclusive:before { - background: url(../media/exclusive.svg) no-repeat scroll center; - background-size: contain; - content: ""; - } - .icon-aplesPrakseis:before { - background: url(../media/badges/aplesprakseislogo.svg) no-repeat scroll center; - background-size: contain; - content: ""; - } - .icon-fav:before { - color: #d91a32; - } - .icon-addCircle { - color: #f47920; - } - .icon-mylists-xmas:before { - background-image: url(../media/icon-mylists-xmas.svg); - } - .icon-mylists-tennis:before { - background-image: url(../media/icon-mylists-tennis.svg); - } - .icon-mylists-xmas:before, - .icon-mylists-tennis:before { - background-position: center; - background-repeat: no-repeat; - background-size: 100%; - content: ""; - } - .icon-mylists-woman:before { - color: #da5a71; - } - .icon-mylists-man:before { - color: #435b7e; - } - .icon-mylists-boy:before { - color: #bc844f; - } - .icon-mylists-girl:before { - color: #d218a4; - } - .icon-mylists-grandma:before { - color: #ae1829; - } - .icon-mylists-grandpa:before { - color: #6c1a26; - } - .icon-mylists-baby:before { - color: #f5a3b1; - } - .icon-mylists-gift:before { - color: #8dc63f; - } - .icon-mylists-football:before { - color: #333; - } - .icon-mylists-winter:before { - color: #a6a6a6; - } - .icon-mylists-champagne:before { - color: #527a2a; - } - .icon-mylists-mask:before { - color: #cc1836; - } - .icon-mylists-plane:before { - color: #1e2843; - } - .icon-mylists-sea:before { - color: #4e8ac1; - } - .icon-mylists-wreath:before { - color: #427837; - } - .icon-mylists-earth:before { - color: #3a8184; - } - .icon-mylists-balloon:before { - color: #4f98cd; - } - .icon-mylists-circle:before { - color: #ff641e; - } - .icon-mylists-barakia:before { - color: #ffa222; - } - .icon-mylists-basket:before { - color: #731a25; - } - .icon-mylists-basketball:before { - color: #d43d11; - } - .icon-mylists-bird:before { - color: #f5ad47; - } - .icon-mylists-birthdaycake:before { - color: #ff6aeb; - } - .icon-mylists-birthdayHat:before { - color: #ffa222; - } - .icon-mylists-block:before { - color: #e75a70; - } - .icon-mylists-boat:before { - color: #1d8185; - } - .icon-mylists-camp:before { - color: #42b800; - } - .icon-mylists-cat:before { - color: #f7671d; - } - .icon-mylists-championCup:before { - color: #c39649; - } - .icon-mylists-cloud:before { - color: #3d5a80; - } - .icon-mylists-cocktail:before { - color: #63e2a8; - } - .icon-mylists-cupcake:before { - color: #ae7e5c; - } - .icon-mylists-diamond:before { - color: #ffa222; - } - .icon-mylists-dinner:before { - color: #f7411d; - } - .icon-mylists-dog:before { - color: #c38649; - } - .icon-mylists-easterEgg:before { - color: #b9b965; - } - .icon-mylists-glasses:before { - color: #bcaf49; - } - .icon-mylists-handHeart:before { - color: #da1a32; - } - .icon-mylists-hospital:before { - color: #3d5a80; - } - .icon-mylists-home:before { - color: #333; - } - .icon-mylists-house2:before { - color: #337933; - } - .icon-mylists-kite:before { - color: #e25b00; - } - .icon-mylists-ktiria:before { - color: #9a00b2; - } - .icon-mylists-ktirio:before { - color: #d4ab79; - } - .icon-mylists-leaf:before { - color: #d63900; - } - .icon-mylists-mountain:before { - color: #8e4825; - } - .icon-mylists-star:before { - color: #f93; - } - .icon-mylists-store:before { - color: #ced475; - } - .icon-mylists-sun:before { - color: #ffac30; - } - .icon-mylists-trailer:before { - color: #f7411d; - } - .icon-mylists-triangle:before { - color: #5f9809; - } - .icon-mylists-volleyball:before { - color: #ffa222; - } - .icon-mylists-umbrella:before { - color: #6999ac; - } - .collectionBox { - background: url(../media/wood.png) repeat scroll center; - border-radius: 8px; - overflow: hidden; - position: relative; - } - .collectionBox figure { - width: 100%; - } - .collectionBox figure picture { - display: block; - padding-top: calc(205 / 300 * 100%); - position: relative; - width: 100%; - } - .collectionBox figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .collectionBox__title { - color: #fff; - font-size: 1.375rem; - font-weight: 700; - left: 0; - letter-spacing: -0.03em; - padding: 0 16px; - position: absolute; - text-align: center; - top: 16px; - width: 100%; - } - .content__zoomimg { - max-width: 317px; - width: 100%; - border: solid 1px #c2c2c2; - cursor: pointer; - position: relative; - margin: 23px 0; - } - .content__zoomimg picture { - display: block; - padding-top: calc(181 / 317 * 100%); - position: relative; - width: 100%; - } - .content__zoomimg img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .content__zoomimg:before { - content: ""; - } - .content__zoomimg:before { - width: 56px; - height: 56px; - border-radius: 50%; - position: absolute; - top: 50%; - left: 50%; - display: flex; - align-items: center; - justify-content: center; - color: #fff; - font-size: 2rem; - background: rgba(51, 51, 51, 0.6); - z-index: 2; - margin: calc(-1 * 56px / 2) 0 0 calc(-1 * 56px / 2); - } - .content__zoomimg img { - -o-object-fit: cover; - object-fit: cover; - } - .contestBnr { - align-items: flex-start; - color: #333; - display: flex; - flex-flow: column; - justify-content: center; - padding: 40px 24px; - position: relative; - padding: 64px; - min-height: 232px; - } - .contestBnr:after { - content: ""; - background-color: #f7f5f0; - border-radius: 8px; - z-index: -2; - } - .contestBnr h3 { - font-size: 1.5rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.16; - margin-bottom: 10px; - } - .contestBnr p:last-of-type { - margin-bottom: 0; - } - .contestBnr__illustration { - bottom: 0; - position: absolute; - right: 0; - top: 0; - z-index: -1; - } - .contestBnr__illustration--mob { - top: auto; - } - .deliveryFlowNav { - position: absolute; - top: 24px; - } - .deliveryFlow .modal__wrap { - padding-top: 104px; - } - .deliveryTypes { - display: none; - margin-inline: auto; - } - .deliveryTypes.typeinformation { - padding: 0; - max-width: 760px; - } - .deliveryTypes .field { - margin: 0; - width: 100%; - } - .deliveryTypes--active { - display: block; - } - .radiobuttons--deliveryType { - gap: 24px; - display: flex; - justify-content: center; - margin: 32px auto 56px; - } - .radiobuttons--deliveryType .radiobutton { - width: 50%; - } - .radiobutton--deliveryType { - display: inline-flex; - flex-direction: column; - justify-content: space-between; - } - .field .radiobutton--deliveryType.radiobutton:not(:first-child) { - margin-top: 0; - } - .field .radiobutton--deliveryType.radiobutton:not(:last-child) { - margin-bottom: 0; - } - .radiobutton--deliveryType .radiobutton__label { - font-size: 1.25rem; - font-weight: 500; - text-align: center; - } - .radiobutton--deliveryType .radiobutton__label b { - font-weight: 500; - } - .radiobutton--deliveryType .radiobutton__text { - display: block; - line-height: 1.5; - } - .radiobutton--deliveryType .radiobutton__border { - border-color: #f2efe8; - border-width: 2px; - } - .radiobutton--deliveryType .radiobutton__border:after { - background: url(../media/tickFilled.svg) no-repeat scroll center; - background-size: contain; - content: ""; - opacity: 0; - position: absolute; - right: 12px; - top: 12px; - transition: opacity 250ms ease-in-out; - width: 40px; - height: 40px; - } - .radiobutton--deliveryType .radiobutton__input:not([type="hidden"]) { - cursor: pointer; - width: 100%; - height: 100%; - } - .radiobutton--deliveryType - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__border { - border-color: #74b11f; - } - .radiobutton--deliveryType - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__border:after { - opacity: 1; - } - .radiobutton--deliveryType .icon { - background-position: center; - background-repeat: no-repeat; - background-size: auto 100%; - display: block; - margin: 16px auto; - height: 64px; - } - .radiobutton--deliveryType .icon.shipping { - background-image: url(../media/delivery.svg); - } - .radiobutton--deliveryType .icon.store { - background-image: url(../media/pickup.svg); - } - .deliveryTypeInfo ul { - margin: 0 20px; - } - .deliveryTypeInfo ul li:last-child { - margin: 0; - } - .deliveryTypeInfo__sum { - align-items: center; - display: flex; - flex-direction: column; - text-align: center; - } - .deliveryTypeInfo__sum p { - color: #333; - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.285; - margin-bottom: 8px; - } - .deliveryTypeInfo__link { - color: var(--buttonColor); - font-size: 0.875rem; - position: relative; - z-index: 2; - text-decoration: underline; - } - .deliveryTypeInfo__link:not(:last-child) { - margin-bottom: 4px; - } - .deliveryTypeInfo__link:active { - color: var(--buttonColorActive); - } - .emptyContent { - display: grid; - grid-template-columns: 88px 1fr; - grid-template-areas: "icon text" "icon buttons"; - grid-column-gap: 24px; - grid-row-gap: 16px; - margin: 40px 0; - } - .minibasket .emptyContent { - grid-template-areas: "icon text" "buttons buttons"; - } - .emptyContent:not(:last-child) { - border-bottom: 1px solid #fff; - } - .emptyContent__img { - grid-area: icon; - color: #e6e6e6; - font-size: 5.5rem; - line-height: 1; - } - .emptyContent__text { - grid-area: text; - } - .emptyContent__text p { - margin-bottom: 8px; - } - .emptyContent__btns { - display: flex; - grid-area: buttons; - } - .emptyContent__btns .button { - margin-top: 8px; - margin-bottom: 8px; - } - .emptyContent__btns .button:not(:last-child) { - margin-right: 8px; - } - .emptyContent__btns .button:not(:first-child) { - margin-left: 8px; - } - .expandText__main { - overflow: hidden; - position: relative; - max-height: 96px; - } - .expandText__main:after { - background: linear-gradient(to top, white 0, rgba(255, 255, 255, 0) 100%); - bottom: 0; - content: ""; - pointer-events: none; - position: absolute; - transition: opacity 250ms ease-in-out; - width: 100%; - height: 64px; - } - .expandText:not(.open) .expandText__buttonTextLess { - display: none; - } - .expandText.open .expandText__main { - max-height: inherit; - } - .expandText.open .expandText__main:after { - opacity: 0; - } - .expandText.open .expandText__buttonTextMore { - display: none; - } - .filters--checked .filters__mobButton:after { - background-color: #f47920; - border-radius: 50%; - color: #fff; - content: attr(data-activefilters); - display: inline-block; - font-size: 0.8125rem; - font-weight: bold; - line-height: 23px; - text-align: center; - width: 22px; - height: 22px; - } - .filters { - --mobFiltersTop: 0; - --mobFilterTopBar: 56px; - --mobFilterTopBarSpace: 24px; - --filtersSpace: 16px; - --filterItemSpaceBtm: 16px; - --mobFilterBottomBar: 80px; - align-items: flex-start; - background-color: #f2efe8; - border-radius: 3px; - display: flex; - margin-bottom: 24px; - padding: 12px 16px; - } - .filters__titleWrap { - position: relative; - } - .filters__title { - font-size: 0.875rem; - font-weight: 500; - margin: 0; - } - .filters__title:not(:first-child) { - margin: 0; - } - .filters__mobButtonText { - font-size: 0.9375rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.46; - color: #333; - margin-left: 8px; - } - .filters .selectInline { - margin-left: auto; - } - .filters--listResults .filters__mobButton:after { - position: relative; - right: -6px; - top: -1px; - } - .filter { - --scrollListHeight: 304px; - } - .filter__title { - cursor: pointer; - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - margin: 0; - padding: 6px 24px 6px 0; - position: relative; - white-space: nowrap; - z-index: 1; - } - .filter__titleIcon { - color: #838385; - font-size: 1.25rem; - position: absolute; - pointer-events: none; - right: 0; - top: 0; - } - .filter__titleIcon:before { - content: ""; - } - .filter__titleIcon:before { - transition: -webkit-transform 200ms ease-out; - transition: transform 200ms ease-out; - transition: transform 200ms ease-out, -webkit-transform 200ms ease-out; - -webkit-transform-origin: center; - transform-origin: center; - vertical-align: middle; - } - .filter:not(.filter--closed) .filter__titleIcon:before { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - .filter--closed .filter__content { - display: none; - } - .filter__list.scrollbarShadow .filter__item:last-child { - margin-bottom: 0; - } - .filter__list--bottom:after { - opacity: 0; - } - .filter__list--moreList { - --searchHeight: 80px; - } - .filter__list--moreList .filter__listScroll { - max-height: var(--scrollListHeight); - } - .initialized ~ .filter__showAll { - visibility: hidden; - } - .filter__item:not(:last-child) { - margin-bottom: var(--filterItemSpaceBtm); - } - .filter__no { - margin-left: 2px; - } - .filter__more.active .filter__moreText--more { - display: none; - } - .filter__more:not(.active) .filter__moreText--less { - display: none; - } - .filter__letter { - font-weight: bold; - margin-bottom: 8px; - } - .filters:not(.filters--checked) .filtersClearAll { - pointer-events: none; - } - .filtersLinks { - align-items: center; - display: flex; - flex-direction: column; - } - .filters:not(.filters--checked) .filtersLinks.filtersLinks--all button, - .filter:not(.filter--checked) .filtersLinks button { - pointer-events: none; - } - .categoriesList { - margin: 0; - padding-left: 16px; - } - .categoriesList li { - padding-left: 0; - margin: 0; - } - .categoriesList li:after { - display: none; - } - .categoriesList .categoriesList { - margin-top: 12px; - padding-right: 12px; - } - .categoriesList .acc__header { - justify-content: space-between; - } - .categoriesList__item:last-child { - margin-bottom: 0; - } - .categoriesList__item--level1, - .categoriesList__item--level0 { - font-weight: bold; - } - .categoriesList__item--level1 { - font-size: 0.875rem; - } - .categoriesList__item--level2 { - font-size: 0.8125rem; - font-weight: normal; - } - .categoriesList__item a:not(.link) { - color: inherit; - } - .categoriesList__item a.active { - color: #333; - } - .categoriesList__item > a, - .categoriesList__item > .acc__header { - color: gray; - transition: color 250ms ease; - } - .selectedFilters { - margin-bottom: 24px; - margin-top: -16px; - } - .selectedFilters:not(.active) { - display: none; - } - .selectedFilters__list { - margin: 0; - } - .selectedFilters__list li { - padding-left: 0; - margin: 0; - } - .selectedFilters__list li:after { - display: none; - } - .selectedFilters__list li { - padding-left: 8px; - } - .selectedFilters__item { - align-items: center; - color: #595959; - display: inline-flex; - font-size: 0.875rem; - line-height: 1; - margin: 0; - padding: 8px; - } - .selectedFilters__remove { - margin: -4px -4px -4px 4px; - } - .selectedFilters__remove:before { - content: ""; - } - :root { - --inputPlaceholderColor: #a6a6a6; - --labelSpace: 32px; - } - input[type="number"]::-webkit-inner-spin-button, - input[type="number"]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; - } - input:-moz-placeholder-shown { - text-overflow: ellipsis; - } - input:-ms-input-placeholder { - text-overflow: ellipsis; - } - input:placeholder-shown { - text-overflow: ellipsis; - } - ::-webkit-input-placeholder { - color: var(--inputPlaceholderColor); - line-height: 1.3; - } - ::-moz-placeholder { - color: var(--inputPlaceholderColor); - line-height: 1.3; - } - input:-webkit-autofill, - input:-webkit-autofill:hover, - input:-webkit-autofill:focus, - input:-webkit-autofill:active { - -webkit-box-shadow: 0 0 0 30px #fff inset !important; - } - .radiobutton--onlyColor.disabled .radiobutton__icon, - .filters:not(.filters--checked) - .radiobutton--onlyColor.filtersClearAll - .radiobutton__icon, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton--onlyColor - .radiobutton__icon, - .filter:not(.filter--checked) - .filtersLinks - button.radiobutton--onlyColor - .radiobutton__icon, - .radiobutton--onlyIcon.disabled .radiobutton__icon, - .filters:not(.filters--checked) - .radiobutton--onlyIcon.filtersClearAll - .radiobutton__icon, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton--onlyIcon - .radiobutton__icon, - .filter:not(.filter--checked) - .filtersLinks - button.radiobutton--onlyIcon - .radiobutton__icon, - .checkbox.disabled, - .filters:not(.filters--checked) .checkbox.filtersClearAll, - .filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.checkbox, - .filter:not(.filter--checked) .filtersLinks button.checkbox, - .radiobutton.disabled, - .filters:not(.filters--checked) .radiobutton.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton, - .filter:not(.filter--checked) .filtersLinks button.radiobutton { - opacity: 0.5; - } - .checkbox, - .radiobutton { - position: relative; - } - .checkbox.disabled label, - .filters:not(.filters--checked) .checkbox.filtersClearAll label, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.checkbox - label, - .filter:not(.filter--checked) .filtersLinks button.checkbox label, - .radiobutton.disabled label, - .filters:not(.filters--checked) .radiobutton.filtersClearAll label, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton - label, - .filter:not(.filter--checked) .filtersLinks button.radiobutton label { - cursor: default; - } - .checkbox__input:not([type="hidden"]), - .radiobutton__input:not([type="hidden"]) { - left: 0; - opacity: 0; - position: absolute; - top: 0; - width: 0; - height: 0; - } - .checkbox__label, - .radiobutton__label { - color: #333; - cursor: pointer; - display: block; - font-size: 0.9375rem; - font-weight: 400; - line-height: 1.6; - padding: 0 0 0 var(--labelSpace); - position: relative; - z-index: 2; - } - .checkbox__label ~ .field-validation-error, - .radiobutton__label ~ .field-validation-error { - margin-top: 4px; - padding-left: var(--labelSpace); - } - .checkbox__icon, - .radiobutton__icon { - background-color: #fff; - border: 1px solid #838385; - left: 0; - line-height: 22px; - position: absolute; - text-align: center; - top: 0; - width: 24px; - height: 24px; - } - .checkbox__checkedText, - .radiobutton__checkedText { - display: none; - margin: 8px 0 0; - } - .checkbox__text, - .radiobutton__text { - position: relative; - transition: color 250ms ease; - z-index: 1; - } - .field .checkbox:not(:first-child), - .field .radiobutton:not(:first-child) { - margin-top: var(--checkboxRadioSpace); - } - .field .checkbox:not(:last-child), - .field .radiobutton:not(:last-child) { - margin-bottom: var(--checkboxRadioSpace); - } - .checkbox--button.disabled:after, - .filters:not(.filters--checked) .checkbox--button.filtersClearAll:after, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.checkbox--button:after, - .filter:not(.filter--checked) .filtersLinks button.checkbox--button:after, - .radiobutton--button.disabled:after, - .filters:not(.filters--checked) .radiobutton--button.filtersClearAll:after, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton--button:after, - .filter:not(.filter--checked) .filtersLinks button.radiobutton--button:after { - background-color: #b3b3b3; - content: ""; - left: 0; - position: absolute; - -webkit-transform: rotate(-38deg); - transform: rotate(-38deg); - -webkit-transform-origin: center; - transform-origin: center; - top: 50%; - width: 100%; - height: 1px; - } - .radiobutton--box { - --radioBorderSpace: 20px; - } - .radiobutton--box.disabled .radiobutton__label, - .filters:not(.filters--checked) - .radiobutton--box.filtersClearAll - .radiobutton__label, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton--box - .radiobutton__label, - .filter:not(.filter--checked) - .filtersLinks - button.radiobutton--box - .radiobutton__label { - pointer-events: none; - } - .radiobutton--box .radiobutton__border { - transition: background-color 250ms ease-out; - z-index: -1; - } - .radiobutton--box .radiobutton__icon { - left: var(--radioBorderSpace); - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - transition: background-color 250ms ease-out; - } - .radiobutton--box .radiobutton__icon:after { - content: ""; - } - .radiobutton--box .radiobutton__icon:before { - display: none; - } - .radiobutton--box .radiobutton__icon:after { - opacity: 0; - position: absolute; - top: 50%; - color: #fff; - font-size: 0.875rem; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - } - .radiobutton--box .radiobutton__action { - position: absolute; - right: var(--radioBorderSpace); - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - z-index: 3; - font-size: 1.5rem; - } - .radiobutton--box .radiobutton__action + .radiobutton__action { - right: calc(var(--radioBorderSpace) + 24px + 8px); - } - .radiobutton--box .radiobutton__label { - display: flex; - flex-flow: column; - justify-content: center; - min-height: 84px; - padding-top: var(--radioBorderSpace); - padding-right: calc(var(--radioBorderSpace) + 24px * 2 + 8px + 10px); - padding-bottom: var(--radioBorderSpace); - padding-left: calc(var(--radioBorderSpace) + var(--labelSpace) + 4px); - } - .radiobutton--box .radiobutton__labelTag { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - margin-bottom: 2px; - padding-right: 32px; - } - .radiobutton--box - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon { - background-color: #74b11f; - border-color: #74b11f; - } - .radiobutton--box - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon:after { - opacity: 1; - } - .radiobutton--box - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__border { - border-color: #74b11f; - background-color: #f2efe8; - } - .radiobutton--box - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__label { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - } - .radiobutton--box - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__label - .radiobutton__labelTag { - display: inline-block; - } - .radiobutton--box - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__label - .cardRow__status { - display: inline-block; - } - .radiobutton--box .form { - padding-top: 24px; - } - .radiobutton--readonly .radiobutton__icon { - display: none; - } - .radiobutton--readonly .radiobutton__label { - padding: var(--radioBorderSpace); - padding-left: var(--radioBorderSpace); - } - .radiobutton--readonly .radiobutton__action { - font-size: 0.9375rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.46; - bottom: 0; - right: 0; - -webkit-transform: translateY(calc(100% + 12px)); - transform: translateY(calc(100% + 12px)); - top: auto; - } - .radiobutton--readonly - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__border { - border-color: #c2c2c2; - background-color: initial; - } - .radiobutton--readonly - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__label - .radiobutton__labelTag { - color: #838385; - } - .radiobutton--check .radiobutton__border { - z-index: -1; - } - .radiobutton--check .radiobutton__icon { - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - transition: background-color 250ms ease-out; - } - .radiobutton--check .radiobutton__icon:after { - content: ""; - } - .radiobutton--check .radiobutton__icon:before { - display: none; - } - .radiobutton--check .radiobutton__icon:after { - left: 50%; - opacity: 0; - position: absolute; - top: 50%; - color: #fff; - font-size: 0.875rem; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - } - .radiobutton--check - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon { - background-color: #74b11f; - border-color: #74b11f; - } - .radiobutton--check - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon:after { - opacity: 1; - } - .radiobutton--check - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__border { - border-color: #74b11f; - background-color: #f2efe8; - } - .radiobutton--onlyColor.disabled, - .filters:not(.filters--checked) .radiobutton--onlyColor.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton--onlyColor, - .filter:not(.filter--checked) .filtersLinks button.radiobutton--onlyColor, - .radiobutton--onlyIcon.disabled, - .filters:not(.filters--checked) .radiobutton--onlyIcon.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.radiobutton--onlyIcon, - .filter:not(.filter--checked) .filtersLinks button.radiobutton--onlyIcon { - opacity: 1; - } - .radiobutton--onlyColor - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon, - .radiobutton--onlyIcon - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon { - border-color: #74b11f; - border-width: 2px; - } - .radiobutton--onlyColor .radiobutton__label, - .radiobutton--onlyIcon .radiobutton__label { - padding: 0; - } - .radiobutton--onlyColor .radiobutton__icon, - .radiobutton--onlyIcon .radiobutton__icon { - overflow: hidden; - position: relative; - } - .radiobutton--onlyColor .radiobutton__icon:before, - .radiobutton--onlyIcon .radiobutton__icon:before { - display: none; - } - .radiobutton--onlyColor .radiobutton__icon { - border: 1px solid #c2c2c2; - border-radius: 8px; - display: block; - width: 32px; - height: 32px; - } - .radiobutton--onlyIcon .radiobutton__icon { - align-items: center; - border-color: transparent; - border-radius: 6px; - display: flex; - justify-content: center; - width: 48px; - height: 48px; - } - .radiobutton--onlyIcon img { - display: inline-block; - vertical-align: top; - } - .radiobutton--onlyIcon .icon { - font-size: 2rem; - } - .radiobutton--onlyIcon .icon:before { - width: 32px; - height: 32px; - } - .radiobutton--tab { - flex: 1; - height: 56px; - } - .radiobutton--tab .icon { - font-size: 1.5rem; - margin-right: 8px; - } - .radiobutton__border { - border: 1px solid #c2c2c2; - border-radius: 8px; - pointer-events: none; - transition: border-color 250ms ease-out; - } - .radiobutton__input:not([type="hidden"]):checked ~ .radiobutton__icon { - border-color: #838385; - } - .radiobutton__input:not([type="hidden"]):checked ~ .radiobutton__icon:before { - opacity: 1; - } - .radiobutton--button - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon { - background-color: #838385; - } - .radiobutton--button - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__text { - color: #fff; - } - .radiobutton--tab - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__text { - color: #333; - } - .radiobutton__input:not([type="hidden"]):checked ~ .radiobutton__border { - border-color: #c2c2c2; - } - .radiobutton__input:not([type="hidden"]):checked ~ .radiobutton__checkedText { - display: block; - } - .radiobutton__icon { - border-radius: 50%; - } - .radiobutton__icon:before { - background-color: #f47920; - border-radius: 50%; - content: ""; - left: 50%; - opacity: 0; - position: absolute; - top: 50%; - transition: opacity 250ms ease-in-out; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - width: 10px; - height: 10px; - } - .radiobutton--button .radiobutton__icon { - border-radius: 0; - width: 100%; - height: 100%; - } - .radiobutton--button .radiobutton__icon:before { - display: none; - } - .radiobutton__labelSub { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.23; - } - .radiobutton__labelTag { - color: #74b11f; - display: none; - font-weight: bold; - margin-bottom: 4px; - } - .radiobutton--tab .radiobutton__label, - .radiobutton--button .radiobutton__label { - align-items: center; - display: flex; - justify-content: center; - padding: 8px; - height: 100%; - } - .radiobutton--tab .radiobutton__label { - font-size: 1rem; - } - .radiobutton--button .radiobutton__label { - min-height: 44px; - } - .checkbox__input:not([type="hidden"]):checked ~ .checkbox__icon { - background-color: #f47920; - border-color: #f47920; - } - .checkbox__input:not([type="hidden"]):checked ~ .checkbox__icon:before { - opacity: 1; - } - .checkbox--button - .checkbox__input:not([type="hidden"]):checked - ~ .checkbox__icon { - background-color: #333; - } - .checkbox--button - .checkbox__input:not([type="hidden"]):checked - ~ .checkbox__text { - color: #fff; - } - .checkbox__icon { - color: #fff; - border-radius: 3px; - font-size: 1rem; - transition: background-color 250ms ease-out; - } - .checkbox__icon:before { - content: ""; - } - .checkbox__icon:before { - line-height: 22px; - opacity: 0; - transition: opacity 250ms ease-in-out; - } - .checkbox--button .checkbox__icon { - width: 100%; - height: 100%; - } - .checkbox--button .checkbox__icon:before { - display: none; - } - .checkbox--button .checkbox__label { - align-items: center; - display: flex; - justify-content: center; - padding: 8px; - height: 100%; - min-height: 44px; - } - .statusMessage { - font-size: 0.875rem; - display: none; - line-height: 1.3; - margin: 4px 0 16px; - padding-left: 24px; - position: relative; - } - .statusMessage:before { - left: 0; - position: absolute; - top: 0; - } - .statusMessage--success { - color: #74b11f; - } - .statusMessage--success.active, - .newsletter__field--success .statusMessage--success { - display: block; - } - .statusMessage--error { - color: #d91a32; - } - .statusMessage--error.active, - .newsletter__field--error .statusMessage--error { - display: block; - } - .select { - position: relative; - width: 100%; - } - .select--open { - z-index: 3; - } - .select--open.select--card .select__button { - border-color: var(--inputBorderColor); - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - .select__main { - position: relative; - } - .select__button { - cursor: pointer; - padding-right: 32px; - position: relative; - text-align: left; - white-space: nowrap; - } - .select__button:after { - content: ""; - } - .select__button::after { - font-size: 1rem; - margin-top: -8px; - position: absolute; - right: 8px; - top: 50%; - -webkit-transform-origin: center; - transform-origin: center; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - } - .select--open .select__button::after { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - .select__placeholder { - color: var(--inputPlaceholderColor); - white-space: nowrap; - } - .select__listWrap, - .autocomplete { - background-color: #fff; - display: none; - left: 0; - margin-top: 12px; - padding: 12px 0; - position: absolute; - top: 100%; - width: 100%; - z-index: 1; - } - .select__list, - .autocomplete__list { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - list-style: none; - margin: 0; - padding: 0; - max-height: 224px; - } - .select__list::-webkit-scrollbar, - .autocomplete__list::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .select__list::-webkit-scrollbar-thumb, - .autocomplete__list::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .select__list::-webkit-scrollbar-thumb:hover, - .autocomplete__list::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .select__list::-webkit-scrollbar-thumb:active, - .autocomplete__list::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .select__list::-webkit-scrollbar-track, - .autocomplete__list::-webkit-scrollbar-track { - background: transparent; - } - .select__option, - .autocomplete__option { - --optionPadding: 12px; - color: #333; - cursor: pointer; - font-size: 0.9375rem; - letter-spacing: -0.02em; - line-height: 1.4; - margin: 0; - padding: 12px; - transition: color 250ms ease, background-color 250ms ease-out; - } - .select__option:before, - .autocomplete__option:before { - content: ""; - display: block; - background-color: #ececec; - position: absolute; - bottom: -1px; - right: auto; - left: auto; - width: calc(100% - var(--optionPadding) * 2); - height: 1px; - } - .select__option:after, - .autocomplete__option:after { - display: none; - } - .select__option.selected, - .selected.autocomplete__option { - background-color: #ececec; - } - .select__option:not(.selected):active, - .autocomplete__option:not(.selected):active { - background-color: #ececec; - } - .select__option.disabled, - .disabled.autocomplete__option, - .filters:not(.filters--checked) .select__option.filtersClearAll, - .filters:not(.filters--checked) .autocomplete__option.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.select__option, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.autocomplete__option, - .filter:not(.filter--checked) .filtersLinks button.select__option, - .filter:not(.filter--checked) .filtersLinks button.autocomplete__option { - pointer-events: none; - } - .select--card .select__button { - height: auto; - padding: 14px; - } - .select--card .select__list, - .select--card .autocomplete__list { - max-height: 274px; - } - .select--card .select__listWrap, - .select--card .autocomplete { - border-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; - margin-top: 0; - padding: 0; - position: static; - } - .select--card .select__option, - .select--card .autocomplete__option { - border-top: 1px solid #ececec; - } - .select--card .select__option:last-child, - .select--card .autocomplete__option:last-child { - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - } - .select--card .select__option:not(.selected):active, - .select--card .autocomplete__option:not(.selected):active { - color: var(--buttonColorActive); - } - .selectInline { - align-items: baseline; - display: inline-flex; - position: relative; - } - .selectInline__label { - color: #333; - font-size: 0.875rem; - font-weight: 500; - position: relative; - z-index: 4; - } - .selectInline .select, - .selectInline .select__main { - position: static; - } - .selectInline .select__button { - border: none; - padding-left: 4px; - z-index: 2; - height: auto; - } - .selectInline .select__listWrap, - .selectInline .autocomplete { - border-radius: 6px; - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - left: auto; - margin: 0; - padding: 56px 0 16px; - right: -16px; - top: -16px; - width: calc(100% + 40px); - } - .textarea__field { - display: block; - resize: none; - height: 136px; - } - .textarea__field ::-webkit-input-placeholder { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - } - .textarea__field ::-moz-placeholder { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - } - .textarea--medium .textarea__field { - height: 80px; - } - .textarea--short .textarea__field { - height: 48px; - } - .toggle { - line-height: 1.35; - padding: 2px 0 2px calc(44px + 16px); - } - .toggle__label { - color: #999; - display: block; - font-size: 0.875rem; - line-height: 1.4; - transition: color 250ms ease; - } - .toggle__input { - cursor: pointer; - left: 0; - opacity: 0; - position: absolute; - top: 0; - z-index: 2; - width: 44px; - height: 24px; - } - .toggle__input:checked ~ .toggle__control { - background-color: #fff; - -webkit-transform: translateX(100%); - transform: translateX(100%); - } - .toggle__input:checked ~ .toggle__bg { - background-color: #333; - } - .toggle__input:checked ~ .toggle__label { - color: #333; - } - .toggle__input:disabled { - cursor: default; - } - .toggle__input:disabled ~ .toggle__bg { - background-color: #e6e6e6; - } - .toggle__input:disabled ~ .toggle__control { - background-color: #fff; - } - .toggle__bg { - background-color: #999; - border-radius: 100px; - left: 0; - position: absolute; - transition: background-color 250ms ease-out; - top: 0; - width: 44px; - height: 24px; - } - .toggle__control { - background-color: #e6e6e6; - border-radius: 50%; - left: 2px; - position: absolute; - top: 2px; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - width: calc(44px / 2 - 2px); - height: calc(24px - 2px * 2); - } - .tabToggle__tabs { - background-color: #fff; - border-radius: 100px; - display: flex; - margin: 0; - padding: 2px; - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - min-width: 160px; - height: 42px; - } - .tabToggle__tabs:before { - background-color: #333; - border-radius: 100px; - content: ""; - left: 2px; - position: absolute; - top: 2px; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - width: calc(50% - 2px); - height: calc(100% - 2px * 2); - } - .tabToggle__tabs.slide:before { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } - .tabToggle__tab { - color: #838385; - cursor: pointer; - flex: 1; - font-size: 0.9375rem; - letter-spacing: -0.02em; - margin: 0; - text-align: center; - padding: 10px 8px; - transition: color 250ms ease; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - .tabToggle__tab:after { - display: none; - } - .tabToggle__tab.active { - color: #fff; - } - [data-tabToggle-content] { - display: none; - } - [data-tabToggle-content].active { - display: block; - } - fieldset { - border: none; - margin: 0; - padding: 0; - } - .formWrap--center { - text-align: center; - } - .formWrap + .formWrap { - margin-top: var(--fieldRowSpace); - } - .form { - --formMaxWidth: 820px; - margin-bottom: 40px; - } - .form--s { - --formMaxWidth: 496px; - } - .form--full { - --formMaxWidth: 100%; - } - .formWrap--center .form:not(.form--col) { - display: inline-block; - text-align: left; - } - .formWrap--center .form.form--col { - display: inline-flex; - } - .form--center { - margin-inline: auto; - } - .form--col { - align-items: flex-start; - display: flex; - flex-wrap: wrap; - position: relative; - } - .form--address { - min-height: 400px; - } - .form__title { - border-bottom: solid 1px #c2c2c2; - margin-bottom: 40px; - padding-bottom: 16px; - font-size: 1rem; - font-weight: 500; - } - .form__title:not(:first-child) { - margin-top: 0; - } - .form button[type="submit"]:not(.widthAuto), - .form input[type="submit"]:not(.widthAuto) { - min-width: calc(var(--formMaxWidth) / 2 - var(--fieldColumnSpace) / 2); - } - .form__row { - display: flex; - } - .form__row--separate .field { - border-top: 1px solid #ececec; - flex: 1; - margin-top: 13px; - padding-top: 8px; - } - .form__row--separate .field p { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.23; - margin: 0 0 12px; - } - .form__row--center { - justify-content: center; - } - .form__col { - display: inline-flex; - flex-flow: column; - width: 50%; - } - .togglePassword { - top: 21px; - font-size: 1.5rem; - position: absolute; - right: 18px; - height: 48px; - } - .passwordValidation p { - font-size: 0.75rem; - font-weight: 400; - letter-spacing: initial; - line-height: 1.33; - color: #595959; - margin: 0 0 8px; - } - .passwordValidation ul { - margin: 0; - display: flex; - flex-wrap: wrap; - } - .passwordValidation ul li { - padding-left: 0; - margin: 0; - } - .passwordValidation ul li:after { - display: none; - } - .passwordValidation li { - color: #999; - font-size: 0.8125rem; - margin: 4px 0; - width: 50%; - } - .passwordValidation li.disabled, - .passwordValidation .filters:not(.filters--checked) li.filtersClearAll, - .filters:not(.filters--checked) .passwordValidation li.filtersClearAll { - color: #e6e6e6; - text-decoration: line-through; - } - .field { - margin: 0 calc(var(--fieldColumnSpace) / 2) var(--fieldRowSpace); - text-align: left; - } - .field.hidden { - margin: 0; - } - .field--full { - width: calc(100% - var(--fieldColumnSpace)); - } - .field--small { - flex-shrink: 0; - width: calc(var(--smallField) + var(--fieldColumnSpace)); - } - .field--centered { - text-align: center; - } - .field--centered .field__inner { - display: inline-flex; - margin-left: auto; - margin-right: auto; - text-align: left; - } - .field--hEnd { - text-align: right; - } - .field--hEnd .field__inner { - display: inline-flex; - } - .field--submit { - margin-top: 20px; - text-align: center; - } - .field--comments { - position: relative; - min-height: 16px; - } - .field__inner { - align-items: center; - display: flex; - position: relative; - } - .field__wrap:first-child:last-child { - width: 100%; - } - .field__label { - color: #595959; - display: block; - font-size: 0.8125rem; - line-height: 1.308; - margin: 0 0 4px; - padding-left: var(--inputLabelPadding); - } - .field__label--multiple { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - padding-left: 0; - flex-basis: 100%; - } - .field__labelInfo { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - color: #838385; - } - .radiobutton .field__labelInfo, - .checkbox .field__labelInfo { - display: block; - } - .field__legend { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - margin: 0 0 24px; - } - .field__input:-moz-read-only ~ .field__helper { - color: #838385; - } - .field__input:read-only ~ .field__helper { - color: #838385; - } - .field__input--password { - padding-right: 50px; - } - .field__input--search { - padding-right: 80px; - } - .field__input--inline { - background: transparent; - border-radius: 0; - border-top: none; - border-left: none; - border-right: none; - } - .field__input--inlineB { - display: inline-block; - width: auto; - } - .field__input--sm { - max-width: 131px; - } - .field__inputSubmit, - .field__inputClear { - bottom: 0; - font-size: 1.5rem; - position: absolute; - top: 0; - height: 48px; - } - .field__inputSubmit { - right: 18px; - } - .field__inputClear { - font-size: 1rem; - opacity: 0; - pointer-events: none; - right: 52px; - } - .field__inputClear.active { - opacity: 1; - pointer-events: all; - } - .field__more { - margin: 24px 0 0; - } - .field__more--spaceS { - margin-top: 8px; - } - .field__more--center { - text-align: center; - } - .field__text { - color: #b3b3b3; - font-size: 0.8125rem; - margin: -4px 0 8px; - } - .field__mapInner { - padding-top: 75%; - background-color: #f4f4f4; - position: relative; - } - .statusBox { - margin: 48px 0; - } - .formWrap--center .statusBox { - margin-right: auto; - margin-left: auto; - } - .statusBox p { - color: #333; - font-size: 1.125rem; - font-weight: 500; - } - .statusBox p:last-child { - margin-bottom: 0; - } - .statusBox__icon { - border-radius: 50%; - color: var(--statusColor); - font-size: 4rem; - line-height: 1; - margin-bottom: 24px; - } - .statusBox--success { - --statusColor: #74b11f; - } - .errorMsg { - align-items: center; - color: #d91a32; - display: flex; - font-size: 0.75rem; - margin: 4px 0 8px; - } - .errorMsg:before { - content: ""; - } - .errorMsg:before { - font-size: 1rem; - margin-right: 8px; - } - .birthdayInput { - --birthdaySpace: 8px; - display: flex; - flex-wrap: wrap; - margin-left: calc(-1 * var(--birthdaySpace)); - width: calc(100% + var(--birthdaySpace) * 2); - } - .birthdayInput .field__input { - margin-left: var(--birthdaySpace); - margin-right: var(--birthdaySpace); - } - .birthdayInput .field__input--day, - .birthdayInput .field__input--month { - width: calc(30% - 16px); - } - .birthdayInput .field__input--year { - width: calc(40% - 16px); - } - .formBox { - background-color: #f7f5f0; - border-radius: 8px; - padding: 20px; - margin-bottom: 12px; - } - .formBox--inner { - margin-left: 32px; - } - .formBox--plain { - background-color: transparent; - border-radius: initial; - padding: 0; - } - .formBox__title { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - display: block; - margin: 0 0 24px; - } - .formBox__text { - font-size: 1rem; - margin: 0 0 24px; - } - .formBox__more { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - display: flex; - justify-content: flex-end; - align-items: center; - } - .formBox__more [class^="icon-"], - .formBox__more [class*=" icon-"] { - color: #838385; - font-size: 24px; - margin-right: 9px; - } - .formBox .checkbox ~ .formBox__more { - margin-top: 16px; - } - .radiobuttons, - .checkboxes { - --checkboxRadioSpace: 20px; - } - .radiobuttons--inline, - .checkboxes--inline { - --checkboxRadioSpace: 12px; - gap: var(--checkboxRadioSpace) 24px; - margin-bottom: calc(-1 * var(--checkboxRadioSpace)); - display: flex; - } - .formBox .radiobuttons--inline, - .formBox .checkboxes--inline { - --checkboxRadioSpace: 24px; - margin-bottom: 0; - } - .radiobuttons--addresses, - .checkboxes--addresses { - padding-bottom: 27px; - } - .radiobuttons--colors, - .radiobuttons--icons, - .checkboxes--colors, - .checkboxes--icons { - display: flex; - flex-wrap: wrap; - margin-top: 12px; - } - .radiobuttons--colors, - .checkboxes--colors { - --checkboxRadioSpace: 16px; - gap: var(--checkboxRadioSpace); - } - .radiobuttons--icons, - .checkboxes--icons { - --checkboxRadioSpace: 12px; - gap: var(--checkboxRadioSpace) 8px; - } - .radiobuttons--inline .radiobutton, - .radiobuttons--inline .radiobutton:not(:first-child), - .radiobuttons--inline .radiobutton:not(:last-child), - .radiobuttons--colors .radiobutton, - .radiobuttons--colors .radiobutton:not(:first-child), - .radiobuttons--colors .radiobutton:not(:last-child), - .radiobuttons--icons .radiobutton, - .radiobuttons--icons .radiobutton:not(:first-child), - .radiobuttons--icons .radiobutton:not(:last-child) { - margin: 0; - } - .radiobuttons--scrollV { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - max-height: 224px; - } - .radiobuttons--scrollV::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .radiobuttons--scrollV::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .radiobuttons--scrollV::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .radiobuttons--scrollV::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .radiobuttons--scrollV::-webkit-scrollbar-track { - background: transparent; - } - .radiobuttons--toggle { - background: #ececec; - border-radius: 100px; - display: flex; - justify-content: center; - margin-inline: auto; - padding: 2px; - height: 40px; - } - .radiobuttons--toggle .radiobutton { - color: #838385; - } - .radiobuttons--toggle - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__icon { - background-color: #333; - } - .radiobuttons--toggle - .radiobutton__input:not([type="hidden"]):checked - ~ .radiobutton__text { - color: #fff; - } - .radiobuttons--toggle .radiobutton:not(:last-child) { - margin-bottom: 0; - } - .radiobuttons--toggle .radiobutton:not(:first-child) { - margin-top: 0; - } - .radiobuttons--toggle .radiobutton__label { - align-items: center; - display: flex; - padding: 4px 16px; - height: 100%; - } - .radiobuttons--toggle .radiobutton__icon { - background: transparent; - border: none; - border-radius: 100px; - width: 100%; - height: 100%; - } - .radiobuttons--toggle .radiobutton__icon:before { - display: none; - } - .radiobuttons--toggle .radiobutton__text { - color: #838385; - font-weight: 500; - } - .checkboxes--inline .checkbox, - .checkboxes--inline .checkbox:not(:first-child), - .checkboxes--inline .checkbox:not(:last-child) { - margin: 0; - } - .validation-summary-errors { - margin: 16px 0 0; - } - .validation-summary-errors ul { - list-style: inside; - } - .validation-summary-errors li { - margin-bottom: 8px; - } - .validation-summary-errors li, - .field-validation-error { - color: #d91a32; - } - .field-validation-error { - color: #d91a32; - } - .file-upload { - display: flex; - flex-wrap: wrap; - align-items: center; - margin-bottom: 20px; - } - .file-upload__filled .file-upload__button { - display: none; - } - .file-upload__filled .file-upload__content { - display: inline-flex; - } - .file-upload__input { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0; - z-index: 2; - cursor: pointer; - } - .file-upload__button { - position: relative; - margin-right: 10px; - } - .file-upload__content { - display: none; - flex-wrap: wrap; - align-items: center; - line-height: 1; - } - .file-upload__name { - font-size: 1rem; - color: #333; - letter-spacing: -0.02em; - margin: 8px 8px 8px 0; - } - .file-upload__delete { - cursor: pointer; - display: inline-flex; - flex-wrap: wrap; - align-items: center; - font-size: 0.8125rem; - font-weight: 500; - color: #333; - } - .file-upload__delete:active { - color: #f47920; - } - .file-upload__delete:active .file-upload__icon { - color: #f47920; - } - .file-upload__icon { - font-size: 1.5rem; - margin-top: -4px; - color: #838385; - } - .file-upload__title { - font-size: 1rem; - letter-spacing: -0.02em; - color: #333; - margin: 10px 10px 10px 0; - } - .file-upload__title span { - letter-spacing: -0.02em; - font-size: 0.8125rem; - } - .formTip { - color: #333; - font-size: 0.8125rem; - letter-spacing: -0.02em; - text-align: left; - } - .formTip--border { - border-top: solid 1px #ececec; - margin: 0 0 40px 0; - padding-top: 8px; - } - .formTip p { - font-size: 0.8125rem; - margin: 0; - } - .loginWrap { - display: flex; - text-align: left; - } - .loginWrap__img { - flex-shrink: 0; - position: relative; - width: 49%; - } - .loginWrap__img img { - -o-object-fit: cover; - object-fit: cover; - -o-object-position: center; - object-position: center; - } - .loginWrap__form { - flex: 1; - padding: 96px 24px; - margin: 0 auto; - max-width: 400px; - } - .loginWrap__form .modal__title { - margin-bottom: 24px; - } - .registerPromo { - margin-top: 40px; - } - .registrationForm .modal__title { - margin-bottom: 48px; - } - .formText { - border-top: 1px solid #d8d8d8; - padding: 24px 0 8px; - text-align: center; - } - .formText p { - color: #333; - font-size: 0.9375rem; - } - .formText p:last-child { - margin: 0; - } - .goToTop { - background-color: #000; - bottom: 32px; - border-radius: 50%; - box-shadow: 0px 5px 15px rgba(51, 51, 51, 0.12); - color: #333; - cursor: pointer; - font-size: 0.875rem; - line-height: 62px; - position: fixed; - right: 24px; - text-align: center; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - -webkit-transform: translateY(150%); - transform: translateY(150%); - z-index: 9; - width: 64px; - height: 64px; - } - .goToTop:before { - display: block; - transition: -webkit-transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895); - transition: transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895); - transition: transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895), - -webkit-transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895); - } - .showToTop .goToTop { - -webkit-transform: translateY(0); - transform: translateY(0); - } - .imgControl { - margin: 0 auto; - display: flex; - width: 100%; - justify-content: center; - } - .imgControl button { - margin: 0 4px; - } - .indicator { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.231; - align-items: center; - display: inline-flex; - } - .indicator [class^="icon-"], - .indicator [class*=" icon-"] { - margin: 0 4px 2px; - } - .indicator:before { - width: 6px; - height: 6px; - background: transparent; - border-radius: 50%; - content: ""; - margin-right: 6px; - margin-top: -2px; - } - .indicator--orange:before { - background-color: #f47920; - } - .indicator--green:before { - background-color: #74b11f; - } - .indicator--greenLight:before { - background-color: #8dc63f; - } - .indicator--red:before { - background-color: #d91a32; - } - .indicator--strong { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - padding: 4px; - } - .indicator--strong:before { - display: none; - } - .indicator--bg { - background-color: #fef8c6; - border-radius: 4px; - } - .orderTrack .indicator { - flex-shrink: 0; - } - .loader--circle { - margin: 0 auto 32px; - width: 96px; - height: 96px; - } - .loader__inner { - align-items: center; - display: flex; - justify-content: center; - margin: auto; - width: 100%; - height: 100%; - } - .loader__item { - -webkit-animation: bouncedelay 1.4s infinite ease-in-out both; - animation: bouncedelay 1.4s infinite ease-in-out both; - border-radius: 100%; - background-color: #fff; - margin: 4px; - width: 16px; - height: 16px; - } - .loader__item--1 { - -webkit-animation-delay: -0.32s; - animation-delay: -0.32s; - } - .loader__item--2 { - -webkit-animation-delay: -0.16s; - animation-delay: -0.16s; - } - .loader__circle { - align-items: center; - -webkit-animation: circle-loader-spin 1s infinite linear; - animation: circle-loader-spin 1s infinite linear; - border-radius: 50%; - border-top: 10px solid #ece8dc; - border-right: 10px solid #ece8dc; - border-bottom: 10px solid #ece8dc; - border-left: 10px solid #f47920; - display: flex; - justify-content: center; - margin: auto; - -webkit-transform: translateZ(0); - transform: translateZ(0); - width: 96px; - min-width: 96px; - height: 96px; - min-height: 96px; - } - @-webkit-keyframes circle-loader-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - @keyframes circle-loader-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - @-webkit-keyframes bouncedelay { - 0%, - 80%, - 100% { - -webkit-transform: scale(0); - transform: scale(0); - } - 40% { - -webkit-transform: scale(1); - transform: scale(1); - } - } - @keyframes bouncedelay { - 0%, - 80%, - 100% { - -webkit-transform: scale(0); - transform: scale(0); - } - 40% { - -webkit-transform: scale(1); - transform: scale(1); - } - } - .loadMore { - --barPercentage: 0%; - --loadMoreSpace: 64px; - margin: var(--loadMoreSpace) auto; - text-align: center; - max-width: 736px; - } - .loadMore__text { - color: #333; - margin-bottom: 24px; - } - .loadMore__text:last-child { - margin-bottom: 0; - } - .loadMore__bar { - background-color: #fff; - border-radius: 6px; - margin: 24px auto; - overflow: hidden; - position: relative; - max-width: 288px; - height: 6px; - } - .loadMore__barInner { - background-color: gray; - border-radius: inherit; - left: 0; - position: absolute; - top: 0; - -webkit-transform: scaleX(var(--barPercentage)); - transform: scaleX(var(--barPercentage)); - -webkit-transform-origin: 0 center; - transform-origin: 0 center; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - width: 100%; - height: 100%; - } - .loadMore__button:not(:last-child) { - margin-bottom: 32px; - } - .mainNavWrap { - --mobMenuHorPadding: 16px; - } - .mainNav__list { - margin: 0; - } - .mainNav__list li { - padding-left: 0; - margin: 0; - } - .mainNav__list li:after { - display: none; - } - .mainNav__item { - color: #8c8c8c; - cursor: pointer; - font-size: 0.875rem; - margin: 0 16px; - transition: color 250ms ease; - } - .mainNav__item:first-child { - margin-left: 0; - } - .mainNav__item--active { - color: #333; - } - .mainNav__link { - color: inherit; - display: block; - padding: 8px 8px 16px; - position: relative; - transition: color 250ms ease; - } - .mainNav__link:first-child { - padding-left: 0; - } - .mainNav__link:after { - background-color: #000; - bottom: 0; - content: ""; - left: 0; - opacity: 0; - position: absolute; - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - transition: opacity 50ms ease-out; - width: 100%; - height: 3px; - } - .mainNav__item--active .mainNav__link:after { - opacity: 1; - -webkit-transform: scaleY(1); - transform: scaleY(1); - transition: opacity 10ms ease-out 250ms, - -webkit-transform 150ms ease-out 250ms; - transition: opacity 10ms ease-out 250ms, transform 150ms ease-out 250ms; - transition: opacity 10ms ease-out 250ms, transform 150ms ease-out 250ms, - -webkit-transform 150ms ease-out 250ms; - } - .megamenu { - position: absolute; - width: 100%; - } - .megamenu__list { - margin: 0; - } - .megamenu__list li { - padding-left: 0; - margin: 0; - } - .megamenu__list li:after { - display: none; - } - .megamenu__list--level2 > li { - color: #333; - font-weight: bold; - } - .megamenu__list--level3 { - margin: 16px 0 40px; - } - .megamenu__list--level3 > li { - color: #8c8c8c; - font-weight: normal; - margin-bottom: 8px; - } - .megamenu__list a { - color: inherit; - transition: color 250ms ease; - } - .megamenu__title { - align-items: baseline; - display: flex; - } - .megamenu__title > *:not(:last-child) { - margin-right: 16px; - } - .megamenu__close { - color: rgba(51, 51, 51, 0.5); - line-height: 1; - } - .message { - align-items: center; - border: 1px solid #ececec; - border-radius: 8px; - display: flex; - margin-bottom: 40px; - padding: 16px; - } - .message__icon { - align-self: flex-start; - font-size: 1.5rem; - margin-right: 8px; - margin-top: -3px; - } - .message__icon.icon-alert { - color: #d91a32; - } - .message__icon.icon-warning { - color: #f47920; - } - .message__icon.icon-tickFilled { - color: #74b11f; - } - .message__text { - color: #333; - } - .message__text p { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.3; - color: inherit; - margin-bottom: 4px; - } - .message__text p:last-child { - margin: 0; - } - .modal { - align-items: center; - display: flex; - justify-content: center; - left: 0; - opacity: 1; - position: fixed; - top: 0; - transition: opacity 250ms ease-in-out; - z-index: 10; - width: 100%; - height: 100%; - } - .modal:not(.open) { - opacity: 0; - pointer-events: none; - } - .modal__wrap { - background-color: #fff; - border-radius: 8px; - color: #333; - font-size: 1rem; - font-weight: 400; - overflow: auto; - -webkit-overflow-scrolling: touch; - padding: 80px 24px 56px; - position: relative; - text-align: center; - width: 800px; - max-width: 92vw; - max-height: 92vh; - z-index: 10; - } - .modal--auto .modal__wrap { - width: auto; - } - .modal--s .modal__wrap { - width: 504px; - } - .modal--l .modal__wrap { - width: 1176px; - } - .modal--full .modal__wrap { - border-radius: 0; - display: flex; - flex-wrap: wrap; - width: 100%; - height: 100%; - max-width: 100%; - max-height: 100%; - } - .modal--transparent .modal__wrap { - background: transparent; - padding: 0; - } - .modal--noSpaces .modal__wrap { - padding: 0; - } - .modal__wrap .btnWrap { - margin-top: 34px; - } - .modal__wrap .btnWrap:last-child { - margin-bottom: 0; - } - .modal__closeButton { - position: absolute; - right: 24px; - top: 24px; - z-index: 2; - } - .modal__mainfigure { - margin: auto; - } - .modal__mainfigure img { - display: inline-block; - -o-object-fit: contain; - object-fit: contain; - -o-object-position: center center; - object-position: center center; - vertical-align: top; - max-width: 92vw; - max-height: 88vh; - } - .modal__titleWrap { - margin: 0 auto 32px; - } - .modal__title { - font-size: 1.5rem; - margin: 0 auto 12px; - max-width: 576px; - } - .modal__title:not(:first-child) { - margin-top: 0; - } - .modal__title:last-child { - margin-bottom: 0; - } - .modal .form { - margin-bottom: 0; - } - .modal--full .modal__content { - width: 100%; - } - .newsletter { - background-color: #e6e6e6; - padding: 32px 0; - display: flex; - } - .newsletter__form { - display: flex; - } - .newsletter__label { - font-size: 16px; - font-weight: bold; - } - .newsletter__inputs { - display: flex; - } - .newsletter__input { - background-color: #fff; - border: 1px solid #999; - border-radius: 5px; - color: #666; - font-size: 0.875rem; - margin-right: 8px; - padding: 8px; - height: 48px; - } - .newsletter__input::-webkit-input-placeholder { - color: #999; - } - .newsletter__input::-moz-placeholder { - color: #999; - } - .newsletter__input:-ms-input-placeholder { - color: #999; - } - .newsletter__input::placeholder { - color: #999; - } - .newsletter__terms { - margin: 8px 0 0; - } - .notifications { - display: none; - position: absolute; - top: 100%; - z-index: 3; - } - .notifications__content { - background-color: #fff; - border-radius: 8px; - box-shadow: 0px 2px 12px rgba(51, 51, 51, 0.08); - padding: 60px 20px 20px 20px; - position: relative; - z-index: 2; - margin-top: 12px; - } - .notifications__close { - position: absolute; - right: 20px; - top: 20px; - color: #333; - font-size: 1.5rem; - cursor: pointer; - } - .notifications__list { - margin: 0; - } - .notifications__list li { - padding-left: 0; - margin: 0; - } - .notifications__list li:after { - display: none; - } - .notifications__overlay { - position: absolute; - z-index: -1; - cursor: pointer; - } - .notifications__content { - width: 415px; - } - .notifications__list { - overflow: auto; - -webkit-overflow-scrolling: touch; - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - max-height: calc(100vh - 210px); - margin: 0 -10px; - padding: 0 10px; - } - .notifications__list::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .notifications__list::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .notifications__list::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .notifications__list::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .notifications__list::-webkit-scrollbar-track { - background: transparent; - } - .notifications__listItem { - color: #838385; - font-size: 0.875rem; - line-height: 1.25; - margin: 0; - padding: 16px 0; - display: flex; - flex-wrap: wrap; - position: relative; - } - .notifications__listItem--unread { - color: #333; - padding-right: 13px; - } - .notifications__listItem--unread:before { - content: ""; - position: absolute; - top: 21px; - right: 0; - width: 6px; - height: 6px; - background: #d91a32; - border-radius: 50%; - } - .notifications__listItem:not(:first-child) { - border-top: 1px solid #ececec; - } - .notifications__date { - width: 70px; - text-align: right; - font-size: 0.875rem; - letter-spacing: -0.01em; - margin-left: auto; - } - .notifications__title { - width: calc(100% - 70px); - max-width: 293px; - padding-right: 5px; - font-size: 0.875rem; - color: #333; - line-height: 1.3; - } - .notifications__maintitle { - font-size: 1.25rem; - font-weight: 700; - color: #333; - line-height: 1.3; - margin: 0 0 10px; - } - .notificationsBtn { - position: relative; - font-size: 1.5rem; - color: #a6a6a6; - } - .notificationsBtn:after { - position: absolute; - } - .outputsRow { - display: flex; - gap: 24px; - } - .output { - align-items: center; - background: #f2efe8; - border-radius: 8px; - display: flex; - flex: 1; - justify-content: space-between; - padding: 16px; - position: relative; - } - .output:not(.output--init) { - align-items: center; - justify-content: flex-start; - padding-right: 64px; - } - .output--pickup .output__inner, - .output--delivery .output__inner { - background-position: left center; - background-repeat: no-repeat; - background-size: auto 40px; - padding-left: 88px; - min-height: 40px; - } - .output--selected { - border: 2px solid #74b11f; - } - .output--delivery .output__inner { - background-image: url(../media/delivery.svg); - } - .output--pickup .output__inner { - background-image: url(../media/pickup.svg); - } - .output--pickup:not(.output--init) .output__inner, - .output--delivery:not(.output--init) .output__inner { - align-items: flex-end; - display: flex; - flex-wrap: wrap; - } - .output--init .output__inner { - align-items: center; - display: flex; - } - .output__title { - align-items: baseline; - color: #333; - display: flex; - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.375; - margin: 0; - } - .output--delivery:not(.output--init) .output__title, - .output--pickup:not(.output--init) .output__title { - font-size: 0.875rem; - line-height: 1.286; - margin-bottom: 4px; - } - .output__title:not(:last-child) { - margin-bottom: 8px; - } - .output--init .output__title { - font-size: 1.125rem; - } - .output__titleInfo { - color: #838385; - font-size: 0.75rem; - letter-spacing: 0; - margin-left: 4px; - } - .output__mainLink { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.286; - margin: 0; - } - .output__mainLink:after { - content: ""; - } - .output__link, - .output__mainLink { - color: var(--buttonColor); - } - .output__link:active, - .output__mainLink:active { - color: var(--buttonColorActive); - } - .output--init .output__button { - flex-shrink: 0; - margin-left: 16px; - } - .output--init .output__button:after { - content: ""; - } - .output:not(.output--init) .output__button { - position: absolute; - right: 16px; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - .output--selected .output__button { - background: url(../media/tickFilled.svg) no-repeat scroll center; - background-size: contain; - color: #74b11f; - width: 26px; - height: 26px; - } - .output__status { - color: #74b11f; - flex-shrink: 0; - font-size: 1.625rem; - margin-left: 16px; - } - .output__link { - color: var(--buttonColor); - display: block; - font-size: 0.875rem; - text-decoration: underline; - } - .output__link:not(:last-child) { - margin-bottom: 4px; - } - .output__link address { - color: inherit; - line-height: inherit; - } - .output__link--b { - font-weight: 500; - } - .output__time { - color: #333; - font-size: 0.8125rem; - line-height: 1.23; - margin: 4px 0 0; - } - .output__time:before { - font-size: 1rem; - margin-right: 4px; - } - .pagination-container { - margin: 32px 0; - } - .pagination { - margin: 0; - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: center; - } - .pagination li { - padding-left: 0; - margin: 0; - } - .pagination li:after { - display: none; - } - .pagination__item { - border-radius: 50%; - font-size: 1rem; - margin: 0 2px; - } - .pagination__item.active { - background-color: #f47920; - font-size: 1.125rem; - font-weight: 700; - } - .pagination__item.active .pagination__link { - color: #fff; - cursor: default; - } - .pagination__link { - color: var(--buttonColor); - cursor: pointer; - display: block; - line-height: 34px; - text-align: center; - transition: color 250ms ease; - width: 32px; - height: 32px; - } - .pagination__link:active { - color: var(--buttonColorActive); - } - .pagination__link--prev, - .pagination__link--next { - align-items: center; - display: flex; - justify-content: center; - } - .pagination__link--prev.disabled, - .filters:not(.filters--checked) .pagination__link--prev.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.pagination__link--prev, - .filter:not(.filter--checked) .filtersLinks button.pagination__link--prev, - .pagination__link--next.disabled, - .filters:not(.filters--checked) .pagination__link--next.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.pagination__link--next, - .filter:not(.filter--checked) .filtersLinks button.pagination__link--next { - opacity: 0; - pointer-events: none; - } - .product .fav { - position: absolute; - right: -4px; - top: -4px; - z-index: 2; - } - .product .wishlistButton:not(:first-child) .fav { - right: 24px; - } - .product--mini .fav, - .minibasket__product .fav { - right: 32px; - top: 0; - } - .product__inner { - display: flex; - flex-direction: column; - position: relative; - height: 100%; - } - .product__discount { - align-items: center; - background-color: #fff; - border: 5px solid rgba(244, 121, 32, 0.7); - border-radius: 50%; - color: #333; - display: flex; - flex-direction: column; - font-size: 0.875rem; - font-weight: 700; - justify-content: center; - left: 0; - letter-spacing: -0.02em; - line-height: 1; - position: absolute; - text-align: center; - top: 0; - z-index: 1; - width: 64px; - height: 64px; - } - .basketTable .product__discount { - border-width: 3px; - font-size: 0.6875rem; - font-weight: 500; - width: 44px; - height: 44px; - } - .basketTable .product__discount .product__discountVal { - font-size: 0.875rem; - margin-bottom: -3px; - } - .product__discountVal { - font-size: 1.125rem; - font-weight: bold; - line-height: 1.223; - } - .product__discountText { - font-size: 0.625rem; - font-weight: 500; - line-height: 1.2; - } - .product__img { - margin-bottom: 12px; - padding-top: 16px; - position: relative; - max-width: 320px; - } - .product__img figure { - width: 100%; - } - .product__img figure picture { - display: block; - padding-top: calc(160 / 160 * 100%); - position: relative; - width: 100%; - } - .product__img figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .product__badge { - --badgePosition: 0; - bottom: 0; - position: absolute; - z-index: 2; - width: 40px; - } - .product__badge--left { - left: var(--badgePosition); - } - .product__badge--right { - right: var(--badgePosition); - } - .product__badge img { - display: inline-block; - vertical-align: top; - } - .product__more { - display: flex; - flex: 1; - flex-direction: column; - justify-content: flex-end; - } - .product__title { - color: #333; - display: block; - font-size: 1.125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.3; - margin: 0 0 8px; - } - .product__title:before { - content: ""; - } - .product__desc { - color: #333; - font-size: 0.8125rem; - letter-spacing: -0.02em; - line-height: 1.23; - margin: 0 0 8px; - } - .product__quantity { - position: relative; - z-index: 1; - } - .product__avail { - font-size: 0.8125rem; - } - .minibasket .product__avail { - margin: 4px 0 0; - } - .productsListMini .product:not(:first-child) { - margin-top: 24px; - } - .productsListMini .product:not(:last-child) { - margin-bottom: 24px; - } - .productTags { - display: flex; - flex-wrap: wrap; - margin: -4px 0 8px; - } - .productInfo .productTags { - margin: 0 0 12px; - } - .productTags__tag { - margin: 4px 0; - width: 24px; - height: 24px; - } - .productInfo .productTags__tag { - margin-bottom: 0; - margin-top: 0; - width: 32px; - height: 32px; - } - .productTags__tag:not(:last-child) { - margin-right: 4px; - } - .priceContainer { - display: flex; - justify-content: flex-start; - } - .productInfo .priceContainer, - .productList .priceContainer { - height: 54px; - } - .productList .priceContainer { - justify-content: space-between; - margin-bottom: 12px; - } - .priceContainer .priceBlock { - align-items: baseline; - display: grid; - grid-template-columns: -webkit-max-content; - grid-template-columns: max-content; - grid-template-rows: auto; - } - .priceContainer .priceBlock:not(:first-child) { - padding-left: 8px; - } - .priceContainer .priceBlock:not(:last-child) { - padding-right: 8px; - } - .priceContainer .priceBlock__price { - align-self: end; - } - .priceContainer .priceBlock__price:not(.priceBlock__price--init):first-child { - grid-row-start: 1; - grid-row-end: 3; - } - .priceContainer .priceBlock__text { - align-self: end; - grid-column-start: 2; - grid-column-end: 3; - grid-row-start: 1; - grid-row-end: 3; - } - .priceBlock { - color: #333; - letter-spacing: -0.02em; - line-height: 1; - } - .priceBlock__price { - font-size: 1.125rem; - font-weight: 500; - line-height: 1.334; - text-align: right; - white-space: nowrap; - } - .priceBlock__price--init { - color: #a6a6a6; - font-size: 1rem; - font-weight: 400; - text-decoration: line-through; - } - .priceBlock__price--b { - font-size: 1.625rem; - letter-spacing: -0.03em; - line-height: 1.02; - margin-top: -6px; - } - .priceBlock__price--b .priceBlock__text { - letter-spacing: -0.02em; - } - .priceBlock__text { - font-size: 0.8125rem; - font-weight: 400; - line-height: 1.385; - margin-left: 4px; - white-space: nowrap; - } - .priceRow { - align-items: center; - display: flex; - justify-content: space-between; - font-size: 0.875rem; - margin: 16px 0; - } - .priceRow:first-child { - margin-top: 0; - } - .priceRow .priceBlock { - padding-left: 24px; - } - .priceRow:not(.priceRow--total) .priceBlock__price { - font-weight: normal; - } - .priceRow--total { - align-items: flex-end; - font-size: 1.25rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1; - margin-bottom: 24px; - } - .sideBasket .priceRow--total { - font-size: 1rem; - margin: 8px 0; - } - .priceRow--total .priceBlock__price { - font-size: 1.25rem; - } - .priceRow--total .priceBlock__price--init { - font-size: 0.9375rem; - } - .priceRow__val { - color: gray; - } - .noInfo { - border: 2px solid #fff; - border-radius: 50%; - color: #fff; - font-size: 0.75rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 22px; - text-align: center; - width: 24px; - height: 24px; - } - .infoPopup { - background-color: #fff; - -webkit-filter: drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) - drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2)); - filter: drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) - drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2)); - padding: 16px; - position: absolute; - right: calc(50vw - var(--wrapper) / 2 + var(--gridSpace)); - top: 160px; - transition: opacity 350ms ease, -webkit-transform 350ms ease; - transition: opacity 350ms ease, transform 350ms ease; - transition: opacity 350ms ease, transform 350ms ease, - -webkit-transform 350ms ease; - z-index: 99; - min-width: 320px; - } - .infoPopup.moveOut { - opacity: 0; - pointer-events: none; - -webkit-transform: translateY(-40%); - transform: translateY(-40%); - } - .infoPopup__title { - font-weight: bold; - margin: 0 0 8px; - padding-right: 24px; - } - .infoPopup p { - font-size: 0.875rem; - } - .infoPopup__remove { - position: absolute; - right: 0; - top: 0; - } - .productsSum { - padding: 20px 8px; - } - .productsSum .orDivider__text { - background-color: #f2f2f2; - } - .quantity { - align-items: center; - background-color: #f2efe8; - border-radius: 100px; - display: flex; - position: relative; - width: 100%; - max-width: 296px; - height: 48px; - } - .quantity--init { - position: relative; - } - .quantity--init:before { - content: ""; - } - .quantity--init:before { - color: #838385; - font-size: 1.5rem; - left: 50%; - margin: -12px 0 0 -12px; - position: absolute; - top: 50%; - z-index: 1; - } - .quantity--init:after { - background-color: #f2efe8; - border-radius: 100px; - content: ""; - pointer-events: none; - transition: background-color 250ms ease-out; - } - .quantity--init .quantity__btn { - opacity: 0; - } - .quantity__btn { - background-color: var(--buttonBgColor); - border-radius: 100px; - color: var(--buttonColor); - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; - width: 60px; - height: 100%; - } - .quantity__btn:not(.disabled) { - cursor: pointer; - } - .quantity__btn:not(.disabled):active { - background-color: var(--buttonBgColorActive); - } - .quantity__btn.disabled, - .filters:not(.filters--checked) .quantity__btn.filtersClearAll, - .filters:not(.filters--checked) - .filtersLinks.filtersLinks--all - button.quantity__btn, - .filter:not(.filter--checked) .filtersLinks button.quantity__btn { - --buttonBgColor: #f2efe8; - --buttonColor: #c2c2c2; - } - .quantity__btn--inc { - --buttonBgColor: #74b11f; - --buttonBgColorHover: #8dc63f; - --buttonBgColorActive: #588718; - --buttonColor: #fff; - } - .quantity__btn--inc:before { - content: ""; - } - .quantity__btn--dec { - --buttonBgColor: #e8e2d7; - --buttonBgColorHover: #d6d0c5; - --buttonBgColorActive: #c9c4b9; - --buttonColor: #838385; - } - .quantity__btn--dec:before { - content: ""; - } - .quantity__btn--notAvailable { - background-color: #ececec; - border-radius: 8px; - color: #a6a6a6; - font-size: 0.9375rem; - font-weight: 500; - min-width: 100%; - } - .quantity__input { - color: #838385; - flex: 1; - font-size: 1.25rem; - font-weight: 500; - letter-spacing: -0.02em; - text-align: center; - } - .quantity__input span { - font-size: 1rem; - } - .quantity:not(.quantity--init) .quantity__input { - pointer-events: none; - } - .quantity.quantity--init .quantity__input { - cursor: pointer; - opacity: 0; - z-index: 2; - } - .quantity__message { - align-items: center; - background: #fff; - border: 1px solid #ececec; - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - border-radius: 8px; - bottom: 100%; - display: flex; - font-size: 0.875rem; - left: 50%; - letter-spacing: -0.01em; - margin-bottom: 8px; - opacity: 0; - padding: var(--productPadding); - pointer-events: none; - position: absolute; - -webkit-transform: translateY(16px) translateX(-50%); - transform: translateY(16px) translateX(-50%); - transition: opacity 350ms ease, -webkit-transform 350ms ease; - transition: opacity 350ms ease, transform 350ms ease; - transition: opacity 350ms ease, transform 350ms ease, - -webkit-transform 350ms ease; - width: calc(100% + var(--productPadding) * 2); - } - .basketTable .quantity__message { - left: 50%; - padding: 8px; - white-space: nowrap; - width: auto; - } - .quantity__message:before { - background-color: var(--messageColor); - border-radius: 50%; - color: #fff; - flex-shrink: 0; - font-weight: bold; - line-height: 22px; - margin-right: 8px; - text-align: center; - width: 22px; - height: 22px; - } - .quantity--showMessage .quantity__message { - opacity: 1; - -webkit-transform: translateY(0) translateX(-50%); - transform: translateY(0) translateX(-50%); - } - .quantity__message--added { - --messageColor: #74b11f; - } - .quantity__message--added:before { - content: ""; - } - .quantity__message--removed { - --messageColor: #d8d8d8; - } - .quantity__message--removed:before { - content: ""; - } - .quantity--s, - .basketTable .quantity { - height: 34px; - } - .quantity--s .quantity__btn, - .basketTable .quantity .quantity__btn { - font-size: 0.875rem; - width: 40px; - } - .quantity--s .quantity__input, - .basketTable .quantity .quantity__input { - font-size: 0.875rem; - } - .filters__item .range { - padding: 16px 8px 0 0; - } - .range__slider { - background: #333; - border: none; - border-radius: 0; - box-shadow: none; - margin: 16px; - height: 2px; - } - .range__values { - display: flex; - justify-content: space-between; - } - .range__value { - color: #ccc; - font-size: 0.875rem; - text-align: center; - width: 32px; - } - .range__inputs { - display: flex; - margin-top: 16px; - height: 48px; - } - .range__inputWrap { - flex: 1; - margin-right: 8px; - position: relative; - } - .range__input { - padding-right: 24px; - width: 100%; - } - .range__symbol { - color: gray; - font-size: 0.875rem; - right: 8px; - position: absolute; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - .range__submit:before { - content: ""; - } - .noUi-connect { - background-color: #333; - } - .noUi-handle { - border: 1px solid #333; - box-shadow: none; - } - .noUi-horizontal .noUi-handle { - border-radius: 50%; - right: -16px; - top: -16px; - width: 32px; - height: 32px; - } - .noUi-handle:before, - .noUi-handle:after { - display: none; - } - .noUi-tooltip { - background: transparent; - border: none; - font-size: 0.875rem; - font-weight: bold; - line-height: 1; - padding: 4px 0; - } - .noUi-handle-lower .noUi-tooltip, - .noUi-handle-upper .noUi-tooltip { - bottom: 100%; - } - .result { - margin: 0 0 40px; - } - .result--fullheight { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: center; - margin: 0; - padding: 24px 0; - min-height: 60vh; - } - .result__content { - text-align: center; - width: 100%; - } - .result__title { - font-size: 1.875rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - color: #333; - margin: 0 0 8px; - } - .result__p { - margin: 0 0 12px; - } - .result__p--b { - font-size: 1.25rem; - letter-spacing: -0.03em; - } - .result__p:last-child { - margin: 0; - } - .result__button { - margin-top: 24px; - } - .result__code { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - } - .result__code strong { - font-size: 1.125rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - } - .result__mainimg { - width: 100%; - margin: 0 auto 8px; - max-width: 120px; - } - .result__mainimg picture { - display: block; - padding-top: calc(124 / 124 * 100%); - position: relative; - width: 100%; - } - .result__mainimg img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .result__mainimg--notsupported { - margin-bottom: 40px; - max-width: 235px; - } - .result__mainimg--notsupported picture { - padding-top: 82.5531914894%; - } - .result__mainicon { - font-size: 5.9375rem; - margin-bottom: 32px; - } - .result__mainicon--border { - padding: 0 16px; - border-bottom: solid 3px #dad7d0; - } - .result__mainicon--orange { - color: #f47920; - } - .scrollbar { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - } - .scrollbar::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .scrollbar::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .scrollbar::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .scrollbar::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .scrollbar::-webkit-scrollbar-track { - background: transparent; - } - .scrollbarShadow { - position: relative; - } - .scrollbarShadow:before, - .scrollbarShadow:after { - content: ""; - pointer-events: none; - position: absolute; - transition: opacity 250ms ease-out; - } - .scrollbarShadow--vert:before, - .scrollbarShadow--vert:after { - left: 0; - z-index: 3; - width: calc(100% - 8px); - height: 40px; - } - .scrollbarShadow--vert:before { - background: linear-gradient(to bottom, white 0%, rgba(255, 255, 255, 0) 100%); - top: 0; - } - .scrollbarShadow--vert:after { - background: linear-gradient(to top, white 0%, rgba(255, 255, 255, 0) 100%); - bottom: 0; - } - .scrollbarShadow--hor:before, - .scrollbarShadow--hor:after { - top: 0; - width: 56px; - height: calc(100% - 8px); - } - .scrollbarShadow--hor:before { - background: linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%); - left: 0; - } - .scrollbarShadow--hor:after { - background: linear-gradient(to left, white 0%, rgba(255, 255, 255, 0) 100%); - right: 0; - } - .scrollbarShadow--top:before { - opacity: 0; - } - .scrollbarShadow--bottom:after { - opacity: 0; - } - .scrollbarShadow--right:after { - opacity: 0; - } - .scrollbarShadow--left:before { - opacity: 0; - } - .searchInput { - --searchIconWidth: 48px; - --searchHeight: 48px; - border: 1px solid #fff; - border-radius: 5px; - margin: 16px 0; - position: relative; - height: var(--searchHeight); - } - .searchInput input { - background: transparent; - border: none; - } - .searchInput__input { - padding: 12px var(--searchIconWidth) 12px 12px; - width: 100%; - height: 100%; - } - .searchInput__submit { - align-items: center; - display: flex; - font-size: 24px; - justify-content: center; - position: absolute; - right: 0; - top: 0; - width: var(--searchIconWidth); - height: 100%; - } - .searchInput__submit:before { - content: ""; - } - .sidemenu { - margin: 28px 0 16px; - position: relative; - z-index: 5; - } - .sidemenu__selected:before { - content: ""; - } - .sidemenu__list { - margin: 0; - } - .sidemenu__list li { - padding-left: 0; - margin: 0; - } - .sidemenu__list li:after { - display: none; - } - .sidemenu__list--level2 { - margin: 12px 0; - padding: 0 20px; - } - .sidemenu__link { - display: inline-block; - font-weight: 500; - color: #333; - } - .sidemenu__link--level2 { - font-size: 0.875rem; - margin-bottom: 6px; - letter-spacing: -0.01em; - } - .sideNav { - flex: 1; - padding: 80px 8px 0 32px; - position: relative; - } - .sideNav__list { - margin: 0; - margin: 0; - padding: 0; - } - .sideNav__list li { - padding-left: 0; - margin: 0; - } - .sideNav__list li:after { - display: none; - } - .sideNav__list--level1 { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - left: 0; - padding-right: 16px; - position: -webkit-sticky; - position: sticky; - top: calc(8px + var(--headerHeight)); - max-height: calc(100vh - 16px - var(--headerHeight)); - } - .sideNav__list--level1::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .sideNav__list--level1::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .sideNav__list--level1::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .sideNav__list--level1::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .sideNav__list--level1::-webkit-scrollbar-track { - background: transparent; - } - .fixPos .sideNav__list--level1 { - margin-top: calc(var(--top) - var(--headerHeight) - 148px); - } - .sideNav__list--level2 { - margin: 0 0 4px; - } - .sideNav__item { - border: none; - color: #333; - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.572; - margin: 0; - } - .sideNav__item--level2 { - font-weight: 400; - } - .sideNav__link { - color: inherit; - display: block; - font-size: inherit; - line-height: inherit; - padding: 8px 0 8px 44px; - position: relative; - transition: color 250ms ease; - } - .sideNav__link--level1.active { - background-color: #f2efe8; - border-radius: 6px; - } - .sideNav--lists .sideNav__link--level1.active:before { - background-color: var(--listColor); - border-radius: 4px; - } - .sideNav__item.open > .sideNav__link--level1 { - font-weight: 700; - } - .sideNav__link--level1:before { - font-size: 1.5rem; - left: 8px; - margin-top: -12px; - position: absolute; - top: 50%; - width: 24px; - height: 24px; - } - .sideNav__link--level2 { - border-radius: 6px; - padding-bottom: 6px; - padding-top: 6px; - } - .sideNav__link--level2.active { - background-color: #f2efe8; - font-weight: 500; - } - .sideNav__seperator { - background-color: #ececec; - height: 1px; - } - .sideNav__list .sideNav__seperator { - margin: 12px 0; - } - .swiper { - --swiper-theme-color: #838385; - --swiper-navigation-size: 32px; - --swiper-pagination-bullet-opacity: 1; - --swiper-pagination-bullet-inactive-opacity: 0.5; - --swiper-pagination-bullet-inactive-color: #a6a6a6; - --swiper-pagination-color: #f47920; - --swiper-navigation-color: #838385; - --swiper-navigation-inactive-color: #a6a6a6; - --swiper-navigation-inactive-opacity: 1; - } - .swiper-horizontal > .swiper-pagination-bullets, - .swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 0; - } - .swiper-button-prev, - .swiper-button-next { - width: var(--swiper-navigation-size); - } - .swiper-button-prev:after, - .swiper-button-next:after { - font-size: var(--swiper-navigation-size); - } - .arrowSlider .swiper-button-prev:after, - .arrowSlider .swiper-button-next:after { - font-size: 2.5rem; - } - .swiper-button-prev.swiper-button-disabled, - .swiper-button-next.swiper-button-disabled { - color: var(--swiper-navigation-inactive-color); - opacity: var(--swiper-navigation-inactive-opacity); - } - .swiper-button-prev:not(.swiper-button-disabled):active, - .swiper-button-next:not(.swiper-button-disabled):active { - color: #f47920; - } - .swiper-button-prev { - left: 0; - } - .swiper-button-prev:after { - content: ""; - } - .swiper-button-next { - right: 0; - } - .swiper-button-next:after { - content: ""; - } - .swiper-pagination { - margin-top: 32px; - } - .swiper-pagNav { - align-items: center; - bottom: 0; - display: flex; - justify-content: center; - margin-top: 32px; - } - .swiper-pagNav .swiper-pagination { - margin: 0; - position: relative; - width: auto; - } - .swiper-pagNav .swiper-button-prev, - .swiper-pagNav .swiper-button-next { - margin: 0; - position: relative; - top: 0; - } - .swiper-pagNav__shadow { - content: ""; - position: absolute; - pointer-events: none; - top: 0; - transition: opacity 250ms ease-in-out; - z-index: 1; - width: var(--swiper-navigation-size); - height: calc(100% - 64px); - } - .swiper-pagNav__shadow--prev { - background: linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%); - left: 0; - } - .swiper-pagNav__shadow--next { - background: linear-gradient(to left, white 0%, rgba(255, 255, 255, 0) 100%); - right: 0; - } - .swiper-button-disabled + .swiper-pagNav__shadow { - opacity: 0; - } - .sliderSection { - --sliderSectionSpaceBottom: 40px; - margin: 0 0 var(--sliderSectionSpaceBottom); - } - .simpleSlider { - --simnpleSliderSpaceBottom: 32px; - padding-bottom: var(--simnpleSliderSpaceBottom); - } - .simpleSlider--cat { - margin-left: -16px; - margin-top: -24px; - padding-inline: 16px; - padding-top: 24px; - width: calc(100% + 32px); - } - .simpleSlider--cat:not(.swiper-initialized) .swiper-slide { - margin-right: 16px; - width: calc(20% - 16px); - } - .productsSlider { - margin-top: 40px; - } - .productsSlider .swiper-wrapper { - align-items: stretch; - display: flex; - } - .productsSlider .swiper-slide { - width: 280px; - height: initial; - } - .productsSlider .product { - height: 100%; - } - .social p { - color: #4d4d4d; - margin: 0 0 8px; - } - .social__list { - --socialItemPAdding: 8px; - margin: 0; - display: flex; - margin-left: calc(-1 * var(--socialItemPAdding)); - } - .social__list li { - padding-left: 0; - margin: 0; - } - .social__list li:after { - display: none; - } - .social__item { - color: #ccc; - line-height: 1; - margin: 0; - padding: var(--socialItemPAdding); - } - .social__item:not(:last-child) { - margin-right: 8px; - } - .social__link { - display: inline-block; - font-size: 28px; - vertical-align: top; - } - .social__link:before { - display: inline-block; - vertical-align: top; - } - .storeListWrap .tabToggle { - align-items: center; - bottom: 24px; - display: flex; - justify-content: center; - left: 0; - position: -webkit-sticky; - position: sticky; - z-index: 3; - } - .storeMap { - background-color: #f4f4f4; - flex-grow: 1; - position: relative; - min-height: 600px; - } - .storeTile { - padding-block: 20px; - } - .storeTile:not(:last-child) { - border-bottom: 1px solid #c2c2c2; - } - .mapInfo .storeTile { - margin: 0; - padding: 0; - position: relative; - z-index: 1; - } - .storeTile__thumbnail { - border-radius: 8px; - margin-bottom: 12px; - overflow: hidden; - } - .storeTile__thumbnail figure { - width: 100%; - } - .storeTile__thumbnail figure picture { - display: block; - padding-top: calc(115 / 266 * 100%); - position: relative; - width: 100%; - } - .storeTile__thumbnail figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .storeTile__title { - font-size: 1.25rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - color: #333; - margin-bottom: 4px; - } - .storeTile__title:not(:first-child) { - margin-top: 0; - } - .storeTile__address { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - color: #404040; - margin-bottom: 8px; - } - .storeTileSpecs { - --iconSpacing: 8px; - align-items: center; - display: flex; - margin-bottom: 16px; - } - .mapInfo .storeTileSpecs { - align-items: flex-start; - flex-flow: column; - margin-bottom: 15px; - } - .storeTileSpecs__title { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.53; - margin-bottom: 14px; - } - .storeTileSpecs__iconWrap { - display: flex; - align-items: center; - } - .mapInfo .storeTileSpecs__iconWrap { - margin-bottom: 12px; - } - .storeTileSpecs__icon { - color: #838385; - font-size: 1.5rem; - margin-right: var(--iconSpacing); - } - .storeTileSpecs__iconInfo { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.23; - margin-left: calc(-1 * var(--iconSpacing)); - } - .storeTileOrder { - align-items: flex-start; - background-color: #f7f5f0; - border-radius: 8px; - display: flex; - padding: 10px 20px; - } - .mapInfo .storeTileOrder { - flex-wrap: wrap; - padding: 10px; - } - .storeTileOrder__icon { - color: #838385; - flex-shrink: 0; - font-size: 1.5rem; - margin-right: 8px; - } - .storeTileOrder__details { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - color: #333; - margin-bottom: 0; - } - .mapInfo .storeTileOrder__details { - margin-bottom: 4px; - } - .storeTileOrder__availability { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - color: #838385; - margin-bottom: 0; - } - .mapInfo .storeTileOrder__availability { - display: none; - } - .mapInfo .storeTileOrder__actions { - flex-basis: 100%; - margin-top: 12px; - } - .mapInfo .storeTileOrder__actions .button { - width: 100%; - } - .storeTileOrder--details { - align-items: center; - margin-bottom: 40px; - padding: 24px 21px; - } - .storeTileOrder--details .storeTileOrder__icon { - font-size: 0; - margin-right: 17px; - margin-top: -6px; - width: 51px; - height: 27px; - } - .storeSearch { - background-color: #fff; - margin-bottom: 32px; - text-align: center; - } - .storeSearch__inner { - margin: 0 auto; - max-width: calc(480px + 2 * var(--gridSpace)); - } - .storeSearch p { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - color: #333; - } - .storeSearch p:last-of-type { - margin-bottom: 8px; - } - .storeSearch .form { - margin-bottom: 0; - padding-block: 8px; - } - .storeSearch .field { - margin-bottom: 0; - } - .pin { - cursor: pointer; - display: inline-block; - position: relative; - } - .pin__count { - font-size: 1.375rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.36; - color: #fff; - display: inline-block; - left: 0; - margin: 0px 12px; - position: absolute; - right: 0; - text-align: center; - top: 20px; - } - .mapInfo { - background-color: #fff; - border-radius: 8px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); - max-width: 290px; - padding: 48px 12px 12px; - position: relative; - } - .mapInfo:after { - content: ""; - border-bottom-left-radius: 4px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); - border: 16px solid #000; - border-color: transparent transparent #fff #fff; - bottom: -32px; - box-sizing: border-box; - left: calc(50% - 22.625px); - margin-left: 0; - position: absolute; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - width: 0; - height: 0; - } - .mapInfo:before { - background-color: #fff; - bottom: 0; - content: ""; - display: block; - position: absolute; - left: 0; - margin: 0 auto; - pointer-events: none; - right: 0; - z-index: 1; - width: 50px; - height: 50px; - } - .mapInfo__close { - color: #838385; - font-size: 1rem; - position: absolute; - right: 19px; - top: 19px; - } - .storeLocator { - align-items: center; - background-color: #dbe5e8; - border-radius: 8px; - display: flex; - } - .storeLocator__title { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.53; - color: #333; - margin-bottom: 4px; - text-align: center; - } - .storeLocator__inner { - align-items: center; - display: flex; - flex-flow: column; - flex-grow: 1; - padding: 20px; - } - .storeLocator__sub { - font-size: 1rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.5; - text-align: center; - margin-bottom: 20px; - } - .storeLocator__illustration { - flex-basis: 300px; - font-size: 0; - } - .storeLocator__illustration--right { - margin-top: auto; - } - .storeLocator__illustration--mob { - display: none; - } - .storeLocator__form { - --fieldColumnSpace: 12px; - --formMaxWidth: 530px; - margin-bottom: 0; - } - .storeLocator__form .field { - margin-bottom: 0; - } - .storeLocator__form .field--small { - flex-grow: 1; - } - .storeLocator__form .field--small .button { - flex-grow: 1; - width: 100%; - } - .storeHours { - padding: 40px 24px; - position: relative; - color: #333; - } - .storeHours:after { - content: ""; - background-color: #f7f5f0; - border-radius: 8px; - z-index: -2; - } - .storeHours .acc { - border: 0; - } - .storeHours .acc p:last-child { - margin-bottom: 0; - } - .storeHours .acc__header { - padding: 0; - } - .storeHours .acc__content { - padding: 0; - } - .storeHours p { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - color: inherit; - margin-bottom: 6px; - } - .storeHours hr { - border: 0; - border-top: 1px solid #a6a6a6; - margin: 20px auto; - max-width: 227px; - } - .storeHours__inner { - margin: 0 auto; - max-width: 728px; - } - .storeHours__top { - text-align: center; - margin-bottom: 18px; - font-size: 1.25rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.5; - } - .storeHours__top p:last-child { - margin-bottom: 0; - } - .storeHours__illustration { - font-size: 0; - position: absolute; - pointer-events: none; - z-index: -1; - } - .storeHours__illustration--left { - top: 0; - left: 0; - } - .storeHours__illustration--right { - bottom: 25px; - right: 42px; - } - .storeHours__illustration--mob { - top: 0; - left: 0; - } - .storeHours strong { - font-weight: 500; - } - .storeDetails__map { - padding-top: calc(532 / 1001 * 100%); - position: relative; - width: 100%; - background-color: #f7f5f0; - border-radius: 8px; - overflow: hidden; - padding-top: 53.1468531469%; - position: relative; - } - .storeDetails .storeTileSpecs { - display: block; - margin-bottom: 32px; - } - .storeDetails .storeTileSpecs__icon { - margin-right: 4px; - } - .storeDetails .storeTileSpecs__iconInfo { - font-size: 0.9375rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.46; - margin-left: 0; - margin-right: 24px; - } - .table { - --paddingExternalX: 20px; - --paddingExternalY: 20px; - --cellPaddingX: 12px; - --cellPaddingY: 20px; - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - margin: 0 0 10px; - } - .table table { - border: none; - border-collapse: collapse; - text-align: left; - width: 100%; - } - .table th, - .table .mob-th { - color: #000; - font-weight: 500; - text-align: left; - } - .table th { - padding: var(--cellPaddingY) var(--cellPaddingX); - } - .table th:first-child { - padding-left: var(--paddingExternalX); - } - .table th:last-child { - padding-right: var(--paddingExternalX); - } - .table tr { - border: 3px solid transparent; - border-left: 0; - border-right: 0; - position: relative; - } - .table tbody tr { - cursor: pointer; - } - .table tbody tr:after { - background-color: #f7f5f0; - border-radius: 8px; - content: ""; - opacity: 0; - transition: opacity 250ms ease-in-out; - z-index: -1; - } - .table tbody tr.highlight:after { - background-color: #fef8c6; - opacity: 1; - } - .table td { - padding: var(--cellPaddingY) var(--cellPaddingX); - max-width: 172px; - } - .table td a { - font-weight: 400; - } - .table td.table__tools { - text-align: right; - white-space: nowrap; - } - .table td.table__tools .iconButton, - .table td.table__tools .selectedFilters__remove { - font-size: 1.5rem; - } - .table td.table__tools .iconButton:not(:last-child), - .table td.table__tools .selectedFilters__remove:not(:last-child) { - margin-right: 24px; - } - .table .mob-th { - display: none; - } - .timetable { - margin-bottom: 88px; - } - .timetable .swiper-wrapper { - align-items: stretch; - } - .timetable .swiper-slide { - height: auto; - } - .timetable__item { - display: flex; - flex-direction: column; - padding: 1px; - height: 100%; - } - .timetable__day { - background: #f7f5f0; - border-bottom: 1px solid #ececec; - color: #333; - display: flex; - flex-direction: column; - font-size: 0.875rem; - line-height: 1.375; - justify-content: center; - margin-bottom: 16px; - height: 56px; - } - .timetable__dayName { - font-size: 1rem; - font-weight: 500; - } - .timetable__hours--empty { - align-items: center; - border: 1px solid #ececec; - border-radius: 4px; - display: flex; - flex: 1; - justify-content: center; - } - .timetable__hour { - align-items: center; - border: 1px solid #c2c2c2; - border-radius: 4px; - color: #595959; - display: flex; - font-size: 0.875rem; - font-weight: 500; - justify-content: space-between; - padding: 8px 8px 8px 12px; - text-align: left; - transition: border-color 250ms ease-out; - width: 100%; - height: 40px; - } - .timetable__hour:not(.timetable__hour--unavailable) { - cursor: pointer; - } - .timetable__hour:not(:last-child) { - margin-bottom: 8px; - } - .timetable__hour--unavailable { - border-color: #ececec; - color: #d8d8d8; - } - .timetable__hour--selected { - background-color: #f2efe8; - border-color: #74b11f; - } - .timetable__hourVal { - padding-right: 8px; - white-space: nowrap; - } - .timetable__extraText { - color: #333; - font-size: 0.6875rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.183; - text-align: right; - } - .timetable__hours--empty .timetable__extraText, - .timetable__hour--unavailable .timetable__extraText { - color: #d8d8d8; - } - .timetableNav { - transition: opacity 250ms ease-in-out; - } - .timetableNav.swiper-button-disabled { - opacity: 0; - pointer-events: none; - } - .timetableNav--next:before { - content: ""; - } - .timetableNav--prev:before { - content: ""; - } - .tooltip { - margin-left: 8px; - position: relative; - z-index: 2; - } - .tooltip__main { - background: #fff; - border-radius: 10px; - bottom: calc(100% + 12px); - -webkit-filter: drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) - drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2)); - filter: drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) - drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2)); - font-size: 0.875rem; - left: 50%; - line-height: 1.3; - margin-left: -100px; - opacity: 0; - padding: 16px; - position: absolute; - text-align: left; - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - transition: opacity 200ms ease-out, -webkit-transform 250ms ease-out; - transition: opacity 200ms ease-out, transform 250ms ease-out; - transition: opacity 200ms ease-out, transform 250ms ease-out, - -webkit-transform 250ms ease-out; - width: 200px; - } - .tooltip__main:after { - border-style: solid; - bottom: calc(-1 * 8px); - content: ""; - left: 50%; - margin-left: calc(-1 * 8px); - position: absolute; - width: 0; - height: 0; - border-color: #fff transparent transparent transparent; - border-width: 8px 8px 0 8px; - } - .tooltip:not(.tooltip--open) .tooltip__main { - pointer-events: none; - } - .tooltip--open .tooltip__main { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - .tooltip--bottom .tooltip__main { - bottom: auto; - box-shadow: 0 -4px 15px rgba(51, 51, 51, 0.12); - top: calc(100% + 12px); - } - .tooltip--bottom .tooltip__main:after { - border-width: 0 8px 8px 8px; - border-color: transparent transparent #fff transparent; - bottom: auto; - top: -8px; - } - .tooltip--bottom:not(.tooltip--open) .tooltip__main { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } - .tooltip--right .tooltip__main { - left: -16px; - margin: 0; - } - .tooltip--right .tooltip__main:after { - left: 28px; - } - .tooltip--left .tooltip__main { - left: auto; - margin: 0; - right: -16px; - } - .tooltip--left .tooltip__main:after { - left: auto; - right: 20px; - } - .tooltip__btn { - padding: 0; - transition: color 250ms ease; - } - .topnav { - margin: 28px 0 16px; - position: relative; - z-index: 5; - } - .topnav__selected:before { - content: ""; - } - .topnav__list { - margin: 0; - } - .topnav__list li { - padding-left: 0; - margin: 0; - } - .topnav__list li:after { - display: none; - } - .unavailabelBox { - background-color: #f7f5f0; - border-radius: 8px; - padding: 16px; - } - .checkoutStep__main .unavailabelBox { - margin-bottom: 12px; - } - .unavailabelBox__title { - font-size: 1rem; - font-weight: 500; - margin-bottom: 8px; - } - .minibasket .unavailabelBox__title { - font-size: 1rem; - } - .unavailabelBox .listTools--noBorder { - border: none; - margin: -8px 0; - padding-bottom: 0; - padding-top: 12px; - } - .basketTable__row--unavail .product__img { - opacity: 0.5; - } - .basketTable__row--unavail .product__title { - color: #838385; - } - .playvideo { - position: relative; - } - .playvideo__icon { - --playsize: 32px; - color: var(--buttonColor); - cursor: pointer; - font-size: 2rem; - padding: 0; - transition: color 250ms ease; - } - .playvideo__icon:before { - position: relative; - z-index: 1; - } - .playvideo__icon:after { - background-color: #fff; - border-radius: 50%; - content: ""; - left: 50%; - margin: calc(1px - var(--playsize) / 2) 0 0 calc(1px - var(--playsize) / 2); - position: absolute; - top: 50%; - width: calc(var(--playsize) - 2px); - height: calc(var(--playsize) - 2px); - } - .playvideo__icon:active { - color: var(--buttonColorActive); - } - .playvideo__icon--lg { - --playsize: 64px; - font-size: 4rem; - } - .userAccountBtn { - background-color: #65141b; - border-radius: 50%; - color: #fff; - cursor: pointer; - font-size: 1.25rem; - font-weight: 700; - position: relative; - transition: background-color 250ms ease-out; - width: 44px; - height: 44px; - } - .userMenu { - display: none; - position: absolute; - top: 100%; - z-index: 3; - } - .userMenu__content { - background-color: #fff; - border-radius: 8px; - box-shadow: 0px 2px 12px rgba(51, 51, 51, 0.08); - padding: 60px 20px 20px 20px; - position: relative; - z-index: 2; - margin-top: 12px; - } - .userMenu__close { - position: absolute; - right: 20px; - top: 20px; - color: #333; - font-size: 1.5rem; - cursor: pointer; - } - .userMenu__list { - margin: 0; - } - .userMenu__list li { - padding-left: 0; - margin: 0; - } - .userMenu__list li:after { - display: none; - } - .userMenu__overlay { - position: absolute; - z-index: -1; - cursor: pointer; - } - .userMenu__content { - width: 296px; - } - .userMenu__name { - font-size: 1.125rem; - font-weight: 500; - margin-bottom: 16px; - text-align: center; - } - .userMenu__listItem { - color: var(--color); - font-size: 1rem; - line-height: 1.25; - margin: 0; - } - .userMenu__listItem:not(:first-child) { - border-top: 1px solid #ececec; - } - .userMenu__link { - --color: #333; - --hoverColor: #838385; - align-items: center; - color: var(--color); - display: inline-block; - padding: 16px 0; - vertical-align: top; - } - .userMenu__link--logout { - --color: #f47920; - --hoverColor: #f68d41; - } - .gridBoxes { - --gridBoxSpace: 12px; - display: flex; - flex-wrap: wrap; - margin: 40px 0 40px calc(-1 * var(--gridBoxSpace)); - } - .gridBoxes__box { - margin: var(--gridBoxSpace); - width: calc(33.33% - var(--gridBoxSpace) * 2); - } - .contentBox { - align-items: center; - background-color: #f7f7f7; - display: inline-flex; - padding: 40px; - position: relative; - } - .contentBox__icon { - color: #ccc; - font-size: 2.75rem; - margin-bottom: 24px; - } - .contentBox__title { - color: #666; - font-size: 1.25rem; - margin: 0 0 24px; - } - .contentBox__text { - color: #999; - font-size: 0.875rem; - } - .contentBox__text:last-child { - margin-bottom: 0; - } - .contentBox__link { - color: inherit; - transition: color 250ms ease; - } - .contentBox__link:before { - content: ""; - } - .accountPage { - position: relative; - } - .userNavBlock { - --tabItemHeight: 48px; - margin-top: calc(var(--tabItemHeight) * -1 + 1px); - margin-bottom: 88px; - } - .userNav { - margin: 0; - display: flex; - width: 100%; - } - .userNav li { - padding-left: 0; - margin: 0; - } - .userNav li:after { - display: none; - } - .userNav__item { - border-top-left-radius: 8px; - border-top-right-radius: 8px; - flex: 1 1 0; - overflow: hidden; - text-align: center; - height: var(--tabItemHeight); - } - .userNav__item:not(:last-child) { - margin-right: 10px; - } - .userNav__link { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - align-items: center; - background-color: #f2efe8; - color: #838385; - display: flex; - flex-direction: column; - justify-content: center; - padding: 12px; - position: relative; - transition: background-color 250ms ease-out; - height: 100%; - } - .userNav__link.active { - background-color: #fff; - color: #333; - } - .userNav__link:after { - content: ""; - } - .accountDetails { - align-items: flex-start; - display: flex; - justify-content: space-between; - } - .accountDetails__form { - flex: 1; - } - .accountDetails__box { - width: 376px; - max-width: 100%; - } - .socialLogins { - background-color: #f5f5f5; - padding: 24px; - } - .socialLogins__title { - margin: 0 0 16px; - } - .addBox { - align-items: center; - background: #f5f5f5; - border: 1px dashed #d6d6d6; - border-radius: 4px; - display: flex; - flex-direction: column; - justify-content: center; - padding: 40px; - position: relative; - text-align: center; - } - .addBox__icon { - color: #c2c2c2; - font-size: 3.75rem; - margin-bottom: 32px; - } - .addBox__text { - margin-bottom: 32px; - } - .addBox__link:before { - content: ""; - } - .addresses { - --addressesGap: 32px; - display: flex; - gap: var(--addressesGap); - flex-wrap: wrap; - } - .addresses__box { - border: 1px solid #d6d6d6; - border-radius: 4px; - padding: 24px; - } - .addresses__box, - .addresses .addBox { - width: calc(33.33% - var(--addressesGap) * 2 / 3); - } - .addressBox { - position: relative; - } - .addressBox__tools { - display: flex; - flex-direction: column; - position: absolute; - right: 4px; - top: 4px; - } - .addressBox .address, - .addressBox .orderSum__col, - .addressBox address { - margin-bottom: 24px; - padding-right: 16px; - } - .addressBox .form__row { - margin-left: calc(-1 * var(--fieldColumnSpace) / 2); - width: calc(100% + var(--fieldColumnSpace)); - } - .addressBox .form__row:last-child { - margin-bottom: calc(-1 * var(--fieldRowSpace)); - } - .address__title { - color: #333; - font-size: 0.875rem; - font-weight: bold; - margin: 0 0 16px; - } - .address__more { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - } - .address__more:last-child { - margin-bottom: 0; - } - .miniBasketButton { - font-size: 1.125rem; - font-weight: 700; - justify-content: space-between; - padding: 4px 10px; - width: 152px; - } - .miniBasketButton__icon { - display: inline-flex; - font-size: 1.5rem; - margin-top: 10px; - position: relative; - } - .miniBasketButton__no { - margin-left: -6px; - margin-top: -10px; - } - .miniBasketButton .priceBlock { - color: #fff; - } - .miniBasketButton .priceBlock__price { - font-weight: 700; - } - .basketMain__content { - --mainLayoutSpace: 56px; - padding-left: 0; - } - .basketTable { - --imgWidth: 96px; - --imgMarginRight: 24px; - } - .checkoutStep__main .basketTable { - margin-inline: auto; - max-width: 820px; - } - .basketTable__row { - align-items: center; - display: flex; - padding: 4px 104px 4px 20px; - position: relative; - } - .basketTable__row:not(.basketTable__row--head) { - border-bottom: 1px solid #ececec; - } - .basketTable__row--head { - align-items: flex-end; - background-color: #f2efe8; - border-radius: 8px; - padding-block: 16px; - } - .basketTable__row--head .basketTable__cell { - color: #333; - font-size: 0.9375rem; - font-weight: 500; - } - .basketTable__row--head .basketTable__cell:first-child { - padding-left: 16px; - } - .basketTable__cell--price { - flex-shrink: 0; - margin-right: 40px; - text-align: right; - width: 80px; - } - .basketTable__cell--quant { - flex-shrink: 0; - margin: 0 32px; - text-align: center; - width: 152px; - } - .basketTable__row--head .basketTable__cell--quant { - text-align: left; - } - .basketTable__cell--button { - width: 232px; - } - .minibasket .basketTable__cell--button { - margin: 0; - width: 100%; - } - .basketTable__cell--more { - width: 100%; - } - .basketTable__cell .product__img { - flex-shrink: 0; - margin: 0 var(--imgMarginRight) 0 0; - padding: 0; - width: var(--imgWidth); - } - .basketTable__cell .product__title { - margin: 0; - position: relative; - } - .basketTable__cell .product__avail { - margin: 8px 0 0; - } - .basketTable__no { - font-weight: 400; - } - .basketTable .priceBlock__price { - font-size: 1.25rem; - line-height: 1.5; - } - .basketTable .priceBlock__price--init { - font-size: 0.9375rem; - line-height: 1.467; - margin-top: -5px; - } - .basketTable__remove { - margin-top: -16px; - position: absolute; - right: 20px; - top: 50%; - } - .basketTable .product__inner { - align-items: center; - flex-direction: row; - position: static; - } - .basketTable .fav { - font-size: 2rem; - margin-top: -16px; - right: 60px; - top: 50%; - } - .minibasket .basketTable { - --imgWidth: 80px; - --basketProductSpaceV: 16px; - } - .minibasket .basketTable .basketTable__row:not(.basketTable__row--head) { - align-content: center; - align-items: flex-start; - flex-wrap: wrap; - padding: var(--basketProductSpaceV) 8px var(--basketProductSpaceV) 96px; - min-height: 112px; - } - .minibasket .basketTable .basketTable__remove { - font-size: 1.5rem; - margin: 0; - right: 8px; - top: var(--basketProductSpaceV); - z-index: 2; - } - .minibasket .basketTable .basketTable__cell--product { - flex: auto; - width: 100%; - } - .minibasket .basketTable .basketTable__cell--product:not(:last-child) { - margin-bottom: 8px; - } - .minibasket .basketTable .basketTable__cell--quant { - margin: 0; - } - .minibasket .basketTable .basketTable__cell--price { - align-items: flex-end; - display: inline-flex; - flex: 1; - justify-content: flex-end; - margin: 0; - width: auto; - height: 34px; - } - .minibasket .basketTable .fav { - font-size: 1.5rem; - margin: 0; - right: 40px; - top: var(--basketProductSpaceV); - } - .minibasket .basketTable .product__img { - left: 8px; - margin-top: -40px; - position: absolute; - top: 50%; - } - .minibasket .basketTable .product__title { - font-size: 0.9375rem; - padding-right: 72px; - } - .sideBasket { - background: #fff; - } - .sideBasket__title:before { - content: ""; - } - .cards { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: center; - margin: 16px 0 0; - } - .cards figure { - margin: 4px; - } - .cards img { - display: inline-block; - vertical-align: top; - } - .cards--inline { - display: inline-flex; - margin: -4px 0; - } - .minibasket { - --miniBasketWidth: 544px; - --miniBasketSpaceH: 16px; - --miniBasketProductSpaceTop: 16px; - --miniBasketProductSpaceH: 12px; - z-index: 2; - } - .minibasket__inner { - background-color: #fff; - position: fixed; - right: 0; - top: var(--top); - z-index: 10; - width: var(--miniBasketWidth); - height: var(--windowHeight); - } - .minibasket__top { - flex: 1; - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - } - .minibasket__top::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .minibasket__top::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .minibasket__top::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .minibasket__top::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .minibasket__top::-webkit-scrollbar-track { - background: transparent; - } - .minibasket__header { - align-items: center; - display: flex; - padding: 32px var(--miniBasketSpaceH) 24px; - } - .minibasket__header .close-mini-cart { - margin-left: auto; - } - .minibasket__title { - color: #333; - font-size: 1.25rem; - font-weight: 500; - margin: 0 16px 0 0; - } - .minibasket__content { - padding: 0 var(--miniBasketSpaceH); - } - .minibasket__product { - border-bottom: 1px solid #ececec; - padding: var(--miniBasketProductSpaceTop) var(--miniBasketProductSpaceH) 24px; - position: relative; - } - .minibasket__remove { - position: absolute; - right: var(--miniBasketProductSpaceH); - top: var(--miniBasketProductSpaceTop); - z-index: 2; - } - .minibasket__bottom { - background: #fff; - box-shadow: 0px -2px 10px rgba(51, 51, 51, 0.1); - padding: 24px; - } - .basketInfo { - color: #595959; - font-size: 0.8125rem; - letter-spacing: -0.02em; - margin: 16px 0 0; - text-align: center; - } - .sideBasket .basketInfo { - margin-top: 8px; - } - .miniCart__main { - display: flex; - flex-direction: column; - justify-content: space-between; - height: 100%; - } - .miniCart__holder .loader { - display: flex; - min-height: 240px; - } - .miniCart__holder .loader__item { - background-color: #999; - } - .quantinyNo { - align-items: center; - background-color: #f0f0f0; - border-radius: 5px; - display: inline-flex; - justify-content: center; - width: 64px; - height: 48px; - } - .form--basket { - margin-block: 32px; - } - .secureCheckout { - align-items: center; - display: inline-flex; - } - .secureCheckout__img { - width: 142px; - } - .secureCheckout figure { - width: 100%; - } - .secureCheckout figure picture { - display: block; - padding-top: calc(28 / 142 * 100%); - position: relative; - width: 100%; - } - .secureCheckout figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .checkout { - --checkoutSpaceTop: 77px; - padding: var(--checkoutSpaceTop) 0 0; - } - .checkout .productsSum { - position: -webkit-sticky; - position: sticky; - right: 0; - top: var(--checkoutSpaceTop); - } - .checkout__title { - font-size: 2.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.19; - text-align: center; - margin: 0 0 99px; - } - .checkout > h2 { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.53; - text-align: center; - margin: 0 0 25px; - } - .checkout .acc__content { - padding: 0 0 32px; - } - .checkoutSteps { - counter-reset: checkoutstep; - } - .checkoutStep { - --checkoutStepSpace: 24px; - border-bottom: 1px solid #c2c2c2; - } - .checkoutStep:first-child { - border-top: 1px solid #c2c2c2; - } - .checkoutStep:last-child { - border-bottom: 0; - } - .checkoutStep--bottomInfo { - border: 0; - padding-top: 5px; - color: #333; - } - .checkoutStep--bottomInfo p { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - color: inherit; - margin: 0 0 8px; - } - .checkoutStep.checkoutStep--final .checkoutStep__main { - padding: var(--checkoutStepSpace) 0; - } - .checkoutStep__main .form, - .checkoutStep__main .form__row:last-child .field { - margin-bottom: 0; - } - .checkoutStep__edit { - margin: 0 calc(-1 * var(--iconButtonSpace)); - position: absolute; - right: var(--checkoutStepSpace); - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - .commentsBlock { - display: none; - position: relative; - } - .showComments { - left: 0; - position: absolute; - top: 0; - transition: opacity 250ms ease-in-out; - } - .showComments.active { - opacity: 0; - pointer-events: none; - } - .checkoutProducts { - margin-bottom: 16px; - } - .checkoutProducts .acc__header { - justify-content: space-between; - } - .checkoutProducts .acc__icon { - margin-right: -8px; - } - .checkoutMsg { - color: #333; - text-align: center; - margin: 0 0 40px; - } - .checkoutMsg img { - margin-bottom: 19px; - width: 124px; - height: 124px; - } - .checkoutMsg__title { - font-size: 1.875rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - color: inherit; - margin: 0; - } - .checkoutMsg p { - color: inherit; - margin: 0 0 11px; - } - .checkoutMsg .button { - margin-top: 43px; - } - .checkoutMsg__code { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - } - .checkoutMsg__code strong { - font-size: 1.125rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - } - .checkoutTracking { - align-items: center; - background-color: #f2efe8; - border-radius: 8px; - color: #333; - display: flex; - margin: 0 auto 60px; - padding: 20px; - max-width: 821px; - } - .checkoutTracking__inner { - flex-grow: 1; - width: 100%; - } - .checkoutTracking p { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - color: inherit; - margin: 0 0 5px; - } - .checkoutTracking ul li { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - } - .checkoutTrackingMsg { - text-align: center; - color: #333; - margin: 40px 0; - } - .checkoutTrackingMsg p { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - color: inherit; - margin: 0; - } - .printRow { - display: flex; - justify-content: flex-end; - } - .printRow .icon { - color: #333; - } - .loyalty { - background-color: #f7f5f0; - border-radius: 8px; - padding: 20px; - margin: 40px 0 48px; - } - .loyalty__img { - flex-shrink: 0; - font-size: 0; - display: flex; - align-items: center; - } - .loyalty__img img { - width: 80px; - height: 80px; - } - .loyalty__img img:not(:last-child) { - margin-right: 8px; - } - .loyalty__inner { - display: flex; - flex-grow: 1; - } - .loyalty__col { - flex: 1 1 0; - } - .loyalty__col:not(:last-child) { - margin-right: 1px; - } - .loyalty__row { - align-items: center; - display: flex; - flex-flow: row; - flex-wrap: nowrap; - flex-grow: 1; - } - .loyalty__row:not(:last-child) { - margin-bottom: 1px; - } - .loyalty__cell { - align-items: center; - background-color: #fff; - display: flex; - flex-flow: row; - flex-wrap: nowrap; - flex: 1 1 0; - justify-content: space-between; - padding: 10px 14px; - height: 100%; - } - .loyalty__cell span { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - } - .loyalty__cell span:first-child { - margin-right: 15px; - } - .loyalty__table { - display: flex; - flex-grow: 1; - flex-flow: column; - } - .loyaltyList { - text-align: left; - max-width: 520px; - margin: 40px auto 30px; - padding: 0; - } - .loyaltyList li { - font-size: 1.25rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.5; - display: inline-block; - } - .loyaltyList li:not(:last-child) { - margin-bottom: 13px; - } - .loyaltyList li:after { - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - .loyaltyList li .field__input--inlineB { - margin: 0 5px; - } - .loyaltyList li:nth-child(2):after { - top: 20px; - } - .contactinfo { - margin-bottom: 42px; - } - .contactinfo__section { - margin-bottom: 32px; - } - .contactinfo__subtitle { - font-weight: 500; - margin: 0 0 8px; - } - .contactinfo__link { - align-items: center; - color: #333; - display: inline-flex; - flex-wrap: wrap; - font-size: 0.8125rem; - font-weight: 500; - line-height: 1; - margin: 8px 0; - } - .contactinfo__link:active { - color: #f47920; - } - .contactinfo__link:active .contactinfo__icon { - color: #f47920; - } - .contactinfo__icon { - color: #838385; - font-size: 1.5rem; - margin: 0 8px 0 4px; - } - .contactinfo__note { - color: #838385; - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - } - .gallery { - display: flex; - flex-wrap: wrap; - max-width: 1017px; - margin: 0 auto 40px; - } - .gallery__figure { - width: 100%; - margin: 10px 0; - max-width: 318px; - } - .gallery__figure figure { - width: 100%; - } - .gallery__figure figure picture { - display: block; - padding-top: calc(203 / 318 * 100%); - position: relative; - width: 100%; - } - .gallery__figure figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .gallery__figure img { - border-radius: 8px; - cursor: pointer; - } - .galleryMainImg { - width: 100%; - margin: 0 0 20px; - --swiper-navigation-size: 40px; - } - .galleryMainImg__slide img { - max-height: calc(100vh - 220px); - border-radius: 8px; - } - .galleryThumbs { - max-width: 468px; - margin: 0 auto; - padding-bottom: 30px; - width: 100%; - } - .galleryThumbs .swiper-slide-thumb-active img { - border-color: #74b11f; - } - .galleryThumbs__slide { - cursor: pointer; - } - .galleryThumbs img { - border-radius: 6px; - border: solid 2px transparent; - } - .gallerySlider { - height: 100%; - display: flex; - flex-wrap: wrap; - align-items: center; - flex-direction: column; - justify-content: center; - padding: 20px 10px; - } - .history { - --historycnt: 92px; - --hthumb: 160px; - } - .history__sections { - border-bottom: 1px solid #ececec; - margin-bottom: 32px; - padding-bottom: 40px; - } - .history__mainimg { - margin-bottom: 72px; - position: relative; - } - .history__mainimg figure { - width: 100%; - } - .history__mainimg figure picture { - display: block; - padding-top: calc(500 / 984 * 100%); - position: relative; - width: 100%; - } - .history__mainimg figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .history__section { - display: flex; - flex-wrap: wrap; - } - .history__date { - font-size: 0.875rem; - font-weight: 700; - letter-spacing: -0.02em; - padding-right: 52px; - position: relative; - text-align: right; - width: var(--historycnt); - } - .history__date:before, - .history__date:after { - content: ""; - position: absolute; - right: 44px; - } - .history__date:before { - width: 10px; - height: 10px; - background: #f47920; - border-radius: 50%; - margin-right: -5px; - top: 4px; - } - .history__date:after { - border-left: 1px dashed #a6a6a6; - top: 22px; - height: calc(100% - 22px - 5px); - } - .history__content { - margin-bottom: 40px; - width: calc(100% - var(--historycnt)); - } - .history__thumb { - flex-shrink: 0; - position: relative; - width: var(--hthumb); - } - .history__thumb figure { - width: 100%; - } - .history__thumb figure picture { - display: block; - padding-top: calc(120 / 160 * 100%); - position: relative; - width: 100%; - } - .history__thumb figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .history__description p:last-child { - margin-bottom: 0; - } - .landingList { - --colGap: 16px; - --landingItemSpace: 16px; - --landingTitleMobSpace: 8px; - display: flex; - flex-wrap: wrap; - -webkit-column-gap: var(--colGap); - -moz-column-gap: var(--colGap); - column-gap: var(--colGap); - row-gap: 48px; - } - .landingList__item { - display: inline-flex; - flex-direction: column; - padding: var(--landingItemSpace) 0; - position: relative; - width: calc(16.66% - 5 * var(--colGap) / 6); - } - .landingList__item.active { - z-index: 1; - } - .landingItem { - text-align: center; - } - .landingItem--box { - background: #fff; - border-radius: 8px; - padding: 16px 16px 24px; - } - .swiper-slide-visible .landingItem--box { - box-shadow: 0px 0px 24px rgba(51, 51, 51, 0.08); - } - .landingItem__img { - padding: 0 var(--landingItemSpace); - pointer-events: none; - } - .landingItem__img figure { - width: 100%; - } - .landingItem__img figure picture { - display: block; - padding-top: calc(156 / 205 * 100%); - position: relative; - width: 100%; - } - .landingItem__img figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .landingItem--box .landingItem__img { - margin-bottom: 12px; - } - .landingItem__link { - color: var(--buttonColor); - font-size: 0.9375rem; - font-weight: 500; - margin: 16px 0 0; - } - .landingItem__link:before { - content: ""; - } - .landingItem__link:active { - color: var(--buttonColorActive); - } - .landingItem__title { - align-items: center; - border-radius: 8px; - color: #333; - display: inline-flex; - flex: 1; - font-size: 0.9375rem; - font-weight: 500; - justify-content: center; - line-height: 1.4; - margin: 0; - padding: var(--landingItemSpace); - transition: color 250ms ease; - } - .landingItem__title:before { - background: url(../media/wood.png) repeat center; - content: ""; - opacity: 0; - transition: opacity 250ms ease-in-out; - z-index: -1; - } - .landingItem:not(.landingItem--box) .landingItem__title { - overflow: hidden; - position: relative; - pointer-events: none; - } - .landingItem--box .landingItem__title:active { - color: var(--buttonColorActive); - } - .landingItem--box .landingItem__title:after { - content: ""; - } - .landingItem__desc { - color: #838385; - font-size: 0.8125rem; - letter-spacing: -0.02em; - line-height: 1.23; - margin: 8px 0 0; - } - .landingItem__submenu { - margin: 0; - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - background: #fff; - box-shadow: 0px 2px 12px rgba(51, 51, 51, 0.08); - border-radius: 8px; - display: none; - left: 0; - padding: var(--landingItemSpace) 0; - position: absolute; - top: calc(100% - var(--landingItemSpace) + 8px); - width: 100%; - max-height: 472px; - } - .landingItem__submenu li { - padding-left: 0; - margin: 0; - } - .landingItem__submenu li:after { - display: none; - } - .landingItem__submenu::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .landingItem__submenu::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .landingItem__submenu::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .landingItem__submenu::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .landingItem__submenu::-webkit-scrollbar-track { - background: transparent; - } - .landingItem__submenuItem { - font-size: 0.875rem; - line-height: 1.429; - margin: 0; - text-align: left; - } - .landingItem__submenuLink { - color: #333; - display: block; - padding: 12px var(--landingItemSpace); - transition: color 250ms ease; - } - .newListLink:before { - color: #f47920; - } - .listsBlock { - z-index: 3; - } - .listsBlock__inner { - background: #fff; - box-shadow: 0px 4px 10px rgba(51, 51, 51, 0.25); - border-radius: 6px; - padding: 16px; - position: relative; - } - .listsBlock__title { - color: #333; - font-size: 0.875rem; - font-weight: 500; - line-height: 1; - margin: 0 0 24px; - } - .listsBlock__list { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - border-bottom: 1px solid #c2c2c2; - margin-bottom: 16px; - padding-bottom: 16px; - max-height: 176px; - } - .listsBlock__list::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .listsBlock__list::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .listsBlock__list::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .listsBlock__list::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .listsBlock__list::-webkit-scrollbar-track { - background: transparent; - } - .listsBlock__close { - position: absolute; - right: 0; - top: 0; - } - .listsBlock__item:not(:first-child) { - margin-top: 16px; - } - .listsBlock__item:not(:last-child) { - margin-bottom: 16px; - } - .listsBlock__name { - align-items: center; - color: #333; - display: flex; - font-size: 0.875rem; - font-weight: 500; - line-height: 1.2; - padding-left: 36px; - position: relative; - min-height: 24px; - } - .listsBlock__name:before { - font-size: 2rem; - left: 0; - margin-top: -16px; - position: absolute; - top: 50%; - width: 32px; - height: 32px; - } - .myLists:not(.myLists--grid) { - text-align: right; - } - .myLists--grid { - --listsGap: 24px; - display: flex; - flex-wrap: wrap; - gap: var(--listsGap); - } - .myLists--grid .myList { - width: calc(33.33% - 2 * var(--listsGap) / 3); - } - .myLists--row { - --listsGap: 24px; - display: flex; - gap: var(--listsGap); - } - .myLists__new { - margin: 12px 0; - } - .myList { - align-items: center; - display: flex; - justify-content: flex-start; - position: relative; - text-align: left; - } - .myList:not(.myList--box) { - border-bottom: 1px solid #c2c2c2; - padding: 12px 80px 12px 0; - } - .myList--box { - border: 1px solid #d8d8d8; - border-radius: 8px; - padding: 24px 12px; - min-height: 80px; - } - .myList--box:before { - content: ""; - } - .myList--box:after { - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - content: ""; - opacity: 0; - pointer-events: none; - transition: opacity 250ms ease-in-out; - } - .myList--box:before { - bottom: 0; - color: rgba(255, 255, 255, 0.6); - font-size: 4rem; - position: absolute; - right: 0; - } - .myList--box.myList--new:before { - color: rgba(244, 121, 32, 0.5); - } - .myList--box.myList--fav:before { - content: ""; - } - .myList--box.myList--fav:before { - color: rgba(51, 51, 51, 0.1); - } - .myList--new { - border-color: #f47920; - border-style: dashed; - } - .myList__icon { - align-items: center; - display: inline-flex; - flex-shrink: 0; - justify-content: center; - } - .myList__icon:after { - background-color: var(--listColor); - content: ""; - border-radius: 8px; - z-index: -1; - } - .myList:not(.myList--box) .myList__icon { - font-size: 2rem; - margin-right: 20px; - position: relative; - width: 60px; - height: 60px; - } - .myList:not(.myList--box) .myList__icon:before { - width: 32px; - height: 32px; - } - .myList--box .myList__icon { - font-size: 2rem; - margin-right: 8px; - } - .myList--box .myList__icon:before { - width: 32px; - height: 32px; - } - .myList__title { - color: var(--buttonColor); - display: block; - font-size: 1.125rem; - font-weight: 700; - line-height: 1.2; - margin: 0; - } - .myList__title:active { - color: var(--buttonColorActive); - } - .myList__title:after { - content: ""; - } - .myList--box .myList__title { - font-size: 1.375rem; - } - .myList--editView .myList__title { - padding-right: 48px; - } - .myList--box .myList__link, - .myList--box .myList__titleInner { - position: relative; - z-index: 1; - } - .myList__link { - pointer-events: none; - } - .myList__no { - font-size: 0.9375rem; - font-weight: 500; - } - .myList__tools { - display: flex; - margin-top: -12px; - position: absolute; - right: 12px; - top: 50%; - } - .myList__tools .iconButton:not(:last-child), - .myList__tools .selectedFilters__remove:not(:last-child) { - margin-right: 8px; - } - .myList__edit { - position: absolute; - right: 8px; - top: 8px; - } - .myList__new:after { - content: ""; - } - .productList .product, - .productsSlider .product { - box-shadow: 0 2px 12px rgba(51, 51, 51, 0.08); - border-radius: 8px; - padding: var(--productPadding); - transition: box-shadow 350ms ease-out; - } - .productList { - --productSpaceH: 24px; - --productSpaceV: 24px; - display: flex; - flex-wrap: wrap; - gap: var(--productSpaceV) var(--productSpaceH); - } - .productList .product { - width: calc(20% - 4 * var(--productSpaceH) / 5); - } - .productList .quantity { - max-width: 100%; - } - .listTools { - border-bottom: 1px solid #c2c2c2; - display: flex; - flex-wrap: wrap; - justify-content: flex-end; - margin-top: -8px; - padding: 0 0 8px; - } - .listTools__counter { - font-size: 0.875rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.28; - margin-right: auto; - } - .minibasket .listTools { - justify-content: flex-start; - } - .listTools .link, - .listTools .text a, - .text .listTools a, - .listTools p a, - p .listTools a, - .listTools .button { - margin-top: 8px; - margin-bottom: 8px; - white-space: nowrap; - } - .listTools .link:not(:last-child), - .listTools .text a:not(:last-child), - .text .listTools a:not(:last-child), - .listTools p a:not(:last-child), - p .listTools a:not(:last-child), - .listTools .button:not(:last-child) { - margin-right: 16px; - } - .orderRow { - --orderColGap: 32px; - --orderRowGap: 16px; - --orderProductWidth: 80px; - --orderProductGap: 8px; - --orderProductsWidth: calc( - var(--orderProductWidth) * 3 + var(--orderProductGap) * 2 - ); - border-bottom: 1px solid #e6e6e6; - padding: 24px 0; - } - .orderRow__items { - grid-area: 1/1/3/2; - text-align: center; - } - .orderRow__itemsInner { - display: flex; - gap: var(--orderProductGap); - } - .orderRow__itemsInner:not(:last-child) { - margin-bottom: 8px; - } - .orderRow__itemsInner .product { - width: var(--orderProductWidth); - } - .orderRow__itemsInner .product__img { - margin: 0; - } - .orderRow__status { - grid-area: 1/2/2/5; - } - .orderRow__info--1 { - grid-area: 2/2/3/3; - } - .orderRow__info--2 { - grid-area: 2/3/3/4; - } - .orderRow__info--3 { - grid-area: 2/4/3/5; - } - .orderHistory { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - --outerPaddingY: 24px; - --outerPaddingX: 16px; - --qrWidth: 123px; - --qrMargin: 19px; - background-color: #f7f5f0; - border-radius: 8px; - display: flex; - flex-wrap: wrap; - padding: var(--outerPaddingY) var(--outerPaddingX); - position: relative; - width: 100%; - } - .orderHistory:not(:last-child) { - margin-bottom: 24px; - } - .orderHistory__qr { - width: var(--qrWidth); - flex-shrink: 0; - } - .orderHistory__section { - display: flex; - flex: 1 1 0; - padding-right: 20px; - } - .orderHistory__section--top { - align-items: center; - flex-basis: 100%; - flex-flow: row; - margin-bottom: 20px; - padding-right: 130px; - } - .orderHistory__section--top .copyText { - margin-left: 10px; - } - .orderHistory__sectionInner { - display: flex; - flex-flow: column; - } - .orderHistory strong { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - } - .orderHistory figure { - width: 100%; - } - .orderHistory figure picture { - display: block; - padding-top: calc(123 / 123 * 100%); - position: relative; - width: 100%; - } - .orderHistory figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .orderHistory.highlight { - background-color: #fef8c6; - } - .orderHistory.highlight .indicator { - font-size: 0.8125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.15; - background-color: #fff; - padding: 4px 8px; - border-radius: 8px; - } - .orderHistory.highlight .indicator:before { - display: none; - } - .orderHistory .indicator { - position: absolute; - top: var(--outerPaddingY); - right: var(--outerPaddingX); - } - .copyText { - align-items: center; - display: inline-flex; - position: relative; - } - .copyText__btn { - margin: calc(-1 * var(--iconButtonSpace)) calc(-1 * var(--iconButtonSpace)) - calc(-1 * var(--iconButtonSpace)) 0; - } - .copyText__tooltip { - background: #fff; - border-radius: 10px; - -webkit-filter: drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) - drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2)); - filter: drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) - drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2)); - font-size: 0.875rem; - left: 100%; - line-height: 1.3; - margin-left: 8px; - opacity: 0; - padding: 12px; - position: absolute; - top: 50%; - -webkit-transform: translate3d(8px, -50%, 0); - transform: translate3d(8px, -50%, 0); - transition: opacity 200ms ease-out, -webkit-transform 250ms ease-out; - transition: opacity 200ms ease-out, transform 250ms ease-out; - transition: opacity 200ms ease-out, transform 250ms ease-out, - -webkit-transform 250ms ease-out; - } - .copyText__tooltip--open { - opacity: 1; - -webkit-transform: translate3d(0, -50%, 0); - transform: translate3d(0, -50%, 0); - } - .orderSum { - --orderSumColSpace: 24px; - display: flex; - flex-wrap: wrap; - } - .orderSum--border { - border: 1px solid #fff; - margin-bottom: 24px; - } - .orderSum--border .orderSum__col { - padding: var(--orderSumColSpace); - } - .orderSum__col { - flex: 1; - } - .orderSum__col:not(:first-child) { - padding-left: var(--orderSumColSpace); - } - .orderSum__col:not(:last-child) { - padding-right: var(--orderSumColSpace); - } - .orderSum__col .address:not(:last-child), - .orderSum__col address:not(:last-child), - .orderSum__col .orderSum__col:not(:last-child) { - margin-bottom: 24px; - } - .orderSum__title { - color: #333; - font-size: 0.875rem; - font-weight: bold; - margin: 0 0 8px; - } - .orderSum__colTitle { - color: #333; - margin: 0 0 8px; - } - .orderStatusInfo { - align-items: baseline; - display: flex; - flex-wrap: wrap; - margin-bottom: 32px; - } - .orderNo { - background-color: #f0f0f0; - color: gray; - border-radius: 5px; - font-size: 1rem; - padding: 8px; - } - .orderNo b { - font-size: 1.25rem; - } - .orderStatusInfo .orderNo { - margin-right: 16px; - } - .orderTrack { - align-items: center; - background-color: #fef8c6; - border-radius: 8px; - display: flex; - margin: 0 0 20px; - padding: 8px 12px; - position: relative; - } - .acc__content .orderTrack { - margin: 2px 0; - } - .orderTrack strong { - font-weight: 500; - } - .orderTrack__action { - margin-left: auto; - } - .orderTrack__action:after { - content: ""; - } - .orderTrack__inner { - align-items: center; - display: flex; - margin-right: 10px; - } - .orderTrack__text { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.23; - color: #000; - margin: 0 13px 0 0; - } - .productPage { - --mainButtonWidth: 232px; - --productImageColSpace: 56px; - margin: 48px 0 56px; - } - .productPage__imageCol { - position: relative; - } - .productPage__imageMain { - margin-bottom: 64px; - } - .productPage__imageMain .wishlistButton { - position: absolute; - right: 20px; - top: 20px; - z-index: 2; - } - .productPage__image { - cursor: url("data:image/svg+xml,%3Csvg width='48' height='48' viewBox='0 0 48 48' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg opacity='0.5'%3E%3Ccircle cx='24' cy='24' r='24' fill='black'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.52 14.52H22.52V22.52H14.52V24.52H22.52V32.52H24.52V24.52H32.52V22.52H24.52V14.52Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A") - 16 16, - pointer; - } - .productPage__image figure { - width: 100%; - } - .productPage__image figure picture { - display: block; - padding-top: calc(457 / 457 * 100%); - position: relative; - width: 100%; - } - .productPage__image figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .productPage__info { - grid-area: product_content; - } - .productInfo__flag { - color: #999; - font-size: 0.875rem; - line-height: 1; - margin: 0; - } - .productInfo__title { - font-size: 1.75rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.2; - margin: 8px 0; - } - .productInfo__desc { - color: #404040; - font-size: 0.9375rem; - line-height: 1.33; - margin: 0 0 24px; - } - .productInfo__code { - color: #838385; - font-size: 0.8125rem; - letter-spacing: -0.01em; - line-height: 1.231; - margin: 0; - } - .productInfo__code:not(:last-child) { - margin-right: 12px; - } - .productInfo__codeWrap { - display: flex; - margin-bottom: 16px; - } - .productInfo__quantity { - margin: 21px 0 36px; - } - .productInfo .priceContainer { - margin: 0 0 16px; - } - .productAttr { - margin: 0 0 40px; - max-width: 568px; - } - .productAttr__title { - display: flex; - margin: 0 0 8px; - } - .productAttr__label { - color: #999; - font-size: 0.875rem; - font-weight: 600; - margin-right: 8px; - } - .productAttr__selected { - color: #333; - font-size: 0.875rem; - font-weight: 600; - } - .productAttr__selectedDefault { - color: #ccc; - } - .productAttr__main { - --radioColorSpace: 8px; - display: flex; - flex-wrap: wrap; - margin-left: calc(-1 * var(--radioColorSpace)); - width: calc(100% + var(--radioColorSpace) * 2); - } - .productAttr__main .radiobutton { - margin: var(--radioColorSpace); - } - .addProduct { - align-items: center; - display: flex; - margin: 0 0 16px; - } - .addProduct > *:not(:last-child) { - margin-right: 16px; - } - .addToCartButton:before { - content: ""; - } - .addToCartButton--added { - background-color: #333; - } - .addToCartButton--added:before { - content: ""; - } - .addToCartButton--added .addToCartButton__text--default { - display: none; - } - .addToCartButton--loading:before, - .addToCartButton--loading .addToCartButton__text { - display: none; - } - .addToCartButton--loading .loader { - display: block; - } - .addToCartButton:not(.addToCartButton--added) .addToCartButton__text--added { - display: none; - } - .addToCartButton:not(.addToCartButton--loading) .loader { - display: none; - } - .productDetails { - border-top: 1px solid #d8d8d8; - margin-top: 32px; - padding-top: 32px; - } - .productDetails__heading { - color: #333; - font-size: 1.375rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.36; - margin: 0 0 32px; - } - .productDetails__title { - margin: 0; - } - .productDetails__content { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - color: #404040; - } - .productDetails__content p { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - color: inherit; - } - .productDetails__content p:last-of-type { - margin-bottom: 0; - } - .productDetailsNutrTable { - display: inline-flex; - flex-direction: column; - flex-wrap: wrap; - width: 100%; - } - .productDetailsNutrTable table { - border-collapse: collapse; - margin-bottom: 15px; - } - .productDetailsNutrTable table:last-child { - margin-bottom: 0; - } - .productDetailsNutrTable th { - border: none; - font-size: 0.8125rem; - font-weight: 500; - color: #595959; - letter-spacing: -0.02em; - line-height: 1.15; - padding: 6px 16px; - text-align: right; - } - .productDetailsNutrTable td { - border-bottom: solid 1px #fff; - color: #333; - font-size: 0.875rem; - font-weight: 500; - letter-spacing: -0.01em; - line-height: 1.28; - padding: 10px 14px; - text-align: right; - } - .productDetailsNutrTable td:first-child { - font-weight: 400; - text-align: left; - } - .productDetailsNutrTable .highlight { - background: #ececec; - } - .productSliderModal .modal__wrap { - padding: 48px 32px 32px; - } - .productThumbs { - --thumbImageWidth: 80px; - } - .productThumbs__slide { - border-radius: 6px; - cursor: pointer; - overflow: hidden; - position: relative; - width: var(--thumbImageWidth); - height: var(--thumbImageWidth); - } - .productThumbs__slide:after { - border: 1px solid #f47920; - border-radius: inherit; - content: ""; - opacity: 0; - transition: opacity 250ms ease-in-out; - } - .productThumbs__slide figure { - width: 100%; - } - .productThumbs__slide figure picture { - display: block; - padding-top: calc(80 / 80 * 100%); - position: relative; - width: 100%; - } - .productThumbs__slide figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .productThumbs__slide.swiper-slide-thumb-active:after { - opacity: 1; - } - .productThumbs .swiper-button-prev, - .productThumbs .swiper-button-next { - margin: 0; - } - .productThumbs .swiper-button-prev:before, - .productThumbs .swiper-button-next:before { - content: ""; - } - .productThumbs .swiper-button-prev:after, - .productThumbs .swiper-button-next:after { - z-index: 2; - } - .productThumbs .swiper-button-prev:after { - content: ""; - } - .productThumbs .swiper-button-prev:after { - content: ""; - } - .productThumbs .swiper-button-next:after { - content: ""; - } - .productThumbs .swiper-button-next:after { - content: ""; - } - .productThumbs .swiper-pagination { - position: static; - margin-top: 19px; - } - .productMainImg { - --productMainImgWidth: 560px; - margin: 0 auto; - width: 100%; - max-width: 942px; - } - .productMainImg__slide figure { - width: 100%; - margin: 0 auto; - max-width: var(--productMainImgWidth); - } - .productMainImg__slide figure picture { - display: block; - padding-top: calc(560 / 560 * 100%); - position: relative; - width: 100%; - } - .productMainImg__slide figure img { - inset: 0; - -o-object-fit: contain; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .productMainImg .swiper-pagination { - position: static; - } - .productMainImg .imgControl { - margin: 60px 0 32px; - } - .productHeader { - background-color: #fff; - box-shadow: 0px 1px 1px rgba(51, 51, 51, 0.1), - 0px 2px 2px rgba(51, 51, 51, 0.15), 0px 4px 4px rgba(51, 51, 51, 0.2); - left: 0; - position: fixed; - top: 0; - transition: -webkit-transform 250ms ease-out; - transition: transform 250ms ease-out; - transition: transform 250ms ease-out, -webkit-transform 250ms ease-out; - -webkit-transform: translateY(-120%); - transform: translateY(-120%); - z-index: 9; - width: 100%; - } - .productHeader.active { - -webkit-transform: translateY(0); - transform: translateY(0); - } - .productHeader .product { - align-items: center; - display: flex; - justify-content: space-between; - margin: 0 auto; - padding: 8px var(--gridSpace); - max-width: var(--wrapper); - } - .productHeader .product__block { - align-items: center; - display: flex; - position: relative; - } - .productHeader .product__img { - flex-shrink: 0; - margin: 0 16px 0 0; - width: 72px; - } - .productHeader .product__more { - margin: 0 16px 0 0; - } - .productHeader .product__desc:last-child { - margin-bottom: 0; - } - .productHeader .priceContainer { - margin-right: 16px; - } - .notifyMe { - position: relative; - z-index: 1; - } - .notifyMe__button.active { - background-color: #333; - color: #fff; - } - .notifyMe__button:not(.notifyMe__button--loading) .loader { - display: none; - } - .notifyMe__button.notifyMe__button--loading .notifyMe__buttonText { - display: none; - } - .notifyMe__main { - background-color: #ebebeb; - display: none; - left: 0; - margin-top: 16px; - padding: 24px; - position: absolute; - top: 100%; - width: 560px; - max-width: 48vw; - } - .notifyMe__form { - margin-bottom: 0; - } - .notifyMe .field:last-child { - margin-bottom: 0; - } - .cartAdd.error-message { - background-color: #f9d0d5; - color: #d91a32; - display: inline-block; - margin-bottom: 16px; - padding: 8px; - } - .sitemapnav { - padding: 24px 0 12px; - } - .acc__content .sitemapnav { - padding-top: 8px; - } - .sitemapnav__ul { - list-style: none; - margin: 0 0 -24px; - } - .sitemapnav__li { - color: #333; - font-size: 0.9375rem; - font-weight: 500; - letter-spacing: -0.03em; - margin-bottom: 24px; - padding: 0; - } - .sitemapnav__li:after { - content: none; - } - .sitemapnav__link { - color: var(--buttonColor); - } - .sitemapnav__link:active { - color: var(--buttonColorActive); - } - .sitemap .acc:last-child { - border-bottom: none; - } - .sitemap .acc:last-child .acc__content { - padding: 0; - } - .couponBlock__form { - margin-bottom: 0; - } - .couponBlock__field { - margin-bottom: 0; - position: relative; - } - .couponBlock__field.completed .field__input { - border: none; - width: 100px; - } - .couponBlock__field:not(.completed) .field__input { - padding-right: 32px; - } - .couponBlock__field:not(.completed) .field__wrap { - width: 100%; - } - .couponBlock__btn { - align-items: center; - display: flex; - font-size: 1.5rem; - justify-content: center; - position: absolute; - right: 0; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - width: 32px; - height: 32px; - } - .couponBlock__btn:before { - content: ""; - } - .couponBlock__clear { - font-size: 1.5rem; - } - .couponBlock__clear:before { - content: ""; - } - .priceRow--coupon { - color: #999; - margin-top: 0; - } - .progressBlock__bar { - background-color: #fff; - border-radius: 6px; - margin: 0 0 24px; - height: 6px; - } - .progressBlock__progress { - background-color: #666; - border-radius: 6px; - height: 100%; - } - .progressBlock__info { - color: gray; - font-size: 0.875rem; - margin: 0 0 8px; - } - .progressBlock__remain { - color: #333; - font-size: 1rem; - } - - /* MEDIA QUERIES */ - - @media (min-width: 480px) { - .sectionTitle__main:not(:last-child) { - margin-right: 12px; - } - .button { - min-width: 216px; - } - .button--s { - min-width: 120px; - } - .range__submit { - min-width: initial; - } - .storeLocator__form .field--small .button { - min-width: initial; - } - .table { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - } - .table::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .table::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .table::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .table::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .table::-webkit-scrollbar-track { - background: transparent; - } - .table td:first-child { - padding-left: var(--paddingExternalX); - } - .table td:last-child { - padding-right: var(--paddingExternalX); - } - .miniBasketButton { - min-width: 152px; - } - .checkoutTracking__action { - min-width: 185px; - } - .addToCartButton { - min-width: var(--mainButtonWidth); - } - .notifyMe__button { - min-width: var(--mainButtonWidth); - } - } - - @media (min-width: 640px) { - .ordersBanner { - align-items: center; - display: flex; - } - .form__title { - margin-inline: calc(var(--fieldColumnSpace) / 2); - } - .form--address .form__col { - width: 44%; - } - .field--half { - width: calc(50% - var(--fieldColumnSpace)); - } - .field--map { - margin: 0; - } - .field__map { - position: absolute; - right: 0; - top: 0; - width: 50%; - } - .form--address .field__map { - width: calc(56% - 12px); - height: 100%; - } - .field__map .field__mapInner { - padding: 0; - height: 100%; - } - .radiobuttons--inline, - .checkboxes--inline { - flex-wrap: wrap; - } - .formTip { - margin-inline: calc(var(--fieldColumnSpace) / 2); - } - .storeTileOrder__info { - padding-right: 32px; - } - .storeTileOrder__actions { - margin: auto 0 auto auto; - } - .mapInfo .storeTileOrder__actions { - margin-top: 12px; - } - .storeTileOrder__actions .button { - font-size: 0.8125rem; - letter-spacing: -0.02em; - min-height: 34px; - } - .storeTileOrder__actions .button .icon { - margin: -3px 4px -3px 0; - } - .gridBoxes { - width: calc(100% + var(--gridBoxSpace) * 2); - } - .contentBox { - flex-direction: column; - text-align: center; - } - .contentBox__text { - max-width: 272px; - } - .basketTable__cell--product { - flex: 1; - } - .basketTable__cell--button { - margin: 0 72px 0 32px; - } - .history__content { - align-items: flex-start; - display: flex; - } - .history__description { - flex: 1; - padding-left: 20px; - } - .listsBlock { - display: none; - position: absolute; - right: 20px; - top: -8px; - width: 232px; - max-width: calc(100% + 8px); - } - .wishlistButton.open .listsBlock { - display: block; - } - .listsBlock__bg { - display: none; - } - .listTools { - margin-bottom: 16px; - } - .minibasket .listTools:not(.listTools--noBorder) { - margin-bottom: 4px; - } - .orderRow { - display: grid; - grid-template-columns: var(--orderProductsWidth) minmax(0, 1.1fr) minmax( - 0, - 2.15fr - ) minmax(0, 0.75fr); - grid-template-rows: fit-content(21px) 1fr; - grid-column-gap: var(--orderColGap); - grid-row-gap: var(--orderRowGap); - } - .productThumbs .swiper-button-prev, - .productThumbs .swiper-button-next { - width: 100%; - } - .productThumbs .swiper-button-prev { - top: 0; - } - .productThumbs .swiper-button-prev:before { - background: linear-gradient( - to bottom, - white 0%, - rgba(255, 255, 255, 0) 100% - ); - } - .productThumbs .swiper-button-next { - bottom: 0; - top: auto; - } - .productThumbs .swiper-button-next:before { - background: linear-gradient(to top, white 0%, rgba(255, 255, 255, 0) 100%); - } - .sitemapnav__ul { - column-count: 2; - } - .sitemapnav__li { - display: inline-block; - padding-right: 24px; - vertical-align: top; - width: 100%; - } - } - - @media (min-width: 640px) and (max-width: 767px) { - .basketTable__cell--button { - margin: 0 16px; - } - .orderRow { - grid-template-columns: minmax(0, 1fr) minmax(0, 2.25fr) minmax(0, 0.75fr); - grid-template-rows: auto; - } - } - - @media (min-width: 640px) and (min-width: 480px) { - .storeTileOrder__actions .button { - min-width: 120px; - } - } - - @media (min-width: 768px) { - .mobileOnly { - display: none; - } - h2 { - font-size: 1.625rem; - letter-spacing: -0.03em; - margin: 0 0 32px; - } - .footer__col:not(:last-child) { - margin-right: var(--footerColSpace); - } - .footer__col:not(:first-child) { - margin-left: var(--footerColSpace); - } - .header__tool { - position: relative; - } - .acc--mobOnly .acc__header { - pointer-events: none; - } - .acc--mobOnly .acc__icon { - display: none; - } - .acc--mobOnly:not(.open) .acc__content { - display: block; - } - .acc__headerInner { - margin-right: 32px; - } - .acc__headerInnerTitle { - min-width: 250px; - } - .acc__headerInnerTitle--info { - min-width: initial; - } - .acc__headerInnerTitle--sum { - min-width: initial; - } - .article--horizontal { - display: flex; - min-height: 268px; - } - .articleFeatured .article--horizontal { - min-height: 352px; - } - .article--horizontal .article__img { - flex-basis: 35.62%; - position: relative; - } - .articleFeatured .article--horizontal .article__img { - flex-basis: 50%; - } - .article--horizontal .article__img figure { - inset: 0; - position: absolute; - width: 100%; - height: 100%; - width: 100%; - } - .article--horizontal .article__img figure picture { - display: block; - padding-top: calc(352 / 626 * 100%); - position: relative; - width: 100%; - } - .article--horizontal .article__img figure img { - inset: 0; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .article--horizontal .article__img figure img { - object-fit: cover; - } - .article--horizontal .article__img picture { - inset: 0; - position: absolute; - width: 100%; - height: 100%; - } - .article--horizontal .article__date { - margin-bottom: 4px; - } - .article--horizontal .article__title { - font-size: 1.25rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.5; - margin-bottom: 16px; - } - .articleFeatured .article--horizontal .article__title { - font-size: 1.625rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.38; - margin-bottom: 20px; - } - .article--horizontal .article__info { - align-items: flex-start; - display: flex; - flex-basis: 50%; - flex-grow: 1; - flex-flow: column; - justify-content: center; - padding: 32px; - } - .article--horizontal .article__text { - -webkit-line-clamp: initial; - } - .breadcrumb__item:not(:last-child) { - margin-right: 12px; - padding-right: 12px; - } - .breadcrumb__item:not(:last-child):before { - background-color: #c2c2c2; - content: ""; - margin-top: -11px; - position: absolute; - right: 0; - top: 50%; - width: 1px; - height: 22px; - } - .catalogue--wide .catalogue__img figure { - width: 100%; - } - .catalogue--wide .catalogue__img figure picture { - display: block; - padding-top: calc(314 / 1258 * 100%); - position: relative; - width: 100%; - } - .catalogue--wide .catalogue__img figure img { - inset: 0; - object-fit: contain; - position: absolute; - width: 100%; - height: 100%; - } - .deliveryFlowNav { - margin-top: 8px; - right: 88px; - } - .radiobutton--deliveryType { - background: #f2efe8; - border-radius: 8px; - padding: 32px 12px; - min-height: 272px; - } - .radiobutton--deliveryType .radiobutton__label { - padding: 0; - position: static; - } - .form { - margin-left: calc(-1 * var(--fieldColumnSpace) / 2); - width: calc(var(--formMaxWidth) + var(--fieldColumnSpace)); - max-width: calc(100% + var(--fieldColumnSpace)); - } - .orderTrack .indicator { - border-right: 1px solid #958d7b; - margin-right: 12px; - padding-right: 12px; - } - .newsletter__inner { - align-items: center; - display: flex; - } - .newsletter__input { - width: 280px; - } - .newsletter__social { - border-left: 1px solid gray; - margin-left: 32px; - padding-left: 32px; - } - .notifications { - right: -4px; - } - .notifications__overlay { - display: none; - } - .notificationsBtn { - width: 44px; - height: 44px; - border-radius: 50%; - border: solid 2px #a6a6a6; - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: center; - font-size: 1.625rem; - } - .notificationsBtn:after { - content: attr(data-items); - top: -8px; - right: -14px; - width: 26px; - height: 26px; - background: #d91a32; - border-radius: 50%; - color: #fff; - font-size: 0.8125rem; - font-weight: 700; - line-height: 1; - letter-spacing: -0.02em; - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: center; - } - .result__button { - margin-top: 40px; - } - .result__mainimg { - margin-bottom: 16px; - } - .result__mainicon { - margin-bottom: 40px; - } - .sidemenu__item { - line-height: 1; - } - .storeTileSpecs__iconWrap { - margin-right: auto; - padding-right: 10px; - } - .storeTileOrder--details .storeTileOrder__info { - max-width: initial; - } - .storeTileOrder--details .storeTileOrder__actions { - max-width: initial; - } - .storeLocator__form .field--full { - max-width: 344px; - } - .storeLocator__form .field__inputClear { - right: 18px; - } - .storeLocator__form .field__input--search { - padding-right: 40px; - } - .storeLocator__form .field__inputSubmit { - display: none; - } - .timetable { - margin-top: -20px; - } - .timetableNavWrap { - display: flex; - justify-content: space-between; - margin-bottom: 12px; - } - .timetableNav:before { - display: none; - } - .topnav__selected { - display: none; - } - .topnav__selected:after { - display: none; - } - .topnav__list { - display: flex; - flex-wrap: wrap; - justify-content: center; - text-align: center; - } - .topnav__list li { - display: inline-flex; - margin: 4px; - } - .topnav__item { - line-height: 1; - } - .topnav__link { - border: 1px solid #c2c2c2; - border-radius: 100px; - color: #838385; - display: block; - font-size: 0.875rem; - font-weight: 500; - padding: 12px 16px; - transition: background-color 250ms ease-out; - } - .topnav__link.selected { - background-color: #333; - border-color: #333; - color: #fff; - } - .unavailabelBox { - margin-bottom: 24px; - } - .minibasket .unavailabelBox { - margin-bottom: 0; - } - .userMenu { - right: -4px; - } - .userMenu__overlay { - display: none; - } - .accountDetails__form { - margin-right: 24px; - } - .basketTable__row--head { - margin-bottom: 12px; - } - .minibasket:not(.active) .minibasket__overlay { - opacity: 0; - pointer-events: none; - } - .secureCheckout__text { - margin: 0 8px 0 0; - } - .checkoutTracking__inner { - margin-right: 10px; - } - .loyalty__img { - margin-right: 20px; - } - .loyalty__cell:not(:last-child) { - margin-right: 1px; - } - .gallery__figure { - width: calc(50% - 20px); - margin: 10px; - } - .orderHistory { - min-height: 140px; - } - .orderHistory--qr { - padding-left: calc(var(--outerPaddingY) + var(--qrWidth) + var(--qrMargin)); - } - .orderHistory__qr { - left: var(--outerPaddingX); - position: absolute; - top: 50%; - transform: translateY(-50%); - } - .orderHistory__section--top span { - margin-right: 5px; - } - .orderHistory__section--top .orderHistory__sectionInner { - flex-flow: row; - } - .productPage { - display: grid; - grid-template-areas: "product_image product_content"; - grid-template-columns: minmax(300px, 457px) minmax(50%, 873px); - } - .productPage__imageCol { - grid-area: product_image; - } - .productPage__imageGrid { - left: 0; - position: sticky; - top: var(--headerHeight); - } - } - - @media (min-width: 768px) and (hover: hover) and (pointer: fine) { - .topnav__link:hover { - background-color: #ececec; - border-color: #ececec; - } - } - - @media (min-width: 768px) and (max-width: 1023px) { - .articleFeatured .article--horizontal .article__img { - flex-basis: 40%; - } - } - - @media (min-width: 768px) and (max-width: 1279px) { - .article--horizontal .article__title { - font-size: 1.25rem; - font-weight: 500; - letter-spacing: -0.03em; - line-height: 1.5; - } - .newsletter__social { - margin-left: 24px; - padding-left: 24px; - } - } - - @media (min-width: 1024px) { - .tabletOnly { - display: none; - } - .header__bottom { - padding: 16px 0 0; - } - .acc__headerInner { - margin-right: 104px; - } - .acc__headerInnerTitle { - min-width: 295px; - } - .acc__headerInnerTitle--info { - min-width: initial; - } - .acc__headerInnerTitle--sum { - min-width: initial; - } - .filters__itemsWrap { - display: flex; - flex-wrap: wrap; - margin-right: 24px; - } - .filters__inner { - align-items: flex-start; - display: flex; - } - .filters__item:not(:last-child) { - margin-right: 24px; - } - .filters__item:not(.filter--closed) { - z-index: 3; - } - .filters__titleWrap { - margin-right: 8px; - } - .filters__title { - padding: 6px 0; - } - .filters__titleWrap .filters__close { - display: none; - } - .filters__mobButton { - pointer-events: none; - } - .filters--checked .filters__mobButton:after { - display: none; - } - .filters__mobButtonText { - display: none; - } - .filters--listResults { - position: relative; - padding-right: 160px; - } - .filters--listResults .filters__titleWrap { - position: static; - } - .filters--listResults .filters__titleWrap .filtersClearAll { - position: absolute; - right: 16px; - top: 50%; - transform: translateY(-50%); - } - .filters--listResults.filters--checked .filters__titleWrap .filtersClearAll { - display: block; - } - .filters--listResults ~ .productListWrap .selectedFilters { - outline: 1px solid red; - background: rgba(255, 0, 0, 0.2); - } - .filter { - position: relative; - } - .filter__content { - background-color: #fff; - border-radius: 6px; - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - left: -20px; - padding: 56px 20px 16px 20px; - position: absolute; - top: -16px; - width: 248px; - } - .filter__main > .scrollbar { - max-height: 160px; - } - .filter__main--mobScroll > .scrollbar { - overflow: initial; - } - .filter__list--inline { - display: flex; - flex-wrap: wrap; - } - .filter__list--showAll:not(.initialized) .filter__item:nth-child(n + 9) { - display: none; - } - .filter__list--showAll.initialized .filter__listScroll { - max-height: var(--scrollListHeight); - } - .filter__listMore { - display: none; - } - .filter__list--inline .filter__item { - margin: 4px 0; - } - .filter__list--inline .filter__item:not(:last-child) { - margin-right: 16px; - } - .filtersApply { - margin-bottom: 12px; - } - .filters__titleWrap .filtersClearAll { - display: none; - } - .filtersLinks { - margin-top: 16px; - text-align: center; - } - .filtersLinks--all { - display: none; - } - .mainNav__list { - display: flex; - } - .mainNav__link--hasChildren:before { - display: none; - } - .megamenu { - left: 0; - overflow: hidden; - top: 100%; - } - .mainNav__item:not(.mainNav__item--active) .megamenu { - pointer-events: none; - } - .mainNav__item--active .megamenu { - z-index: 9; - } - .megamenu__inner { - padding: 40px 0; - position: relative; - opacity: 0; - transform: translateY(-30px); - transition: opacity 150ms ease-out, transform 250ms ease-out, - visibility 10ms ease-out 250ms; - visibility: hidden; - min-height: 584px; - } - .mainNav__item--active .megamenu__inner { - opacity: 1; - transform: translateY(0); - transition: opacity 350ms ease-out 250ms, transform 350ms ease-out 250ms; - visibility: visible; - } - .mainNav__item--fadeOut .megamenu__inner { - opacity: 0; - transform: translateY(80px); - transition: opacity 350ms ease-out, transform 350ms ease-out; - } - .megamenu__list { - width: 100%; - } - .megamenu__list--level2 { - column-count: 3; - } - .megamenu__list--level2 > li { - break-inside: avoid; - margin-bottom: 40px; - } - .megamenu__list li { - font-size: 0.875rem; - } - .megamenu__close { - position: absolute; - right: 32px; - top: 32px; - z-index: 1; - width: 40px; - height: 40px; - min-height: auto; - } - .megamenu__close:before { - display: inline-block; - vertical-align: top; - } - .megamenu__back { - display: none; - } - .megamenu .wrapper { - padding: 0 var(--gridSpace); - } - .megamenuBg { - background-color: #e6e6e6; - left: 0; - position: absolute; - top: 100%; - transform: scaleY(0); - transform-origin: center top; - transition: transform 350ms ease-out 50ms; - width: 100%; - height: 584px; - } - .menuOpened .megamenuBg { - transform: scaleY(1); - transition: transform 350ms ease-out; - } - .megamenuBg:after { - content: ""; - position: absolute; - right: 0; - top: 0; - width: 50%; - height: 100%; - } - .newsletter__form { - align-items: center; - } - .newsletter__label { - margin-right: 24px; - } - .sidemenu { - border-right: 1px solid #ececec; - height: 100%; - margin: 0; - padding-left: 30px; - } - .sidemenu .sidenav__list--level1 { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - left: 0; - padding-right: 16px; - position: sticky; - top: calc(8px + var(--headerHeight)); - max-height: calc(100vh - 16px - var(--headerHeight)); - } - .sidemenu .sidenav__list--level1::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .sidemenu .sidenav__list--level1::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .sidemenu .sidenav__list--level1::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .sidemenu .sidenav__list--level1::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .sidemenu .sidenav__list--level1::-webkit-scrollbar-track { - background: transparent; - } - .sidemenu__selected { - display: none; - } - .sidemenu__selected:after { - display: none; - } - .sidemenu__list--level2 { - margin: 0 0 12px; - } - .sidemenu__link.selected { - color: #f47920; - } - .sidemenu__link--level1 { - margin-bottom: 12px; - font-size: 1.125rem; - } - .storeListWrap { - display: flex; - } - .storeListWrap [data-tabToggle-content] { - display: block; - } - .storeListWrap .tabToggle { - display: none; - } - .storeList { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - margin-right: 24px; - width: 484px; - max-width: 45%; - max-height: 600px; - } - .storeList::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .storeList::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .storeList::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .storeList::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .storeList::-webkit-scrollbar-track { - background: transparent; - } - .storeTile { - margin-right: 12px; - } - .gallery__figure { - width: calc(33.3% - 20px); - } - .myLists--row .myList { - flex: 1; - } - .orderSum--border .orderSum__col:not(:last-child) { - border-right: 1px solid #fff; - } - .productPage__info { - padding-left: var(--productImageColSpace); - } - .productDetailsNutrTable { - max-width: 714px; - } - } - - @media (min-width: 1024px) and (hover: hover) and (pointer: fine) { - .sidemenu__link:not(.selected):hover { - color: #838385; - } - } - - @media (min-width: 1024px) and (max-width: 1279px) { - .megamenuBg { - z-index: 1; - } - } - - @media (min-width: 1024px) and (max-width: 1365px) { - .megamenu__close { - right: 8px; - top: 8px; - } - .megamenuBg { - height: 640px; - } - } - - @media (min-width: 1280px) { - .mainLayout { - --asideWidth: 352px; - --gridSpace: 64px; - --gridSpaceBorder: calc(var(--gridSpace) / 2); - display: grid; - grid-template-areas: "aside content"; - grid-template-columns: var(--asideWidth) minmax(0, 1fr); - } - .mainLayout--rightAside { - grid-template-areas: "content aside"; - grid-template-columns: minmax(0, 1fr) var(--asideWidth); - } - .mainLayout__aside { - grid-area: aside; - display: flex; - flex-direction: column; - } - .mainLayout__content { - grid-area: content; - } - .deliveryTypes { - padding: 0 20px; - } - .burgerMenu { - display: none; - } - .mainLayout__aside .sideNav { - border-right: 1px solid #ececec; - } - .basketMain { - position: relative; - } - .sideBasket { - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - border-radius: 8px; - position: sticky; - right: 0; - top: 0; - } - .sideBasket__title { - color: #333; - font-size: 1.25rem; - font-weight: 500; - line-height: 1.5; - margin: 0 0 16px; - padding-left: 40px; - position: relative; - } - .sideBasket__title:before { - color: #a6a6a6; - font-size: 2rem; - left: 0; - margin-top: -16px; - position: absolute; - top: 50%; - } - } - - @media (min-width: 1280px) and (max-width: 1365px) { - .mainLayout { - --asideWidth: 296px; - --gridSpace: 24px; - --gridSpaceBorder: var(--gridSpace); - } - } - - @media (min-width: 1366px) { - .megamenu__title { - padding-right: 40px; - } - } - - @media (min-width: 1920px) { - .goToTop { - margin-right: calc(50vw - var(--wrapper) / 2); - } - .productList .product { - width: calc(16.6% - 5 * var(--productSpaceH) / 6); - } - } - - @media (min-width: 640px) and (max-width: 1365px) and (min-width: 1280px) { - .basketTable__cell--button { - margin: 0 12px 0 12px; - } - } - - @media (max-width: 1599px) { - .basketMain__content { - --mainLayoutSpace: 24px; - } - .landingList { - row-gap: 32px; - } - .landingList__item { - width: calc(20% - 4 * var(--colGap) / 5); - } - .myLists--grid { - --listsGap: 20px; - } - .myLists--row { - --listsGap: 16px; - } - .productList .product { - width: calc(25% - 3 * var(--productSpaceH) / 4); - } - } - - @media (max-width: 1365px) { - .basketTable { - --imgMarginRight: 16px; - } - .basketTable__row { - padding-right: 84px; - padding-left: 0; - } - .basketTable__remove { - right: 0; - } - .basketTable .fav { - right: 40px; - } - .landingList__item { - width: calc(25% - 3 * var(--colGap) / 4); - } - .myLists--grid .myList { - width: calc(50% - var(--listsGap) / 2); - } - .productList { - --productSpaceH: 16px; - --productSpaceV: 16px; - } - } - - @media (max-width: 1365px) and (min-width: 1280px) { - .basketTable { - --imgWidth: 80px; - } - .basketTable__cell--price { - margin-right: 0; - } - .basketTable__cell--quant { - margin: 0 12px; - } - .basketTable__cell .product__title { - font-size: 1rem; - } - .productList .product { - width: calc(33.33% - 2 * var(--productSpaceH) / 3); - } - } - - @media (max-width: 1359px) { - .infoPopup { - right: var(--gridSpace); - } - .productMainImg .swiper-button-prev, - .productMainImg .swiper-button-next { - display: flex; - } - } - - @media (max-width: 1279px) { - :root { - --gridSpace: 32px; - } - .mainLayout { - --mainLayoutSpace: var(--gridSpace); - } - .loginWrap__form { - padding-block: 56px; - } - .loadMore { - --loadMoreSpace: 32px; - } - .mainNav__item { - margin: 0 8px; - } - .burgerMenu { - background: none; - margin: 0 16px 0 0; - padding: 0; - width: 32px; - height: 32px; - } - .burgerMenu__bar { - background: #404040; - border-radius: 15px; - display: block; - margin: 6px auto; - transition: all 350ms ease-out; - height: 2px; - width: 26px; - } - .burgerMenu__bar--middle { - margin: 0 auto; - } - .burgerMenu--opened .burgerMenu__bar--top { - transform: translateY(8px) rotateZ(45deg); - } - .burgerMenu--opened .burgerMenu__bar--bottom { - transform: translateY(-8px) rotateZ(-45deg); - } - .burgerMenu--opened .burgerMenu__bar--middle { - width: 0; - } - .modal__wrap { - padding-bottom: 40px; - } - .mainLayout__aside .sideNav { - display: none; - } - .simpleSlider--cat:not(.swiper-initialized) .swiper-slide { - width: calc(25% - 16px); - } - .timetable { - margin-bottom: 56px; - } - .addresses { - --addressesGap: 24px; - } - .addresses__box, - .addresses .addBox { - width: calc(50% - var(--addressesGap) / 2); - } - .basket { - margin-bottom: 144px; - } - .basketMain__content { - padding-right: 0; - } - .sideBasket { - box-shadow: 0px -2px 10px rgba(51, 51, 51, 0.1); - bottom: 0; - left: 0; - position: fixed; - z-index: 2; - width: 100%; - } - .sideBasket__title { - display: none; - } - .landingList { - row-gap: 24px; - } - .myList--box .myList__title { - font-size: 1.25rem; - } - .orderRow { - --orderColGap: 24px; - } - .productPage { - --productImageColSpace: 40px; - } - .productMainImg { - --productMainImgWidth: 500px; - } - .productMainImg .imgControl { - margin: 30px 0 20px; - } - } - - @media (max-width: 1279px) and (hover: hover) and (pointer: fine) { - .burgerMenu:not(.disabled):hover { - background: transparent; - } - .burgerMenu:not(.disabled):hover .burgerMenu__bar { - background: #333; - } - } - - @media (max-width: 1279px) and (min-width: 1024px) { - .checkoutProducts .product--mini .product__img, - .checkoutProducts .minibasket__product .product__img { - margin-right: 8px; - width: 80px; - } - .productListContent { - margin-left: -20px; - width: calc(100% + 40px); - } - } - - @media (max-width: 1023px) { - :root { - --gridSpace: 24px; - } - .pageTitle h1 { - font-size: 2.375rem; - } - .pageTitle--big { - height: 280px; - } - .pageTitle--big h1 { - font-size: 2.875rem; - } - .ordersBanner { - padding: 16px; - } - .ordersBanner__img { - width: 37%; - } - .ordersBanner__icon { - font-size: 3rem; - margin-right: 16px; - } - .ordersBanner__text { - font-size: 1rem; - } - .tabletHidden { - display: none; - } - ul.listL { - margin: 16px 0 24px; - } - ul.listL li { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - padding-left: 21px; - } - ul.listCols { - column-count: 4; - } - .footer { - --footerSpaceTop: 56px; - } - .footer__col { - --footerColSpace: 24px; - } - .acc--stripe .acc__header { - font-size: 1rem; - } - .acc__headerInnerTitle--info { - margin-left: auto; - } - .articleList--contests .article { - width: calc(33.33% - 2 * var(--productSpaceH) / 3); - } - .articleDetails__title { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.35; - } - .articleDetails__title { - font-size: 1.5rem; - font-weight: 700; - letter-spacing: 0; - line-height: 1.16; - } - .catalogueList { - --productSpaceH: 24px; - } - html.filtersOpened, - html.filtersOpened body { - overflow: hidden; - height: calc(var(--windowHeight) - 1px); - } - .filters__itemsWrap { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - overflow-x: hidden; - height: calc(100% - var(--mobFilterTopBar)); - } - .filters__itemsWrap::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .filters__itemsWrap::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .filters__itemsWrap::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .filters__itemsWrap::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .filters__itemsWrap::-webkit-scrollbar-track { - background: transparent; - } - .filters--2levelOpened .filters__itemsWrap { - overflow: visible; - } - .filters__inner { - background-color: #fff; - left: 0; - padding: 0 var(--filtersSpace) var(--mobFilterBottomBar); - position: fixed; - transform: translateX(-100%); - transition: transform 350ms ease-out; - top: var(--mobFiltersTop); - z-index: 9; - width: 100%; - height: var(--windowHeight); - } - .filters:not(.filters--2levelOpened) .filters__inner { - overflow: hidden; - } - .filters--opened .filters__inner { - transform: translateX(0); - } - .filters__item:not(:first-child) { - border-top: 1px solid #c2c2c2; - } - .filters__titleWrap { - align-items: center; - border-bottom: 1px solid #a6a6a6; - display: flex; - padding: 16px 0; - } - .filters__title { - font-size: 1.125rem; - font-weight: 400; - } - .filters__titleWrap .filters__close { - margin-right: 8px; - } - .filters__mobButton { - align-items: center; - display: inline-flex; - } - .filter__title { - font-size: 1rem; - font-weight: 500; - padding: 16px 32px 16px 0; - } - .filter__titleIcon { - font-size: 1.5rem; - line-height: 1; - right: 0; - top: 50%; - transform: translateY(-50%); - } - .filter__titleIcon:before { - line-height: 1; - } - .filters__mobTitle .filter__titleIcon { - left: 0; - right: auto; - } - .filters__mobTitle .filter__titleIcon:before { - transform: rotate(180deg); - transform-origin: center; - } - .filter__content { - padding: 12px 0; - } - .filter__main { - height: calc(100% - var(--mobFilterTopBar) - var(--mobFilterTopBarSpace)); - } - .filter__main--mobScroll > .scrollbar { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - max-height: 100%; - } - .filter__main--mobScroll > .scrollbar::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .filter__main--mobScroll > .scrollbar::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .filter__main--mobScroll > .scrollbar::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .filter__main--mobScroll > .scrollbar::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .filter__main--mobScroll > .scrollbar::-webkit-scrollbar-track { - background: transparent; - } - .filter__list { - height: 100%; - } - .filter__list--showAll .filter__listScroll { - max-height: 100%; - } - .filter__list--more .filter__listWrap { - height: 100%; - } - .filter__list--more .filter__listWrap > .filter__item { - display: none; - } - .filter__list--moreList { - height: calc(100% - var(--searchHeight)); - } - .filter__list--moreList .filter__listScroll { - max-height: 100%; - } - .filter__showAll { - display: none; - } - .filter__listMore { - height: 100%; - } - .filter__list--inline .filter__item { - margin: 16px 0; - } - .filter__more { - display: none; - } - .filter:not(.filter--checked) .filtersClear { - display: none; - } - .filtersClearAll { - margin-left: auto; - } - .filtersLinks { - align-items: center; - bottom: 0; - display: flex; - justify-content: center; - left: 0; - padding: 8px var(--filtersSpace); - position: absolute; - width: 100%; - height: var(--mobFilterBottomBar); - } - .filtersLinks:not(.filtersLinks--all) { - display: none; - } - .form { - margin-bottom: 24px; - } - .mainNavWrap { - background-color: #ebebeb; - left: 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - padding: 16px var(--mobMenuHorPadding) 80px; - position: fixed; - top: var(--headerHeight); - transition: transform 350ms ease-out; - transform: translateX(-100%); - width: 100%; - max-width: 440px; - height: calc(100% - var(--headerHeight)); - } - .menuOpened .mainNavWrap { - transform: translateX(0); - } - .menuOpened--level2 .mainNavWrap { - overflow: hidden; - } - .mainNav__item { - color: #333; - font-size: 1.125rem; - margin: 8px 0; - } - .mainNav__link { - padding: 8px 0; - position: relative; - } - .mainNav__link--hasChildren:before { - font-size: 1.5rem; - margin-top: -12px; - position: absolute; - right: 0; - top: 50%; - } - .megamenu { - background-color: #ebebeb; - overflow: auto; - -webkit-overflow-scrolling: touch; - right: 0; - top: 0; - transition: transform 350ms ease-out; - transform: translateX(-100%); - z-index: 1; - height: 100%; - } - .mainNav__item--active .megamenu { - transform: translateX(0); - } - .megamenu__main { - padding: 32px var(--mobMenuHorPadding) 80px; - } - .megamenu__cols--promo { - border-bottom: 1px solid #fff; - margin-bottom: 24px; - } - .megamenu__list--level2 > li { - font-size: 1rem; - margin-bottom: 24px; - } - .megamenu__close { - display: none; - } - .megamenu__back { - align-items: center; - background-color: #fff; - border-radius: 0; - color: #8c8c8c; - display: flex; - font-size: 1.25rem; - justify-content: flex-start; - padding: 16px; - width: 100%; - } - .megamenu__back:before { - font-size: 1.5rem; - margin-right: 8px; - } - .newsletter__form { - flex-direction: column; - } - .newsletter__label { - margin-bottom: 16px; - } - .output--pickup .output__inner, - .output--delivery .output__inner { - padding-left: 80px; - } - .output--init .output__title { - font-size: 1rem; - } - .sideBasket .priceRow--total { - margin-top: 0; - } - .productsSum { - padding: 12px 16px; - } - .result__title { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.35; - } - .sidemenu { - margin: 0 calc(var(--gridSpace) + var(--mainLayoutSpace)) 22px; - } - .sidemenu__selected { - border: 1px solid #a6a6a6; - border-radius: 8px; - color: #333; - font-size: 0.9375rem; - line-height: 1; - overflow: hidden; - padding: 16px 40px 16px 16px; - position: relative; - text-align: left; - text-overflow: ellipsis; - white-space: nowrap; - width: 100%; - } - .sidemenu__selected:before { - color: #838385; - font-size: 1rem; - margin-top: -8px; - position: absolute; - right: 16px; - top: 50%; - transition: transform 250ms ease-out; - transform-origin: center; - } - .sidemenu__selected.active:before { - transform: rotate(180deg); - } - .sidemenu__list--level1 { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - background-color: #fff; - border: 1px solid #a6a6a6; - border-radius: 8px; - display: none; - left: 0; - margin-top: 12px; - position: absolute; - top: 100%; - width: 100%; - max-height: 400px; - } - .sidemenu__list--level1::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .sidemenu__list--level1::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .sidemenu__list--level1::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .sidemenu__list--level1::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .sidemenu__list--level1::-webkit-scrollbar-track { - background: transparent; - } - .sidemenu__item--level1 { - line-height: 1.534; - margin: 0; - } - .sidemenu__item--level1:not(:first-child) { - border-top: 1px solid #ececec; - } - .sidemenu__link--level1 { - color: #333; - display: block; - font-size: 0.9375rem; - padding: 12px 16px; - } - .sidemenu__link--level1.selected { - background-color: #f4f4f4; - } - .storeList { - box-shadow: 0px 0px 24px rgba(0, 0, 0, 0.08); - margin-bottom: 32px; - } - .storeMap { - margin-bottom: 32px; - width: 100%; - height: 470px; - min-height: 70vh; - } - .storeTile { - margin-inline: 20px; - } - .storeTile__thumbnail { - display: none; - } - .storeLocator { - position: relative; - } - .storeLocator__inner { - padding: 24px 16px; - z-index: 1; - } - .storeLocator__illustration--left { - display: none; - } - .storeLocator__illustration--right { - display: none; - } - .storeLocator__illustration--mob { - bottom: 0; - display: block; - position: absolute; - right: 0; - } - .storeLocator__form { - margin-bottom: 0; - } - .table td.table__tools .iconButton:not(:last-child), - .table td.table__tools .selectedFilters__remove:not(:last-child) { - margin-right: 12px; - } - .gridBoxes { - --gridBoxSpace: 8px; - } - .contentBox { - padding: 24px; - } - .contentBox__icon { - margin-bottom: 16px; - } - .contentBox__title { - margin-bottom: 16px; - } - .userNavBlock { - margin-bottom: 64px; - } - .userNav__link { - font-size: 0.875rem; - } - .addresses { - --addressesGap: 16px; - } - .checkout { - --checkoutSpaceTop: 30px; - } - .checkout__title { - font-size: 1.875rem; - letter-spacing: -0.03em; - line-height: 1.2; - } - .checkout__title { - margin: 0 0 50px; - } - .checkoutMsg__title { - font-size: 1.625rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.35; - } - .checkoutMsg__title { - margin: 0; - } - .landingItem--box { - padding: 16px 8px; - } - .landingItem--box .landingItem__title { - font-size: 0.875rem; - } - .myLists--row { - flex-wrap: wrap; - } - .myLists--row .myList { - width: calc(50% - var(--listsGap) / 2); - } - .productList .product { - width: calc(33.33% - 2 * var(--productSpaceH) / 3); - } - .orderRow { - --orderColGap: 16px; - --orderProductsWidth: 208px; - --orderProductWidth: 64px; - --orderRowGap: 12px; - } - .orderHistory { - --qrWidth: 100px; - --qrMargin: 10px; - } - .orderHistory__section { - padding-right: 10px; - } - .orderSum--border { - flex-direction: column; - } - .orderSum--border .orderSum__col:not(:last-child) { - border-bottom: 1px solid #fff; - } - .orderStatusInfo { - margin-bottom: 24px; - } - .productPage { - --productImageColSpace: 24px; - } - .productHeader .product__img { - margin-right: 8px; - } - .productHeader .priceContainer { - align-items: flex-end; - flex-direction: column-reverse; - } - .productHeader .priceContainer .priceBlock__price--init { - margin: 0 0 4px; - } - } - - @media (max-width: 1023px) and (hover: hover) and (pointer: fine) { - .megamenu__back.button:not(.disabled):hover { - background: transparent; - } - } - - @media (max-width: 1023px) and (min-width: 480px) { - .article__dateWrap .pill { - font-size: 0.75rem; - } - .table { - --cellPaddingX: 16px; - --cellPaddingY: 16px; - --paddingExternalX: 16px; - } - } - - @media (max-width: 1023px) and (min-width: 640px) { - .mainNavWrap { - max-width: 480px; - } - } - - @media (max-width: 767px) { - :root { - --gridSpace: 16px; - --headerHeight: 116px; - } - .section { - margin-bottom: 40px; - } - .sectionTitle h2 { - font-size: 1.375rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.36; - } - .pageTitle h1 { - font-size: 1.875rem; - letter-spacing: -0.02em; - } - .pageTitle.pageTitle--image h1 { - text-shadow: 0px 0px 10px rgba(51, 51, 51, 0.3); - } - .pageTitle--big { - margin-bottom: 32px; - height: 200px; - } - .pageTitle--big h1 { - font-size: 1.625rem; - } - .asideHeader { - height: 92px; - } - .ordersBanner__icon { - font-size: 2.75rem; - } - .ordersBanner__text { - font-size: 0.9375rem; - max-width: 416px; - } - .mobileHidden { - display: none; - } - .separate { - margin: 0 8px; - } - h1 { - font-size: 1.875rem; - letter-spacing: -0.02em; - } - h2 { - font-size: 1.25rem; - letter-spacing: -0.02em; - margin: 0 0 20px; - } - .text, - p { - margin: 0 0 20px; - } - ul.listS { - margin-top: 20px; - } - ul.listCols { - column-count: 3; - } - .footer__main { - flex-direction: column; - padding: 32px 0 8px; - } - .footer__col { - margin-bottom: var(--footerColSpace); - } - .footer__title { - margin-bottom: 8px; - } - .footer__apps { - margin-top: 16px; - } - .footer__btm { - flex-wrap: wrap; - } - .footer__text { - text-align: center; - } - .col--m1 { - flex-basis: 8.3333333333%; - max-width: 8.3333333333%; - } - .col--m2 { - flex-basis: 16.6666666667%; - max-width: 16.6666666667%; - } - .col--m3 { - flex-basis: 25%; - max-width: 25%; - } - .col--m4 { - flex-basis: 33.3333333333%; - max-width: 33.3333333333%; - } - .col--m5 { - flex-basis: 41.6666666667%; - max-width: 41.6666666667%; - } - .col--m6 { - flex-basis: 50%; - max-width: 50%; - } - .col--m7 { - flex-basis: 58.3333333333%; - max-width: 58.3333333333%; - } - .col--m8 { - flex-basis: 66.6666666667%; - max-width: 66.6666666667%; - } - .col--m9 { - flex-basis: 75%; - max-width: 75%; - } - .col--m10 { - flex-basis: 83.3333333333%; - max-width: 83.3333333333%; - } - .col--m11 { - flex-basis: 91.6666666667%; - max-width: 91.6666666667%; - } - .col--m12 { - flex-basis: 100%; - max-width: 100%; - } - .header__top { - padding: 12px 0 0; - } - .header__leftBlock { - padding-bottom: 12px; - } - .header__topInner { - flex-wrap: wrap; - position: relative; - } - .header__logo { - width: 200px; - height: 26px; - } - .header__tools { - background: url(../media/wood.png) repeat scroll center; - flex-shrink: 0; - justify-content: flex-end; - margin-left: calc(-1 * var(--gridSpace)); - padding: 6px 0; - width: calc(100% + var(--gridSpace) * 2); - } - .header__tool { - margin-right: 20px; - } - .header__tool--account { - display: none; - } - .acc--stripe { - margin: 12px 0; - } - .acc--stripe .acc__header { - font-size: 0.875rem; - margin-bottom: 12px; - padding: 12px; - } - .acc--beige .acc__header { - font-size: 1rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.37; - } - .acc--beige .acc__content { - padding: 24px 0 0; - } - .acc--colorStripe .acc__header { - padding-block: 16px; - } - .acc__header { - padding: 16px 0; - } - .acc__headerInner { - flex-flow: column; - flex-wrap: wrap; - padding-right: 10px; - } - .acc__headerInner--price { - flex-flow: row; - align-items: center; - } - .acc__headerInner--price .acc__headerInnerTitle--info { - display: none; - } - .acc__headerInner--price .acc__headerInnerTitle--sum { - display: inline-block; - } - .acc__headerInnerTitle--info { - margin-left: 0; - margin-top: 8px; - } - .acc__headerInnerTitle--sum { - padding-left: 10px; - } - .acc__headerInnerTitle--large { - font-size: 1.125rem; - letter-spacing: -0.02em; - line-height: 1.2; - } - .acc__icon { - font-size: 1.5rem; - } - .articleFeatured { - display: none; - } - .articleList--column { - margin-bottom: 40px; - } - .articleList--contests .article { - width: calc(50% - 1 * var(--productSpaceH) / 2); - } - .articleDetails__title:after { - margin: 20px auto 32px 0; - width: 68px; - } - .bnr { - padding: 20px 0; - } - .bnr__text { - margin: 0 16px; - } - .breadcrumb__list { - align-items: flex-start; - flex-direction: column; - } - .breadcrumb__item { - font-weight: 500; - } - .cardRow { - min-height: 55px; - } - .cardRow__msg { - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.3; - max-width: 120px; - } - .catalogue__title { - font-size: 1.125rem; - font-weight: 500; - letter-spacing: -0.02em; - line-height: 1.33; - } - .collectionBox__title { - font-size: 0.875rem; - } - .contestBnr { - padding: 64px 24px; - min-height: 209px; - } - .contestBnr h3 { - font-size: 1.125rem; - line-height: 1.2; - } - .deliveryFlowNav { - left: 24px; - } - .radiobuttons--deliveryType { - gap: 8px; - margin: 0 auto; - padding-bottom: 112px; - position: relative; - } - .radiobutton--deliveryType { - position: static; - } - .radiobutton--deliveryType .radiobutton__label { - background: #f2efe8; - border-radius: 8px; - font-size: 0.875rem; - font-weight: 400; - padding: 16px; - } - .radiobutton--deliveryType .radiobutton__label b { - display: block; - } - .radiobutton--deliveryType .radiobutton__text { - line-height: 1.286; - } - .radiobutton--deliveryType .radiobutton__border:after { - right: 8px; - top: 8px; - width: 26px; - height: 26px; - } - .radiobutton--deliveryType .icon { - margin: 0 auto 8px; - height: 32px; - } - .deliveryTypeInfo ul { - background: #f7f5f0; - border-radius: 8px; - flex-grow: 1; - margin: 0; - padding: 12px; - } - .deliveryTypeInfo { - align-items: center; - bottom: 0; - display: flex; - left: 0; - position: absolute; - width: 100%; - height: 112px; - } - .radiobutton:not(.checked) .deliveryTypeInfo { - display: none; - } - .deliveryTypeInfo__sum { - align-items: flex-start; - text-align: left; - } - .deliveryTypeInfo__sum p { - margin-bottom: 4px; - } - .selectedFilters { - display: none; - } - .form { - width: 100%; - } - .formBox__more { - justify-content: flex-start; - } - .formBox .checkbox ~ .formBox__more .checkbox ~ .formBox__more { - padding-left: var(--labelSpace); - } - .loginWrap__img { - display: none; - } - .loginWrap__form { - padding: 64px 16px 40px; - } - .registerPromo { - margin-top: 20px; - } - .formText { - padding: 16px 0 0; - } - .formText p { - font-size: 0.8125rem; - } - .goToTop { - bottom: 16px; - font-size: 0.75rem; - line-height: 56px; - right: 16px; - width: 56px; - height: 56px; - } - .orderTrack .indicator { - margin-bottom: 6px; - } - .loadMore { - --loadMoreSpace: 16px; - } - .message { - margin-bottom: 30px; - } - .modal__wrap .btnWrap { - margin-top: 24px; - } - .modal__titleWrap { - margin-bottom: 24px; - text-align: left; - } - .modal__titleWrap p { - font-size: 0.875rem; - } - .modal__title { - margin-inline: 0; - text-align: left; - } - .modal__title { - font-size: 1.125rem; - } - .newsletter__inner { - margin: 0 auto; - max-width: 400px; - } - .newsletter__form { - border-bottom: 1px solid gray; - margin-bottom: 24px; - padding-bottom: 24px; - } - .newsletter__input { - flex: 1; - } - .notifications { - right: 0; - padding: 0 var(--gridSpace); - width: 100%; - } - .notifications__content { - width: 100%; - } - .notificationsBtn:after { - content: ""; - top: -1px; - right: 0; - width: 8px; - height: 8px; - background: #d91a32; - border-radius: 50%; - } - .outputsRow { - gap: 16px; - } - .output--init { - padding: 8px; - } - .output--pickup:not(.output--init) .output__inner, - .output--delivery:not(.output--init) .output__inner { - background-size: auto 26px; - padding-left: 60px; - min-height: 26px; - } - .output--pickup.output--init .output__inner, - .output--delivery.output--init .output__inner { - background-size: auto 34px; - padding-left: 64px; - min-height: 34px; - } - .output--init .output__title { - font-size: 0.875rem; - } - .product__title { - font-size: 0.9375rem; - } - .productInfo .productTags { - margin-bottom: 8px; - } - .productList .priceContainer { - height: 32px; - } - .priceRow--total { - font-size: 1rem; - margin-bottom: 12px; - } - .productList .quantity { - height: 34px; - } - .quantity__btn { - font-size: 0.875rem; - width: 40px; - } - .quantity__btn--notAvailable { - font-size: 0.8125rem; - } - .quantity__input { - font-size: 0.875rem; - } - .quantity__input span { - font-size: 0.75rem; - font-weight: 400; - } - .quantity__message { - padding: 8px; - } - .result__title { - font-size: 1.625rem; - letter-spacing: -0.03em; - } - .result__p--b { - font-size: 1.125rem; - letter-spacing: -0.02em; - } - .result__code strong { - display: block; - margin-top: 8px; - } - .result__mainimg--notsupported { - margin-bottom: 32px; - max-width: 160px; - } - .sidemenu { - margin-top: 16px; - } - .sliderSection { - --sliderSectionSpaceBottom: 32px; - } - .simpleSlider--cat:not(.swiper-initialized) .swiper-slide { - width: calc(33.3333333333% - 16px); - } - .productsSlider { - margin-top: 16px; - } - .productsSlider .swiper-slide { - width: 160px; - } - .storeTile__address { - margin-bottom: 12px; - } - .storeTileSpecs { - align-items: flex-start; - flex-flow: column; - margin-bottom: 15px; - } - .storeTileSpecs__title { - font-size: 1.375rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.36; - } - .storeTileSpecs__title { - font-size: 1.25rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - margin-bottom: 8px; - } - .storeTileSpecs__iconWrap { - margin-bottom: 12px; - } - .storeTileOrder--details { - flex-flow: column; - margin-bottom: 32px; - padding: 24px; - } - .storeTileOrder--details .storeTileOrder__icon { - margin: 0 auto 16px 0; - } - .storeTileOrder--details .storeTileOrder__info { - padding-right: 0; - width: 100%; - max-width: initial; - } - .storeTileOrder--details .storeTileOrder__actions { - margin-top: 16px; - width: 100%; - } - .storeSearch .form { - background-color: #fff; - transform: translateY(0); - } - .storeSearch.sticky { - padding-bottom: 64px; - } - .storeSearch.sticky .form { - padding-inline: var(--gridSpace); - position: fixed; - top: calc(var(--headerHeight) - 64px); - left: 0; - transform: translateY(100%); - z-index: 3; - transition: transform 250ms ease-out; - width: 100%; - } - .storeSearch p:last-of-type { - margin-bottom: 16px; - } - .pin__count { - font-size: 1.125rem; - letter-spacing: -0.02em; - line-height: 1.2; - } - .mapInfo { - padding-top: 46px; - max-width: 246px; - } - .mapInfo__close { - right: 16px; - top: 16px; - color: #333; - } - .storeLocator__title { - font-size: 1.375rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.36; - } - .storeLocator__title { - font-size: 1.25rem; - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.2; - } - .storeLocator__sub { - margin-bottom: 32px; - } - .storeLocator__form .field--small { - display: none; - } - .storeHours { - padding: 24px 24px 32px; - } - .storeHours .acc__header p { - display: inline; - } - .storeHours .acc__headerInner { - display: block; - } - .storeHours .acc__icon { - display: inline-block; - } - .storeHours hr { - margin: 27px auto; - max-width: initial; - } - .storeHours__top { - display: flex; - align-items: flex-start; - text-align: left; - flex-flow: column; - } - .storeDetails__map { - padding-top: calc(470 / 343 * 100%); - position: relative; - width: 100%; - } - .timetable { - margin-bottom: 12px; - } - .timetable__day { - border: none; - padding-inline: 56px; - height: 72px; - } - .timetableNav { - justify-content: center; - position: absolute; - top: 16px; - z-index: 2; - width: 40px; - height: 40px; - } - .timetableNav { - font-size: 1rem; - } - .timetableNav__icon, - .timetableNav__text { - display: none; - } - .timetableNav--next { - right: 4px; - } - .timetableNav--prev { - left: 4px; - } - .topnav { - margin-top: 16px; - } - .topnav__selected { - border: 1px solid #a6a6a6; - border-radius: 8px; - color: #333; - font-size: 0.9375rem; - line-height: 1; - overflow: hidden; - padding: 16px 40px 16px 16px; - position: relative; - text-align: left; - text-overflow: ellipsis; - white-space: nowrap; - width: 100%; - } - .topnav__selected:before { - color: #838385; - font-size: 1rem; - margin-top: -8px; - position: absolute; - right: 16px; - top: 50%; - transition: transform 250ms ease-out; - transform-origin: center; - } - .topnav__selected.active:before { - transform: rotate(180deg); - } - .topnav__list { - scroll-behavior: smooth; - overflow: auto; - scrollbar-color: rgba(166, 166, 166, 0.3) transparent; - scrollbar-width: thin; - -webkit-overflow-scrolling: touch; - background-color: #fff; - border: 1px solid #a6a6a6; - border-radius: 8px; - display: none; - left: 0; - margin-top: 12px; - position: absolute; - top: 100%; - width: 100%; - max-height: 400px; - } - .topnav__list::-webkit-scrollbar { - width: 6px; - height: 6px; - } - .topnav__list::-webkit-scrollbar-thumb { - background: rgba(166, 166, 166, 0.3); - border-radius: 13px; - } - .topnav__list::-webkit-scrollbar-thumb:hover { - background: rgba(166, 166, 166, 0.5); - } - .topnav__list::-webkit-scrollbar-thumb:active { - background: rgba(166, 166, 166, 0.7); - } - .topnav__list::-webkit-scrollbar-track { - background: transparent; - } - .topnav__item { - line-height: 1.534; - margin: 0; - } - .topnav__item:not(:first-child) { - border-top: 1px solid #ececec; - } - .topnav__link { - color: #333; - display: block; - font-size: 0.9375rem; - padding: 12px 16px; - } - .topnav__link.selected { - background-color: #f4f4f4; - } - .unavailabelBox .listTools--noBorder { - padding-top: 8px; - } - .userMenu { - right: 0; - padding: 0 var(--gridSpace); - width: 100%; - } - .userMenu__content { - width: 100%; - } - .gridBoxes__box { - width: calc(50% - var(--gridBoxSpace) * 2); - } - .userNavBlock { - --tabItemHeight: 32px; - margin-left: calc(-1 * var(--gridSpace)); - margin-bottom: 32px; - overflow-x: auto; - width: calc(100% + var(--gridSpace) * 2); - max-width: initial; - } - .userNav { - padding: 0 var(--gridSpace); - } - .userNav__item { - white-space: nowrap; - flex: 1 0 auto; - } - .userNav__item:not(:last-child) { - margin-right: 8px; - } - .userNav__link { - font-size: 0.875rem; - font-weight: 500; - letter-spacing: initial; - line-height: 1.28; - padding: 8px 12px; - } - .accountDetails { - flex-direction: column; - margin-bottom: 24px; - } - .accountDetails__form { - margin-bottom: 8px; - } - .basketTable__row--head .basketTable__cell { - font-size: 0.875rem; - } - .basketTable__cell--price { - margin-right: 0; - } - .basketTable__cell--quant { - margin: 0 16px; - } - .minibasket { - --miniBasketWidth: 100%; - } - .minibasket__overlay { - display: none; - } - .minibasket__inner { - top: var(--headerHeight); - height: calc(var(--windowHeight) - var(--headerHeight)); - } - .minibasket__header { - padding-top: 8px; - padding-bottom: 12px; - } - .minibasket__product { - padding: 16px 0; - } - .minibasket__bottom { - padding: 12px 16px; - } - .minibasket .miniBasketButton { - display: none; - } - .basketInfo { - margin-top: 8px; - } - .secureCheckout { - flex-direction: column; - } - .secureCheckout__text { - margin: 0 0 8px 0; - } - .secureCheckout__img { - width: 120px; - } - .checkout__title { - margin: 0 0 31px; - } - .checkout > h2 { - font-size: 1.375rem; - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.36; - } - .checkout > h2 { - margin: 0 0 46px; - } - .checkoutMsg { - margin: 0 0 60px; - } - .checkoutMsg img { - margin-bottom: 6px; - } - .checkoutMsg__title { - margin: 0; - } - .checkoutMsg__code strong { - display: block; - margin-top: 8px; - } - .checkoutTracking { - margin: 0 auto 54px; - flex-flow: column; - } - .checkoutTracking__action { - margin-top: 37px; - } - .checkoutTrackingMsg { - margin: 0 0 56px; - } - .loyalty__img { - margin-bottom: 20px; - } - .loyalty__inner { - flex-flow: column; - align-items: center; - } - .loyalty__row { - flex-flow: column; - } - .loyalty__cell { - width: 100%; - } - .loyalty__cell:not(:last-child) { - margin-bottom: 1px; - } - .loyalty__table { - width: 100%; - } - .loyaltyList { - margin: 20px auto 0; - } - .loyaltyList li { - font-size: 0.9375rem; - font-weight: 400; - letter-spacing: -0.03em; - line-height: 1.47; - } - .history { - --historycnt: 72px; - } - .history__mainimg { - margin-bottom: 32px; - } - .history__date { - padding-right: 38px; - } - .history__date:before, - .history__date:after { - right: 28px; - } - .landingList { - --colGap: 0; - row-gap: 0; - } - .landingList__item { - width: 33.33%; - } - .landingItem__title { - font-size: 0.875rem; - margin: 0 var(--landingTitleMobSpace); - } - .landingItem--box .landingItem__title { - font-size: 0.8125rem; - } - .landingItem__submenu { - left: var(--landingTitleMobSpace); - width: calc(100% - var(--landingTitleMobSpace) * 2); - } - .myLists--grid { - --listsGap: 16px; - } - .myLists--row { - --listsGap: 12px; - } - .myList--box { - padding-top: 16px; - padding-bottom: 16px; - } - .myList--box .myList__title { - font-size: 1.125rem; - } - .productList .product .priceBlock__price, - .productsSlider .product .priceBlock__price { - font-size: 0.75rem; - margin-top: 4px; - } - .productList .product .priceBlock__price--init, - .productsSlider .product .priceBlock__price--init { - font-size: 0.6875rem; - line-height: 1.091; - margin-top: 0; - } - .productList .product .priceBlock__price--b, - .productsSlider .product .priceBlock__price--b { - font-size: 0.875rem; - line-height: 1.286; - margin-top: 2px; - } - .productList .product .priceBlock__text, - .productsSlider .product .priceBlock__text { - font-size: 0.625rem; - line-height: 1.2; - } - .orderRow__items { - grid-area: 1/1/2/4; - width: var(--orderProductsWidth); - } - .orderRow__status { - grid-area: 2/1/3/4; - } - .orderRow__info--1 { - grid-area: 3/1/4/2; - } - .orderRow__info--2 { - grid-area: 3/2/4/3; - } - .orderRow__info--3 { - grid-area: 3/3/4/4; - } - .orderHistory { - --outerPaddingY: 18px; - flex-flow: column; - } - .orderHistory .copyText__tooltip { - bottom: 100%; - transform: translate3d(-90%, -10px, 0); - top: auto; - } - .orderHistory .copyText__tooltip--open { - bottom: 100%; - transform: translate3d(-90%, -15px, 0); - top: auto; - } - .orderHistory--qr .orderHistory__section--top { - margin-top: 0; - } - .orderHistory__qr { - margin-right: 15px; - } - .orderHistory__section:not(.orderHistory__section--top) { - padding-right: 0; - } - .orderHistory__section:not(.orderHistory__section--top):not(:last-child) { - border-bottom: 1px solid #c2c2c2; - margin-bottom: 10px; - padding-bottom: 10px; - } - .orderHistory__section--top { - align-items: flex-end; - margin: 55px 0 15px; - } - .orderHistory__section--top .copyText { - margin-bottom: 17px; - } - .orderStatusInfo { - margin-bottom: 16px; - } - .orderTrack { - margin: 0 0 16px; - padding: 16px; - } - .orderTrack__inner { - align-items: flex-start; - flex-flow: column; - } - .orderTrack__date { - display: block; - margin-top: 6px; - } - .productPage { - margin: 24px 0 32px; - } - .productPage__imageCol { - margin: 0 auto 32px; - max-width: 560px; - } - .productPage__imageMain { - margin-bottom: 16px; - } - .productInfo__title { - font-size: 1.5rem; - line-height: 1.25; - } - .productInfo__desc { - margin-bottom: 16px; - } - .productInfo__codeWrap { - margin-bottom: 8px; - } - .productDetails { - margin-top: 24px; - padding-top: 24px; - } - .productDetails__heading { - margin-bottom: 0; - } - .productDetailsNutrTable td { - padding: 8px 14px; - } - .productSliderModal .modal__wrap { - padding: 24px; - } - .productThumbs { - --thumbImageWidth: 64px; - } - .productMainImg .imgControl { - display: none; - } - .notifyMe__main { - max-width: 90vw; - } - } - - @media (max-width: 767px) and (max-width: 767px) { - .sectionTitle h2 { - font-size: 1.125rem; - letter-spacing: -0.02em; - line-height: 1.2; - } - .storeTileSpecs__title { - font-size: 1.125rem; - letter-spacing: -0.02em; - line-height: 1.2; - } - .storeLocator__title { - font-size: 1.125rem; - letter-spacing: -0.02em; - line-height: 1.2; - } - .checkout > h2 { - font-size: 1.125rem; - letter-spacing: -0.02em; - line-height: 1.2; - } - } - - @media (max-width: 639px) { - .sectionTitle p { - font-size: 0.9375rem; - } - .ordersBanner__img img { - object-fit: contain; - object-position: left top; - } - .ordersBanner__icon { - margin-bottom: 16px; - } - .ordersBanner__text { - max-width: 100%; - } - .btnWrap--stickyBtm { - background-color: #fff; - bottom: 0; - left: 0; - margin-top: 12px; - padding-top: 20px; - position: sticky; - z-index: 9; - } - .footer { - --footerSpaceTop: 40px; - } - .col--s1 { - flex-basis: 8.3333333333%; - max-width: 8.3333333333%; - } - .col--s2 { - flex-basis: 16.6666666667%; - max-width: 16.6666666667%; - } - .col--s3 { - flex-basis: 25%; - max-width: 25%; - } - .col--s4 { - flex-basis: 33.3333333333%; - max-width: 33.3333333333%; - } - .col--s5 { - flex-basis: 41.6666666667%; - max-width: 41.6666666667%; - } - .col--s6 { - flex-basis: 50%; - max-width: 50%; - } - .col--s7 { - flex-basis: 58.3333333333%; - max-width: 58.3333333333%; - } - .col--s8 { - flex-basis: 66.6666666667%; - max-width: 66.6666666667%; - } - .col--s9 { - flex-basis: 75%; - max-width: 75%; - } - .col--s10 { - flex-basis: 83.3333333333%; - max-width: 83.3333333333%; - } - .col--s11 { - flex-basis: 91.6666666667%; - max-width: 91.6666666667%; - } - .col--s12 { - flex-basis: 100%; - max-width: 100%; - } - .acc-section { - margin-bottom: 40px; - } - .acc-section__title { - font-size: 1.25rem; - } - .deliveryFlowNav { - left: 16px; - } - .radiobutton--tab .icon { - font-size: 1.375rem; - margin-right: 4px; - } - .radiobutton--tab .radiobutton__label { - font-size: 0.9375rem; - } - .form { - --fieldColumnSpace: 24px; - } - .form__row { - flex-direction: column; - margin-left: calc(-1 * var(--fieldColumnSpace) / 2); - width: calc(100% + var(--fieldColumnSpace)); - } - .form__col { - width: 100%; - } - .field { - flex: 1; - } - .field--small { - flex: initial; - } - .field__legend { - margin: 0 0 20px; - } - .field__mapInner { - padding-top: 137.0262390671%; - } - .formBox__text { - font-size: 0.875rem; - } - .radiobuttons--inline, - .checkboxes--inline { - flex-flow: column; - } - .file-upload__title { - max-width: 151px; - } - .loginWrap__form { - padding-bottom: 24px; - } - .modal__wrap { - padding: 64px 16px 24px; - } - .outputsRow { - gap: 8px; - flex-direction: column; - } - .product__discount { - border-width: 3px; - font-size: 0.6875rem; - font-weight: 500; - width: 44px; - height: 44px; - } - .product__discount .product__discountVal { - font-size: 0.875rem; - margin-bottom: -3px; - } - .product__badge { - --badgePosition: var(--productPadding); - } - .simpleSlider--cat:not(.swiper-initialized) .swiper-slide { - width: calc(50% - 16px); - } - .storeTileOrder { - flex-wrap: wrap; - padding: 10px; - } - .storeTileOrder__details { - margin-bottom: 4px; - } - .storeTileOrder__actions { - flex-basis: 100%; - margin-top: 20px; - } - .storeTileOrder__actions .button { - width: 100%; - } - .tooltip__main { - padding: 16px; - } - .gridBoxes { - margin: 32px 0 32px calc(-1 * var(--gridBoxSpace)); - } - .gridBoxes__box { - margin-left: 0; - margin-right: 0; - width: 100%; - } - .contentBox { - flex-wrap: wrap; - } - .contentBox__icon { - font-size: 2rem; - margin: 0 8px 0 0; - } - .contentBox__title { - margin-bottom: 0; - } - .contentBox__text { - margin-top: 8px; - width: 100%; - } - .addBox__icon { - font-size: 3.5rem; - margin-bottom: 24px; - } - .addBox__text { - margin-bottom: 24px; - } - .addresses__box, - .addresses .addBox { - width: 100%; - } - .basketTable { - --imgWidth: 80px; - --basketProductSpaceV: 16px; - } - .basketTable .basketTable__row:not(.basketTable__row--head) { - align-content: center; - align-items: flex-start; - flex-wrap: wrap; - padding: var(--basketProductSpaceV) 8px var(--basketProductSpaceV) 96px; - min-height: 112px; - } - .basketTable .basketTable__remove { - font-size: 1.5rem; - margin: 0; - right: 8px; - top: var(--basketProductSpaceV); - z-index: 2; - } - .basketTable .basketTable__cell--product { - flex: auto; - width: 100%; - } - .basketTable .basketTable__cell--product:not(:last-child) { - margin-bottom: 8px; - } - .basketTable .basketTable__cell--quant { - margin: 0; - } - .basketTable .basketTable__cell--price { - align-items: flex-end; - display: inline-flex; - flex: 1; - justify-content: flex-end; - margin: 0; - width: auto; - height: 34px; - } - .basketTable .fav { - font-size: 1.5rem; - margin: 0; - right: 40px; - top: var(--basketProductSpaceV); - } - .basketTable .product__img { - left: 8px; - margin-top: -40px; - position: absolute; - top: 50%; - } - .basketTable .product__title { - font-size: 0.9375rem; - padding-right: 72px; - } - .basketTable__row--head .basketTable__cell--product:not(:last-child) { - margin-bottom: 0; - } - .basketTable__row--head .basketTable__cell:not(:first-child) { - display: none; - } - .minibasket .basketTable .priceBlock__price { - font-size: 1rem; - line-height: 1.375; - } - .minibasket .basketTable .priceBlock__price--init { - font-size: 0.6875rem; - line-height: 1.546; - margin-bottom: 2px; - margin-top: 0; - } - .minibasket .basketTable .product__title { - font-size: 0.8125rem; - } - .form--basket { - margin-block: 20px; - } - .checkoutStep { - --checkoutStepSpace: 16px; - } - .history__section { - padding: 0 12px; - } - .history__thumb { - margin-bottom: 20px; - } - .listsBlock { - left: 0; - opacity: 0; - padding: 24px; - position: fixed; - top: 0; - transition: opacity 250ms ease-in-out; - z-index: 9; - width: 100%; - height: 100%; - } - .wishlistButton:not(.open) .listsBlock { - pointer-events: none; - } - .wishlistButton.open .listsBlock { - opacity: 1; - } - .listsBlock__inner { - padding-top: 56px; - z-index: 10; - height: 100%; - } - .listsBlock__title { - font-size: 1.25rem; - font-weight: 700; - text-align: center; - } - .listsBlock__list { - margin-bottom: 20px; - padding-bottom: 20px; - } - .listsBlock__close { - font-size: 1.5rem; - right: 16px; - top: 16px; - } - .myLists--grid .myList { - width: 100%; - } - .myLists--row .myList { - width: 100%; - } - .productList .product .product__img, - .productsSlider .product .product__img { - margin-left: calc(-1 * var(--productPadding)); - width: calc(100% + var(--productPadding) * 2); - } - .productList .product { - width: calc(50% - var(--productSpaceH) / 2); - } - .listTools { - padding-bottom: 8px; - } - .orderRow { - display: flex; - flex-direction: column; - gap: var(--orderRowGap); - } - .orderSum { - --orderSumColSpace: 16px; - } - .productPage__imageCol { - margin-bottom: 24px; - } - .productInfo__quantity { - margin: 14px 0 20px; - } - .productInfo .priceContainer { - margin: 0 0 8px; - } - .productThumbs .swiper-button-prev, - .productThumbs .swiper-button-next { - top: 0; - height: 100%; - } - .productThumbs .swiper-button-prev:before { - background: linear-gradient( - to right, - white 0%, - rgba(255, 255, 255, 0) 100% - ); - } - .productThumbs .swiper-button-next:before { - background: linear-gradient(to left, white 0%, rgba(255, 255, 255, 0) 100%); - } - .productHeader .product__img { - width: 56px; - } - .productHeader .addToCartButton { - min-width: initial; - } - .productHeader .addToCartButton:before { - margin-right: 0; - } - .productHeader .addToCartButton__text { - display: none; - } - .notifyMe__main { - padding: 16px; - } - } - - @media (max-width: 639px) and (max-width: 639px) { - .basketTable .priceBlock__price { - font-size: 1rem; - line-height: 1.375; - } - .basketTable .priceBlock__price--init { - font-size: 0.6875rem; - line-height: 1.546; - margin-bottom: 2px; - margin-top: 0; - } - .basketTable .product__title { - font-size: 0.8125rem; - } - } - - @media (max-width: 479px) { - :root { - --formMaxWidthS: 100%; - } - .sectionTitle { - align-items: flex-start; - flex-direction: column; - } - .btnWrap { - --buttonsMargin: 4px; - align-items: center; - flex-direction: column; - } - .btnWrap .button { - width: 100%; - } - ul.listCols { - column-count: 1; - } - .header--checkout .header__topInner { - padding-top: 42px; - } - .header--checkout .header__logo { - top: 0; - transform: translateX(-50%); - } - .articleList--contests .article { - width: 100%; - } - .catalogueList .catalogue { - width: 100%; - } - .emptyContent { - grid-template-areas: "icon text" "buttons buttons"; - } - .table { - --paddingExternalX: 20px; - --cellPaddingY: 8px; - margin: 20px 0 32px; - font-size: 0.8125rem; - font-weight: 400; - letter-spacing: -0.02em; - line-height: 1.07; - } - .table th { - display: none; - } - .table tr { - border-width: 1px; - } - .table tr:not(.highlight) { - border-color: #ececec; - } - .table thead tr { - display: none; - } - .table td:first-child { - padding-top: var(--paddingExternalY); - } - .table td:last-child { - padding-bottom: var(--paddingExternalY); - } - .table td { - align-items: center; - display: flex; - justify-content: flex-start; - max-width: initial; - padding: var(--cellPaddingY) var(--paddingExternalX); - } - .table td.table__tools { - padding: 11px var(--paddingExternalX) 24px; - } - .table td.table__tools { - position: relative; - margin-top: var(--cellPaddingY); - justify-content: flex-end; - } - .table td.table__tools:after { - content: ""; - display: block; - position: absolute; - top: 0; - right: var(--paddingExternalX); - left: var(--paddingExternalX); - border-top: 1px dashed #838385; - } - .table .mob-th { - display: inline-block; - margin-right: 25px; - flex: 0 0 45%; - } - .accountDetails__box { - width: 100%; - } - .checkoutTracking__action { - min-width: initial; - width: 100%; - } - .landingList__item { - width: 50%; - } - .addProduct { - flex-wrap: wrap; - } - .addProduct .quantity { - margin-bottom: 16px; - } - .addToCartButton { - width: calc(100% - 64px); - } - .productHeader .product__desc { - display: none; - } - } - - @media (hover: hover) and (pointer: fine) { - .breadcrumb__itemLink:hover { - color: var(--buttonColorHover); - } - .breadcrumb__itemLink:active { - color: var(--buttonColorActive); - } - .button:not(.disabled):hover { - background-color: var(--buttonColorHover); - } - .button:not(.disabled):active { - background-color: var(--buttonColorActive); - } - .button--border:not(.disabled):hover { - background: transparent; - border-color: var(--buttonColorHover); - color: var(--buttonColorHover); - } - .button--border:not(.disabled):active { - background: transparent; - border-color: var(--buttonColorActive); - color: var(--buttonColorActive); - } - .button--alt:not(.disabled):hover { - background: #f7f5f0; - border-color: #c2c2c2; - color: inherit; - } - .button--alt:not(.disabled):hover .icon { - color: #f47920; - } - .button--alt:not(.disabled):active { - background: #f2efe8; - border-color: #c2c2c2; - color: inherit; - } - .button--alt:not(.disabled):active .icon { - color: #f47920; - } - .iconButton--border:not(.disabled):hover { - border-color: var(--buttonColorHover); - } - .iconButton--border:not(.disabled):active { - border-color: var(--buttonColorActive); - } - .iconButton:not(.disabled):hover, - .selectedFilters__remove:not(.disabled):hover { - color: var(--buttonColorHover); - } - .iconButton:not(.disabled):active, - .selectedFilters__remove:not(.disabled):active { - color: var(--buttonColorActive); - } - .link:not(.disabled):hover, - .text a:not(.disabled):hover, - p a:not(.disabled):hover { - color: var(--buttonColorHover); - } - .link:not(.disabled):active, - .text a:not(.disabled):active, - p a:not(.disabled):active { - color: var(--buttonColorActive); - } - .deliveryTypeInfo__link:hover { - color: var(--buttonColorHover); - } - .deliveryTypeInfo__link:active { - color: var(--buttonColorActive); - } - .categoriesList__item > a:hover, - .categoriesList__item > .acc__header:hover { - color: #333; - } - .checkbox__label a:hover, - .radiobutton__label a:hover { - text-decoration: underline; - } - .radiobutton--box:not(.disabled):hover .radiobutton__border { - background-color: #f4f4f4; - } - .radiobutton--onlyColor:hover .radiobutton__icon { - border-color: #838385; - } - .radiobutton--onlyIcon:hover .radiobutton__icon { - border-color: #a6a6a6; - } - .select__option:not(.selected):hover, - .autocomplete__option:not(.selected):hover { - background-color: #f4f4f4; - } - .select__option:not(.selected):active, - .autocomplete__option:not(.selected):active { - background-color: #ececec; - } - .select--card .select__option:not(.selected):hover, - .select--card .autocomplete__option:not(.selected):hover { - background-color: #f7f5f0; - } - .select--card .select__option:not(.selected):active, - .select--card .autocomplete__option:not(.selected):active { - color: var(--buttonColorActive); - } - .file-upload__delete:hover { - color: #838385; - } - .file-upload__delete:hover .file-upload__icon { - color: #a6a6a6; - } - .file-upload__delete:active { - color: #f47920; - } - .file-upload__delete:active .file-upload__icon { - color: #f47920; - } - .goToTop:hover:before { - transform: translateY(-6px); - } - .mainNav__item:hover { - color: #333; - } - .megamenu__list a:hover { - color: #333; - } - .output__link:hover, - .output__mainLink:hover { - color: var(--buttonColorHover); - } - .output__link:active, - .output__mainLink:active { - color: var(--buttonColorActive); - } - .pagination__link:hover { - color: var(--buttonColorHover); - } - .pagination__link:active { - color: var(--buttonColorActive); - } - .quantity--init:hover:after { - background-color: #e8e2d7; - } - .quantity__btn:not(.disabled):hover { - background-color: var(--buttonBgColorHover); - } - .quantity__btn:not(.disabled):active { - background-color: var(--buttonBgColorActive); - } - .sideNav__item--level1:not(.open) .sideNav__link--level1:hover { - color: #838385; - } - .sideNav__link--level2:not(.active):hover { - color: #838385; - } - .swiper-button-prev:not(.swiper-button-disabled):hover, - .swiper-button-next:not(.swiper-button-disabled):hover { - color: #595959; - } - .swiper-button-prev:not(.swiper-button-disabled):active, - .swiper-button-next:not(.swiper-button-disabled):active { - color: #f47920; - } - .table tbody tr:hover:after { - opacity: 1; - } - .timetable__hour:not(.timetable__hour--selected):not(.timetable__hour--unavailable):hover { - border-color: #a6a6a6; - } - .playvideo__icon:hover { - color: var(--buttonColorHover); - } - .playvideo__icon:active { - color: var(--buttonColorActive); - } - .userMenu__link:hover { - color: var(--hoverColor); - } - .contentBox__link:hover { - color: #333; - } - .userNav__link:not(.active):hover { - background-color: #e8e2d7; - } - .contactinfo__link:hover { - color: #838385; - } - .contactinfo__link:active { - color: #f47920; - } - .contactinfo__link:active .contactinfo__icon { - color: #f47920; - } - .landingList__item:hover .landingItem__title { - color: #fff; - } - .landingList__item:hover .landingItem__title:before { - opacity: 1; - } - .landingItem__link:hover { - color: var(--buttonColorHover); - } - .landingItem__link:active { - color: var(--buttonColorActive); - } - .landingItem--box .landingItem__title:hover { - color: var(--buttonColorHover); - } - .landingItem--box .landingItem__title:active { - color: var(--buttonColorActive); - } - .landingItem__submenuLink:hover { - color: #838385; - } - .myList--box:hover:after { - opacity: 1; - } - .myList__title:hover { - color: var(--buttonColorHover); - } - .myList__title:active { - color: var(--buttonColorActive); - } - .productList .product:hover, - .productsSlider .product:hover { - box-shadow: 0px 6px 16px rgba(51, 51, 51, 0.15); - } - .productThumbs__slide:not(.swiper-slide-thumb-active):hover:after { - opacity: 1; - border-color: #a6a6a6; - } - .sitemapnav__link:hover { - color: var(--buttonColorHover); - } - .sitemapnav__link:active { - color: var(--buttonColorActive); - } - } - - @media (hover: none) and (pointer: coarse) { - .landingList__item.active .landingItem__title { - color: #fff; - } - .landingList__item.active .landingItem__title:before { - opacity: 1; - } - } - /*# sourceMappingURL=main.css.map */ - \ No newline at end of file diff --git a/html/content/css/main.min.css b/html/content/css/main.min.css deleted file mode 100644 index 7052f9e..0000000 --- a/html/content/css/main.min.css +++ /dev/null @@ -1,2 +0,0 @@ -:root{--top: 0px;--windowHeight: 100%;--productPadding: 16px;--gridSpace: 48px;--iconButtonSpace: 11px;--headerHeight: 136px;--fieldColumnSpace: 16px;--fieldRowSpace: 20px;--smallField: 130px;--checkboxRadioSpace: 16px;--inputBorderColor: #A6A6A6;--inputLabelPadding: 16px;--wrapperXXS: 816px;--wrapperXS: 984px;--wrapperS: 1142px;--wrapper: 1240px;--wrapperL: 1514px;--wrapperFull: 1920px}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */*,*::before,*::after{box-sizing:border-box}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;-webkit-font-smoothing:antialiased}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;height:100%;width:100%;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;-webkit-transform-style:flat;transform-style:flat}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{left:0;right:auto}.noUi-vertical .noUi-origin{top:-100%;width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s}.noUi-state-drag *{cursor:inherit !important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;right:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;right:-6px;bottom:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{left:-17px;right:auto}.noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #bbb}.noUi-connects{border-radius:3px}.noUi-connect{background:#3fb8af}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#fff;cursor:default;box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ebebeb,0 3px 6px -3px #bbb}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:before,.noUi-handle:after{content:"";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:before,.noUi-vertical .noUi-handle:after{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#b8b8b8}[disabled].noUi-target,[disabled].noUi-handle,[disabled] .noUi-handle{cursor:not-allowed}.noUi-pips,.noUi-pips *{box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#ccc}.noUi-marker-sub{background:#aaa}.noUi-marker-large{background:#aaa}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%, 50%);transform:translate(50%, 50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0, -50%);transform:translate(0, -50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0, 50%);transform:translate(0, 50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0, -50%);transform:translate(0, -50%);top:50%;right:120%}.noUi-horizontal .noUi-origin>.noUi-tooltip{-webkit-transform:translate(50%, 0);transform:translate(50%, 0);left:auto;bottom:10px}.noUi-vertical .noUi-origin>.noUi-tooltip{-webkit-transform:translate(0, -18px);transform:translate(0, -18px);top:auto;right:28px}@font-face{font-family:"swiper-icons";src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA");font-weight:400;font-style:normal}:root{--swiper-theme-color: #007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0px, 0, 0);transform:translate3d(0px, 0, 0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:height,-webkit-transform;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-wrapper,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-cube-shadow{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:"";flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:"";position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size: 44px}.swiper-button-prev,.swiper-button-next{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/44*27);height:var(--swiper-navigation-size);margin-top:calc(0px - var(--swiper-navigation-size)/2);z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color, var(--swiper-theme-color))}.swiper-button-prev.swiper-button-disabled,.swiper-button-next.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev:after,.swiper-button-next:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none !important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:300ms opacity;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-fraction,.swiper-pagination-custom,.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transform:scale(0.33);transform:scale(0.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{-webkit-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{-webkit-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{-webkit-transform:scale(0.66);transform:scale(0.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{-webkit-transform:scale(0.33);transform:scale(0.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{-webkit-transform:scale(0.66);transform:scale(0.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{-webkit-transform:scale(0.33);transform:scale(0.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, 0.2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none !important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0px, -50%, 0);transform:translate3d(0px, -50%, 0)}.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:8px}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:200ms top,200ms -webkit-transform;transition:200ms transform,200ms top;transition:200ms transform,200ms top,200ms -webkit-transform}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:200ms left,200ms -webkit-transform;transition:200ms transform,200ms left;transition:200ms transform,200ms left,200ms -webkit-transform}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:200ms right,200ms -webkit-transform;transition:200ms transform,200ms right;transition:200ms transform,200ms right,200ms -webkit-transform}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{-webkit-transform-origin:right top;transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-vertical>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>img,.swiper-zoom-container>svg,.swiper-zoom-container>canvas{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s infinite linear;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}html.noScroll,html.noScroll body{overflow:hidden;height:calc(var(--windowHeight) - 1px)}body.menuOpened{left:0;overflow:hidden;position:fixed;top:0;width:100%;height:100%}body:not(.menuOpened) .mainLayer{opacity:0;pointer-events:none}.section{margin-bottom:64px}.sectionTitle{align-items:flex-end;display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:20px;text-align:left}.sectionTitle--center{justify-content:center}.sectionTitle h2{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.53;color:#333;margin:0}.sectionTitle h2+p{margin-top:4px}.sectionTitle p{color:#404040;font-size:1rem;line-height:1.467}.sectionTitle p:last-child{margin-bottom:0}.sectionTitle .link,.sectionTitle .text a,.text .sectionTitle a,.sectionTitle p a,p .sectionTitle a{margin-top:4px}.pageTitle{position:relative;height:100px}.mainLayout__content .pageTitle{margin-left:calc(-1*var(--mainLayoutSpace));width:calc(100% + var(--mainLayoutSpace)*2)}.pageTitle img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.pageTitle .wrapper{align-items:center;display:inline-flex;flex-direction:column;justify-content:center;position:relative;text-align:center;height:100%}.pageTitle h1{color:var(--fontcolor);font-size:2.875rem;font-weight:700;letter-spacing:-0.03em;line-height:1.0435;margin:0}.pageTitle .em{color:#f47920}.pageTitle p{color:#595959;font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.375;margin:0}.pageTitle.pageTitle--image h1{text-shadow:0px 6px 16px rgba(51,51,51,.15)}.pageTitle--big{align-items:center;background:#f2efe8;display:flex;justify-content:center;-webkit-mask:url(//storage.googleapis.com/pythia-files/emarket/sklavenitisMask.svg) center no-repeat;mask:url(//storage.googleapis.com/pythia-files/emarket/sklavenitisMask.svg) center no-repeat;-webkit-mask-size:auto 100%;mask-size:auto 100%;margin:0 0 56px;position:relative;text-align:center;height:385px}.pageTitle--big img{-o-object-fit:cover;object-fit:cover;height:100%;max-width:1243px}.pageTitle--big h1{color:#fff;font-size:4.375rem;line-height:1;text-shadow:0px 6px 16px rgba(51,51,51,.15)}[v-cloak]:not([v-cloak=visibility]){display:none}[v-cloak=visibility]{visibility:hidden}.printRow{margin-top:24px;padding-top:16px;text-align:right}.printRow--border{border-top:1px solid #c2c2c2}.asideHeader{align-items:center;background:#f2efe8;display:flex;flex-direction:column;justify-content:center;height:100px}.asideHeader__title{color:#333;font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.334;margin:0}.asideHeader__title:not(:last-child){margin-bottom:4px}.asideHeader__text{color:#838385;font-size:0.875rem;font-weight:500;line-height:1.286}.ordersBanner{background:#f2efe8;border-radius:8px;overflow:hidden;padding:32px;position:relative}.ordersBanner__img{position:absolute;right:0;top:0;width:46%;height:100%}.ordersBanner__img img{-o-object-fit:cover;object-fit:cover;-o-object-position:left center;object-position:left center;width:100%;height:100%}.ordersBanner__icon{flex-shrink:0;font-size:3.4375rem;margin-right:32px}.ordersBanner__text{color:#333;font-size:1.0625rem;letter-spacing:-0.03em;line-height:1.411;margin:0;position:relative;max-width:496px}.pageNav{display:flex;justify-content:space-between;margin:24px 0}.pill{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;background-color:#8dc63f;border-radius:100px;color:#fff;display:inline-block;padding:5px 12px}@font-face{font-family:"cfastystd";font-display:swap;font-style:normal;font-weight:400;src:url("../fonts/CFAstyStd-Book.woff2") format("woff2"),url("../fonts/CFAstyStd-Book.woff") format("woff")}@font-face{font-family:"cfastystd";font-display:swap;font-style:normal;font-weight:500;src:url("../fonts/CFAstyStd-Medium.woff2") format("woff2"),url("../fonts/CFAstyStd-Medium.woff") format("woff")}@font-face{font-family:"cfastystd";font-display:swap;font-style:normal;font-weight:700;src:url("../fonts/CFAstyStd-Bold.woff2") format("woff2"),url("../fonts/CFAstyStd-Bold.woff") format("woff")}.clearfix::after{clear:both;content:"";display:table}.hide-text{overflow:hidden;padding:0;text-indent:101%;white-space:nowrap}.visually-hidden{border:0;clip:rect(0 0 0 0);margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;height:1px}.row{display:flex;flex-wrap:wrap}.row--noWrap{flex-wrap:nowrap}.row--vStart{align-items:flex-start}.row--vCenter{align-items:center}.row--vEnd{align-items:flex-end}.row--hStart{justify-content:flex-start}.row--hCenter{justify-content:center}.row--hEnd{justify-content:flex-end}.row--space{flex-wrap:nowrap;justify-content:space-between}.btnWrap{--buttonsMarginH: 6px;--buttonsMarginV: 6px;display:flex;flex-wrap:wrap;justify-content:flex-start;margin:0 0 40px}.btnWrap.field{--buttonsMarginH: 24px}.btnWrap--noMargin{margin-bottom:0}.btnWrap--hCenter{justify-content:center}.btnWrap--hEnd{justify-content:flex-end}.btnWrap--hSpaceB{justify-content:space-between}.btnWrap--column{flex-direction:column}.btnWrap--column>*:not(:last-child){margin-bottom:var(--buttonsMarginV);margin-right:0}.btnWrap .button{margin:var(--buttonsMarginV) var(--buttonsMarginH)}.productThumbs .swiper-button-prev:before,.productThumbs .swiper-button-next:before,.productThumbs__slide:after,.orderTrack__action:after,.myList__new:after,.myList__title:after,.myList__icon:after,.myList--box:after,.landingItem--box .landingItem__title:after,.landingItem__title:before,.landingItem__link:before,.addBox__link:before,.userNav__link:after,.contentBox__link:before,.playvideo__icon,.table tbody tr:after,.storeHours:after,.searchInput__submitInput,.quantity.quantity--init .quantity__input,.quantity--init:after,.product__title:before,.output--init .output__button:after,.output__mainLink:after,.loginWrap__img img,.radiobutton__border,.filtersApply .loader,.contestBnr:after,.catalogue__link:before,.loginBtn .iconButton:after,.loginBtn .selectedFilters__remove:after,.article__link:before,.pageTitle figure,.pageTitle--big figure{inset:0;position:absolute;width:100%;height:100%}.separate{margin:0 16px}.txtRight{text-align:right}.noWrap{white-space:nowrap}.couponBlock__clear,.couponBlock__btn,.playvideo__icon,.social__link,.iconButton,.selectedFilters__remove,.footer__listLink{--buttonColor: #838385;--buttonColorHover: #595959;--buttonColorActive: #F47920}.sitemapnav__link,.myList__title,.landingItem--box .landingItem__title,.landingItem__link,.pagination__link,.output__link,.output__mainLink,.select__option,.autocomplete__option,.checkbox__label a,.radiobutton__label a,.deliveryTypeInfo__link,.link,.text a,p a,.iconButton--black,.breadcrumb__itemLink{--buttonColor: #333;--buttonColorHover: #838385;--buttonColorActive: #F47920}.link--orange,.iconButton--orange,.button{--buttonColor: #F47920;--buttonColorHover: #F68D41;--buttonColorActive: #C75808}.button.button--green,.button.miniBasketButton.active{--buttonColor: #74B11F;--buttonColorHover: #8DC63F;--buttonColorActive: #588718}.select__listWrap,.autocomplete,.range__input,.field__input,.textarea__field,.select__button{border:1px solid var(--inputBorderColor);border-radius:8px}.range__input,.field__input,.textarea__field,.select__button{color:#333;font-size:0.9375rem;padding:8px 16px;width:100%;height:48px}.input-validation-error.range__input,.input-validation-error.field__input,.input-validation-error.textarea__field,.input-validation-error.select__button,.field--error .range__input,.field--error .field__input,.field--error .textarea__field,.field--error .select__button{border-color:#d91a32}.range__input:focus,.field__input:focus,.textarea__field:focus,.select--open .select__button{border-color:#f47920;outline:none}.field-validation-error,.field__helper{font-size:0.75rem;font-weight:400;letter-spacing:initial;line-height:1.33;color:#595959;display:block;margin:7px 0 0 0;padding-left:var(--inputLabelPadding)}.field-validation-error~.field-validation-error,.field__helper~.field-validation-error{margin-top:2px}.field__input:-moz-read-only{background-color:#ececec;border-color:#ececec;color:#838385;pointer-events:none}.field__input:read-only{background-color:#ececec;border-color:#ececec;color:#838385;pointer-events:none}.listsBlock__bg,.minibasket__overlay,.userMenu__overlay,.notifications__overlay,.modal__bg,.mainLayer{background-color:rgba(51,51,51,.9);left:0;position:fixed;top:0;transition:opacity 250ms ease-in-out;z-index:9;width:100%;height:100%}.minibasket__inner{-webkit-transform:translateX(100%);transform:translateX(100%);transition:-webkit-transform 300ms ease-out 120ms;transition:transform 300ms ease-out 120ms;transition:transform 300ms ease-out 120ms, -webkit-transform 300ms ease-out 120ms}.minibasket.active .minibasket__inner{-webkit-transform:translateX(0);transform:translateX(0);transition:-webkit-transform 350ms ease-out;transition:transform 350ms ease-out;transition:transform 350ms ease-out, -webkit-transform 350ms ease-out}.miniCart.active .miniCart__holder,.miniCart.active .miniCart__main{opacity:1;transition:opacity 300ms ease-out 240ms}.miniCart__holder,.miniCart__main{opacity:0;transition:opacity 240ms ease-out}@font-face{font-family:"iconfont";src:url("https://sklavenitishtml.dev.atcom.gr/Content/Fonts/iconfont.eot");src:url("https://sklavenitishtml.dev.atcom.gr/Content/Fonts/iconfont.eot?") format("eot"),url("../Fonts/iconfont.woff2") format("woff2"),url("../Fonts/iconfont.woff") format("woff"),url("../Fonts/iconfont.ttf") format("truetype"),url("../Fonts/iconfont.svg") format("svg")}.couponBlock__clear:before,.couponBlock__btn:before,.productThumbs .swiper-button-next:after,.productThumbs .swiper-button-prev:after,.addToCartButton--added:before,.addToCartButton:before,.myList--box.myList--fav:before,.myList--box:before,.sideBasket__title:before,.topnav__selected:before,.timetableNav--prev:before,.timetableNav--next:before,.swiper-button-next:after,.swiper-button-prev:after,.sidemenu__selected:before,.searchInput__submit:before,.range__submit:before,.quantity__message--removed:before,.quantity__message--added:before,.quantity__btn--dec:before,.quantity__btn--inc:before,.quantity--init:before,.errorMsg:before,.select__button:after,.checkbox__icon:before,.radiobutton--check .radiobutton__icon:after,.radiobutton--box .radiobutton__icon:after,.selectedFilters__remove:before,.filter__titleIcon:before,.content__zoomimg:before,.acc.open>.acc__header .acc__icon.icon-edit:before,.icon-zoomOut:before,.icon-zoomIn:before,.icon-youtube:before,.icon-warning:before,.icon-visibilityOff:before,.togglePassword.disabled:before,.filters:not(.filters--checked) .togglePassword.filtersClearAll:before,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.togglePassword:before,.filter:not(.filter--checked) .filtersLinks button.togglePassword:before,.icon-visibility:before,.togglePassword:before,.icon-vegetables:before,.icon-twitter:before,.icon-trolley:before,.icon-time:before,.icon-tickOutline:before,.icon-tickFilled:before,.icon-tick:before,.statusMessage--success:before,.icon-storeSevice1:before,.icon-store:before,.icon-shipping:before,.icon-settings:before,.icon-searchList:before,.icon-search:before,.field__inputSubmit:before,.icon-schedule:before,.icon-sausages:before,.icon-safePay:before,.icon-revertRight:before,.icon-revertLeft:before,.icon-restaurant:before,.icon-remove:before,.icon-refresh:before,.icon-readyMeals:before,.icon-print:before,.icon-plus:before,.icon-play:before,.icon-pinterest:before,.icon-pin:before,.icon-pet:before,.icon-party:before,.icon-parking:before,.icon-paper:before,.icon-orders:before,.icon-onePlusOne:before,.icon-nuts:before,.icon-newProduct:before,.icon-mylists-wreath:before,.icon-mylists-woman:before,.icon-mylists-winter:before,.icon-mylists-volleyball:before,.icon-mylists-umbrella:before,.icon-mylists-triangle:before,.icon-mylists-trailer:before,.icon-mylists-sun:before,.icon-mylists-store:before,.icon-mylists-star:before,.icon-mylists-sea:before,.icon-mylists-plane:before,.icon-mylists-mountain:before,.icon-mylists-mask:before,.icon-mylists-man:before,.icon-mylists-leaf:before,.icon-mylists-ktirio:before,.icon-mylists-ktiria:before,.icon-mylists-kite:before,.icon-mylists-house2:before,.icon-mylists-hospital:before,.icon-mylists-home:before,.icon-mylists-handHeart:before,.icon-mylists-grandpa:before,.icon-mylists-grandma:before,.icon-mylists-glasses:before,.icon-mylists-girl:before,.icon-mylists-gift:before,.icon-mylists-football:before,.icon-mylists-easterEgg:before,.icon-mylists-earth:before,.icon-mylists-dog:before,.icon-mylists-dinner:before,.icon-mylists-diamond:before,.icon-mylists-cupcake:before,.icon-mylists-cocktail:before,.icon-mylists-cloud:before,.icon-mylists-circle:before,.icon-mylists-championCup:before,.icon-mylists-champagne:before,.icon-mylists-cat:before,.icon-mylists-camp:before,.icon-mylists-boy:before,.icon-mylists-boat:before,.icon-mylists-block:before,.icon-mylists-birthdayHat:before,.icon-mylists-birthdaycake:before,.icon-mylists-bird:before,.icon-mylists-basketball:before,.icon-mylists-basket:before,.icon-mylists-barakia:before,.icon-mylists-balloon:before,.icon-mylists-baby:before,.icon-multipleSearch:before,.icon-minimarketFood:before,.icon-milkBeverages:before,.icon-mailCircle:before,.icon-mail:before,.icon-logout:before,.icon-location2:before,.icon-location:before,.icon-instagram:before,.icon-info:before,.icon-house:before,.icon-help:before,.icon-hearts:before,.icon-heart:before,.icon-frozen:before,.icon-freshMeat:before,.icon-form:before,.icon-fish:before,.icon-filters:before,.icon-fav:before,.icon-facemask:before,.icon-facebook:before,.icon-eggs:before,.icon-edit:before,.icon-download:before,.icon-directions2:before,.icon-directions:before,.icon-delete:before,.icon-cream:before,.icon-cosmetics:before,.icon-copy:before,.icon-cone:before,.icon-closeRoundedOutline:before,.icon-closeRounded:before,.icon-closeOutline:before,.icon-close:before,.field__inputClear:before,.statusMessage--error:before,.icon-cleaning:before,.icon-cheese:before,.icon-card:before,.icon-call:before,.icon-cafe:before,.icon-breakfast:before,.icon-bisquite:before,.icon-bio:before,.icon-beverages:before,.icon-bell:before,.icon-basketTimer:before,.icon-basket:before,.icon-bakery:before,.icon-babytoy:before,.icon-babyFoods:before,.icon-arrowUp:before,.goToTop:before,.icon-arrowRight32:before,.icon-arrowRight:before,.mainNav__link--hasChildren:before,.icon-arrowRight--circle:before,.icon-arrowRight--b:before,.icon-arrowLeft32:before,.icon-arrowLeft:before,.megamenu__back:before,.icon-arrowLeft--b:before,.icon-arrowDown:before,.icon-appetizers:before,.icon-alert:before,.icon-alcohol:before,.icon-addCircle:before,.icon-addCircle--b:before,.icon-add:before,.icon-account:before{font-family:"iconfont";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-display:swap;font-variant:normal;font-weight:normal;text-decoration:none;text-transform:none;display:inline-block;line-height:1;vertical-align:top}.icon-account:before{content:""}.icon-add:before{content:""}.icon-addCircle--b:before{content:""}.icon-addCircle:before{content:""}.icon-alcohol:before{content:""}.icon-alert:before{content:""}.icon-appetizers:before{content:""}.icon-arrowDown:before{content:""}.icon-arrowLeft--b:before{content:""}.icon-arrowLeft:before,.megamenu__back:before{content:""}.icon-arrowLeft32:before{content:""}.icon-arrowRight--b:before{content:""}.icon-arrowRight--circle:before{content:""}.icon-arrowRight:before,.mainNav__link--hasChildren:before{content:""}.icon-arrowRight32:before{content:""}.icon-arrowUp:before,.goToTop:before{content:""}.icon-babyFoods:before{content:""}.icon-babytoy:before{content:""}.icon-bakery:before{content:""}.icon-basket:before{content:""}.icon-basketTimer:before{content:""}.icon-bell:before{content:""}.icon-beverages:before{content:""}.icon-bio:before{content:""}.icon-bisquite:before{content:""}.icon-breakfast:before{content:""}.icon-cafe:before{content:""}.icon-call:before{content:""}.icon-card:before{content:""}.icon-cheese:before{content:""}.icon-cleaning:before{content:""}.icon-close:before,.field__inputClear:before,.statusMessage--error:before{content:""}.icon-closeOutline:before{content:""}.icon-closeRounded:before{content:""}.icon-closeRoundedOutline:before{content:""}.icon-cone:before{content:""}.icon-copy:before{content:""}.icon-cosmetics:before{content:""}.icon-cream:before{content:""}.icon-delete:before{content:""}.icon-directions:before{content:""}.icon-directions2:before{content:""}.icon-download:before{content:""}.icon-edit:before{content:""}.icon-eggs:before{content:""}.icon-facebook:before{content:""}.icon-facemask:before{content:""}.icon-fav:before{content:""}.icon-filters:before{content:""}.icon-fish:before{content:""}.icon-form:before{content:""}.icon-freshMeat:before{content:""}.icon-frozen:before{content:""}.icon-heart:before{content:""}.icon-hearts:before{content:""}.icon-help:before{content:""}.icon-house:before{content:""}.icon-info:before{content:""}.icon-instagram:before{content:""}.icon-location:before{content:""}.icon-location2:before{content:""}.icon-logout:before{content:""}.icon-mail:before{content:""}.icon-mailCircle:before{content:""}.icon-milkBeverages:before{content:""}.icon-minimarketFood:before{content:""}.icon-multipleSearch:before{content:""}.icon-mylists-baby:before{content:""}.icon-mylists-balloon:before{content:""}.icon-mylists-barakia:before{content:""}.icon-mylists-basket:before{content:""}.icon-mylists-basketball:before{content:""}.icon-mylists-bird:before{content:""}.icon-mylists-birthdaycake:before{content:""}.icon-mylists-birthdayHat:before{content:""}.icon-mylists-block:before{content:""}.icon-mylists-boat:before{content:""}.icon-mylists-boy:before{content:""}.icon-mylists-camp:before{content:""}.icon-mylists-cat:before{content:""}.icon-mylists-champagne:before{content:""}.icon-mylists-championCup:before{content:""}.icon-mylists-circle:before{content:""}.icon-mylists-cloud:before{content:""}.icon-mylists-cocktail:before{content:""}.icon-mylists-cupcake:before{content:""}.icon-mylists-diamond:before{content:""}.icon-mylists-dinner:before{content:""}.icon-mylists-dog:before{content:""}.icon-mylists-earth:before{content:""}.icon-mylists-easterEgg:before{content:""}.icon-mylists-football:before{content:""}.icon-mylists-gift:before{content:""}.icon-mylists-girl:before{content:""}.icon-mylists-glasses:before{content:""}.icon-mylists-grandma:before{content:""}.icon-mylists-grandpa:before{content:""}.icon-mylists-handHeart:before{content:""}.icon-mylists-home:before{content:""}.icon-mylists-hospital:before{content:""}.icon-mylists-house2:before{content:""}.icon-mylists-kite:before{content:""}.icon-mylists-ktiria:before{content:""}.icon-mylists-ktirio:before{content:""}.icon-mylists-leaf:before{content:""}.icon-mylists-man:before{content:""}.icon-mylists-mask:before{content:""}.icon-mylists-mountain:before{content:""}.icon-mylists-plane:before{content:""}.icon-mylists-sea:before{content:""}.icon-mylists-star:before{content:""}.icon-mylists-store:before{content:""}.icon-mylists-sun:before{content:""}.icon-mylists-trailer:before{content:""}.icon-mylists-triangle:before{content:""}.icon-mylists-umbrella:before{content:""}.icon-mylists-volleyball:before{content:""}.icon-mylists-winter:before{content:""}.icon-mylists-woman:before{content:""}.icon-mylists-wreath:before{content:""}.icon-newProduct:before{content:""}.icon-nuts:before{content:""}.icon-onePlusOne:before{content:""}.icon-orders:before{content:""}.icon-paper:before{content:""}.icon-parking:before{content:""}.icon-party:before{content:""}.icon-pet:before{content:""}.icon-pin:before{content:""}.icon-pinterest:before{content:""}.icon-play:before{content:""}.icon-plus:before{content:""}.icon-print:before{content:""}.icon-readyMeals:before{content:""}.icon-refresh:before{content:""}.icon-remove:before{content:""}.icon-restaurant:before{content:""}.icon-revertLeft:before{content:""}.icon-revertRight:before{content:""}.icon-safePay:before{content:""}.icon-sausages:before{content:""}.icon-schedule:before{content:""}.icon-search:before,.field__inputSubmit:before{content:""}.icon-searchList:before{content:""}.icon-settings:before{content:""}.icon-shipping:before{content:""}.icon-store:before{content:""}.icon-storeSevice1:before{content:""}.icon-tick:before,.statusMessage--success:before{content:""}.icon-tickFilled:before{content:""}.icon-tickOutline:before{content:""}.icon-time:before{content:""}.icon-trolley:before{content:""}.icon-twitter:before{content:""}.icon-vegetables:before{content:""}.icon-visibility:before,.togglePassword:before{content:""}.icon-visibilityOff:before,.togglePassword.disabled:before,.filters:not(.filters--checked) .togglePassword.filtersClearAll:before,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.togglePassword:before,.filter:not(.filter--checked) .filtersLinks button.togglePassword:before{content:""}.icon-warning:before{content:""}.icon-youtube:before{content:""}.icon-zoomIn:before{content:""}.icon-zoomOut:before{content:""}html{font-size:16px}body{color:#333;font:400 100%/1.4 "cfastystd",Trebuchet MS,sans-serif;line-height:1.3}[class^=icon-],[class*=" icon-"]{display:inline-block;line-height:1;vertical-align:top}input[type=submit]{cursor:pointer}input,textarea,button,select,a{-webkit-tap-highlight-color:transparent}figure{margin:0}img{max-width:100%}h1{font-size:2.875rem;font-weight:700;letter-spacing:-0.03em}h2{font-weight:700}h3{font-size:1.25rem;font-weight:700;letter-spacing:-0.02em;margin:0 0 32px}h4{font-size:1rem;font-weight:700;letter-spacing:-0.02em;margin:0 0 20px}h4:not(:first-child){margin-top:30px}b,strong,.bold{font-weight:bold}.text,p{color:#404040;font-size:1rem;line-height:1.47;margin:0 0 32px}.text a,p a{text-decoration:underline}.text--s{font-size:0.8125rem;margin:0}.text--b{color:#333;font-size:1rem;font-weight:bold}.text--pending{color:orange}a{text-decoration:none;transition:color 250ms ease}ul{list-style:none;margin:20px 0;padding:0}ul.listS{margin:0 0 24px}ul.listS li{font-size:0.8125rem;line-height:1.3}ul.listS li:after{top:4px}ul.listL{margin:24px 0 40px}ul.listL li{font-size:1.25rem;font-weight:500;letter-spacing:-0.03em;line-height:1.5;margin-bottom:20px;padding-left:28px}ul.listL li:after{background-color:#f47920;top:11px;width:8px;height:8px}ul.listCols{-webkit-column-count:5;-moz-column-count:5;column-count:5}ul.listCols li{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;padding-left:0;margin-bottom:20px}ul.listCols li:after{display:none}ul li{line-height:1.2;margin:0 0 3px;padding-left:12px;position:relative}ul li:after{width:5px;height:5px;background:#404040;border-radius:50%;content:"";display:block;left:0;position:absolute;top:6px}ul ol li{padding-left:0}ul ol li:after{content:none}ol{margin:20px 0;padding:0 0 0 20px}.list--orange li:after{background-color:#f47920}.address,.orderSum__col,address{color:#666;font-size:0.875rem;font-style:normal;line-height:1.8}.footer{--footerSpaceTop: 80px;background-color:#404040;margin-top:var(--footerSpaceTop)}.footer__main{display:flex;justify-content:space-between;padding:40px 0 48px}.footer--checkout .footer__main{padding:24px 0}.footer__col{--footerColSpace: 40px}.footer__title{color:#4d4d4d;font-size:0.9375rem;font-weight:600;margin:0 0 16px}.footer__list{margin:0}.footer__list li{padding-left:0;margin:0}.footer__list li:after{display:none}.footer__listItem{color:#8c8c8c;font-size:0.9375rem;line-height:1.2;margin:0}.footer__listLink{display:inline-block;padding:8px 0;vertical-align:top}.footer__apps{margin:24px 0 0}.footer__apps p{color:#8c8c8c;font-size:0.9375rem;margin:0 0 8px}.footer__apps figure{width:100%}.footer__apps figure picture{display:block;padding-top:calc(42 / 140 * 100%);position:relative;width:100%}.footer__apps figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.footer__appsInner{display:flex;flex-wrap:wrap}.footer__appsLink{margin-bottom:8px;width:140px}.footer__appsLink:not(:last-child){margin-right:8px}.footer__btm{align-items:center;border-top:1px solid rgba(255,255,255,.2);display:flex;justify-content:space-between;padding:16px 0}.footer__copy{color:#fff;font-weight:400;line-height:1;margin:0}.footer__atcom{line-height:1;padding:8px 0}.footer__atcom img{display:inline-block;vertical-align:top;width:160px;height:13px}.footer__text:last-child{margin-bottom:0}.wrapper{margin:0 auto;padding:0 var(--gridSpace);width:100%;max-width:calc(var(--wrapper) + var(--gridSpace)*2)}.wrapper--xxs{--wrapper: var(--wrapperXXS)}.wrapper--xs{--wrapper: var(--wrapperXS)}.wrapper--s{--wrapper: var(--wrapperS)}.wrapper--l{--wrapper: var(--wrapperL)}.wrapper--full{--wrapper: var(--wrapperFull)}.wrapper .wrapper{padding:0}.col{max-width:100%;flex-grow:1;flex-basis:0}.col-1{flex-basis:8.3333333333%;max-width:8.3333333333%}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.col-3{flex-basis:25%;max-width:25%}.col-4{flex-basis:33.3333333333%;max-width:33.3333333333%}.col-5{flex-basis:41.6666666667%;max-width:41.6666666667%}.col-6{flex-basis:50%;max-width:50%}.col-7{flex-basis:58.3333333333%;max-width:58.3333333333%}.col-8{flex-basis:66.6666666667%;max-width:66.6666666667%}.col-9{flex-basis:75%;max-width:75%}.col-10{flex-basis:83.3333333333%;max-width:83.3333333333%}.col-11{flex-basis:91.6666666667%;max-width:91.6666666667%}.col-12{flex-basis:100%;max-width:100%}.header{background-color:#fff;left:0;position:-webkit-sticky;position:sticky;top:var(--top);z-index:9;height:var(--headerHeight)}.header__top{padding:16px 0}.header__leftBlock{align-items:center;display:inline-flex}.header__topInner{align-items:center;display:flex;justify-content:space-between}.header--checkout .header__topInner{position:relative}.header__logo{flex-shrink:0;margin-right:auto;width:296px;height:38px}.header__logo h1{font-size:0;margin:0}.header__logo img{width:100%}.header--checkout .header__logo{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.header__tools{align-items:center;display:flex}.header__tool{margin-left:20px}.mainContainer{display:grid;grid-template-areas:"header" "main" "footer";grid-template-columns:minmax(0, 1fr);grid-template-rows:auto 1fr auto;min-height:100vh}.header{grid-area:header}.main{grid-area:main}.footer{grid-area:footer}.mainLayout{--mainLayoutSpace: 32px}.mainLayout__content{padding:0 var(--mainLayoutSpace)}.mainLayout .wrapper{--gridSpace: 0px}.acc{border-bottom:1px solid #c2c2c2}.acc--border{border:1px solid #fff;border-radius:4px}.acc--border .acc__header{padding:16px}.acc--border .acc__content{padding:8px 16px 16px}.acc--box{background-color:#f5f5f5}.acc--box .acc__header{justify-content:space-between;padding:24px}.acc--box .acc__content{padding:8px 24px 24px}.acc--stripe{border:none;margin:24px 0}.acc--stripe .acc__header{background-color:#f2efe8;border-radius:8px;font-size:1.25rem;margin-bottom:24px;padding:16px}.acc--stripe .acc__header:before{font-size:1.5rem;margin-right:8px}.acc--disabled .acc__header{cursor:auto;pointer-events:none}.acc--disabled .acc__headerInnerTitle{pointer-events:all}.acc--disabled .acc__icon{display:none}.acc--disabled .acc__content{display:none}.acc--beige{border:none;margin-bottom:30px}.acc--beige .acc__header{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33;background-color:#f2efe8;border-radius:8px;padding:16px}.acc--beige .acc__content{padding:10px 30px}.acc--beige .acc__content .listCols{margin:0}.acc--colorStripe{border:none;margin-bottom:20px}.acc--colorStripe .acc__header{background-color:#fef8c6;border-radius:8px;color:#000;font-size:0.8125rem;font-weight:500;padding:12px}.acc--colorStripe .acc__icon{font-size:1.5rem}.acc--colorStripe .acc__content{padding:0}.acc__title{margin:0}.acc__content{padding:0 0 20px}.acc__content>.form:last-child{margin-bottom:0}.acc__content p:last-child{margin:0}.acc__content--md{max-width:822px}.acc__error{flex-basis:100%;flex-grow:1}.acc__error p{font-size:0.75rem;font-weight:400;letter-spacing:initial;line-height:1.33;color:#d91a32;margin:0}.acc__header{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33;align-items:center;color:#333;cursor:pointer;display:flex;justify-content:space-between;padding:24px 0}.acc--inline .acc__header{font-size:0.875rem}.acc__header>*{pointer-events:none}.acc__header--md{padding:16px 0}.acc__header--md .acc__title{font-size:1rem;font-weight:500;line-height:1.375}.acc__header--lg{padding:16px 0}.acc__header--lg .acc__title{font-size:1.25rem;line-height:1.5}.acc__headerInfo{font-weight:400;margin-left:4px}.acc__headerInner{display:flex;flex-grow:1}.acc__headerInnerTitle{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37;align-items:center;color:#333;display:flex;position:relative}.acc__headerInnerTitle [class^=icon-],.acc__headerInnerTitle [class*=" icon-"]{color:#838385;font-size:1.5rem;margin-right:10px}.acc__headerInnerTitle--info{flex-wrap:wrap;font-weight:400;margin-left:20px}.acc__headerInnerTitle--info .link,.acc__headerInnerTitle--info .text a,.text .acc__headerInnerTitle--info a,.acc__headerInnerTitle--info p a,p .acc__headerInnerTitle--info a{font-weight:500}.open .acc__headerInnerTitle--info{display:none}.acc__headerInnerTitle--sum{justify-content:flex-end;flex-grow:1;flex-shrink:0;font-weight:400;margin-left:auto;padding-left:20px;text-align:right}.open .acc__headerInnerTitle--sum{display:none}.acc__headerInnerTitle--large{font-size:1.375rem;font-weight:700;letter-spacing:-0.03em;line-height:1.36}.acc__icon{color:#838385;font-size:2rem;padding:0;-webkit-transform-origin:center;transform-origin:center;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out}.acc__icon--sml{font-size:1.5rem}.acc__icon.icon-edit{font-size:1.5rem}.acc__title+.acc__icon{margin-left:32px}.acc:not(.open) .acc__content{display:none}.acc.open>.acc__header .acc__icon:not(.icon-edit){-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.acc.open>.acc__header .acc__icon.icon-edit:before{content:""}.acc-section{margin-bottom:56px}.acc-section__title{border-bottom:1px solid #c2c2c2;font-size:1.375rem;font-weight:700;margin-bottom:0;padding-bottom:12px}.acc-section__title--pdlg{padding-bottom:40px}.article{border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.08);overflow:hidden;position:relative}.article__img figure{width:100%}.article__img figure picture{display:block;padding-top:calc(184 / 296 * 100%);position:relative;width:100%}.article__img figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.article__info{padding:20px}.article__date{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;color:#838385}.article__dateWrap{display:inline-block;font-size:0;margin-bottom:13px}.article__dateWrap span:not(.pill){font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28}.article__dateWrap .pill{margin-left:12px;position:relative;-webkit-transform:translateY(-2px);transform:translateY(-2px)}.article__title{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33;color:#333;margin-bottom:8px}.article__text{font-size:1rem;font-weight:400;letter-spacing:-0.02em;line-height:1.5;color:#404040;margin-bottom:0;--maxLines: 4;line-clamp:var(--maxLines);display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:var(--maxLines);-webkit-box-orient:vertical}.article__text p:last-child{margin-bottom:0}.article__link{color:inherit}.article__link:before{content:""}.article--wide .article__img figure{width:100%}.article--wide .article__img figure picture{display:block;padding-top:calc(314 / 1258 * 100%);position:relative;width:100%}.article--wide .article__img figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.article--wide .article__date{margin-bottom:4px}.article--wide .article__title{font-size:1.625rem;font-weight:500;letter-spacing:-0.02em;line-height:1.38;margin-bottom:16px}.article--wide .article__info{padding:32px}.articleFeatured{margin-bottom:32px}.articleList{--productSpaceH: 20px;--productSpaceV: 20px;display:flex;justify-content:center;flex-wrap:wrap;gap:var(--productSpaceV) var(--productSpaceH)}.articleList .article{width:calc(25% - 3*var(--productSpaceH)/4)}.articleList .article--horizontal{width:100%}.articleList .swiper-slide .article{width:100%}.articleList--column{--productSpaceV: 32px;margin-bottom:32px}.articleList--contests{margin-bottom:60px;justify-content:flex-start}.articleDetails__date{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37}.articleDetails__dateWrap{align-items:center;color:#838385;display:inline-flex;margin-bottom:4px}.articleDetails__dateWrap span{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;margin-right:4px}.articleDetails__title{font-size:1.875rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2;margin:0;max-width:746px}.articleDetails__title:after{content:"";display:block;background-color:#f47920;width:54px;height:8px;margin:16px auto 16px 0}.autocomplete__googlelogo{margin:12px 18px 0 auto;width:93px;height:13px;text-align:right;display:block;background-image:url(../media/powered-by-google-on-white3.png);background-position:right;background-repeat:no-repeat;background-size:contain}.bnr{background-color:#404040;color:#fff;padding:22px 0}.bnr__inner{position:relative;display:flex;align-items:center}.bnr__icon{color:inherit;font-size:1.5rem}.bnr__close{font-size:1.5rem}.bnr__text{min-height:24px;display:flex;align-items:center;margin:0 16px 0 18px;flex-grow:1}.bnr p{font-size:0.8125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.15;color:inherit}.bnr p:last-of-type{margin-bottom:0}.breadcrumb__list{display:flex;list-style:none;margin:0;padding:0}.breadcrumb__item{color:#333;font-size:0.875rem;font-weight:500;letter-spacing:-0.02em;line-height:1.143;margin:2px 0;padding:0;position:relative}.breadcrumb__item--disabled{color:#a6a6a6;font-weight:400}.breadcrumb__item:after{display:none}.breadcrumb__itemLink{color:var(--buttonColor);font-weight:400;text-decoration:underline}.breadcrumb__itemLink:active{color:var(--buttonColorActive)}button{-webkit-appearance:none;-moz-appearance:none;background:transparent;border:none;margin:0}.button{align-items:center;background-color:var(--buttonColor);border:none;border-radius:8px;color:#fff;display:inline-flex;font-family:"cfastystd",Trebuchet MS,sans-serif;font-size:0.9375rem;font-weight:500;justify-content:center;letter-spacing:-0.03em;padding:8px 24px;transition:color 350ms ease,background-color 350ms ease;min-height:48px}.button .icon{font-size:1.5rem;margin-right:8px}.button:not(.disabled){cursor:pointer}.button:not(.disabled):active{background-color:var(--buttonColorActive)}.button.disabled,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.button,.filter:not(.filter--checked) .filtersLinks button.button,.filters:not(.filters--checked) .button.filtersClearAll{background-color:#ececec;color:#a6a6a6}.button--s{font-size:0.8125rem;letter-spacing:-0.02em;min-height:34px}.button--s .icon{margin:-3px 4px -3px 0}.button--border{background-color:transparent;border:1px solid var(--buttonColor);color:var(--buttonColor);transition:color 350ms ease,border-color 350ms ease}.button--border:not(.disabled):active{background:transparent;border-color:var(--buttonColorActive);color:var(--buttonColorActive)}.button--border.disabled,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.button--border,.filter:not(.filter--checked) .filtersLinks button.button--border,.filters:not(.filters--checked) .button--border.filtersClearAll{background:transparent;border-color:#d8d8d8;color:#a6a6a6}.button--full{width:100%}.button--alt{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;border-color:#c2c2c2;color:#333;display:flex;flex:1 1 auto;justify-content:space-between;padding:16px;transition:background-color 250ms ease-out}.button--alt:not(.disabled):active{background:#f2efe8;border-color:#c2c2c2;color:inherit}.button--alt:not(.disabled):active .icon{color:#f47920}.button--alt .icon{color:#f47920}.button--alt .icon:last-child{margin:0;margin-left:0}.iconButton,.selectedFilters__remove{color:var(--buttonColor);font-size:2rem;line-height:1;padding:0}.iconButton--dark{--buttonColor: #595959;--buttonColorHover: #838385}.iconButton--border{border:1px solid var(--buttonColor);border-radius:50%;font-size:1.5rem;padding:4px}.iconButton--border:not(.disabled):active{border-color:var(--buttonColorActive)}.iconButton--border.iconButton--s,.iconButton--border.selectedFilters__remove{padding:0}.iconButton--opacityBg{background:rgba(255,255,255,.6)}.iconButton--square{border-radius:4px}.iconButton--shadow{background-color:#fff;box-shadow:0px 6px 16px rgba(51,51,51,.15);border-radius:4px}.iconButton--xs{font-size:1rem;padding:8px}.iconButton--s,.selectedFilters__remove{font-size:1.5rem}.iconButton--b{font-size:1.75rem}.iconButton--xb{font-size:1.625rem;padding:8px}.iconButton:not(.disabled),.selectedFilters__remove:not(.disabled){cursor:pointer}.iconButton:not(.disabled):active,.selectedFilters__remove:not(.disabled):active{color:var(--buttonColorActive)}.link,.text a,p a{align-items:center;color:var(--buttonColor);display:inline-flex;font-family:"cfastystd",Trebuchet MS,sans-serif;font-size:0.9375rem;font-weight:500;letter-spacing:-0.03em;line-height:1;padding:0;transition:color 250ms ease}.link .icon,.text a .icon,p a .icon{font-size:1.5rem}.link .icon:first-child,.text a .icon:first-child,p a .icon:first-child{margin-right:4px}.link .icon:last-child,.text a .icon:last-child,p a .icon:last-child{margin-left:4px}.link:not(.disabled),.text a:not(.disabled),p a:not(.disabled){cursor:pointer}.link:not(.disabled):active,.text a:not(.disabled):active,p a:not(.disabled):active{color:var(--buttonColorActive)}.link.disabled,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.link,.filter:not(.filter--checked) .filtersLinks button.link,.filters:not(.filters--checked) .link.filtersClearAll,.text a.disabled,.text .filters:not(.filters--checked) a.filtersClearAll,.filters:not(.filters--checked) .text a.filtersClearAll,p a.disabled,p .filters:not(.filters--checked) a.filtersClearAll,.filters:not(.filters--checked) p a.filtersClearAll{color:#a6a6a6;cursor:default}.link--s,.minibasket .listTools .link,.minibasket .listTools .text a,.text .minibasket .listTools a,.minibasket .listTools p a,p .minibasket .listTools a{font-size:0.8125rem;letter-spacing:-0.02em}.link--m{font-size:0.875rem}.link--m .icon{font-size:1.25rem}.link--b{font-size:1rem;letter-spacing:-0.02em}.link--xb{font-size:1.375rem}.link--xb .icon{font-size:2rem}.link--underline{text-decoration:underline}.link--orangeIcon .icon{color:#f47920}.link--orange .icon{color:inherit}.loginBtn{align-items:center;color:#333;display:flex;position:relative}.loginBtn .iconButton,.loginBtn .selectedFilters__remove{margin-left:8px}.loginBtn .iconButton:after,.loginBtn .selectedFilters__remove:after{content:""}.cardRow{display:flex;align-items:center;position:relative;min-height:66px}.cardRow__logo{flex-shrink:0;font-size:0;margin-right:12px;width:36px}.cardRow__logo [class^=icon-],.cardRow__logo [class*=" icon-"]{font-size:2rem;color:#838385}.cardRow__logo img{width:100%;-o-object-fit:contain;object-fit:contain}.cardRow__info{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;display:flex;flex-flow:column;align-items:flex-start}.cardRow__status{font-size:0.8125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.15;color:#74b11f;display:none;margin-bottom:2px}.cardRow__msg{color:#d91a32;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);max-width:130px}.cardRow__number{color:#333}.cardRow__expiration{color:#a6a6a6}.cardRow__add{font-size:0.9375rem;font-weight:500;letter-spacing:-0.03em;line-height:1.46;color:#333}.cardRow.disabled,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.cardRow,.filter:not(.filter--checked) .filtersLinks button.cardRow,.filters:not(.filters--checked) .cardRow.filtersClearAll{padding-right:130px}.cardRow.disabled .cardRow__logo,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.cardRow .cardRow__logo,.filter:not(.filter--checked) .filtersLinks button.cardRow .cardRow__logo,.filters:not(.filters--checked) .cardRow.filtersClearAll .cardRow__logo{opacity:.5}.cardRow.disabled .cardRow__number,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.cardRow .cardRow__number,.filter:not(.filter--checked) .filtersLinks button.cardRow .cardRow__number,.filters:not(.filters--checked) .cardRow.filtersClearAll .cardRow__number,.cardRow.disabled .cardRow__expiration,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.cardRow .cardRow__expiration,.filter:not(.filter--checked) .filtersLinks button.cardRow .cardRow__expiration,.filters:not(.filters--checked) .cardRow.filtersClearAll .cardRow__expiration{color:#a6a6a6}.catalogueList{--productSpaceH: 32px;--productSpaceV: 24px;display:flex;flex-wrap:wrap;gap:var(--productSpaceV) var(--productSpaceH)}.catalogueList .catalogue{width:calc(50% - 1*var(--productSpaceH)/2)}.catalogueList .catalogue--wide{width:100%}.catalogue{border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.08);overflow:hidden;position:relative}.catalogue__img figure{width:100%}.catalogue__img figure picture{display:block;padding-top:calc(463 / 617 * 100%);position:relative;width:100%}.catalogue__img figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.catalogue__info{padding:20px;text-align:center}.catalogue__title{font-size:1.25rem;font-weight:500;letter-spacing:-0.03em;line-height:1.5;color:#333;margin-bottom:4px}.catalogue__text{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;color:#333;margin-bottom:0}.catalogue__text p:last-child{margin-bottom:0}.catalogue__link{color:inherit}.catalogue__link:before{content:""}.icon-bakery:before{color:#a98848}.icon-vegetables:before{color:#8dc63f}.icon-fish:before{color:#91d1e5}.icon-freshMeat:before{color:#e59191}.icon-milkBeverages:before{color:#d6d0c6}.icon-cream:before{color:#f0b9c3}.icon-cheese:before{color:#efd57b}.icon-eggs:before{color:#cec0a8}.icon-sausages:before{color:#cec0a8}.icon-appetizers:before{color:#cec0a8}.icon-readyMeals:before{color:#8ebf86}.icon-frozen:before{color:#a8ccce}.icon-alcohol:before{color:#7c766b}.icon-beverages:before{color:#91d1e5}.icon-nuts:before{color:#bda57b}.icon-bisquite:before{color:#d2917c}.icon-breakfast:before{color:#a98848}.icon-babyFoods:before{color:#cdce89}.icon-minimarketFood:before{color:#cec0a8}.icon-pet:before{color:#6f6554}.icon-party:before{color:#e995b3}.icon-paper:before{color:#d6d5d5}.icon-cosmetics:before{color:#e589dc}.icon-cleaning:before{color:#a8ccce}.icon-house:before{color:#b1ddbd}.icon-house2:before{color:#337933}.icon-babytoy:before{color:#d378a9}.icon-bio:before{color:#25a131}.icon-facemask:before{color:#6bb3c2}.icon-newProduct:before{color:#ea0c00}.icon-onePlusOne:before{color:#333}.icon-exclusive:before{background:url(../media/exclusive.svg) no-repeat scroll center;background-size:contain;content:""}.icon-aplesPrakseis:before{background:url(../media/badges/aplesprakseislogo.svg) no-repeat scroll center;background-size:contain;content:""}.icon-fav:before{color:#d91a32}.icon-addCircle{color:#f47920}.icon-mylists-xmas:before{background-image:url(../media/icon-mylists-xmas.svg)}.icon-mylists-tennis:before{background-image:url(../media/icon-mylists-tennis.svg)}.icon-mylists-xmas:before,.icon-mylists-tennis:before{background-position:center;background-repeat:no-repeat;background-size:100%;content:""}.icon-mylists-woman:before{color:#da5a71}.icon-mylists-man:before{color:#435b7e}.icon-mylists-boy:before{color:#bc844f}.icon-mylists-girl:before{color:#d218a4}.icon-mylists-grandma:before{color:#ae1829}.icon-mylists-grandpa:before{color:#6c1a26}.icon-mylists-baby:before{color:#f5a3b1}.icon-mylists-gift:before{color:#8dc63f}.icon-mylists-football:before{color:#333}.icon-mylists-winter:before{color:#a6a6a6}.icon-mylists-champagne:before{color:#527a2a}.icon-mylists-mask:before{color:#cc1836}.icon-mylists-plane:before{color:#1e2843}.icon-mylists-sea:before{color:#4e8ac1}.icon-mylists-wreath:before{color:#427837}.icon-mylists-earth:before{color:#3a8184}.icon-mylists-balloon:before{color:#4f98cd}.icon-mylists-circle:before{color:#ff641e}.icon-mylists-barakia:before{color:#ffa222}.icon-mylists-basket:before{color:#731a25}.icon-mylists-basketball:before{color:#d43d11}.icon-mylists-bird:before{color:#f5ad47}.icon-mylists-birthdaycake:before{color:#ff6aeb}.icon-mylists-birthdayHat:before{color:#ffa222}.icon-mylists-block:before{color:#e75a70}.icon-mylists-boat:before{color:#1d8185}.icon-mylists-camp:before{color:#42b800}.icon-mylists-cat:before{color:#f7671d}.icon-mylists-championCup:before{color:#c39649}.icon-mylists-cloud:before{color:#3d5a80}.icon-mylists-cocktail:before{color:#63e2a8}.icon-mylists-cupcake:before{color:#ae7e5c}.icon-mylists-diamond:before{color:#ffa222}.icon-mylists-dinner:before{color:#f7411d}.icon-mylists-dog:before{color:#c38649}.icon-mylists-easterEgg:before{color:#b9b965}.icon-mylists-glasses:before{color:#bcaf49}.icon-mylists-handHeart:before{color:#da1a32}.icon-mylists-hospital:before{color:#3d5a80}.icon-mylists-home:before{color:#333}.icon-mylists-house2:before{color:#337933}.icon-mylists-kite:before{color:#e25b00}.icon-mylists-ktiria:before{color:#9a00b2}.icon-mylists-ktirio:before{color:#d4ab79}.icon-mylists-leaf:before{color:#d63900}.icon-mylists-mountain:before{color:#8e4825}.icon-mylists-star:before{color:#f93}.icon-mylists-store:before{color:#ced475}.icon-mylists-sun:before{color:#ffac30}.icon-mylists-trailer:before{color:#f7411d}.icon-mylists-triangle:before{color:#5f9809}.icon-mylists-volleyball:before{color:#ffa222}.icon-mylists-umbrella:before{color:#6999ac}.collectionBox{background:url(../media/wood.png) repeat scroll center;border-radius:8px;overflow:hidden;position:relative}.collectionBox figure{width:100%}.collectionBox figure picture{display:block;padding-top:calc(205 / 300 * 100%);position:relative;width:100%}.collectionBox figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.collectionBox__title{color:#fff;font-size:1.375rem;font-weight:700;left:0;letter-spacing:-0.03em;padding:0 16px;position:absolute;text-align:center;top:16px;width:100%}.content__zoomimg{max-width:317px;width:100%;border:solid 1px #c2c2c2;cursor:pointer;position:relative;margin:23px 0}.content__zoomimg picture{display:block;padding-top:calc(181 / 317 * 100%);position:relative;width:100%}.content__zoomimg img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.content__zoomimg:before{content:""}.content__zoomimg:before{width:56px;height:56px;border-radius:50%;position:absolute;top:50%;left:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:2rem;background:rgba(51,51,51,.6);z-index:2;margin:calc(-1 * 56px /2) 0 0 calc(-1 * 56px /2)}.content__zoomimg img{-o-object-fit:cover;object-fit:cover}.contestBnr{align-items:flex-start;color:#333;display:flex;flex-flow:column;justify-content:center;padding:40px 24px;position:relative;padding:64px;min-height:232px}.contestBnr:after{content:"";background-color:#f7f5f0;border-radius:8px;z-index:-2}.contestBnr h3{font-size:1.5rem;font-weight:700;letter-spacing:-0.02em;line-height:1.16;margin-bottom:10px}.contestBnr p:last-of-type{margin-bottom:0}.contestBnr__illustration{bottom:0;position:absolute;right:0;top:0;z-index:-1}.contestBnr__illustration--mob{top:auto}.deliveryFlowNav{position:absolute;top:24px}.deliveryFlow .modal__wrap{padding-top:104px}.deliveryTypes{display:none;margin-inline:auto}.deliveryTypes.typeinformation{padding:0;max-width:760px}.deliveryTypes .field{margin:0;width:100%}.deliveryTypes--active{display:block}.radiobuttons--deliveryType{gap:24px;display:flex;justify-content:center;margin:32px auto 56px}.radiobuttons--deliveryType .radiobutton{width:50%}.radiobutton--deliveryType{display:inline-flex;flex-direction:column;justify-content:space-between}.field .radiobutton--deliveryType.radiobutton:not(:first-child){margin-top:0}.field .radiobutton--deliveryType.radiobutton:not(:last-child){margin-bottom:0}.radiobutton--deliveryType .radiobutton__label{font-size:1.25rem;font-weight:500;text-align:center}.radiobutton--deliveryType .radiobutton__label b{font-weight:500}.radiobutton--deliveryType .radiobutton__text{display:block;line-height:1.5}.radiobutton--deliveryType .radiobutton__border{border-color:#f2efe8;border-width:2px}.radiobutton--deliveryType .radiobutton__border:after{background:url(../media/tickFilled.svg) no-repeat scroll center;background-size:contain;content:"";opacity:0;position:absolute;right:12px;top:12px;transition:opacity 250ms ease-in-out;width:40px;height:40px}.radiobutton--deliveryType .radiobutton__input:not([type=hidden]){cursor:pointer;width:100%;height:100%}.radiobutton--deliveryType .radiobutton__input:not([type=hidden]):checked~.radiobutton__border{border-color:#74b11f}.radiobutton--deliveryType .radiobutton__input:not([type=hidden]):checked~.radiobutton__border:after{opacity:1}.radiobutton--deliveryType .icon{background-position:center;background-repeat:no-repeat;background-size:auto 100%;display:block;margin:16px auto;height:64px}.radiobutton--deliveryType .icon.shipping{background-image:url(../media/delivery.svg)}.radiobutton--deliveryType .icon.store{background-image:url(../media/pickup.svg)}.deliveryTypeInfo ul{margin:0 20px}.deliveryTypeInfo ul li:last-child{margin:0}.deliveryTypeInfo__sum{align-items:center;display:flex;flex-direction:column;text-align:center}.deliveryTypeInfo__sum p{color:#333;font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.285;margin-bottom:8px}.deliveryTypeInfo__link{color:var(--buttonColor);font-size:0.875rem;position:relative;z-index:2;text-decoration:underline}.deliveryTypeInfo__link:not(:last-child){margin-bottom:4px}.deliveryTypeInfo__link:active{color:var(--buttonColorActive)}.emptyContent{display:grid;grid-template-columns:88px 1fr;grid-template-areas:"icon text" "icon buttons";grid-column-gap:24px;grid-row-gap:16px;margin:40px 0}.minibasket .emptyContent{grid-template-areas:"icon text" "buttons buttons"}.emptyContent:not(:last-child){border-bottom:1px solid #fff}.emptyContent__img{grid-area:icon;color:#e6e6e6;font-size:5.5rem;line-height:1}.emptyContent__text{grid-area:text}.emptyContent__text p{margin-bottom:8px}.emptyContent__btns{display:flex;grid-area:buttons}.emptyContent__btns .button{margin-top:8px;margin-bottom:8px}.emptyContent__btns .button:not(:last-child){margin-right:8px}.emptyContent__btns .button:not(:first-child){margin-left:8px}.expandText__main{overflow:hidden;position:relative;max-height:96px}.expandText__main:after{background:linear-gradient(to top, white 0, rgba(255, 255, 255, 0) 100%);bottom:0;content:"";pointer-events:none;position:absolute;transition:opacity 250ms ease-in-out;width:100%;height:64px}.expandText:not(.open) .expandText__buttonTextLess{display:none}.expandText.open .expandText__main{max-height:inherit}.expandText.open .expandText__main:after{opacity:0}.expandText.open .expandText__buttonTextMore{display:none}.filters--checked .filters__mobButton:after{background-color:#f47920;border-radius:50%;color:#fff;content:attr(data-activefilters);display:inline-block;font-size:0.8125rem;font-weight:bold;line-height:23px;text-align:center;width:22px;height:22px}.filters{--mobFiltersTop: 0;--mobFilterTopBar: 56px;--mobFilterTopBarSpace: 24px;--filtersSpace: 16px;--filterItemSpaceBtm: 16px;--mobFilterBottomBar: 80px;align-items:flex-start;background-color:#f2efe8;border-radius:3px;display:flex;margin-bottom:24px;padding:12px 16px}.filters__titleWrap{position:relative}.filters__title{font-size:0.875rem;font-weight:500;margin:0}.filters__title:not(:first-child){margin:0}.filters__mobButtonText{font-size:0.9375rem;font-weight:500;letter-spacing:-0.03em;line-height:1.46;color:#333;margin-left:8px}.filters .selectInline{margin-left:auto}.filters--listResults .filters__mobButton:after{position:relative;right:-6px;top:-1px}.filter{--scrollListHeight: 304px}.filter__title{cursor:pointer;font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;margin:0;padding:6px 24px 6px 0;position:relative;white-space:nowrap;z-index:1}.filter__titleIcon{color:#838385;font-size:1.25rem;position:absolute;pointer-events:none;right:0;top:0}.filter__titleIcon:before{content:""}.filter__titleIcon:before{transition:-webkit-transform 200ms ease-out;transition:transform 200ms ease-out;transition:transform 200ms ease-out, -webkit-transform 200ms ease-out;-webkit-transform-origin:center;transform-origin:center;vertical-align:middle}.filter:not(.filter--closed) .filter__titleIcon:before{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.filter--closed .filter__content{display:none}.filter__list.scrollbarShadow .filter__item:last-child{margin-bottom:0}.filter__list--bottom:after{opacity:0}.filter__list--moreList{--searchHeight: 80px}.filter__list--moreList .filter__listScroll{max-height:var(--scrollListHeight)}.initialized~.filter__showAll{visibility:hidden}.filter__item:not(:last-child){margin-bottom:var(--filterItemSpaceBtm)}.filter__no{margin-left:2px}.filter__more.active .filter__moreText--more{display:none}.filter__more:not(.active) .filter__moreText--less{display:none}.filter__letter{font-weight:bold;margin-bottom:8px}.filters:not(.filters--checked) .filtersClearAll{pointer-events:none}.filtersLinks{align-items:center;display:flex;flex-direction:column}.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button,.filter:not(.filter--checked) .filtersLinks button{pointer-events:none}.categoriesList{margin:0;padding-left:16px}.categoriesList li{padding-left:0;margin:0}.categoriesList li:after{display:none}.categoriesList .categoriesList{margin-top:12px;padding-right:12px}.categoriesList .acc__header{justify-content:space-between}.categoriesList__item:last-child{margin-bottom:0}.categoriesList__item--level1,.categoriesList__item--level0{font-weight:bold}.categoriesList__item--level1{font-size:0.875rem}.categoriesList__item--level2{font-size:0.8125rem;font-weight:normal}.categoriesList__item a:not(.link){color:inherit}.categoriesList__item a.active{color:#333}.categoriesList__item>a,.categoriesList__item>.acc__header{color:gray;transition:color 250ms ease}.selectedFilters{margin-bottom:24px;margin-top:-16px}.selectedFilters:not(.active){display:none}.selectedFilters__list{margin:0}.selectedFilters__list li{padding-left:0;margin:0}.selectedFilters__list li:after{display:none}.selectedFilters__list li{padding-left:8px}.selectedFilters__item{align-items:center;color:#595959;display:inline-flex;font-size:0.875rem;line-height:1;margin:0;padding:8px}.selectedFilters__remove{margin:-4px -4px -4px 4px}.selectedFilters__remove:before{content:""}:root{--inputPlaceholderColor: #A6A6A6;--labelSpace: 32px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input:-moz-placeholder-shown{text-overflow:ellipsis}input:-ms-input-placeholder{text-overflow:ellipsis}input:placeholder-shown{text-overflow:ellipsis}::-webkit-input-placeholder{color:var(--inputPlaceholderColor);line-height:1.3}::-moz-placeholder{color:var(--inputPlaceholderColor);line-height:1.3}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #fff inset !important}.radiobutton--onlyColor.disabled .radiobutton__icon,.filters:not(.filters--checked) .radiobutton--onlyColor.filtersClearAll .radiobutton__icon,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton--onlyColor .radiobutton__icon,.filter:not(.filter--checked) .filtersLinks button.radiobutton--onlyColor .radiobutton__icon,.radiobutton--onlyIcon.disabled .radiobutton__icon,.filters:not(.filters--checked) .radiobutton--onlyIcon.filtersClearAll .radiobutton__icon,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton--onlyIcon .radiobutton__icon,.filter:not(.filter--checked) .filtersLinks button.radiobutton--onlyIcon .radiobutton__icon,.checkbox.disabled,.filters:not(.filters--checked) .checkbox.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.checkbox,.filter:not(.filter--checked) .filtersLinks button.checkbox,.radiobutton.disabled,.filters:not(.filters--checked) .radiobutton.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton,.filter:not(.filter--checked) .filtersLinks button.radiobutton{opacity:.5}.checkbox,.radiobutton{position:relative}.checkbox.disabled label,.filters:not(.filters--checked) .checkbox.filtersClearAll label,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.checkbox label,.filter:not(.filter--checked) .filtersLinks button.checkbox label,.radiobutton.disabled label,.filters:not(.filters--checked) .radiobutton.filtersClearAll label,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton label,.filter:not(.filter--checked) .filtersLinks button.radiobutton label{cursor:default}.checkbox__input:not([type=hidden]),.radiobutton__input:not([type=hidden]){left:0;opacity:0;position:absolute;top:0;width:0;height:0}.checkbox__label,.radiobutton__label{color:#333;cursor:pointer;display:block;font-size:0.9375rem;font-weight:400;line-height:1.6;padding:0 0 0 var(--labelSpace);position:relative;z-index:2}.checkbox__label~.field-validation-error,.radiobutton__label~.field-validation-error{margin-top:4px;padding-left:var(--labelSpace)}.checkbox__icon,.radiobutton__icon{background-color:#fff;border:1px solid #838385;left:0;line-height:22px;position:absolute;text-align:center;top:0;width:24px;height:24px}.checkbox__checkedText,.radiobutton__checkedText{display:none;margin:8px 0 0}.checkbox__text,.radiobutton__text{position:relative;transition:color 250ms ease;z-index:1}.field .checkbox:not(:first-child),.field .radiobutton:not(:first-child){margin-top:var(--checkboxRadioSpace)}.field .checkbox:not(:last-child),.field .radiobutton:not(:last-child){margin-bottom:var(--checkboxRadioSpace)}.checkbox--button.disabled:after,.filters:not(.filters--checked) .checkbox--button.filtersClearAll:after,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.checkbox--button:after,.filter:not(.filter--checked) .filtersLinks button.checkbox--button:after,.radiobutton--button.disabled:after,.filters:not(.filters--checked) .radiobutton--button.filtersClearAll:after,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton--button:after,.filter:not(.filter--checked) .filtersLinks button.radiobutton--button:after{background-color:#b3b3b3;content:"";left:0;position:absolute;-webkit-transform:rotate(-38deg);transform:rotate(-38deg);-webkit-transform-origin:center;transform-origin:center;top:50%;width:100%;height:1px}.radiobutton--box{--radioBorderSpace: 20px}.radiobutton--box.disabled .radiobutton__label,.filters:not(.filters--checked) .radiobutton--box.filtersClearAll .radiobutton__label,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton--box .radiobutton__label,.filter:not(.filter--checked) .filtersLinks button.radiobutton--box .radiobutton__label{pointer-events:none}.radiobutton--box .radiobutton__border{transition:background-color 250ms ease-out;z-index:-1}.radiobutton--box .radiobutton__icon{left:var(--radioBorderSpace);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:background-color 250ms ease-out}.radiobutton--box .radiobutton__icon:after{content:""}.radiobutton--box .radiobutton__icon:before{display:none}.radiobutton--box .radiobutton__icon:after{opacity:0;position:absolute;top:50%;color:#fff;font-size:0.875rem;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.radiobutton--box .radiobutton__action{position:absolute;right:var(--radioBorderSpace);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:3;font-size:1.5rem}.radiobutton--box .radiobutton__action+.radiobutton__action{right:calc(var(--radioBorderSpace) + 24px + 8px)}.radiobutton--box .radiobutton__label{display:flex;flex-flow:column;justify-content:center;min-height:84px;padding-top:var(--radioBorderSpace);padding-right:calc(var(--radioBorderSpace) + 24px * 2 + 8px + 10px);padding-bottom:var(--radioBorderSpace);padding-left:calc(var(--radioBorderSpace) + var(--labelSpace) + 4px)}.radiobutton--box .radiobutton__labelTag{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;margin-bottom:2px;padding-right:32px}.radiobutton--box .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon{background-color:#74b11f;border-color:#74b11f}.radiobutton--box .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon:after{opacity:1}.radiobutton--box .radiobutton__input:not([type=hidden]):checked~.radiobutton__border{border-color:#74b11f;background-color:#f2efe8}.radiobutton--box .radiobutton__input:not([type=hidden]):checked~.radiobutton__label{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37}.radiobutton--box .radiobutton__input:not([type=hidden]):checked~.radiobutton__label .radiobutton__labelTag{display:inline-block}.radiobutton--box .radiobutton__input:not([type=hidden]):checked~.radiobutton__label .cardRow__status{display:inline-block}.radiobutton--box .form{padding-top:24px}.radiobutton--readonly .radiobutton__icon{display:none}.radiobutton--readonly .radiobutton__label{padding:var(--radioBorderSpace);padding-left:var(--radioBorderSpace)}.radiobutton--readonly .radiobutton__action{font-size:0.9375rem;font-weight:500;letter-spacing:-0.03em;line-height:1.46;bottom:0;right:0;-webkit-transform:translateY(calc(100% + 12px));transform:translateY(calc(100% + 12px));top:auto}.radiobutton--readonly .radiobutton__input:not([type=hidden]):checked~.radiobutton__border{border-color:#c2c2c2;background-color:initial}.radiobutton--readonly .radiobutton__input:not([type=hidden]):checked~.radiobutton__label .radiobutton__labelTag{color:#838385}.radiobutton--check .radiobutton__border{z-index:-1}.radiobutton--check .radiobutton__icon{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:background-color 250ms ease-out}.radiobutton--check .radiobutton__icon:after{content:""}.radiobutton--check .radiobutton__icon:before{display:none}.radiobutton--check .radiobutton__icon:after{left:50%;opacity:0;position:absolute;top:50%;color:#fff;font-size:0.875rem;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.radiobutton--check .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon{background-color:#74b11f;border-color:#74b11f}.radiobutton--check .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon:after{opacity:1}.radiobutton--check .radiobutton__input:not([type=hidden]):checked~.radiobutton__border{border-color:#74b11f;background-color:#f2efe8}.radiobutton--onlyColor.disabled,.filters:not(.filters--checked) .radiobutton--onlyColor.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton--onlyColor,.filter:not(.filter--checked) .filtersLinks button.radiobutton--onlyColor,.radiobutton--onlyIcon.disabled,.filters:not(.filters--checked) .radiobutton--onlyIcon.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.radiobutton--onlyIcon,.filter:not(.filter--checked) .filtersLinks button.radiobutton--onlyIcon{opacity:1}.radiobutton--onlyColor .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon,.radiobutton--onlyIcon .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon{border-color:#74b11f;border-width:2px}.radiobutton--onlyColor .radiobutton__label,.radiobutton--onlyIcon .radiobutton__label{padding:0}.radiobutton--onlyColor .radiobutton__icon,.radiobutton--onlyIcon .radiobutton__icon{overflow:hidden;position:relative}.radiobutton--onlyColor .radiobutton__icon:before,.radiobutton--onlyIcon .radiobutton__icon:before{display:none}.radiobutton--onlyColor .radiobutton__icon{border:1px solid #c2c2c2;border-radius:8px;display:block;width:32px;height:32px}.radiobutton--onlyIcon .radiobutton__icon{align-items:center;border-color:transparent;border-radius:6px;display:flex;justify-content:center;width:48px;height:48px}.radiobutton--onlyIcon img{display:inline-block;vertical-align:top}.radiobutton--onlyIcon .icon{font-size:2rem}.radiobutton--onlyIcon .icon:before{width:32px;height:32px}.radiobutton--tab{flex:1;height:56px}.radiobutton--tab .icon{font-size:1.5rem;margin-right:8px}.radiobutton__border{border:1px solid #c2c2c2;border-radius:8px;pointer-events:none;transition:border-color 250ms ease-out}.radiobutton__input:not([type=hidden]):checked~.radiobutton__icon{border-color:#838385}.radiobutton__input:not([type=hidden]):checked~.radiobutton__icon:before{opacity:1}.radiobutton--button .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon{background-color:#838385}.radiobutton--button .radiobutton__input:not([type=hidden]):checked~.radiobutton__text{color:#fff}.radiobutton--tab .radiobutton__input:not([type=hidden]):checked~.radiobutton__text{color:#333}.radiobutton__input:not([type=hidden]):checked~.radiobutton__border{border-color:#c2c2c2}.radiobutton__input:not([type=hidden]):checked~.radiobutton__checkedText{display:block}.radiobutton__icon{border-radius:50%}.radiobutton__icon:before{background-color:#f47920;border-radius:50%;content:"";left:50%;opacity:0;position:absolute;top:50%;transition:opacity 250ms ease-in-out;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:10px;height:10px}.radiobutton--button .radiobutton__icon{border-radius:0;width:100%;height:100%}.radiobutton--button .radiobutton__icon:before{display:none}.radiobutton__labelSub{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.23}.radiobutton__labelTag{color:#74b11f;display:none;font-weight:bold;margin-bottom:4px}.radiobutton--tab .radiobutton__label,.radiobutton--button .radiobutton__label{align-items:center;display:flex;justify-content:center;padding:8px;height:100%}.radiobutton--tab .radiobutton__label{font-size:1rem}.radiobutton--button .radiobutton__label{min-height:44px}.checkbox__input:not([type=hidden]):checked~.checkbox__icon{background-color:#f47920;border-color:#f47920}.checkbox__input:not([type=hidden]):checked~.checkbox__icon:before{opacity:1}.checkbox--button .checkbox__input:not([type=hidden]):checked~.checkbox__icon{background-color:#333}.checkbox--button .checkbox__input:not([type=hidden]):checked~.checkbox__text{color:#fff}.checkbox__icon{color:#fff;border-radius:3px;font-size:1rem;transition:background-color 250ms ease-out}.checkbox__icon:before{content:""}.checkbox__icon:before{line-height:22px;opacity:0;transition:opacity 250ms ease-in-out}.checkbox--button .checkbox__icon{width:100%;height:100%}.checkbox--button .checkbox__icon:before{display:none}.checkbox--button .checkbox__label{align-items:center;display:flex;justify-content:center;padding:8px;height:100%;min-height:44px}.statusMessage{font-size:0.875rem;display:none;line-height:1.3;margin:4px 0 16px;padding-left:24px;position:relative}.statusMessage:before{left:0;position:absolute;top:0}.statusMessage--success{color:#74b11f}.statusMessage--success.active,.newsletter__field--success .statusMessage--success{display:block}.statusMessage--error{color:#d91a32}.statusMessage--error.active,.newsletter__field--error .statusMessage--error{display:block}.select{position:relative;width:100%}.select--open{z-index:3}.select--open.select--card .select__button{border-color:var(--inputBorderColor);border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.select__main{position:relative}.select__button{cursor:pointer;padding-right:32px;position:relative;text-align:left;white-space:nowrap}.select__button:after{content:""}.select__button::after{font-size:1rem;margin-top:-8px;position:absolute;right:8px;top:50%;-webkit-transform-origin:center;transform-origin:center;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out}.select--open .select__button::after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.select__placeholder{color:var(--inputPlaceholderColor);white-space:nowrap}.select__listWrap,.autocomplete{background-color:#fff;display:none;left:0;margin-top:12px;padding:12px 0;position:absolute;top:100%;width:100%;z-index:1}.select__list,.autocomplete__list{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;list-style:none;margin:0;padding:0;max-height:224px}.select__list::-webkit-scrollbar,.autocomplete__list::-webkit-scrollbar{width:6px;height:6px}.select__list::-webkit-scrollbar-thumb,.autocomplete__list::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.select__list::-webkit-scrollbar-thumb:hover,.autocomplete__list::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.select__list::-webkit-scrollbar-thumb:active,.autocomplete__list::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.select__list::-webkit-scrollbar-track,.autocomplete__list::-webkit-scrollbar-track{background:transparent}.select__option,.autocomplete__option{--optionPadding: 12px;color:#333;cursor:pointer;font-size:0.9375rem;letter-spacing:-0.02em;line-height:1.4;margin:0;padding:12px;transition:color 250ms ease,background-color 250ms ease-out}.select__option:before,.autocomplete__option:before{content:"";display:block;background-color:#ececec;position:absolute;bottom:-1px;right:auto;left:auto;width:calc(100% - var(--optionPadding)*2);height:1px}.select__option:after,.autocomplete__option:after{display:none}.select__option.selected,.selected.autocomplete__option{background-color:#ececec}.select__option:not(.selected):active,.autocomplete__option:not(.selected):active{background-color:#ececec}.select__option.disabled,.disabled.autocomplete__option,.filters:not(.filters--checked) .select__option.filtersClearAll,.filters:not(.filters--checked) .autocomplete__option.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.select__option,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.autocomplete__option,.filter:not(.filter--checked) .filtersLinks button.select__option,.filter:not(.filter--checked) .filtersLinks button.autocomplete__option{pointer-events:none}.select--card .select__button{height:auto;padding:14px}.select--card .select__list,.select--card .autocomplete__list{max-height:274px}.select--card .select__listWrap,.select--card .autocomplete{border-top:0;border-top-right-radius:0;border-top-left-radius:0;margin-top:0;padding:0;position:static}.select--card .select__option,.select--card .autocomplete__option{border-top:1px solid #ececec}.select--card .select__option:last-child,.select--card .autocomplete__option:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.select--card .select__option:not(.selected):active,.select--card .autocomplete__option:not(.selected):active{color:var(--buttonColorActive)}.selectInline{align-items:baseline;display:inline-flex;position:relative}.selectInline__label{color:#333;font-size:0.875rem;font-weight:500;position:relative;z-index:4}.selectInline .select,.selectInline .select__main{position:static}.selectInline .select__button{border:none;padding-left:4px;z-index:2;height:auto}.selectInline .select__listWrap,.selectInline .autocomplete{border-radius:6px;box-shadow:0px 6px 16px rgba(51,51,51,.15);left:auto;margin:0;padding:56px 0 16px;right:-16px;top:-16px;width:calc(100% + 40px)}.textarea__field{display:block;resize:none;height:136px}.textarea__field ::-webkit-input-placeholder{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47}.textarea__field ::-moz-placeholder{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47}.textarea--medium .textarea__field{height:80px}.textarea--short .textarea__field{height:48px}.toggle{line-height:1.35;padding:2px 0 2px calc(44px + 16px)}.toggle__label{color:#999;display:block;font-size:0.875rem;line-height:1.4;transition:color 250ms ease}.toggle__input{cursor:pointer;left:0;opacity:0;position:absolute;top:0;z-index:2;width:44px;height:24px}.toggle__input:checked~.toggle__control{background-color:#fff;-webkit-transform:translateX(100%);transform:translateX(100%)}.toggle__input:checked~.toggle__bg{background-color:#333}.toggle__input:checked~.toggle__label{color:#333}.toggle__input:disabled{cursor:default}.toggle__input:disabled~.toggle__bg{background-color:#e6e6e6}.toggle__input:disabled~.toggle__control{background-color:#fff}.toggle__bg{background-color:#999;border-radius:100px;left:0;position:absolute;transition:background-color 250ms ease-out;top:0;width:44px;height:24px}.toggle__control{background-color:#e6e6e6;border-radius:50%;left:2px;position:absolute;top:2px;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out;width:calc(44px/2 - 2px);height:calc(24px - 2px*2)}.tabToggle__tabs{background-color:#fff;border-radius:100px;display:flex;margin:0;padding:2px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-width:160px;height:42px}.tabToggle__tabs:before{background-color:#333;border-radius:100px;content:"";left:2px;position:absolute;top:2px;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out;width:calc(50% - 2px);height:calc(100% - 2px * 2)}.tabToggle__tabs.slide:before{-webkit-transform:translateX(100%);transform:translateX(100%)}.tabToggle__tab{color:#838385;cursor:pointer;flex:1;font-size:0.9375rem;letter-spacing:-0.02em;margin:0;text-align:center;padding:10px 8px;transition:color 250ms ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabToggle__tab:after{display:none}.tabToggle__tab.active{color:#fff}[data-tabToggle-content]{display:none}[data-tabToggle-content].active{display:block}fieldset{border:none;margin:0;padding:0}.formWrap--center{text-align:center}.formWrap+.formWrap{margin-top:var(--fieldRowSpace)}.form{--formMaxWidth: 820px;margin-bottom:40px}.form--s{--formMaxWidth: 496px}.form--full{--formMaxWidth: 100%}.formWrap--center .form:not(.form--col){display:inline-block;text-align:left}.formWrap--center .form.form--col{display:inline-flex}.form--center{margin-inline:auto}.form--col{align-items:flex-start;display:flex;flex-wrap:wrap;position:relative}.form--address{min-height:400px}.form__title{border-bottom:solid 1px #c2c2c2;margin-bottom:40px;padding-bottom:16px;font-size:1rem;font-weight:500}.form__title:not(:first-child){margin-top:0}.form button[type=submit]:not(.widthAuto),.form input[type=submit]:not(.widthAuto){min-width:calc(var(--formMaxWidth)/2 - var(--fieldColumnSpace)/2)}.form__row{display:flex}.form__row--separate .field{border-top:1px solid #ececec;flex:1;margin-top:13px;padding-top:8px}.form__row--separate .field p{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.23;margin:0 0 12px}.form__row--center{justify-content:center}.form__col{display:inline-flex;flex-flow:column;width:50%}.togglePassword{top:21px;font-size:1.5rem;position:absolute;right:18px;height:48px}.passwordValidation p{font-size:0.75rem;font-weight:400;letter-spacing:initial;line-height:1.33;color:#595959;margin:0 0 8px}.passwordValidation ul{margin:0;display:flex;flex-wrap:wrap}.passwordValidation ul li{padding-left:0;margin:0}.passwordValidation ul li:after{display:none}.passwordValidation li{color:#999;font-size:0.8125rem;margin:4px 0;width:50%}.passwordValidation li.disabled,.passwordValidation .filters:not(.filters--checked) li.filtersClearAll,.filters:not(.filters--checked) .passwordValidation li.filtersClearAll{color:#e6e6e6;text-decoration:line-through}.field{margin:0 calc(var(--fieldColumnSpace)/2) var(--fieldRowSpace);text-align:left}.field.hidden{margin:0}.field--full{width:calc(100% - var(--fieldColumnSpace))}.field--small{flex-shrink:0;width:calc(var(--smallField) + var(--fieldColumnSpace))}.field--centered{text-align:center}.field--centered .field__inner{display:inline-flex;margin-left:auto;margin-right:auto;text-align:left}.field--hEnd{text-align:right}.field--hEnd .field__inner{display:inline-flex}.field--submit{margin-top:20px;text-align:center}.field--comments{position:relative;min-height:16px}.field__inner{align-items:center;display:flex;position:relative}.field__wrap:first-child:last-child{width:100%}.field__label{color:#595959;display:block;font-size:0.8125rem;line-height:1.308;margin:0 0 4px;padding-left:var(--inputLabelPadding)}.field__label--multiple{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37;padding-left:0;flex-basis:100%}.field__labelInfo{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;color:#838385}.radiobutton .field__labelInfo,.checkbox .field__labelInfo{display:block}.field__legend{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;margin:0 0 24px}.field__input:-moz-read-only~.field__helper{color:#838385}.field__input:read-only~.field__helper{color:#838385}.field__input--password{padding-right:50px}.field__input--search{padding-right:80px}.field__input--inline{background:transparent;border-radius:0;border-top:none;border-left:none;border-right:none}.field__input--inlineB{display:inline-block;width:auto}.field__input--sm{max-width:131px}.field__inputSubmit,.field__inputClear{bottom:0;font-size:1.5rem;position:absolute;top:0;height:48px}.field__inputSubmit{right:18px}.field__inputClear{font-size:1rem;opacity:0;pointer-events:none;right:52px}.field__inputClear.active{opacity:1;pointer-events:all}.field__more{margin:24px 0 0}.field__more--spaceS{margin-top:8px}.field__more--center{text-align:center}.field__text{color:#b3b3b3;font-size:0.8125rem;margin:-4px 0 8px}.field__mapInner{padding-top:75%;background-color:#f4f4f4;position:relative}.statusBox{margin:48px 0}.formWrap--center .statusBox{margin-right:auto;margin-left:auto}.statusBox p{color:#333;font-size:1.125rem;font-weight:500}.statusBox p:last-child{margin-bottom:0}.statusBox__icon{border-radius:50%;color:var(--statusColor);font-size:4rem;line-height:1;margin-bottom:24px}.statusBox--success{--statusColor: #74B11F}.errorMsg{align-items:center;color:#d91a32;display:flex;font-size:0.75rem;margin:4px 0 8px}.errorMsg:before{content:""}.errorMsg:before{font-size:1rem;margin-right:8px}.birthdayInput{--birthdaySpace: 8px;display:flex;flex-wrap:wrap;margin-left:calc(-1*var(--birthdaySpace));width:calc(100% + var(--birthdaySpace)*2)}.birthdayInput .field__input{margin-left:var(--birthdaySpace);margin-right:var(--birthdaySpace)}.birthdayInput .field__input--day,.birthdayInput .field__input--month{width:calc(30% - 16px)}.birthdayInput .field__input--year{width:calc(40% - 16px)}.formBox{background-color:#f7f5f0;border-radius:8px;padding:20px;margin-bottom:12px}.formBox--inner{margin-left:32px}.formBox--plain{background-color:transparent;border-radius:initial;padding:0}.formBox__title{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;display:block;margin:0 0 24px}.formBox__text{font-size:1rem;margin:0 0 24px}.formBox__more{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;display:flex;justify-content:flex-end;align-items:center}.formBox__more [class^=icon-],.formBox__more [class*=" icon-"]{color:#838385;font-size:24px;margin-right:9px}.formBox .checkbox~.formBox__more{margin-top:16px}.radiobuttons,.checkboxes{--checkboxRadioSpace: 20px}.radiobuttons--inline,.checkboxes--inline{--checkboxRadioSpace: 12px;gap:var(--checkboxRadioSpace) 24px;margin-bottom:calc(-1*var(--checkboxRadioSpace));display:flex}.formBox .radiobuttons--inline,.formBox .checkboxes--inline{--checkboxRadioSpace: 24px;margin-bottom:0}.radiobuttons--addresses,.checkboxes--addresses{padding-bottom:27px}.radiobuttons--colors,.radiobuttons--icons,.checkboxes--colors,.checkboxes--icons{display:flex;flex-wrap:wrap;margin-top:12px}.radiobuttons--colors,.checkboxes--colors{--checkboxRadioSpace: 16px;gap:var(--checkboxRadioSpace)}.radiobuttons--icons,.checkboxes--icons{--checkboxRadioSpace: 12px;gap:var(--checkboxRadioSpace) 8px}.radiobuttons--inline .radiobutton,.radiobuttons--inline .radiobutton:not(:first-child),.radiobuttons--inline .radiobutton:not(:last-child),.radiobuttons--colors .radiobutton,.radiobuttons--colors .radiobutton:not(:first-child),.radiobuttons--colors .radiobutton:not(:last-child),.radiobuttons--icons .radiobutton,.radiobuttons--icons .radiobutton:not(:first-child),.radiobuttons--icons .radiobutton:not(:last-child){margin:0}.radiobuttons--scrollV{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;max-height:224px}.radiobuttons--scrollV::-webkit-scrollbar{width:6px;height:6px}.radiobuttons--scrollV::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.radiobuttons--scrollV::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.radiobuttons--scrollV::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.radiobuttons--scrollV::-webkit-scrollbar-track{background:transparent}.radiobuttons--toggle{background:#ececec;border-radius:100px;display:flex;justify-content:center;margin-inline:auto;padding:2px;height:40px}.radiobuttons--toggle .radiobutton{color:#838385}.radiobuttons--toggle .radiobutton__input:not([type=hidden]):checked~.radiobutton__icon{background-color:#333}.radiobuttons--toggle .radiobutton__input:not([type=hidden]):checked~.radiobutton__text{color:#fff}.radiobuttons--toggle .radiobutton:not(:last-child){margin-bottom:0}.radiobuttons--toggle .radiobutton:not(:first-child){margin-top:0}.radiobuttons--toggle .radiobutton__label{align-items:center;display:flex;padding:4px 16px;height:100%}.radiobuttons--toggle .radiobutton__icon{background:transparent;border:none;border-radius:100px;width:100%;height:100%}.radiobuttons--toggle .radiobutton__icon:before{display:none}.radiobuttons--toggle .radiobutton__text{color:#838385;font-weight:500}.checkboxes--inline .checkbox,.checkboxes--inline .checkbox:not(:first-child),.checkboxes--inline .checkbox:not(:last-child){margin:0}.validation-summary-errors{margin:16px 0 0}.validation-summary-errors ul{list-style:inside}.validation-summary-errors li{margin-bottom:8px}.validation-summary-errors li,.field-validation-error{color:#d91a32}.field-validation-error{color:#d91a32}.file-upload{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:20px}.file-upload__filled .file-upload__button{display:none}.file-upload__filled .file-upload__content{display:inline-flex}.file-upload__input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;z-index:2;cursor:pointer}.file-upload__button{position:relative;margin-right:10px}.file-upload__content{display:none;flex-wrap:wrap;align-items:center;line-height:1}.file-upload__name{font-size:1rem;color:#333;letter-spacing:-0.02em;margin:8px 8px 8px 0}.file-upload__delete{cursor:pointer;display:inline-flex;flex-wrap:wrap;align-items:center;font-size:0.8125rem;font-weight:500;color:#333}.file-upload__delete:active{color:#f47920}.file-upload__delete:active .file-upload__icon{color:#f47920}.file-upload__icon{font-size:1.5rem;margin-top:-4px;color:#838385}.file-upload__title{font-size:1rem;letter-spacing:-0.02em;color:#333;margin:10px 10px 10px 0}.file-upload__title span{letter-spacing:-0.02em;font-size:0.8125rem}.formTip{color:#333;font-size:0.8125rem;letter-spacing:-0.02em;text-align:left}.formTip--border{border-top:solid 1px #ececec;margin:0 0 40px 0;padding-top:8px}.formTip p{font-size:0.8125rem;margin:0}.loginWrap{display:flex;text-align:left}.loginWrap__img{flex-shrink:0;position:relative;width:49%}.loginWrap__img img{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.loginWrap__form{flex:1;padding:96px 24px;margin:0 auto;max-width:400px}.loginWrap__form .modal__title{margin-bottom:24px}.registerPromo{margin-top:40px}.registrationForm .modal__title{margin-bottom:48px}.formText{border-top:1px solid #d8d8d8;padding:24px 0 8px;text-align:center}.formText p{color:#333;font-size:0.9375rem}.formText p:last-child{margin:0}.goToTop{background-color:#000;bottom:32px;border-radius:50%;box-shadow:0px 5px 15px rgba(51,51,51,.12);color:#333;cursor:pointer;font-size:0.875rem;line-height:62px;position:fixed;right:24px;text-align:center;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out;-webkit-transform:translateY(150%);transform:translateY(150%);z-index:9;width:64px;height:64px}.goToTop:before{display:block;transition:-webkit-transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895);transition:transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895);transition:transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895), -webkit-transform 300ms cubic-bezier(0.455, 0.07, 0.53, 0.895)}.showToTop .goToTop{-webkit-transform:translateY(0);transform:translateY(0)}.imgControl{margin:0 auto;display:flex;width:100%;justify-content:center}.imgControl button{margin:0 4px}.indicator{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.231;align-items:center;display:inline-flex}.indicator [class^=icon-],.indicator [class*=" icon-"]{margin:0 4px 2px}.indicator:before{width:6px;height:6px;background:transparent;border-radius:50%;content:"";margin-right:6px;margin-top:-2px}.indicator--orange:before{background-color:#f47920}.indicator--green:before{background-color:#74b11f}.indicator--greenLight:before{background-color:#8dc63f}.indicator--red:before{background-color:#d91a32}.indicator--strong{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;padding:4px}.indicator--strong:before{display:none}.indicator--bg{background-color:#fef8c6;border-radius:4px}.orderTrack .indicator{flex-shrink:0}.loader--circle{margin:0 auto 32px;width:96px;height:96px}.loader__inner{align-items:center;display:flex;justify-content:center;margin:auto;width:100%;height:100%}.loader__item{-webkit-animation:bouncedelay 1.4s infinite ease-in-out both;animation:bouncedelay 1.4s infinite ease-in-out both;border-radius:100%;background-color:#fff;margin:4px;width:16px;height:16px}.loader__item--1{-webkit-animation-delay:-0.32s;animation-delay:-0.32s}.loader__item--2{-webkit-animation-delay:-0.16s;animation-delay:-0.16s}.loader__circle{align-items:center;-webkit-animation:circle-loader-spin 1s infinite linear;animation:circle-loader-spin 1s infinite linear;border-radius:50%;border-top:10px solid #ece8dc;border-right:10px solid #ece8dc;border-bottom:10px solid #ece8dc;border-left:10px solid #f47920;display:flex;justify-content:center;margin:auto;-webkit-transform:translateZ(0);transform:translateZ(0);width:96px;min-width:96px;height:96px;min-height:96px}@-webkit-keyframes circle-loader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes circle-loader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.loadMore{--barPercentage: 0%;--loadMoreSpace: 64px;margin:var(--loadMoreSpace) auto;text-align:center;max-width:736px}.loadMore__text{color:#333;margin-bottom:24px}.loadMore__text:last-child{margin-bottom:0}.loadMore__bar{background-color:#fff;border-radius:6px;margin:24px auto;overflow:hidden;position:relative;max-width:288px;height:6px}.loadMore__barInner{background-color:gray;border-radius:inherit;left:0;position:absolute;top:0;-webkit-transform:scaleX(var(--barPercentage));transform:scaleX(var(--barPercentage));-webkit-transform-origin:0 center;transform-origin:0 center;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out;width:100%;height:100%}.loadMore__button:not(:last-child){margin-bottom:32px}.mainNavWrap{--mobMenuHorPadding: 16px}.mainNav__list{margin:0}.mainNav__list li{padding-left:0;margin:0}.mainNav__list li:after{display:none}.mainNav__item{color:#8c8c8c;cursor:pointer;font-size:0.875rem;margin:0 16px;transition:color 250ms ease}.mainNav__item:first-child{margin-left:0}.mainNav__item--active{color:#333}.mainNav__link{color:inherit;display:block;padding:8px 8px 16px;position:relative;transition:color 250ms ease}.mainNav__link:first-child{padding-left:0}.mainNav__link:after{background-color:#000;bottom:0;content:"";left:0;opacity:0;position:absolute;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:center bottom;transform-origin:center bottom;transition:opacity 50ms ease-out;width:100%;height:3px}.mainNav__item--active .mainNav__link:after{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);transition:opacity 10ms ease-out 250ms,-webkit-transform 150ms ease-out 250ms;transition:opacity 10ms ease-out 250ms,transform 150ms ease-out 250ms;transition:opacity 10ms ease-out 250ms,transform 150ms ease-out 250ms,-webkit-transform 150ms ease-out 250ms}.megamenu{position:absolute;width:100%}.megamenu__list{margin:0}.megamenu__list li{padding-left:0;margin:0}.megamenu__list li:after{display:none}.megamenu__list--level2>li{color:#333;font-weight:bold}.megamenu__list--level3{margin:16px 0 40px}.megamenu__list--level3>li{color:#8c8c8c;font-weight:normal;margin-bottom:8px}.megamenu__list a{color:inherit;transition:color 250ms ease}.megamenu__title{align-items:baseline;display:flex}.megamenu__title>*:not(:last-child){margin-right:16px}.megamenu__close{color:rgba(51,51,51,.5);line-height:1}.message{align-items:center;border:1px solid #ececec;border-radius:8px;display:flex;margin-bottom:40px;padding:16px}.message__icon{align-self:flex-start;font-size:1.5rem;margin-right:8px;margin-top:-3px}.message__icon.icon-alert{color:#d91a32}.message__icon.icon-warning{color:#f47920}.message__icon.icon-tickFilled{color:#74b11f}.message__text{color:#333}.message__text p{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.3;color:inherit;margin-bottom:4px}.message__text p:last-child{margin:0}.modal{align-items:center;display:flex;justify-content:center;left:0;opacity:1;position:fixed;top:0;transition:opacity 250ms ease-in-out;z-index:10;width:100%;height:100%}.modal:not(.open){opacity:0;pointer-events:none}.modal__wrap{background-color:#fff;border-radius:8px;color:#333;font-size:1rem;font-weight:400;overflow:auto;-webkit-overflow-scrolling:touch;padding:80px 24px 56px;position:relative;text-align:center;width:800px;max-width:92vw;max-height:92vh;z-index:10}.modal--auto .modal__wrap{width:auto}.modal--s .modal__wrap{width:504px}.modal--l .modal__wrap{width:1176px}.modal--full .modal__wrap{border-radius:0;display:flex;flex-wrap:wrap;width:100%;height:100%;max-width:100%;max-height:100%}.modal--transparent .modal__wrap{background:transparent;padding:0}.modal--noSpaces .modal__wrap{padding:0}.modal__wrap .btnWrap{margin-top:34px}.modal__wrap .btnWrap:last-child{margin-bottom:0}.modal__closeButton{position:absolute;right:24px;top:24px;z-index:2}.modal__mainfigure{margin:auto}.modal__mainfigure img{display:inline-block;-o-object-fit:contain;object-fit:contain;-o-object-position:center center;object-position:center center;vertical-align:top;max-width:92vw;max-height:88vh}.modal__titleWrap{margin:0 auto 32px}.modal__title{font-size:1.5rem;margin:0 auto 12px;max-width:576px}.modal__title:not(:first-child){margin-top:0}.modal__title:last-child{margin-bottom:0}.modal .form{margin-bottom:0}.modal--full .modal__content{width:100%}.newsletter{background-color:#e6e6e6;padding:32px 0;display:flex}.newsletter__form{display:flex}.newsletter__label{font-size:16px;font-weight:bold}.newsletter__inputs{display:flex}.newsletter__input{background-color:#fff;border:1px solid #999;border-radius:5px;color:#666;font-size:0.875rem;margin-right:8px;padding:8px;height:48px}.newsletter__input::-webkit-input-placeholder{color:#999}.newsletter__input::-moz-placeholder{color:#999}.newsletter__input:-ms-input-placeholder{color:#999}.newsletter__input::placeholder{color:#999}.newsletter__terms{margin:8px 0 0}.notifications{display:none;position:absolute;top:100%;z-index:3}.notifications__content{background-color:#fff;border-radius:8px;box-shadow:0px 2px 12px rgba(51,51,51,.08);padding:60px 20px 20px 20px;position:relative;z-index:2;margin-top:12px}.notifications__close{position:absolute;right:20px;top:20px;color:#333;font-size:1.5rem;cursor:pointer}.notifications__list{margin:0}.notifications__list li{padding-left:0;margin:0}.notifications__list li:after{display:none}.notifications__overlay{position:absolute;z-index:-1;cursor:pointer}.notifications__content{width:415px}.notifications__list{overflow:auto;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 210px);margin:0 -10px;padding:0 10px}.notifications__list::-webkit-scrollbar{width:6px;height:6px}.notifications__list::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.notifications__list::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.notifications__list::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.notifications__list::-webkit-scrollbar-track{background:transparent}.notifications__listItem{color:#838385;font-size:0.875rem;line-height:1.25;margin:0;padding:16px 0;display:flex;flex-wrap:wrap;position:relative}.notifications__listItem--unread{color:#333;padding-right:13px}.notifications__listItem--unread:before{content:"";position:absolute;top:21px;right:0;width:6px;height:6px;background:#d91a32;border-radius:50%}.notifications__listItem:not(:first-child){border-top:1px solid #ececec}.notifications__date{width:70px;text-align:right;font-size:0.875rem;letter-spacing:-0.01em;margin-left:auto}.notifications__title{width:calc(100% - 70px);max-width:293px;padding-right:5px;font-size:0.875rem;color:#333;line-height:1.3}.notifications__maintitle{font-size:1.25rem;font-weight:700;color:#333;line-height:1.3;margin:0 0 10px}.notificationsBtn{position:relative;font-size:1.5rem;color:#a6a6a6}.notificationsBtn:after{position:absolute}.outputsRow{display:flex;gap:24px}.output{align-items:center;background:#f2efe8;border-radius:8px;display:flex;flex:1;justify-content:space-between;padding:16px;position:relative}.output:not(.output--init){align-items:center;justify-content:flex-start;padding-right:64px}.output--pickup .output__inner,.output--delivery .output__inner{background-position:left center;background-repeat:no-repeat;background-size:auto 40px;padding-left:88px;min-height:40px}.output--selected{border:2px solid #74b11f}.output--delivery .output__inner{background-image:url(../media/delivery.svg)}.output--pickup .output__inner{background-image:url(../media/pickup.svg)}.output--pickup:not(.output--init) .output__inner,.output--delivery:not(.output--init) .output__inner{align-items:flex-end;display:flex;flex-wrap:wrap}.output--init .output__inner{align-items:center;display:flex}.output__title{align-items:baseline;color:#333;display:flex;font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.375;margin:0}.output--delivery:not(.output--init) .output__title,.output--pickup:not(.output--init) .output__title{font-size:0.875rem;line-height:1.286;margin-bottom:4px}.output__title:not(:last-child){margin-bottom:8px}.output--init .output__title{font-size:1.125rem}.output__titleInfo{color:#838385;font-size:0.75rem;letter-spacing:0;margin-left:4px}.output__mainLink{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.286;margin:0}.output__mainLink:after{content:""}.output__link,.output__mainLink{color:var(--buttonColor)}.output__link:active,.output__mainLink:active{color:var(--buttonColorActive)}.output--init .output__button{flex-shrink:0;margin-left:16px}.output--init .output__button:after{content:""}.output:not(.output--init) .output__button{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.output--selected .output__button{background:url(../media/tickFilled.svg) no-repeat scroll center;background-size:contain;color:#74b11f;width:26px;height:26px}.output__status{color:#74b11f;flex-shrink:0;font-size:1.625rem;margin-left:16px}.output__link{color:var(--buttonColor);display:block;font-size:0.875rem;text-decoration:underline}.output__link:not(:last-child){margin-bottom:4px}.output__link address{color:inherit;line-height:inherit}.output__link--b{font-weight:500}.output__time{color:#333;font-size:0.8125rem;line-height:1.23;margin:4px 0 0}.output__time:before{font-size:1rem;margin-right:4px}.pagination-container{margin:32px 0}.pagination{margin:0;align-items:center;display:flex;flex-wrap:wrap;justify-content:center}.pagination li{padding-left:0;margin:0}.pagination li:after{display:none}.pagination__item{border-radius:50%;font-size:1rem;margin:0 2px}.pagination__item.active{background-color:#f47920;font-size:1.125rem;font-weight:700}.pagination__item.active .pagination__link{color:#fff;cursor:default}.pagination__link{color:var(--buttonColor);cursor:pointer;display:block;line-height:34px;text-align:center;transition:color 250ms ease;width:32px;height:32px}.pagination__link:active{color:var(--buttonColorActive)}.pagination__link--prev,.pagination__link--next{align-items:center;display:flex;justify-content:center}.pagination__link--prev.disabled,.filters:not(.filters--checked) .pagination__link--prev.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.pagination__link--prev,.filter:not(.filter--checked) .filtersLinks button.pagination__link--prev,.pagination__link--next.disabled,.filters:not(.filters--checked) .pagination__link--next.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.pagination__link--next,.filter:not(.filter--checked) .filtersLinks button.pagination__link--next{opacity:0;pointer-events:none}.product .fav{position:absolute;right:-4px;top:-4px;z-index:2}.product .wishlistButton:not(:first-child) .fav{right:24px}.product--mini .fav,.minibasket__product .fav{right:32px;top:0}.product__inner{display:flex;flex-direction:column;position:relative;height:100%}.product__discount{align-items:center;background-color:#fff;border:5px solid rgba(244,121,32,.7);border-radius:50%;color:#333;display:flex;flex-direction:column;font-size:0.875rem;font-weight:700;justify-content:center;left:0;letter-spacing:-0.02em;line-height:1;position:absolute;text-align:center;top:0;z-index:1;width:64px;height:64px}.basketTable .product__discount{border-width:3px;font-size:0.6875rem;font-weight:500;width:44px;height:44px}.basketTable .product__discount .product__discountVal{font-size:0.875rem;margin-bottom:-3px}.product__discountVal{font-size:1.125rem;font-weight:bold;line-height:1.223}.product__discountText{font-size:0.625rem;font-weight:500;line-height:1.2}.product__img{margin-bottom:12px;padding-top:16px;position:relative;max-width:320px}.product__img figure{width:100%}.product__img figure picture{display:block;padding-top:calc(160 / 160 * 100%);position:relative;width:100%}.product__img figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.product__badge{--badgePosition: 0;bottom:0;position:absolute;z-index:2;width:40px}.product__badge--left{left:var(--badgePosition)}.product__badge--right{right:var(--badgePosition)}.product__badge img{display:inline-block;vertical-align:top}.product__more{display:flex;flex:1;flex-direction:column;justify-content:flex-end}.product__title{color:#333;display:block;font-size:1.125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.3;margin:0 0 8px}.product__title:before{content:""}.product__desc{color:#333;font-size:0.8125rem;letter-spacing:-0.02em;line-height:1.23;margin:0 0 8px}.product__quantity{position:relative;z-index:1}.product__avail{font-size:0.8125rem}.minibasket .product__avail{margin:4px 0 0}.productsListMini .product:not(:first-child){margin-top:24px}.productsListMini .product:not(:last-child){margin-bottom:24px}.productTags{display:flex;flex-wrap:wrap;margin:-4px 0 8px}.productInfo .productTags{margin:0 0 12px}.productTags__tag{margin:4px 0;width:24px;height:24px}.productInfo .productTags__tag{margin-bottom:0;margin-top:0;width:32px;height:32px}.productTags__tag:not(:last-child){margin-right:4px}.priceContainer{display:flex;justify-content:flex-start}.productInfo .priceContainer,.productList .priceContainer{height:54px}.productList .priceContainer{justify-content:space-between;margin-bottom:12px}.priceContainer .priceBlock{align-items:baseline;display:grid;grid-template-columns:-webkit-max-content;grid-template-columns:max-content;grid-template-rows:auto}.priceContainer .priceBlock:not(:first-child){padding-left:8px}.priceContainer .priceBlock:not(:last-child){padding-right:8px}.priceContainer .priceBlock__price{align-self:end}.priceContainer .priceBlock__price:not(.priceBlock__price--init):first-child{grid-row-start:1;grid-row-end:3}.priceContainer .priceBlock__text{align-self:end;grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}.priceBlock{color:#333;letter-spacing:-0.02em;line-height:1}.priceBlock__price{font-size:1.125rem;font-weight:500;line-height:1.334;text-align:right;white-space:nowrap}.priceBlock__price--init{color:#a6a6a6;font-size:1rem;font-weight:400;text-decoration:line-through}.priceBlock__price--b{font-size:1.625rem;letter-spacing:-0.03em;line-height:1.02;margin-top:-6px}.priceBlock__price--b .priceBlock__text{letter-spacing:-0.02em}.priceBlock__text{font-size:0.8125rem;font-weight:400;line-height:1.385;margin-left:4px;white-space:nowrap}.priceRow{align-items:center;display:flex;justify-content:space-between;font-size:0.875rem;margin:16px 0}.priceRow:first-child{margin-top:0}.priceRow .priceBlock{padding-left:24px}.priceRow:not(.priceRow--total) .priceBlock__price{font-weight:normal}.priceRow--total{align-items:flex-end;font-size:1.25rem;font-weight:500;letter-spacing:-0.02em;line-height:1;margin-bottom:24px}.sideBasket .priceRow--total{font-size:1rem;margin:8px 0}.priceRow--total .priceBlock__price{font-size:1.25rem}.priceRow--total .priceBlock__price--init{font-size:0.9375rem}.priceRow__val{color:gray}.noInfo{border:2px solid #fff;border-radius:50%;color:#fff;font-size:0.75rem;font-weight:500;letter-spacing:-0.02em;line-height:22px;text-align:center;width:24px;height:24px}.infoPopup{background-color:#fff;-webkit-filter:drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2));filter:drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2));padding:16px;position:absolute;right:calc(50vw - var(--wrapper)/2 + var(--gridSpace));top:160px;transition:opacity 350ms ease,-webkit-transform 350ms ease;transition:opacity 350ms ease,transform 350ms ease;transition:opacity 350ms ease,transform 350ms ease,-webkit-transform 350ms ease;z-index:99;min-width:320px}.infoPopup.moveOut{opacity:0;pointer-events:none;-webkit-transform:translateY(-40%);transform:translateY(-40%)}.infoPopup__title{font-weight:bold;margin:0 0 8px;padding-right:24px}.infoPopup p{font-size:0.875rem}.infoPopup__remove{position:absolute;right:0;top:0}.productsSum{padding:20px 8px}.productsSum .orDivider__text{background-color:#f2f2f2}.quantity{align-items:center;background-color:#f2efe8;border-radius:100px;display:flex;position:relative;width:100%;max-width:296px;height:48px}.quantity--init{position:relative}.quantity--init:before{content:""}.quantity--init:before{color:#838385;font-size:1.5rem;left:50%;margin:-12px 0 0 -12px;position:absolute;top:50%;z-index:1}.quantity--init:after{background-color:#f2efe8;border-radius:100px;content:"";pointer-events:none;transition:background-color 250ms ease-out}.quantity--init .quantity__btn{opacity:0}.quantity__btn{background-color:var(--buttonBgColor);border-radius:100px;color:var(--buttonColor);flex-shrink:0;font-size:1.5rem;line-height:1;width:60px;height:100%}.quantity__btn:not(.disabled){cursor:pointer}.quantity__btn:not(.disabled):active{background-color:var(--buttonBgColorActive)}.quantity__btn.disabled,.filters:not(.filters--checked) .quantity__btn.filtersClearAll,.filters:not(.filters--checked) .filtersLinks.filtersLinks--all button.quantity__btn,.filter:not(.filter--checked) .filtersLinks button.quantity__btn{--buttonBgColor: #F2EFE8;--buttonColor: #C2C2C2}.quantity__btn--inc{--buttonBgColor: #74B11F;--buttonBgColorHover: #8DC63F;--buttonBgColorActive: #588718;--buttonColor: #fff}.quantity__btn--inc:before{content:""}.quantity__btn--dec{--buttonBgColor: #E8E2D7;--buttonBgColorHover: #D6D0C5;--buttonBgColorActive: #C9C4B9;--buttonColor: #838385}.quantity__btn--dec:before{content:""}.quantity__btn--notAvailable{background-color:#ececec;border-radius:8px;color:#a6a6a6;font-size:0.9375rem;font-weight:500;min-width:100%}.quantity__input{color:#838385;flex:1;font-size:1.25rem;font-weight:500;letter-spacing:-0.02em;text-align:center}.quantity__input span{font-size:1rem}.quantity:not(.quantity--init) .quantity__input{pointer-events:none}.quantity.quantity--init .quantity__input{cursor:pointer;opacity:0;z-index:2}.quantity__message{align-items:center;background:#fff;border:1px solid #ececec;box-shadow:0px 6px 16px rgba(51,51,51,.15);border-radius:8px;bottom:100%;display:flex;font-size:0.875rem;left:50%;letter-spacing:-0.01em;margin-bottom:8px;opacity:0;padding:var(--productPadding);pointer-events:none;position:absolute;-webkit-transform:translateY(16px) translateX(-50%);transform:translateY(16px) translateX(-50%);transition:opacity 350ms ease,-webkit-transform 350ms ease;transition:opacity 350ms ease,transform 350ms ease;transition:opacity 350ms ease,transform 350ms ease,-webkit-transform 350ms ease;width:calc(100% + var(--productPadding)*2)}.basketTable .quantity__message{left:50%;padding:8px;white-space:nowrap;width:auto}.quantity__message:before{background-color:var(--messageColor);border-radius:50%;color:#fff;flex-shrink:0;font-weight:bold;line-height:22px;margin-right:8px;text-align:center;width:22px;height:22px}.quantity--showMessage .quantity__message{opacity:1;-webkit-transform:translateY(0) translateX(-50%);transform:translateY(0) translateX(-50%)}.quantity__message--added{--messageColor: #74B11F}.quantity__message--added:before{content:""}.quantity__message--removed{--messageColor: #D8D8D8}.quantity__message--removed:before{content:""}.quantity--s,.basketTable .quantity{height:34px}.quantity--s .quantity__btn,.basketTable .quantity .quantity__btn{font-size:0.875rem;width:40px}.quantity--s .quantity__input,.basketTable .quantity .quantity__input{font-size:0.875rem}.filters__item .range{padding:16px 8px 0 0}.range__slider{background:#333;border:none;border-radius:0;box-shadow:none;margin:16px;height:2px}.range__values{display:flex;justify-content:space-between}.range__value{color:#ccc;font-size:0.875rem;text-align:center;width:32px}.range__inputs{display:flex;margin-top:16px;height:48px}.range__inputWrap{flex:1;margin-right:8px;position:relative}.range__input{padding-right:24px;width:100%}.range__symbol{color:gray;font-size:0.875rem;right:8px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.range__submit:before{content:""}.noUi-connect{background-color:#333}.noUi-handle{border:1px solid #333;box-shadow:none}.noUi-horizontal .noUi-handle{border-radius:50%;right:-16px;top:-16px;width:32px;height:32px}.noUi-handle:before,.noUi-handle:after{display:none}.noUi-tooltip{background:transparent;border:none;font-size:0.875rem;font-weight:bold;line-height:1;padding:4px 0}.noUi-handle-lower .noUi-tooltip,.noUi-handle-upper .noUi-tooltip{bottom:100%}.result{margin:0 0 40px}.result--fullheight{align-items:center;display:flex;flex-wrap:wrap;justify-content:center;margin:0;padding:24px 0;min-height:60vh}.result__content{text-align:center;width:100%}.result__title{font-size:1.875rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2;color:#333;margin:0 0 8px}.result__p{margin:0 0 12px}.result__p--b{font-size:1.25rem;letter-spacing:-0.03em}.result__p:last-child{margin:0}.result__button{margin-top:24px}.result__code{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37}.result__code strong{font-size:1.125rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2}.result__mainimg{width:100%;margin:0 auto 8px;max-width:120px}.result__mainimg picture{display:block;padding-top:calc(124 / 124 * 100%);position:relative;width:100%}.result__mainimg img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.result__mainimg--notsupported{margin-bottom:40px;max-width:235px}.result__mainimg--notsupported picture{padding-top:82.5531914894%}.result__mainicon{font-size:5.9375rem;margin-bottom:32px}.result__mainicon--border{padding:0 16px;border-bottom:solid 3px #dad7d0}.result__mainicon--orange{color:#f47920}.scrollbar{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.scrollbar::-webkit-scrollbar{width:6px;height:6px}.scrollbar::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.scrollbar::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.scrollbar::-webkit-scrollbar-track{background:transparent}.scrollbarShadow{position:relative}.scrollbarShadow:before,.scrollbarShadow:after{content:"";pointer-events:none;position:absolute;transition:opacity 250ms ease-out}.scrollbarShadow--vert:before,.scrollbarShadow--vert:after{left:0;z-index:3;width:calc(100% - 8px);height:40px}.scrollbarShadow--vert:before{background:linear-gradient(to bottom, white 0%, rgba(255, 255, 255, 0) 100%);top:0}.scrollbarShadow--vert:after{background:linear-gradient(to top, white 0%, rgba(255, 255, 255, 0) 100%);bottom:0}.scrollbarShadow--hor:before,.scrollbarShadow--hor:after{top:0;width:56px;height:calc(100% - 8px)}.scrollbarShadow--hor:before{background:linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);left:0}.scrollbarShadow--hor:after{background:linear-gradient(to left, white 0%, rgba(255, 255, 255, 0) 100%);right:0}.scrollbarShadow--top:before{opacity:0}.scrollbarShadow--bottom:after{opacity:0}.scrollbarShadow--right:after{opacity:0}.scrollbarShadow--left:before{opacity:0}.searchInput{--searchIconWidth: 48px;--searchHeight: 48px;border:1px solid #fff;border-radius:5px;margin:16px 0;position:relative;height:var(--searchHeight)}.searchInput input{background:transparent;border:none}.searchInput__input{padding:12px var(--searchIconWidth) 12px 12px;width:100%;height:100%}.searchInput__submit{align-items:center;display:flex;font-size:24px;justify-content:center;position:absolute;right:0;top:0;width:var(--searchIconWidth);height:100%}.searchInput__submit:before{content:""}.sidemenu{margin:28px 0 16px;position:relative;z-index:5}.sidemenu__selected:before{content:""}.sidemenu__list{margin:0}.sidemenu__list li{padding-left:0;margin:0}.sidemenu__list li:after{display:none}.sidemenu__list--level2{margin:12px 0;padding:0 20px}.sidemenu__link{display:inline-block;font-weight:500;color:#333}.sidemenu__link--level2{font-size:0.875rem;margin-bottom:6px;letter-spacing:-0.01em}.sideNav{flex:1;padding:80px 8px 0 32px;position:relative}.sideNav__list{margin:0;margin:0;padding:0}.sideNav__list li{padding-left:0;margin:0}.sideNav__list li:after{display:none}.sideNav__list--level1{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;left:0;padding-right:16px;position:-webkit-sticky;position:sticky;top:calc(8px + var(--headerHeight));max-height:calc(100vh - 16px - var(--headerHeight))}.sideNav__list--level1::-webkit-scrollbar{width:6px;height:6px}.sideNav__list--level1::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.sideNav__list--level1::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.sideNav__list--level1::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.sideNav__list--level1::-webkit-scrollbar-track{background:transparent}.fixPos .sideNav__list--level1{margin-top:calc(var(--top) - var(--headerHeight) - 148px)}.sideNav__list--level2{margin:0 0 4px}.sideNav__item{border:none;color:#333;font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.572;margin:0}.sideNav__item--level2{font-weight:400}.sideNav__link{color:inherit;display:block;font-size:inherit;line-height:inherit;padding:8px 0 8px 44px;position:relative;transition:color 250ms ease}.sideNav__link--level1.active{background-color:#f2efe8;border-radius:6px}.sideNav--lists .sideNav__link--level1.active:before{background-color:var(--listColor);border-radius:4px}.sideNav__item.open>.sideNav__link--level1{font-weight:700}.sideNav__link--level1:before{font-size:1.5rem;left:8px;margin-top:-12px;position:absolute;top:50%;width:24px;height:24px}.sideNav__link--level2{border-radius:6px;padding-bottom:6px;padding-top:6px}.sideNav__link--level2.active{background-color:#f2efe8;font-weight:500}.sideNav__seperator{background-color:#ececec;height:1px}.sideNav__list .sideNav__seperator{margin:12px 0}.swiper{--swiper-theme-color: #838385;--swiper-navigation-size: 32px;--swiper-pagination-bullet-opacity: 1;--swiper-pagination-bullet-inactive-opacity: 0.5;--swiper-pagination-bullet-inactive-color: #A6A6A6;--swiper-pagination-color: #F47920;--swiper-navigation-color: #838385;--swiper-navigation-inactive-color: #A6A6A6;--swiper-navigation-inactive-opacity: 1}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:0}.swiper-button-prev,.swiper-button-next{width:var(--swiper-navigation-size)}.swiper-button-prev:after,.swiper-button-next:after{font-size:var(--swiper-navigation-size)}.arrowSlider .swiper-button-prev:after,.arrowSlider .swiper-button-next:after{font-size:2.5rem}.swiper-button-prev.swiper-button-disabled,.swiper-button-next.swiper-button-disabled{color:var(--swiper-navigation-inactive-color);opacity:var(--swiper-navigation-inactive-opacity)}.swiper-button-prev:not(.swiper-button-disabled):active,.swiper-button-next:not(.swiper-button-disabled):active{color:#f47920}.swiper-button-prev{left:0}.swiper-button-prev:after{content:""}.swiper-button-next{right:0}.swiper-button-next:after{content:""}.swiper-pagination{margin-top:32px}.swiper-pagNav{align-items:center;bottom:0;display:flex;justify-content:center;margin-top:32px}.swiper-pagNav .swiper-pagination{margin:0;position:relative;width:auto}.swiper-pagNav .swiper-button-prev,.swiper-pagNav .swiper-button-next{margin:0;position:relative;top:0}.swiper-pagNav__shadow{content:"";position:absolute;pointer-events:none;top:0;transition:opacity 250ms ease-in-out;z-index:1;width:var(--swiper-navigation-size);height:calc(100% - 64px)}.swiper-pagNav__shadow--prev{background:linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);left:0}.swiper-pagNav__shadow--next{background:linear-gradient(to left, white 0%, rgba(255, 255, 255, 0) 100%);right:0}.swiper-button-disabled+.swiper-pagNav__shadow{opacity:0}.sliderSection{--sliderSectionSpaceBottom: 40px;margin:0 0 var(--sliderSectionSpaceBottom)}.simpleSlider{--simnpleSliderSpaceBottom: 32px;padding-bottom:var(--simnpleSliderSpaceBottom)}.simpleSlider--cat{margin-left:-16px;margin-top:-24px;padding-inline:16px;padding-top:24px;width:calc(100% + 32px)}.simpleSlider--cat:not(.swiper-initialized) .swiper-slide{margin-right:16px;width:calc(20% - 16px)}.productsSlider{margin-top:40px}.productsSlider .swiper-wrapper{align-items:stretch;display:flex}.productsSlider .swiper-slide{width:280px;height:initial}.productsSlider .product{height:100%}.social p{color:#4d4d4d;margin:0 0 8px}.social__list{--socialItemPAdding: 8px;margin:0;display:flex;margin-left:calc(-1*var(--socialItemPAdding))}.social__list li{padding-left:0;margin:0}.social__list li:after{display:none}.social__item{color:#ccc;line-height:1;margin:0;padding:var(--socialItemPAdding)}.social__item:not(:last-child){margin-right:8px}.social__link{display:inline-block;font-size:28px;vertical-align:top}.social__link:before{display:inline-block;vertical-align:top}.storeListWrap .tabToggle{align-items:center;bottom:24px;display:flex;justify-content:center;left:0;position:-webkit-sticky;position:sticky;z-index:3}.storeMap{background-color:#f4f4f4;flex-grow:1;position:relative;min-height:600px}.storeTile{padding-block:20px}.storeTile:not(:last-child){border-bottom:1px solid #c2c2c2}.mapInfo .storeTile{margin:0;padding:0;position:relative;z-index:1}.storeTile__thumbnail{border-radius:8px;margin-bottom:12px;overflow:hidden}.storeTile__thumbnail figure{width:100%}.storeTile__thumbnail figure picture{display:block;padding-top:calc(115 / 266 * 100%);position:relative;width:100%}.storeTile__thumbnail figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.storeTile__title{font-size:1.25rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2;color:#333;margin-bottom:4px}.storeTile__title:not(:first-child){margin-top:0}.storeTile__address{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;color:#404040;margin-bottom:8px}.storeTileSpecs{--iconSpacing: 8px;align-items:center;display:flex;margin-bottom:16px}.mapInfo .storeTileSpecs{align-items:flex-start;flex-flow:column;margin-bottom:15px}.storeTileSpecs__title{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.53;margin-bottom:14px}.storeTileSpecs__iconWrap{display:flex;align-items:center}.mapInfo .storeTileSpecs__iconWrap{margin-bottom:12px}.storeTileSpecs__icon{color:#838385;font-size:1.5rem;margin-right:var(--iconSpacing)}.storeTileSpecs__iconInfo{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.23;margin-left:calc(-1*var(--iconSpacing))}.storeTileOrder{align-items:flex-start;background-color:#f7f5f0;border-radius:8px;display:flex;padding:10px 20px}.mapInfo .storeTileOrder{flex-wrap:wrap;padding:10px}.storeTileOrder__icon{color:#838385;flex-shrink:0;font-size:1.5rem;margin-right:8px}.storeTileOrder__details{font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;color:#333;margin-bottom:0}.mapInfo .storeTileOrder__details{margin-bottom:4px}.storeTileOrder__availability{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;color:#838385;margin-bottom:0}.mapInfo .storeTileOrder__availability{display:none}.mapInfo .storeTileOrder__actions{flex-basis:100%;margin-top:12px}.mapInfo .storeTileOrder__actions .button{width:100%}.storeTileOrder--details{align-items:center;margin-bottom:40px;padding:24px 21px}.storeTileOrder--details .storeTileOrder__icon{font-size:0;margin-right:17px;margin-top:-6px;width:51px;height:27px}.storeSearch{background-color:#fff;margin-bottom:32px;text-align:center}.storeSearch__inner{margin:0 auto;max-width:calc(480px + 2*var(--gridSpace))}.storeSearch p{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37;color:#333}.storeSearch p:last-of-type{margin-bottom:8px}.storeSearch .form{margin-bottom:0;padding-block:8px}.storeSearch .field{margin-bottom:0}.pin{cursor:pointer;display:inline-block;position:relative}.pin__count{font-size:1.375rem;font-weight:700;letter-spacing:-0.03em;line-height:1.36;color:#fff;display:inline-block;left:0;margin:0px 12px;position:absolute;right:0;text-align:center;top:20px}.mapInfo{background-color:#fff;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.08);max-width:290px;padding:48px 12px 12px;position:relative}.mapInfo:after{content:"";border-bottom-left-radius:4px;box-shadow:0 2px 12px rgba(0,0,0,.08);border:16px solid #000;border-color:transparent transparent #fff #fff;bottom:-32px;box-sizing:border-box;left:calc(50% - 22.625px);margin-left:0;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 0;transform-origin:0 0;width:0;height:0}.mapInfo:before{background-color:#fff;bottom:0;content:"";display:block;position:absolute;left:0;margin:0 auto;pointer-events:none;right:0;z-index:1;width:50px;height:50px}.mapInfo__close{color:#838385;font-size:1rem;position:absolute;right:19px;top:19px}.storeLocator{align-items:center;background-color:#dbe5e8;border-radius:8px;display:flex}.storeLocator__title{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.53;color:#333;margin-bottom:4px;text-align:center}.storeLocator__inner{align-items:center;display:flex;flex-flow:column;flex-grow:1;padding:20px}.storeLocator__sub{font-size:1rem;font-weight:400;letter-spacing:-0.02em;line-height:1.5;text-align:center;margin-bottom:20px}.storeLocator__illustration{flex-basis:300px;font-size:0}.storeLocator__illustration--right{margin-top:auto}.storeLocator__illustration--mob{display:none}.storeLocator__form{--fieldColumnSpace: 12px;--formMaxWidth: 530px;margin-bottom:0}.storeLocator__form .field{margin-bottom:0}.storeLocator__form .field--small{flex-grow:1}.storeLocator__form .field--small .button{flex-grow:1;width:100%}.storeHours{padding:40px 24px;position:relative;color:#333}.storeHours:after{content:"";background-color:#f7f5f0;border-radius:8px;z-index:-2}.storeHours .acc{border:0}.storeHours .acc p:last-child{margin-bottom:0}.storeHours .acc__header{padding:0}.storeHours .acc__content{padding:0}.storeHours p{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;color:inherit;margin-bottom:6px}.storeHours hr{border:0;border-top:1px solid #a6a6a6;margin:20px auto;max-width:227px}.storeHours__inner{margin:0 auto;max-width:728px}.storeHours__top{text-align:center;margin-bottom:18px;font-size:1.25rem;font-weight:400;letter-spacing:-0.03em;line-height:1.5}.storeHours__top p:last-child{margin-bottom:0}.storeHours__illustration{font-size:0;position:absolute;pointer-events:none;z-index:-1}.storeHours__illustration--left{top:0;left:0}.storeHours__illustration--right{bottom:25px;right:42px}.storeHours__illustration--mob{top:0;left:0}.storeHours strong{font-weight:500}.storeDetails__map{padding-top:calc(532 / 1001 * 100%);position:relative;width:100%;background-color:#f7f5f0;border-radius:8px;overflow:hidden;padding-top:53.1468531469%;position:relative}.storeDetails .storeTileSpecs{display:block;margin-bottom:32px}.storeDetails .storeTileSpecs__icon{margin-right:4px}.storeDetails .storeTileSpecs__iconInfo{font-size:0.9375rem;font-weight:500;letter-spacing:-0.03em;line-height:1.46;margin-left:0;margin-right:24px}.table{--paddingExternalX: 20px;--paddingExternalY: 20px;--cellPaddingX: 12px;--cellPaddingY: 20px;font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;margin:0 0 10px}.table table{border:none;border-collapse:collapse;text-align:left;width:100%}.table th,.table .mob-th{color:#000;font-weight:500;text-align:left}.table th{padding:var(--cellPaddingY) var(--cellPaddingX)}.table th:first-child{padding-left:var(--paddingExternalX)}.table th:last-child{padding-right:var(--paddingExternalX)}.table tr{border:3px solid transparent;border-left:0;border-right:0;position:relative}.table tbody tr{cursor:pointer}.table tbody tr:after{background-color:#f7f5f0;border-radius:8px;content:"";opacity:0;transition:opacity 250ms ease-in-out;z-index:-1}.table tbody tr.highlight:after{background-color:#fef8c6;opacity:1}.table td{padding:var(--cellPaddingY) var(--cellPaddingX);max-width:172px}.table td a{font-weight:400}.table td.table__tools{text-align:right;white-space:nowrap}.table td.table__tools .iconButton,.table td.table__tools .selectedFilters__remove{font-size:1.5rem}.table td.table__tools .iconButton:not(:last-child),.table td.table__tools .selectedFilters__remove:not(:last-child){margin-right:24px}.table .mob-th{display:none}.timetable{margin-bottom:88px}.timetable .swiper-wrapper{align-items:stretch}.timetable .swiper-slide{height:auto}.timetable__item{display:flex;flex-direction:column;padding:1px;height:100%}.timetable__day{background:#f7f5f0;border-bottom:1px solid #ececec;color:#333;display:flex;flex-direction:column;font-size:0.875rem;line-height:1.375;justify-content:center;margin-bottom:16px;height:56px}.timetable__dayName{font-size:1rem;font-weight:500}.timetable__hours--empty{align-items:center;border:1px solid #ececec;border-radius:4px;display:flex;flex:1;justify-content:center}.timetable__hour{align-items:center;border:1px solid #c2c2c2;border-radius:4px;color:#595959;display:flex;font-size:0.875rem;font-weight:500;justify-content:space-between;padding:8px 8px 8px 12px;text-align:left;transition:border-color 250ms ease-out;width:100%;height:40px}.timetable__hour:not(.timetable__hour--unavailable){cursor:pointer}.timetable__hour:not(:last-child){margin-bottom:8px}.timetable__hour--unavailable{border-color:#ececec;color:#d8d8d8}.timetable__hour--selected{background-color:#f2efe8;border-color:#74b11f}.timetable__hourVal{padding-right:8px;white-space:nowrap}.timetable__extraText{color:#333;font-size:0.6875rem;font-weight:400;letter-spacing:-0.02em;line-height:1.183;text-align:right}.timetable__hours--empty .timetable__extraText,.timetable__hour--unavailable .timetable__extraText{color:#d8d8d8}.timetableNav{transition:opacity 250ms ease-in-out}.timetableNav.swiper-button-disabled{opacity:0;pointer-events:none}.timetableNav--next:before{content:""}.timetableNav--prev:before{content:""}.tooltip{margin-left:8px;position:relative;z-index:2}.tooltip__main{background:#fff;border-radius:10px;bottom:calc(100% + 12px);-webkit-filter:drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2));filter:drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2));font-size:0.875rem;left:50%;line-height:1.3;margin-left:-100px;opacity:0;padding:16px;position:absolute;text-align:left;-webkit-transform:translateY(-8px);transform:translateY(-8px);transition:opacity 200ms ease-out,-webkit-transform 250ms ease-out;transition:opacity 200ms ease-out,transform 250ms ease-out;transition:opacity 200ms ease-out,transform 250ms ease-out,-webkit-transform 250ms ease-out;width:200px}.tooltip__main:after{border-style:solid;bottom:calc(-1*8px);content:"";left:50%;margin-left:calc(-1*8px);position:absolute;width:0;height:0;border-color:#fff transparent transparent transparent;border-width:8px 8px 0 8px}.tooltip:not(.tooltip--open) .tooltip__main{pointer-events:none}.tooltip--open .tooltip__main{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}.tooltip--bottom .tooltip__main{bottom:auto;box-shadow:0 -4px 15px rgba(51,51,51,.12);top:calc(100% + 12px)}.tooltip--bottom .tooltip__main:after{border-width:0 8px 8px 8px;border-color:transparent transparent #fff transparent;bottom:auto;top:-8px}.tooltip--bottom:not(.tooltip--open) .tooltip__main{-webkit-transform:translateY(8px);transform:translateY(8px)}.tooltip--right .tooltip__main{left:-16px;margin:0}.tooltip--right .tooltip__main:after{left:28px}.tooltip--left .tooltip__main{left:auto;margin:0;right:-16px}.tooltip--left .tooltip__main:after{left:auto;right:20px}.tooltip__btn{padding:0;transition:color 250ms ease}.topnav{margin:28px 0 16px;position:relative;z-index:5}.topnav__selected:before{content:""}.topnav__list{margin:0}.topnav__list li{padding-left:0;margin:0}.topnav__list li:after{display:none}.unavailabelBox{background-color:#f7f5f0;border-radius:8px;padding:16px}.checkoutStep__main .unavailabelBox{margin-bottom:12px}.unavailabelBox__title{font-size:1rem;font-weight:500;margin-bottom:8px}.minibasket .unavailabelBox__title{font-size:1rem}.unavailabelBox .listTools--noBorder{border:none;margin:-8px 0;padding-bottom:0;padding-top:12px}.basketTable__row--unavail .product__img{opacity:.5}.basketTable__row--unavail .product__title{color:#838385}.playvideo{position:relative}.playvideo__icon{--playsize: 32px;color:var(--buttonColor);cursor:pointer;font-size:2rem;padding:0;transition:color 250ms ease}.playvideo__icon:before{position:relative;z-index:1}.playvideo__icon:after{background-color:#fff;border-radius:50%;content:"";left:50%;margin:calc(1px - var(--playsize)/2) 0 0 calc(1px - var(--playsize)/2);position:absolute;top:50%;width:calc(var(--playsize) - 2px);height:calc(var(--playsize) - 2px)}.playvideo__icon:active{color:var(--buttonColorActive)}.playvideo__icon--lg{--playsize: 64px;font-size:4rem}.userAccountBtn{background-color:#65141b;border-radius:50%;color:#fff;cursor:pointer;font-size:1.25rem;font-weight:700;position:relative;transition:background-color 250ms ease-out;width:44px;height:44px}.userMenu{display:none;position:absolute;top:100%;z-index:3}.userMenu__content{background-color:#fff;border-radius:8px;box-shadow:0px 2px 12px rgba(51,51,51,.08);padding:60px 20px 20px 20px;position:relative;z-index:2;margin-top:12px}.userMenu__close{position:absolute;right:20px;top:20px;color:#333;font-size:1.5rem;cursor:pointer}.userMenu__list{margin:0}.userMenu__list li{padding-left:0;margin:0}.userMenu__list li:after{display:none}.userMenu__overlay{position:absolute;z-index:-1;cursor:pointer}.userMenu__content{width:296px}.userMenu__name{font-size:1.125rem;font-weight:500;margin-bottom:16px;text-align:center}.userMenu__listItem{color:var(--color);font-size:1rem;line-height:1.25;margin:0}.userMenu__listItem:not(:first-child){border-top:1px solid #ececec}.userMenu__link{--color: #333;--hoverColor: #838385;align-items:center;color:var(--color);display:inline-block;padding:16px 0;vertical-align:top}.userMenu__link--logout{--color: #F47920;--hoverColor: #F68D41}.gridBoxes{--gridBoxSpace: 12px;display:flex;flex-wrap:wrap;margin:40px 0 40px calc(-1*var(--gridBoxSpace))}.gridBoxes__box{margin:var(--gridBoxSpace);width:calc(33.33% - var(--gridBoxSpace)*2)}.contentBox{align-items:center;background-color:#f7f7f7;display:inline-flex;padding:40px;position:relative}.contentBox__icon{color:#ccc;font-size:2.75rem;margin-bottom:24px}.contentBox__title{color:#666;font-size:1.25rem;margin:0 0 24px}.contentBox__text{color:#999;font-size:0.875rem}.contentBox__text:last-child{margin-bottom:0}.contentBox__link{color:inherit;transition:color 250ms ease}.contentBox__link:before{content:""}.accountPage{position:relative}.userNavBlock{--tabItemHeight: 48px;margin-top:calc(var(--tabItemHeight)*-1 + 1px);margin-bottom:88px}.userNav{margin:0;display:flex;width:100%}.userNav li{padding-left:0;margin:0}.userNav li:after{display:none}.userNav__item{border-top-left-radius:8px;border-top-right-radius:8px;flex:1 1 0;overflow:hidden;text-align:center;height:var(--tabItemHeight)}.userNav__item:not(:last-child){margin-right:10px}.userNav__link{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33;align-items:center;background-color:#f2efe8;color:#838385;display:flex;flex-direction:column;justify-content:center;padding:12px;position:relative;transition:background-color 250ms ease-out;height:100%}.userNav__link.active{background-color:#fff;color:#333}.userNav__link:after{content:""}.accountDetails{align-items:flex-start;display:flex;justify-content:space-between}.accountDetails__form{flex:1}.accountDetails__box{width:376px;max-width:100%}.socialLogins{background-color:#f5f5f5;padding:24px}.socialLogins__title{margin:0 0 16px}.addBox{align-items:center;background:#f5f5f5;border:1px dashed #d6d6d6;border-radius:4px;display:flex;flex-direction:column;justify-content:center;padding:40px;position:relative;text-align:center}.addBox__icon{color:#c2c2c2;font-size:3.75rem;margin-bottom:32px}.addBox__text{margin-bottom:32px}.addBox__link:before{content:""}.addresses{--addressesGap: 32px;display:flex;gap:var(--addressesGap);flex-wrap:wrap}.addresses__box{border:1px solid #d6d6d6;border-radius:4px;padding:24px}.addresses__box,.addresses .addBox{width:calc(33.33% - var(--addressesGap)*2/3)}.addressBox{position:relative}.addressBox__tools{display:flex;flex-direction:column;position:absolute;right:4px;top:4px}.addressBox .address,.addressBox .orderSum__col,.addressBox address{margin-bottom:24px;padding-right:16px}.addressBox .form__row{margin-left:calc(-1*var(--fieldColumnSpace)/2);width:calc(100% + var(--fieldColumnSpace))}.addressBox .form__row:last-child{margin-bottom:calc(-1*var(--fieldRowSpace))}.address__title{color:#333;font-size:0.875rem;font-weight:bold;margin:0 0 16px}.address__more{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.address__more:last-child{margin-bottom:0}.miniBasketButton{font-size:1.125rem;font-weight:700;justify-content:space-between;padding:4px 10px;width:152px}.miniBasketButton__icon{display:inline-flex;font-size:1.5rem;margin-top:10px;position:relative}.miniBasketButton__no{margin-left:-6px;margin-top:-10px}.miniBasketButton .priceBlock{color:#fff}.miniBasketButton .priceBlock__price{font-weight:700}.basketMain__content{--mainLayoutSpace: 56px;padding-left:0}.basketTable{--imgWidth: 96px;--imgMarginRight: 24px}.checkoutStep__main .basketTable{margin-inline:auto;max-width:820px}.basketTable__row{align-items:center;display:flex;padding:4px 104px 4px 20px;position:relative}.basketTable__row:not(.basketTable__row--head){border-bottom:1px solid #ececec}.basketTable__row--head{align-items:flex-end;background-color:#f2efe8;border-radius:8px;padding-block:16px}.basketTable__row--head .basketTable__cell{color:#333;font-size:0.9375rem;font-weight:500}.basketTable__row--head .basketTable__cell:first-child{padding-left:16px}.basketTable__cell--price{flex-shrink:0;margin-right:40px;text-align:right;width:80px}.basketTable__cell--quant{flex-shrink:0;margin:0 32px;text-align:center;width:152px}.basketTable__row--head .basketTable__cell--quant{text-align:left}.basketTable__cell--button{width:232px}.minibasket .basketTable__cell--button{margin:0;width:100%}.basketTable__cell--more{width:100%}.basketTable__cell .product__img{flex-shrink:0;margin:0 var(--imgMarginRight) 0 0;padding:0;width:var(--imgWidth)}.basketTable__cell .product__title{margin:0;position:relative}.basketTable__cell .product__avail{margin:8px 0 0}.basketTable__no{font-weight:400}.basketTable .priceBlock__price{font-size:1.25rem;line-height:1.5}.basketTable .priceBlock__price--init{font-size:0.9375rem;line-height:1.467;margin-top:-5px}.basketTable__remove{margin-top:-16px;position:absolute;right:20px;top:50%}.basketTable .product__inner{align-items:center;flex-direction:row;position:static}.basketTable .fav{font-size:2rem;margin-top:-16px;right:60px;top:50%}.minibasket .basketTable{--imgWidth: 80px;--basketProductSpaceV: 16px}.minibasket .basketTable .basketTable__row:not(.basketTable__row--head){align-content:center;align-items:flex-start;flex-wrap:wrap;padding:var(--basketProductSpaceV) 8px var(--basketProductSpaceV) 96px;min-height:112px}.minibasket .basketTable .basketTable__remove{font-size:1.5rem;margin:0;right:8px;top:var(--basketProductSpaceV);z-index:2}.minibasket .basketTable .basketTable__cell--product{flex:auto;width:100%}.minibasket .basketTable .basketTable__cell--product:not(:last-child){margin-bottom:8px}.minibasket .basketTable .basketTable__cell--quant{margin:0}.minibasket .basketTable .basketTable__cell--price{align-items:flex-end;display:inline-flex;flex:1;justify-content:flex-end;margin:0;width:auto;height:34px}.minibasket .basketTable .fav{font-size:1.5rem;margin:0;right:40px;top:var(--basketProductSpaceV)}.minibasket .basketTable .product__img{left:8px;margin-top:-40px;position:absolute;top:50%}.minibasket .basketTable .product__title{font-size:0.9375rem;padding-right:72px}.sideBasket{background:#fff}.sideBasket__title:before{content:""}.cards{align-items:center;display:flex;flex-wrap:wrap;justify-content:center;margin:16px 0 0}.cards figure{margin:4px}.cards img{display:inline-block;vertical-align:top}.cards--inline{display:inline-flex;margin:-4px 0}.minibasket{--miniBasketWidth: 544px;--miniBasketSpaceH: 16px;--miniBasketProductSpaceTop: 16px;--miniBasketProductSpaceH: 12px;z-index:2}.minibasket__inner{background-color:#fff;position:fixed;right:0;top:var(--top);z-index:10;width:var(--miniBasketWidth);height:var(--windowHeight)}.minibasket__top{flex:1;scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.minibasket__top::-webkit-scrollbar{width:6px;height:6px}.minibasket__top::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.minibasket__top::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.minibasket__top::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.minibasket__top::-webkit-scrollbar-track{background:transparent}.minibasket__header{align-items:center;display:flex;padding:32px var(--miniBasketSpaceH) 24px}.minibasket__header .close-mini-cart{margin-left:auto}.minibasket__title{color:#333;font-size:1.25rem;font-weight:500;margin:0 16px 0 0}.minibasket__content{padding:0 var(--miniBasketSpaceH)}.minibasket__product{border-bottom:1px solid #ececec;padding:var(--miniBasketProductSpaceTop) var(--miniBasketProductSpaceH) 24px;position:relative}.minibasket__remove{position:absolute;right:var(--miniBasketProductSpaceH);top:var(--miniBasketProductSpaceTop);z-index:2}.minibasket__bottom{background:#fff;box-shadow:0px -2px 10px rgba(51,51,51,.1);padding:24px}.basketInfo{color:#595959;font-size:0.8125rem;letter-spacing:-0.02em;margin:16px 0 0;text-align:center}.sideBasket .basketInfo{margin-top:8px}.miniCart__main{display:flex;flex-direction:column;justify-content:space-between;height:100%}.miniCart__holder .loader{display:flex;min-height:240px}.miniCart__holder .loader__item{background-color:#999}.quantinyNo{align-items:center;background-color:#f0f0f0;border-radius:5px;display:inline-flex;justify-content:center;width:64px;height:48px}.form--basket{margin-block:32px}.secureCheckout{align-items:center;display:inline-flex}.secureCheckout__img{width:142px}.secureCheckout figure{width:100%}.secureCheckout figure picture{display:block;padding-top:calc(28 / 142 * 100%);position:relative;width:100%}.secureCheckout figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.checkout{--checkoutSpaceTop: 77px;padding:var(--checkoutSpaceTop) 0 0}.checkout .productsSum{position:-webkit-sticky;position:sticky;right:0;top:var(--checkoutSpaceTop)}.checkout__title{font-size:2.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.19;text-align:center;margin:0 0 99px}.checkout>h2{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.53;text-align:center;margin:0 0 25px}.checkout .acc__content{padding:0 0 32px}.checkoutSteps{counter-reset:checkoutstep}.checkoutStep{--checkoutStepSpace: 24px;border-bottom:1px solid #c2c2c2}.checkoutStep:first-child{border-top:1px solid #c2c2c2}.checkoutStep:last-child{border-bottom:0}.checkoutStep--bottomInfo{border:0;padding-top:5px;color:#333}.checkoutStep--bottomInfo p{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;color:inherit;margin:0 0 8px}.checkoutStep.checkoutStep--final .checkoutStep__main{padding:var(--checkoutStepSpace) 0}.checkoutStep__main .form,.checkoutStep__main .form__row:last-child .field{margin-bottom:0}.checkoutStep__edit{margin:0 calc(-1*var(--iconButtonSpace));position:absolute;right:var(--checkoutStepSpace);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.commentsBlock{display:none;position:relative}.showComments{left:0;position:absolute;top:0;transition:opacity 250ms ease-in-out}.showComments.active{opacity:0;pointer-events:none}.checkoutProducts{margin-bottom:16px}.checkoutProducts .acc__header{justify-content:space-between}.checkoutProducts .acc__icon{margin-right:-8px}.checkoutMsg{color:#333;text-align:center;margin:0 0 40px}.checkoutMsg img{margin-bottom:19px;width:124px;height:124px}.checkoutMsg__title{font-size:1.875rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2;color:inherit;margin:0}.checkoutMsg p{color:inherit;margin:0 0 11px}.checkoutMsg .button{margin-top:43px}.checkoutMsg__code{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37}.checkoutMsg__code strong{font-size:1.125rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2}.checkoutTracking{align-items:center;background-color:#f2efe8;border-radius:8px;color:#333;display:flex;margin:0 auto 60px;padding:20px;max-width:821px}.checkoutTracking__inner{flex-grow:1;width:100%}.checkoutTracking p{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33;color:inherit;margin:0 0 5px}.checkoutTracking ul li{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47}.checkoutTrackingMsg{text-align:center;color:#333;margin:40px 0}.checkoutTrackingMsg p{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37;color:inherit;margin:0}.printRow{display:flex;justify-content:flex-end}.printRow .icon{color:#333}.loyalty{background-color:#f7f5f0;border-radius:8px;padding:20px;margin:40px 0 48px}.loyalty__img{flex-shrink:0;font-size:0;display:flex;align-items:center}.loyalty__img img{width:80px;height:80px}.loyalty__img img:not(:last-child){margin-right:8px}.loyalty__inner{display:flex;flex-grow:1}.loyalty__col{flex:1 1 0}.loyalty__col:not(:last-child){margin-right:1px}.loyalty__row{align-items:center;display:flex;flex-flow:row;flex-wrap:nowrap;flex-grow:1}.loyalty__row:not(:last-child){margin-bottom:1px}.loyalty__cell{align-items:center;background-color:#fff;display:flex;flex-flow:row;flex-wrap:nowrap;flex:1 1 0;justify-content:space-between;padding:10px 14px;height:100%}.loyalty__cell span{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28}.loyalty__cell span:first-child{margin-right:15px}.loyalty__table{display:flex;flex-grow:1;flex-flow:column}.loyaltyList{text-align:left;max-width:520px;margin:40px auto 30px;padding:0}.loyaltyList li{font-size:1.25rem;font-weight:400;letter-spacing:-0.03em;line-height:1.5;display:inline-block}.loyaltyList li:not(:last-child){margin-bottom:13px}.loyaltyList li:after{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.loyaltyList li .field__input--inlineB{margin:0 5px}.loyaltyList li:nth-child(2):after{top:20px}.contactinfo{margin-bottom:42px}.contactinfo__section{margin-bottom:32px}.contactinfo__subtitle{font-weight:500;margin:0 0 8px}.contactinfo__link{align-items:center;color:#333;display:inline-flex;flex-wrap:wrap;font-size:0.8125rem;font-weight:500;line-height:1;margin:8px 0}.contactinfo__link:active{color:#f47920}.contactinfo__link:active .contactinfo__icon{color:#f47920}.contactinfo__icon{color:#838385;font-size:1.5rem;margin:0 8px 0 4px}.contactinfo__note{color:#838385;font-size:0.875rem;font-weight:400;letter-spacing:-0.01em}.gallery{display:flex;flex-wrap:wrap;max-width:1017px;margin:0 auto 40px}.gallery__figure{width:100%;margin:10px 0;max-width:318px}.gallery__figure figure{width:100%}.gallery__figure figure picture{display:block;padding-top:calc(203 / 318 * 100%);position:relative;width:100%}.gallery__figure figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.gallery__figure img{border-radius:8px;cursor:pointer}.galleryMainImg{width:100%;margin:0 0 20px;--swiper-navigation-size: 40px}.galleryMainImg__slide img{max-height:calc(100vh - 220px);border-radius:8px}.galleryThumbs{max-width:468px;margin:0 auto;padding-bottom:30px;width:100%}.galleryThumbs .swiper-slide-thumb-active img{border-color:#74b11f}.galleryThumbs__slide{cursor:pointer}.galleryThumbs img{border-radius:6px;border:solid 2px transparent}.gallerySlider{height:100%;display:flex;flex-wrap:wrap;align-items:center;flex-direction:column;justify-content:center;padding:20px 10px}.history{--historycnt: 92px;--hthumb: 160px}.history__sections{border-bottom:1px solid #ececec;margin-bottom:32px;padding-bottom:40px}.history__mainimg{margin-bottom:72px;position:relative}.history__mainimg figure{width:100%}.history__mainimg figure picture{display:block;padding-top:calc(500 / 984 * 100%);position:relative;width:100%}.history__mainimg figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.history__section{display:flex;flex-wrap:wrap}.history__date{font-size:0.875rem;font-weight:700;letter-spacing:-0.02em;padding-right:52px;position:relative;text-align:right;width:var(--historycnt)}.history__date:before,.history__date:after{content:"";position:absolute;right:44px}.history__date:before{width:10px;height:10px;background:#f47920;border-radius:50%;margin-right:-5px;top:4px}.history__date:after{border-left:1px dashed #a6a6a6;top:22px;height:calc(100% - 22px - 5px)}.history__content{margin-bottom:40px;width:calc(100% - var(--historycnt))}.history__thumb{flex-shrink:0;position:relative;width:var(--hthumb)}.history__thumb figure{width:100%}.history__thumb figure picture{display:block;padding-top:calc(120 / 160 * 100%);position:relative;width:100%}.history__thumb figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.history__description p:last-child{margin-bottom:0}.landingList{--colGap: 16px;--landingItemSpace: 16px;--landingTitleMobSpace: 8px;display:flex;flex-wrap:wrap;-webkit-column-gap:var(--colGap);-moz-column-gap:var(--colGap);column-gap:var(--colGap);row-gap:48px}.landingList__item{display:inline-flex;flex-direction:column;padding:var(--landingItemSpace) 0;position:relative;width:calc(16.66% - 5*var(--colGap)/6)}.landingList__item.active{z-index:1}.landingItem{text-align:center}.landingItem--box{background:#fff;border-radius:8px;padding:16px 16px 24px}.swiper-slide-visible .landingItem--box{box-shadow:0px 0px 24px rgba(51,51,51,.08)}.landingItem__img{padding:0 var(--landingItemSpace);pointer-events:none}.landingItem__img figure{width:100%}.landingItem__img figure picture{display:block;padding-top:calc(156 / 205 * 100%);position:relative;width:100%}.landingItem__img figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.landingItem--box .landingItem__img{margin-bottom:12px}.landingItem__link{color:var(--buttonColor);font-size:0.9375rem;font-weight:500;margin:16px 0 0}.landingItem__link:before{content:""}.landingItem__link:active{color:var(--buttonColorActive)}.landingItem__title{align-items:center;border-radius:8px;color:#333;display:inline-flex;flex:1;font-size:0.9375rem;font-weight:500;justify-content:center;line-height:1.4;margin:0;padding:var(--landingItemSpace);transition:color 250ms ease}.landingItem__title:before{background:url(../media/wood.png) repeat center;content:"";opacity:0;transition:opacity 250ms ease-in-out;z-index:-1}.landingItem:not(.landingItem--box) .landingItem__title{overflow:hidden;position:relative;pointer-events:none}.landingItem--box .landingItem__title:active{color:var(--buttonColorActive)}.landingItem--box .landingItem__title:after{content:""}.landingItem__desc{color:#838385;font-size:0.8125rem;letter-spacing:-0.02em;line-height:1.23;margin:8px 0 0}.landingItem__submenu{margin:0;scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;background:#fff;box-shadow:0px 2px 12px rgba(51,51,51,.08);border-radius:8px;display:none;left:0;padding:var(--landingItemSpace) 0;position:absolute;top:calc(100% - var(--landingItemSpace) + 8px);width:100%;max-height:472px}.landingItem__submenu li{padding-left:0;margin:0}.landingItem__submenu li:after{display:none}.landingItem__submenu::-webkit-scrollbar{width:6px;height:6px}.landingItem__submenu::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.landingItem__submenu::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.landingItem__submenu::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.landingItem__submenu::-webkit-scrollbar-track{background:transparent}.landingItem__submenuItem{font-size:0.875rem;line-height:1.429;margin:0;text-align:left}.landingItem__submenuLink{color:#333;display:block;padding:12px var(--landingItemSpace);transition:color 250ms ease}.newListLink:before{color:#f47920}.listsBlock{z-index:3}.listsBlock__inner{background:#fff;box-shadow:0px 4px 10px rgba(51,51,51,.25);border-radius:6px;padding:16px;position:relative}.listsBlock__title{color:#333;font-size:0.875rem;font-weight:500;line-height:1;margin:0 0 24px}.listsBlock__list{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;border-bottom:1px solid #c2c2c2;margin-bottom:16px;padding-bottom:16px;max-height:176px}.listsBlock__list::-webkit-scrollbar{width:6px;height:6px}.listsBlock__list::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.listsBlock__list::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.listsBlock__list::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.listsBlock__list::-webkit-scrollbar-track{background:transparent}.listsBlock__close{position:absolute;right:0;top:0}.listsBlock__item:not(:first-child){margin-top:16px}.listsBlock__item:not(:last-child){margin-bottom:16px}.listsBlock__name{align-items:center;color:#333;display:flex;font-size:0.875rem;font-weight:500;line-height:1.2;padding-left:36px;position:relative;min-height:24px}.listsBlock__name:before{font-size:2rem;left:0;margin-top:-16px;position:absolute;top:50%;width:32px;height:32px}.myLists:not(.myLists--grid){text-align:right}.myLists--grid{--listsGap: 24px;display:flex;flex-wrap:wrap;gap:var(--listsGap)}.myLists--grid .myList{width:calc(33.33% - 2*var(--listsGap)/3)}.myLists--row{--listsGap: 24px;display:flex;gap:var(--listsGap)}.myLists__new{margin:12px 0}.myList{align-items:center;display:flex;justify-content:flex-start;position:relative;text-align:left}.myList:not(.myList--box){border-bottom:1px solid #c2c2c2;padding:12px 80px 12px 0}.myList--box{border:1px solid #d8d8d8;border-radius:8px;padding:24px 12px;min-height:80px}.myList--box:before{content:""}.myList--box:after{box-shadow:0px 6px 16px rgba(51,51,51,.15);content:"";opacity:0;pointer-events:none;transition:opacity 250ms ease-in-out}.myList--box:before{bottom:0;color:rgba(255,255,255,.6);font-size:4rem;position:absolute;right:0}.myList--box.myList--new:before{color:rgba(244,121,32,.5)}.myList--box.myList--fav:before{content:""}.myList--box.myList--fav:before{color:rgba(51,51,51,.1)}.myList--new{border-color:#f47920;border-style:dashed}.myList__icon{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center}.myList__icon:after{background-color:var(--listColor);content:"";border-radius:8px;z-index:-1}.myList:not(.myList--box) .myList__icon{font-size:2rem;margin-right:20px;position:relative;width:60px;height:60px}.myList:not(.myList--box) .myList__icon:before{width:32px;height:32px}.myList--box .myList__icon{font-size:2rem;margin-right:8px}.myList--box .myList__icon:before{width:32px;height:32px}.myList__title{color:var(--buttonColor);display:block;font-size:1.125rem;font-weight:700;line-height:1.2;margin:0}.myList__title:active{color:var(--buttonColorActive)}.myList__title:after{content:""}.myList--box .myList__title{font-size:1.375rem}.myList--editView .myList__title{padding-right:48px}.myList--box .myList__link,.myList--box .myList__titleInner{position:relative;z-index:1}.myList__link{pointer-events:none}.myList__no{font-size:0.9375rem;font-weight:500}.myList__tools{display:flex;margin-top:-12px;position:absolute;right:12px;top:50%}.myList__tools .iconButton:not(:last-child),.myList__tools .selectedFilters__remove:not(:last-child){margin-right:8px}.myList__edit{position:absolute;right:8px;top:8px}.myList__new:after{content:""}.productList .product,.productsSlider .product{box-shadow:0 2px 12px rgba(51,51,51,.08);border-radius:8px;padding:var(--productPadding);transition:box-shadow 350ms ease-out}.productList{--productSpaceH: 24px;--productSpaceV: 24px;display:flex;flex-wrap:wrap;gap:var(--productSpaceV) var(--productSpaceH)}.productList .product{width:calc(20% - 4*var(--productSpaceH)/5)}.productList .quantity{max-width:100%}.listTools{border-bottom:1px solid #c2c2c2;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:-8px;padding:0 0 8px}.listTools__counter{font-size:0.875rem;font-weight:400;letter-spacing:-0.01em;line-height:1.28;margin-right:auto}.minibasket .listTools{justify-content:flex-start}.listTools .link,.listTools .text a,.text .listTools a,.listTools p a,p .listTools a,.listTools .button{margin-top:8px;margin-bottom:8px;white-space:nowrap}.listTools .link:not(:last-child),.listTools .text a:not(:last-child),.text .listTools a:not(:last-child),.listTools p a:not(:last-child),p .listTools a:not(:last-child),.listTools .button:not(:last-child){margin-right:16px}.orderRow{--orderColGap: 32px;--orderRowGap: 16px;--orderProductWidth: 80px;--orderProductGap: 8px;--orderProductsWidth: calc(var(--orderProductWidth)*3 + var(--orderProductGap)*2);border-bottom:1px solid #e6e6e6;padding:24px 0}.orderRow__items{grid-area:1/1/3/2;text-align:center}.orderRow__itemsInner{display:flex;gap:var(--orderProductGap)}.orderRow__itemsInner:not(:last-child){margin-bottom:8px}.orderRow__itemsInner .product{width:var(--orderProductWidth)}.orderRow__itemsInner .product__img{margin:0}.orderRow__status{grid-area:1/2/2/5}.orderRow__info--1{grid-area:2/2/3/3}.orderRow__info--2{grid-area:2/3/3/4}.orderRow__info--3{grid-area:2/4/3/5}.orderHistory{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;--outerPaddingY: 24px;--outerPaddingX: 16px;--qrWidth: 123px;--qrMargin: 19px;background-color:#f7f5f0;border-radius:8px;display:flex;flex-wrap:wrap;padding:var(--outerPaddingY) var(--outerPaddingX);position:relative;width:100%}.orderHistory:not(:last-child){margin-bottom:24px}.orderHistory__qr{width:var(--qrWidth);flex-shrink:0}.orderHistory__section{display:flex;flex:1 1 0;padding-right:20px}.orderHistory__section--top{align-items:center;flex-basis:100%;flex-flow:row;margin-bottom:20px;padding-right:130px}.orderHistory__section--top .copyText{margin-left:10px}.orderHistory__sectionInner{display:flex;flex-flow:column}.orderHistory strong{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37}.orderHistory figure{width:100%}.orderHistory figure picture{display:block;padding-top:calc(123 / 123 * 100%);position:relative;width:100%}.orderHistory figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.orderHistory.highlight{background-color:#fef8c6}.orderHistory.highlight .indicator{font-size:0.8125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.15;background-color:#fff;padding:4px 8px;border-radius:8px}.orderHistory.highlight .indicator:before{display:none}.orderHistory .indicator{position:absolute;top:var(--outerPaddingY);right:var(--outerPaddingX)}.copyText{align-items:center;display:inline-flex;position:relative}.copyText__btn{margin:calc(-1*var(--iconButtonSpace)) calc(-1*var(--iconButtonSpace)) calc(-1*var(--iconButtonSpace)) 0}.copyText__tooltip{background:#fff;border-radius:10px;-webkit-filter:drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2));filter:drop-shadow(1px 2px 2px rgba(51, 51, 51, 0.1)) drop-shadow(2px 4px 4px rgba(51, 51, 51, 0.2));font-size:0.875rem;left:100%;line-height:1.3;margin-left:8px;opacity:0;padding:12px;position:absolute;top:50%;-webkit-transform:translate3d(8px, -50%, 0);transform:translate3d(8px, -50%, 0);transition:opacity 200ms ease-out,-webkit-transform 250ms ease-out;transition:opacity 200ms ease-out,transform 250ms ease-out;transition:opacity 200ms ease-out,transform 250ms ease-out,-webkit-transform 250ms ease-out}.copyText__tooltip--open{opacity:1;-webkit-transform:translate3d(0, -50%, 0);transform:translate3d(0, -50%, 0)}.orderSum{--orderSumColSpace: 24px;display:flex;flex-wrap:wrap}.orderSum--border{border:1px solid #fff;margin-bottom:24px}.orderSum--border .orderSum__col{padding:var(--orderSumColSpace)}.orderSum__col{flex:1}.orderSum__col:not(:first-child){padding-left:var(--orderSumColSpace)}.orderSum__col:not(:last-child){padding-right:var(--orderSumColSpace)}.orderSum__col .address:not(:last-child),.orderSum__col address:not(:last-child),.orderSum__col .orderSum__col:not(:last-child){margin-bottom:24px}.orderSum__title{color:#333;font-size:0.875rem;font-weight:bold;margin:0 0 8px}.orderSum__colTitle{color:#333;margin:0 0 8px}.orderStatusInfo{align-items:baseline;display:flex;flex-wrap:wrap;margin-bottom:32px}.orderNo{background-color:#f0f0f0;color:gray;border-radius:5px;font-size:1rem;padding:8px}.orderNo b{font-size:1.25rem}.orderStatusInfo .orderNo{margin-right:16px}.orderTrack{align-items:center;background-color:#fef8c6;border-radius:8px;display:flex;margin:0 0 20px;padding:8px 12px;position:relative}.acc__content .orderTrack{margin:2px 0}.orderTrack strong{font-weight:500}.orderTrack__action{margin-left:auto}.orderTrack__action:after{content:""}.orderTrack__inner{align-items:center;display:flex;margin-right:10px}.orderTrack__text{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.23;color:#000;margin:0 13px 0 0}.productPage{--mainButtonWidth: 232px;--productImageColSpace: 56px;margin:48px 0 56px}.productPage__imageCol{position:relative}.productPage__imageMain{margin-bottom:64px}.productPage__imageMain .wishlistButton{position:absolute;right:20px;top:20px;z-index:2}.productPage__image{cursor:url("data:image/svg+xml,%3Csvg width='48' height='48' viewBox='0 0 48 48' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg opacity='0.5'%3E%3Ccircle cx='24' cy='24' r='24' fill='black'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.52 14.52H22.52V22.52H14.52V24.52H22.52V32.52H24.52V24.52H32.52V22.52H24.52V14.52Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A") 16 16,pointer}.productPage__image figure{width:100%}.productPage__image figure picture{display:block;padding-top:calc(457 / 457 * 100%);position:relative;width:100%}.productPage__image figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.productPage__info{grid-area:product_content}.productInfo__flag{color:#999;font-size:0.875rem;line-height:1;margin:0}.productInfo__title{font-size:1.75rem;font-weight:500;letter-spacing:-0.03em;line-height:1.2;margin:8px 0}.productInfo__desc{color:#404040;font-size:0.9375rem;line-height:1.33;margin:0 0 24px}.productInfo__code{color:#838385;font-size:0.8125rem;letter-spacing:-0.01em;line-height:1.231;margin:0}.productInfo__code:not(:last-child){margin-right:12px}.productInfo__codeWrap{display:flex;margin-bottom:16px}.productInfo__quantity{margin:21px 0 36px}.productInfo .priceContainer{margin:0 0 16px}.productAttr{margin:0 0 40px;max-width:568px}.productAttr__title{display:flex;margin:0 0 8px}.productAttr__label{color:#999;font-size:0.875rem;font-weight:600;margin-right:8px}.productAttr__selected{color:#333;font-size:0.875rem;font-weight:600}.productAttr__selectedDefault{color:#ccc}.productAttr__main{--radioColorSpace: 8px;display:flex;flex-wrap:wrap;margin-left:calc(-1*var(--radioColorSpace));width:calc(100% + var(--radioColorSpace)*2)}.productAttr__main .radiobutton{margin:var(--radioColorSpace)}.addProduct{align-items:center;display:flex;margin:0 0 16px}.addProduct>*:not(:last-child){margin-right:16px}.addToCartButton:before{content:""}.addToCartButton--added{background-color:#333}.addToCartButton--added:before{content:""}.addToCartButton--added .addToCartButton__text--default{display:none}.addToCartButton--loading:before,.addToCartButton--loading .addToCartButton__text{display:none}.addToCartButton--loading .loader{display:block}.addToCartButton:not(.addToCartButton--added) .addToCartButton__text--added{display:none}.addToCartButton:not(.addToCartButton--loading) .loader{display:none}.productDetails{border-top:1px solid #d8d8d8;margin-top:32px;padding-top:32px}.productDetails__heading{color:#333;font-size:1.375rem;font-weight:500;letter-spacing:-0.03em;line-height:1.36;margin:0 0 32px}.productDetails__title{margin:0}.productDetails__content{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;color:#404040}.productDetails__content p{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47;color:inherit}.productDetails__content p:last-of-type{margin-bottom:0}.productDetailsNutrTable{display:inline-flex;flex-direction:column;flex-wrap:wrap;width:100%}.productDetailsNutrTable table{border-collapse:collapse;margin-bottom:15px}.productDetailsNutrTable table:last-child{margin-bottom:0}.productDetailsNutrTable th{border:none;font-size:0.8125rem;font-weight:500;color:#595959;letter-spacing:-0.02em;line-height:1.15;padding:6px 16px;text-align:right}.productDetailsNutrTable td{border-bottom:solid 1px #fff;color:#333;font-size:0.875rem;font-weight:500;letter-spacing:-0.01em;line-height:1.28;padding:10px 14px;text-align:right}.productDetailsNutrTable td:first-child{font-weight:400;text-align:left}.productDetailsNutrTable .highlight{background:#ececec}.productSliderModal .modal__wrap{padding:48px 32px 32px}.productThumbs{--thumbImageWidth: 80px}.productThumbs__slide{border-radius:6px;cursor:pointer;overflow:hidden;position:relative;width:var(--thumbImageWidth);height:var(--thumbImageWidth)}.productThumbs__slide:after{border:1px solid #f47920;border-radius:inherit;content:"";opacity:0;transition:opacity 250ms ease-in-out}.productThumbs__slide figure{width:100%}.productThumbs__slide figure picture{display:block;padding-top:calc(80 / 80 * 100%);position:relative;width:100%}.productThumbs__slide figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.productThumbs__slide.swiper-slide-thumb-active:after{opacity:1}.productThumbs .swiper-button-prev,.productThumbs .swiper-button-next{margin:0}.productThumbs .swiper-button-prev:before,.productThumbs .swiper-button-next:before{content:""}.productThumbs .swiper-button-prev:after,.productThumbs .swiper-button-next:after{z-index:2}.productThumbs .swiper-button-prev:after{content:""}.productThumbs .swiper-button-prev:after{content:""}.productThumbs .swiper-button-next:after{content:""}.productThumbs .swiper-button-next:after{content:""}.productThumbs .swiper-pagination{position:static;margin-top:19px}.productMainImg{--productMainImgWidth: 560px;margin:0 auto;width:100%;max-width:942px}.productMainImg__slide figure{width:100%;margin:0 auto;max-width:var(--productMainImgWidth)}.productMainImg__slide figure picture{display:block;padding-top:calc(560 / 560 * 100%);position:relative;width:100%}.productMainImg__slide figure img{inset:0;-o-object-fit:contain;object-fit:contain;position:absolute;width:100%;height:100%}.productMainImg .swiper-pagination{position:static}.productMainImg .imgControl{margin:60px 0 32px}.productHeader{background-color:#fff;box-shadow:0px 1px 1px rgba(51,51,51,.1),0px 2px 2px rgba(51,51,51,.15),0px 4px 4px rgba(51,51,51,.2);left:0;position:fixed;top:0;transition:-webkit-transform 250ms ease-out;transition:transform 250ms ease-out;transition:transform 250ms ease-out, -webkit-transform 250ms ease-out;-webkit-transform:translateY(-120%);transform:translateY(-120%);z-index:9;width:100%}.productHeader.active{-webkit-transform:translateY(0);transform:translateY(0)}.productHeader .product{align-items:center;display:flex;justify-content:space-between;margin:0 auto;padding:8px var(--gridSpace);max-width:var(--wrapper)}.productHeader .product__block{align-items:center;display:flex;position:relative}.productHeader .product__img{flex-shrink:0;margin:0 16px 0 0;width:72px}.productHeader .product__more{margin:0 16px 0 0}.productHeader .product__desc:last-child{margin-bottom:0}.productHeader .priceContainer{margin-right:16px}.notifyMe{position:relative;z-index:1}.notifyMe__button.active{background-color:#333;color:#fff}.notifyMe__button:not(.notifyMe__button--loading) .loader{display:none}.notifyMe__button.notifyMe__button--loading .notifyMe__buttonText{display:none}.notifyMe__main{background-color:#ebebeb;display:none;left:0;margin-top:16px;padding:24px;position:absolute;top:100%;width:560px;max-width:48vw}.notifyMe__form{margin-bottom:0}.notifyMe .field:last-child{margin-bottom:0}.cartAdd.error-message{background-color:#f9d0d5;color:#d91a32;display:inline-block;margin-bottom:16px;padding:8px}.sitemapnav{padding:24px 0 12px}.acc__content .sitemapnav{padding-top:8px}.sitemapnav__ul{list-style:none;margin:0 0 -24px}.sitemapnav__li{color:#333;font-size:0.9375rem;font-weight:500;letter-spacing:-0.03em;margin-bottom:24px;padding:0}.sitemapnav__li:after{content:none}.sitemapnav__link{color:var(--buttonColor)}.sitemapnav__link:active{color:var(--buttonColorActive)}.sitemap .acc:last-child{border-bottom:none}.sitemap .acc:last-child .acc__content{padding:0}.couponBlock__form{margin-bottom:0}.couponBlock__field{margin-bottom:0;position:relative}.couponBlock__field.completed .field__input{border:none;width:100px}.couponBlock__field:not(.completed) .field__input{padding-right:32px}.couponBlock__field:not(.completed) .field__wrap{width:100%}.couponBlock__btn{align-items:center;display:flex;font-size:1.5rem;justify-content:center;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:32px;height:32px}.couponBlock__btn:before{content:""}.couponBlock__clear{font-size:1.5rem}.couponBlock__clear:before{content:""}.priceRow--coupon{color:#999;margin-top:0}.progressBlock__bar{background-color:#fff;border-radius:6px;margin:0 0 24px;height:6px}.progressBlock__progress{background-color:#666;border-radius:6px;height:100%}.progressBlock__info{color:gray;font-size:0.875rem;margin:0 0 8px}.progressBlock__remain{color:#333;font-size:1rem}@media (min-width: 480px){.sectionTitle__main:not(:last-child){margin-right:12px}.button{min-width:216px}.button--s{min-width:120px}.range__submit{min-width:initial}.storeLocator__form .field--small .button{min-width:initial}.table{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.table::-webkit-scrollbar{width:6px;height:6px}.table::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.table::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.table::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.table::-webkit-scrollbar-track{background:transparent}.table td:first-child{padding-left:var(--paddingExternalX)}.table td:last-child{padding-right:var(--paddingExternalX)}.miniBasketButton{min-width:152px}.checkoutTracking__action{min-width:185px}.addToCartButton{min-width:var(--mainButtonWidth)}.notifyMe__button{min-width:var(--mainButtonWidth)}}@media (min-width: 640px){.ordersBanner{align-items:center;display:flex}.form__title{margin-inline:calc(var(--fieldColumnSpace)/2)}.form--address .form__col{width:44%}.field--half{width:calc(50% - var(--fieldColumnSpace))}.field--map{margin:0}.field__map{position:absolute;right:0;top:0;width:50%}.form--address .field__map{width:calc(56% - 12px);height:100%}.field__map .field__mapInner{padding:0;height:100%}.radiobuttons--inline,.checkboxes--inline{flex-wrap:wrap}.formTip{margin-inline:calc(var(--fieldColumnSpace)/2)}.storeTileOrder__info{padding-right:32px}.storeTileOrder__actions{margin:auto 0 auto auto}.mapInfo .storeTileOrder__actions{margin-top:12px}.storeTileOrder__actions .button{font-size:0.8125rem;letter-spacing:-0.02em;min-height:34px}.storeTileOrder__actions .button .icon{margin:-3px 4px -3px 0}.gridBoxes{width:calc(100% + var(--gridBoxSpace)*2)}.contentBox{flex-direction:column;text-align:center}.contentBox__text{max-width:272px}.basketTable__cell--product{flex:1}.basketTable__cell--button{margin:0 72px 0 32px}.history__content{align-items:flex-start;display:flex}.history__description{flex:1;padding-left:20px}.listsBlock{display:none;position:absolute;right:20px;top:-8px;width:232px;max-width:calc(100% + 8px)}.wishlistButton.open .listsBlock{display:block}.listsBlock__bg{display:none}.listTools{margin-bottom:16px}.minibasket .listTools:not(.listTools--noBorder){margin-bottom:4px}.orderRow{display:grid;grid-template-columns:var(--orderProductsWidth) minmax(0, 1.1fr) minmax(0, 2.15fr) minmax(0, 0.75fr);grid-template-rows:fit-content(21px) 1fr;grid-column-gap:var(--orderColGap);grid-row-gap:var(--orderRowGap)}.productThumbs .swiper-button-prev,.productThumbs .swiper-button-next{width:100%}.productThumbs .swiper-button-prev{top:0}.productThumbs .swiper-button-prev:before{background:linear-gradient(to bottom, white 0%, rgba(255, 255, 255, 0) 100%)}.productThumbs .swiper-button-next{bottom:0;top:auto}.productThumbs .swiper-button-next:before{background:linear-gradient(to top, white 0%, rgba(255, 255, 255, 0) 100%)}.sitemapnav__ul{column-count:2}.sitemapnav__li{display:inline-block;padding-right:24px;vertical-align:top;width:100%}}@media (min-width: 640px)and (max-width: 767px){.basketTable__cell--button{margin:0 16px}.orderRow{grid-template-columns:minmax(0, 1fr) minmax(0, 2.25fr) minmax(0, 0.75fr);grid-template-rows:auto}}@media (min-width: 640px)and (min-width: 480px){.storeTileOrder__actions .button{min-width:120px}}@media (min-width: 768px){.mobileOnly{display:none}h2{font-size:1.625rem;letter-spacing:-0.03em;margin:0 0 32px}.footer__col:not(:last-child){margin-right:var(--footerColSpace)}.footer__col:not(:first-child){margin-left:var(--footerColSpace)}.header__tool{position:relative}.acc--mobOnly .acc__header{pointer-events:none}.acc--mobOnly .acc__icon{display:none}.acc--mobOnly:not(.open) .acc__content{display:block}.acc__headerInner{margin-right:32px}.acc__headerInnerTitle{min-width:250px}.acc__headerInnerTitle--info{min-width:initial}.acc__headerInnerTitle--sum{min-width:initial}.article--horizontal{display:flex;min-height:268px}.articleFeatured .article--horizontal{min-height:352px}.article--horizontal .article__img{flex-basis:35.62%;position:relative}.articleFeatured .article--horizontal .article__img{flex-basis:50%}.article--horizontal .article__img figure{inset:0;position:absolute;width:100%;height:100%;width:100%}.article--horizontal .article__img figure picture{display:block;padding-top:calc(352 / 626 * 100%);position:relative;width:100%}.article--horizontal .article__img figure img{inset:0;object-fit:contain;position:absolute;width:100%;height:100%}.article--horizontal .article__img figure img{object-fit:cover}.article--horizontal .article__img picture{inset:0;position:absolute;width:100%;height:100%}.article--horizontal .article__date{margin-bottom:4px}.article--horizontal .article__title{font-size:1.25rem;font-weight:500;letter-spacing:-0.03em;line-height:1.5;margin-bottom:16px}.articleFeatured .article--horizontal .article__title{font-size:1.625rem;font-weight:500;letter-spacing:-0.02em;line-height:1.38;margin-bottom:20px}.article--horizontal .article__info{align-items:flex-start;display:flex;flex-basis:50%;flex-grow:1;flex-flow:column;justify-content:center;padding:32px}.article--horizontal .article__text{-webkit-line-clamp:initial}.breadcrumb__item:not(:last-child){margin-right:12px;padding-right:12px}.breadcrumb__item:not(:last-child):before{background-color:#c2c2c2;content:"";margin-top:-11px;position:absolute;right:0;top:50%;width:1px;height:22px}.catalogue--wide .catalogue__img figure{width:100%}.catalogue--wide .catalogue__img figure picture{display:block;padding-top:calc(314 / 1258 * 100%);position:relative;width:100%}.catalogue--wide .catalogue__img figure img{inset:0;object-fit:contain;position:absolute;width:100%;height:100%}.deliveryFlowNav{margin-top:8px;right:88px}.radiobutton--deliveryType{background:#f2efe8;border-radius:8px;padding:32px 12px;min-height:272px}.radiobutton--deliveryType .radiobutton__label{padding:0;position:static}.form{margin-left:calc(-1*var(--fieldColumnSpace)/2);width:calc(var(--formMaxWidth) + var(--fieldColumnSpace));max-width:calc(100% + var(--fieldColumnSpace))}.orderTrack .indicator{border-right:1px solid #958d7b;margin-right:12px;padding-right:12px}.newsletter__inner{align-items:center;display:flex}.newsletter__input{width:280px}.newsletter__social{border-left:1px solid gray;margin-left:32px;padding-left:32px}.notifications{right:-4px}.notifications__overlay{display:none}.notificationsBtn{width:44px;height:44px;border-radius:50%;border:solid 2px #a6a6a6;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;font-size:1.625rem}.notificationsBtn:after{content:attr(data-items);top:-8px;right:-14px;width:26px;height:26px;background:#d91a32;border-radius:50%;color:#fff;font-size:0.8125rem;font-weight:700;line-height:1;letter-spacing:-0.02em;display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.result__button{margin-top:40px}.result__mainimg{margin-bottom:16px}.result__mainicon{margin-bottom:40px}.sidemenu__item{line-height:1}.storeTileSpecs__iconWrap{margin-right:auto;padding-right:10px}.storeTileOrder--details .storeTileOrder__info{max-width:initial}.storeTileOrder--details .storeTileOrder__actions{max-width:initial}.storeLocator__form .field--full{max-width:344px}.storeLocator__form .field__inputClear{right:18px}.storeLocator__form .field__input--search{padding-right:40px}.storeLocator__form .field__inputSubmit{display:none}.timetable{margin-top:-20px}.timetableNavWrap{display:flex;justify-content:space-between;margin-bottom:12px}.timetableNav:before{display:none}.topnav__selected{display:none}.topnav__selected:after{display:none}.topnav__list{display:flex;flex-wrap:wrap;justify-content:center;text-align:center}.topnav__list li{display:inline-flex;margin:4px}.topnav__item{line-height:1}.topnav__link{border:1px solid #c2c2c2;border-radius:100px;color:#838385;display:block;font-size:0.875rem;font-weight:500;padding:12px 16px;transition:background-color 250ms ease-out}.topnav__link.selected{background-color:#333;border-color:#333;color:#fff}.unavailabelBox{margin-bottom:24px}.minibasket .unavailabelBox{margin-bottom:0}.userMenu{right:-4px}.userMenu__overlay{display:none}.accountDetails__form{margin-right:24px}.basketTable__row--head{margin-bottom:12px}.minibasket:not(.active) .minibasket__overlay{opacity:0;pointer-events:none}.secureCheckout__text{margin:0 8px 0 0}.checkoutTracking__inner{margin-right:10px}.loyalty__img{margin-right:20px}.loyalty__cell:not(:last-child){margin-right:1px}.gallery__figure{width:calc(50% - 20px);margin:10px}.orderHistory{min-height:140px}.orderHistory--qr{padding-left:calc(var(--outerPaddingY) + var(--qrWidth) + var(--qrMargin))}.orderHistory__qr{left:var(--outerPaddingX);position:absolute;top:50%;transform:translateY(-50%)}.orderHistory__section--top span{margin-right:5px}.orderHistory__section--top .orderHistory__sectionInner{flex-flow:row}.productPage{display:grid;grid-template-areas:"product_image product_content";grid-template-columns:minmax(300px, 457px) minmax(50%, 873px)}.productPage__imageCol{grid-area:product_image}.productPage__imageGrid{left:0;position:sticky;top:var(--headerHeight)}}@media (min-width: 768px)and (hover: hover)and (pointer: fine){.topnav__link:hover{background-color:#ececec;border-color:#ececec}}@media (min-width: 768px)and (max-width: 1023px){.articleFeatured .article--horizontal .article__img{flex-basis:40%}}@media (min-width: 768px)and (max-width: 1279px){.article--horizontal .article__title{font-size:1.25rem;font-weight:500;letter-spacing:-0.03em;line-height:1.5}.newsletter__social{margin-left:24px;padding-left:24px}}@media (min-width: 1024px){.tabletOnly{display:none}.header__bottom{padding:16px 0 0}.acc__headerInner{margin-right:104px}.acc__headerInnerTitle{min-width:295px}.acc__headerInnerTitle--info{min-width:initial}.acc__headerInnerTitle--sum{min-width:initial}.filters__itemsWrap{display:flex;flex-wrap:wrap;margin-right:24px}.filters__inner{align-items:flex-start;display:flex}.filters__item:not(:last-child){margin-right:24px}.filters__item:not(.filter--closed){z-index:3}.filters__titleWrap{margin-right:8px}.filters__title{padding:6px 0}.filters__titleWrap .filters__close{display:none}.filters__mobButton{pointer-events:none}.filters--checked .filters__mobButton:after{display:none}.filters__mobButtonText{display:none}.filters--listResults{position:relative;padding-right:160px}.filters--listResults .filters__titleWrap{position:static}.filters--listResults .filters__titleWrap .filtersClearAll{position:absolute;right:16px;top:50%;transform:translateY(-50%)}.filters--listResults.filters--checked .filters__titleWrap .filtersClearAll{display:block}.filters--listResults~.productListWrap .selectedFilters{outline:1px solid red;background:rgba(255,0,0,.2)}.filter{position:relative}.filter__content{background-color:#fff;border-radius:6px;box-shadow:0px 6px 16px rgba(51,51,51,.15);left:-20px;padding:56px 20px 16px 20px;position:absolute;top:-16px;width:248px}.filter__main>.scrollbar{max-height:160px}.filter__main--mobScroll>.scrollbar{overflow:initial}.filter__list--inline{display:flex;flex-wrap:wrap}.filter__list--showAll:not(.initialized) .filter__item:nth-child(n+9){display:none}.filter__list--showAll.initialized .filter__listScroll{max-height:var(--scrollListHeight)}.filter__listMore{display:none}.filter__list--inline .filter__item{margin:4px 0}.filter__list--inline .filter__item:not(:last-child){margin-right:16px}.filtersApply{margin-bottom:12px}.filters__titleWrap .filtersClearAll{display:none}.filtersLinks{margin-top:16px;text-align:center}.filtersLinks--all{display:none}.mainNav__list{display:flex}.mainNav__link--hasChildren:before{display:none}.megamenu{left:0;overflow:hidden;top:100%}.mainNav__item:not(.mainNav__item--active) .megamenu{pointer-events:none}.mainNav__item--active .megamenu{z-index:9}.megamenu__inner{padding:40px 0;position:relative;opacity:0;transform:translateY(-30px);transition:opacity 150ms ease-out,transform 250ms ease-out,visibility 10ms ease-out 250ms;visibility:hidden;min-height:584px}.mainNav__item--active .megamenu__inner{opacity:1;transform:translateY(0);transition:opacity 350ms ease-out 250ms,transform 350ms ease-out 250ms;visibility:visible}.mainNav__item--fadeOut .megamenu__inner{opacity:0;transform:translateY(80px);transition:opacity 350ms ease-out,transform 350ms ease-out}.megamenu__list{width:100%}.megamenu__list--level2{column-count:3}.megamenu__list--level2>li{break-inside:avoid;margin-bottom:40px}.megamenu__list li{font-size:0.875rem}.megamenu__close{position:absolute;right:32px;top:32px;z-index:1;width:40px;height:40px;min-height:auto}.megamenu__close:before{display:inline-block;vertical-align:top}.megamenu__back{display:none}.megamenu .wrapper{padding:0 var(--gridSpace)}.megamenuBg{background-color:#e6e6e6;left:0;position:absolute;top:100%;transform:scaleY(0);transform-origin:center top;transition:transform 350ms ease-out 50ms;width:100%;height:584px}.menuOpened .megamenuBg{transform:scaleY(1);transition:transform 350ms ease-out}.megamenuBg:after{content:"";position:absolute;right:0;top:0;width:50%;height:100%}.newsletter__form{align-items:center}.newsletter__label{margin-right:24px}.sidemenu{border-right:1px solid #ececec;height:100%;margin:0;padding-left:30px}.sidemenu .sidenav__list--level1{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;left:0;padding-right:16px;position:sticky;top:calc(8px + var(--headerHeight));max-height:calc(100vh - 16px - var(--headerHeight))}.sidemenu .sidenav__list--level1::-webkit-scrollbar{width:6px;height:6px}.sidemenu .sidenav__list--level1::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.sidemenu .sidenav__list--level1::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.sidemenu .sidenav__list--level1::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.sidemenu .sidenav__list--level1::-webkit-scrollbar-track{background:transparent}.sidemenu__selected{display:none}.sidemenu__selected:after{display:none}.sidemenu__list--level2{margin:0 0 12px}.sidemenu__link.selected{color:#f47920}.sidemenu__link--level1{margin-bottom:12px;font-size:1.125rem}.storeListWrap{display:flex}.storeListWrap [data-tabToggle-content]{display:block}.storeListWrap .tabToggle{display:none}.storeList{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;margin-right:24px;width:484px;max-width:45%;max-height:600px}.storeList::-webkit-scrollbar{width:6px;height:6px}.storeList::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.storeList::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.storeList::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.storeList::-webkit-scrollbar-track{background:transparent}.storeTile{margin-right:12px}.gallery__figure{width:calc(33.3% - 20px)}.myLists--row .myList{flex:1}.orderSum--border .orderSum__col:not(:last-child){border-right:1px solid #fff}.productPage__info{padding-left:var(--productImageColSpace)}.productDetailsNutrTable{max-width:714px}}@media (min-width: 1024px)and (hover: hover)and (pointer: fine){.sidemenu__link:not(.selected):hover{color:#838385}}@media (min-width: 1024px)and (max-width: 1279px){.megamenuBg{z-index:1}}@media (min-width: 1024px)and (max-width: 1365px){.megamenu__close{right:8px;top:8px}.megamenuBg{height:640px}}@media (min-width: 1280px){.mainLayout{--asideWidth: 352px;--gridSpace: 64px;--gridSpaceBorder: calc(var(--gridSpace)/2);display:grid;grid-template-areas:"aside content";grid-template-columns:var(--asideWidth) minmax(0, 1fr)}.mainLayout--rightAside{grid-template-areas:"content aside";grid-template-columns:minmax(0, 1fr) var(--asideWidth)}.mainLayout__aside{grid-area:aside;display:flex;flex-direction:column}.mainLayout__content{grid-area:content}.deliveryTypes{padding:0 20px}.burgerMenu{display:none}.mainLayout__aside .sideNav{border-right:1px solid #ececec}.basketMain{position:relative}.sideBasket{box-shadow:0px 6px 16px rgba(51,51,51,.15);border-radius:8px;position:sticky;right:0;top:0}.sideBasket__title{color:#333;font-size:1.25rem;font-weight:500;line-height:1.5;margin:0 0 16px;padding-left:40px;position:relative}.sideBasket__title:before{color:#a6a6a6;font-size:2rem;left:0;margin-top:-16px;position:absolute;top:50%}}@media (min-width: 1280px)and (max-width: 1365px){.mainLayout{--asideWidth: 296px;--gridSpace: 24px;--gridSpaceBorder: var(--gridSpace)}}@media (min-width: 1366px){.megamenu__title{padding-right:40px}}@media (min-width: 1920px){.goToTop{margin-right:calc(50vw - var(--wrapper)/2)}.productList .product{width:calc(16.6% - 5*var(--productSpaceH)/6)}}@media (min-width: 640px)and (max-width: 1365px)and (min-width: 1280px){.basketTable__cell--button{margin:0 12px 0 12px}}@media (max-width: 1599px){.basketMain__content{--mainLayoutSpace: 24px}.landingList{row-gap:32px}.landingList__item{width:calc(20% - 4*var(--colGap)/5)}.myLists--grid{--listsGap: 20px}.myLists--row{--listsGap: 16px}.productList .product{width:calc(25% - 3*var(--productSpaceH)/4)}}@media (max-width: 1365px){.basketTable{--imgMarginRight: 16px}.basketTable__row{padding-right:84px;padding-left:0}.basketTable__remove{right:0}.basketTable .fav{right:40px}.landingList__item{width:calc(25% - 3*var(--colGap)/4)}.myLists--grid .myList{width:calc(50% - var(--listsGap)/2)}.productList{--productSpaceH: 16px;--productSpaceV: 16px}}@media (max-width: 1365px)and (min-width: 1280px){.basketTable{--imgWidth: 80px}.basketTable__cell--price{margin-right:0}.basketTable__cell--quant{margin:0 12px}.basketTable__cell .product__title{font-size:1rem}.productList .product{width:calc(33.33% - 2*var(--productSpaceH)/3)}}@media (max-width: 1359px){.infoPopup{right:var(--gridSpace)}.productMainImg .swiper-button-prev,.productMainImg .swiper-button-next{display:flex}}@media (max-width: 1279px){:root{--gridSpace: 32px}.mainLayout{--mainLayoutSpace: var(--gridSpace)}.loginWrap__form{padding-block:56px}.loadMore{--loadMoreSpace: 32px}.mainNav__item{margin:0 8px}.burgerMenu{background:none;margin:0 16px 0 0;padding:0;width:32px;height:32px}.burgerMenu__bar{background:#404040;border-radius:15px;display:block;margin:6px auto;transition:all 350ms ease-out;height:2px;width:26px}.burgerMenu__bar--middle{margin:0 auto}.burgerMenu--opened .burgerMenu__bar--top{transform:translateY(8px) rotateZ(45deg)}.burgerMenu--opened .burgerMenu__bar--bottom{transform:translateY(-8px) rotateZ(-45deg)}.burgerMenu--opened .burgerMenu__bar--middle{width:0}.modal__wrap{padding-bottom:40px}.mainLayout__aside .sideNav{display:none}.simpleSlider--cat:not(.swiper-initialized) .swiper-slide{width:calc(25% - 16px)}.timetable{margin-bottom:56px}.addresses{--addressesGap: 24px}.addresses__box,.addresses .addBox{width:calc(50% - var(--addressesGap)/2)}.basket{margin-bottom:144px}.basketMain__content{padding-right:0}.sideBasket{box-shadow:0px -2px 10px rgba(51,51,51,.1);bottom:0;left:0;position:fixed;z-index:2;width:100%}.sideBasket__title{display:none}.landingList{row-gap:24px}.myList--box .myList__title{font-size:1.25rem}.orderRow{--orderColGap: 24px}.productPage{--productImageColSpace: 40px}.productMainImg{--productMainImgWidth: 500px}.productMainImg .imgControl{margin:30px 0 20px}}@media (max-width: 1279px)and (hover: hover)and (pointer: fine){.burgerMenu:not(.disabled):hover{background:transparent}.burgerMenu:not(.disabled):hover .burgerMenu__bar{background:#333}}@media (max-width: 1279px)and (min-width: 1024px){.checkoutProducts .product--mini .product__img,.checkoutProducts .minibasket__product .product__img{margin-right:8px;width:80px}.productListContent{margin-left:-20px;width:calc(100% + 40px)}}@media (max-width: 1023px){:root{--gridSpace: 24px}.pageTitle h1{font-size:2.375rem}.pageTitle--big{height:280px}.pageTitle--big h1{font-size:2.875rem}.ordersBanner{padding:16px}.ordersBanner__img{width:37%}.ordersBanner__icon{font-size:3rem;margin-right:16px}.ordersBanner__text{font-size:1rem}.tabletHidden{display:none}ul.listL{margin:16px 0 24px}ul.listL li{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33;padding-left:21px}ul.listCols{column-count:4}.footer{--footerSpaceTop: 56px}.footer__col{--footerColSpace: 24px}.acc--stripe .acc__header{font-size:1rem}.acc__headerInnerTitle--info{margin-left:auto}.articleList--contests .article{width:calc(33.33% - 2*var(--productSpaceH)/3)}.articleDetails__title{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.35}.articleDetails__title{font-size:1.5rem;font-weight:700;letter-spacing:0;line-height:1.16}.catalogueList{--productSpaceH: 24px}html.filtersOpened,html.filtersOpened body{overflow:hidden;height:calc(var(--windowHeight) - 1px)}.filters__itemsWrap{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;overflow-x:hidden;height:calc(100% - var(--mobFilterTopBar))}.filters__itemsWrap::-webkit-scrollbar{width:6px;height:6px}.filters__itemsWrap::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.filters__itemsWrap::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.filters__itemsWrap::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.filters__itemsWrap::-webkit-scrollbar-track{background:transparent}.filters--2levelOpened .filters__itemsWrap{overflow:visible}.filters__inner{background-color:#fff;left:0;padding:0 var(--filtersSpace) var(--mobFilterBottomBar);position:fixed;transform:translateX(-100%);transition:transform 350ms ease-out;top:var(--mobFiltersTop);z-index:9;width:100%;height:var(--windowHeight)}.filters:not(.filters--2levelOpened) .filters__inner{overflow:hidden}.filters--opened .filters__inner{transform:translateX(0)}.filters__item:not(:first-child){border-top:1px solid #c2c2c2}.filters__titleWrap{align-items:center;border-bottom:1px solid #a6a6a6;display:flex;padding:16px 0}.filters__title{font-size:1.125rem;font-weight:400}.filters__titleWrap .filters__close{margin-right:8px}.filters__mobButton{align-items:center;display:inline-flex}.filter__title{font-size:1rem;font-weight:500;padding:16px 32px 16px 0}.filter__titleIcon{font-size:1.5rem;line-height:1;right:0;top:50%;transform:translateY(-50%)}.filter__titleIcon:before{line-height:1}.filters__mobTitle .filter__titleIcon{left:0;right:auto}.filters__mobTitle .filter__titleIcon:before{transform:rotate(180deg);transform-origin:center}.filter__content{padding:12px 0}.filter__main{height:calc(100% - var(--mobFilterTopBar) - var(--mobFilterTopBarSpace))}.filter__main--mobScroll>.scrollbar{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;max-height:100%}.filter__main--mobScroll>.scrollbar::-webkit-scrollbar{width:6px;height:6px}.filter__main--mobScroll>.scrollbar::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.filter__main--mobScroll>.scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.filter__main--mobScroll>.scrollbar::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.filter__main--mobScroll>.scrollbar::-webkit-scrollbar-track{background:transparent}.filter__list{height:100%}.filter__list--showAll .filter__listScroll{max-height:100%}.filter__list--more .filter__listWrap{height:100%}.filter__list--more .filter__listWrap>.filter__item{display:none}.filter__list--moreList{height:calc(100% - var(--searchHeight))}.filter__list--moreList .filter__listScroll{max-height:100%}.filter__showAll{display:none}.filter__listMore{height:100%}.filter__list--inline .filter__item{margin:16px 0}.filter__more{display:none}.filter:not(.filter--checked) .filtersClear{display:none}.filtersClearAll{margin-left:auto}.filtersLinks{align-items:center;bottom:0;display:flex;justify-content:center;left:0;padding:8px var(--filtersSpace);position:absolute;width:100%;height:var(--mobFilterBottomBar)}.filtersLinks:not(.filtersLinks--all){display:none}.form{margin-bottom:24px}.mainNavWrap{background-color:#ebebeb;left:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px var(--mobMenuHorPadding) 80px;position:fixed;top:var(--headerHeight);transition:transform 350ms ease-out;transform:translateX(-100%);width:100%;max-width:440px;height:calc(100% - var(--headerHeight))}.menuOpened .mainNavWrap{transform:translateX(0)}.menuOpened--level2 .mainNavWrap{overflow:hidden}.mainNav__item{color:#333;font-size:1.125rem;margin:8px 0}.mainNav__link{padding:8px 0;position:relative}.mainNav__link--hasChildren:before{font-size:1.5rem;margin-top:-12px;position:absolute;right:0;top:50%}.megamenu{background-color:#ebebeb;overflow:auto;-webkit-overflow-scrolling:touch;right:0;top:0;transition:transform 350ms ease-out;transform:translateX(-100%);z-index:1;height:100%}.mainNav__item--active .megamenu{transform:translateX(0)}.megamenu__main{padding:32px var(--mobMenuHorPadding) 80px}.megamenu__cols--promo{border-bottom:1px solid #fff;margin-bottom:24px}.megamenu__list--level2>li{font-size:1rem;margin-bottom:24px}.megamenu__close{display:none}.megamenu__back{align-items:center;background-color:#fff;border-radius:0;color:#8c8c8c;display:flex;font-size:1.25rem;justify-content:flex-start;padding:16px;width:100%}.megamenu__back:before{font-size:1.5rem;margin-right:8px}.newsletter__form{flex-direction:column}.newsletter__label{margin-bottom:16px}.output--pickup .output__inner,.output--delivery .output__inner{padding-left:80px}.output--init .output__title{font-size:1rem}.sideBasket .priceRow--total{margin-top:0}.productsSum{padding:12px 16px}.result__title{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.35}.sidemenu{margin:0 calc(var(--gridSpace) + var(--mainLayoutSpace)) 22px}.sidemenu__selected{border:1px solid #a6a6a6;border-radius:8px;color:#333;font-size:0.9375rem;line-height:1;overflow:hidden;padding:16px 40px 16px 16px;position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.sidemenu__selected:before{color:#838385;font-size:1rem;margin-top:-8px;position:absolute;right:16px;top:50%;transition:transform 250ms ease-out;transform-origin:center}.sidemenu__selected.active:before{transform:rotate(180deg)}.sidemenu__list--level1{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;background-color:#fff;border:1px solid #a6a6a6;border-radius:8px;display:none;left:0;margin-top:12px;position:absolute;top:100%;width:100%;max-height:400px}.sidemenu__list--level1::-webkit-scrollbar{width:6px;height:6px}.sidemenu__list--level1::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.sidemenu__list--level1::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.sidemenu__list--level1::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.sidemenu__list--level1::-webkit-scrollbar-track{background:transparent}.sidemenu__item--level1{line-height:1.534;margin:0}.sidemenu__item--level1:not(:first-child){border-top:1px solid #ececec}.sidemenu__link--level1{color:#333;display:block;font-size:0.9375rem;padding:12px 16px}.sidemenu__link--level1.selected{background-color:#f4f4f4}.storeList{box-shadow:0px 0px 24px rgba(0,0,0,.08);margin-bottom:32px}.storeMap{margin-bottom:32px;width:100%;height:470px;min-height:70vh}.storeTile{margin-inline:20px}.storeTile__thumbnail{display:none}.storeLocator{position:relative}.storeLocator__inner{padding:24px 16px;z-index:1}.storeLocator__illustration--left{display:none}.storeLocator__illustration--right{display:none}.storeLocator__illustration--mob{bottom:0;display:block;position:absolute;right:0}.storeLocator__form{margin-bottom:0}.table td.table__tools .iconButton:not(:last-child),.table td.table__tools .selectedFilters__remove:not(:last-child){margin-right:12px}.gridBoxes{--gridBoxSpace: 8px}.contentBox{padding:24px}.contentBox__icon{margin-bottom:16px}.contentBox__title{margin-bottom:16px}.userNavBlock{margin-bottom:64px}.userNav__link{font-size:0.875rem}.addresses{--addressesGap: 16px}.checkout{--checkoutSpaceTop: 30px}.checkout__title{font-size:1.875rem;letter-spacing:-0.03em;line-height:1.2}.checkout__title{margin:0 0 50px}.checkoutMsg__title{font-size:1.625rem;font-weight:700;letter-spacing:-0.03em;line-height:1.35}.checkoutMsg__title{margin:0}.landingItem--box{padding:16px 8px}.landingItem--box .landingItem__title{font-size:0.875rem}.myLists--row{flex-wrap:wrap}.myLists--row .myList{width:calc(50% - var(--listsGap)/2)}.productList .product{width:calc(33.33% - 2*var(--productSpaceH)/3)}.orderRow{--orderColGap: 16px;--orderProductsWidth: 208px;--orderProductWidth: 64px;--orderRowGap: 12px}.orderHistory{--qrWidth: 100px;--qrMargin: 10px}.orderHistory__section{padding-right:10px}.orderSum--border{flex-direction:column}.orderSum--border .orderSum__col:not(:last-child){border-bottom:1px solid #fff}.orderStatusInfo{margin-bottom:24px}.productPage{--productImageColSpace: 24px}.productHeader .product__img{margin-right:8px}.productHeader .priceContainer{align-items:flex-end;flex-direction:column-reverse}.productHeader .priceContainer .priceBlock__price--init{margin:0 0 4px}}@media (max-width: 1023px)and (hover: hover)and (pointer: fine){.megamenu__back.button:not(.disabled):hover{background:transparent}}@media (max-width: 1023px)and (min-width: 480px){.article__dateWrap .pill{font-size:0.75rem}.table{--cellPaddingX: 16px;--cellPaddingY: 16px;--paddingExternalX: 16px}}@media (max-width: 1023px)and (min-width: 640px){.mainNavWrap{max-width:480px}}@media (max-width: 767px){:root{--gridSpace: 16px;--headerHeight: 116px}.section{margin-bottom:40px}.sectionTitle h2{font-size:1.375rem;font-weight:700;letter-spacing:-0.03em;line-height:1.36}.pageTitle h1{font-size:1.875rem;letter-spacing:-0.02em}.pageTitle.pageTitle--image h1{text-shadow:0px 0px 10px rgba(51,51,51,.3)}.pageTitle--big{margin-bottom:32px;height:200px}.pageTitle--big h1{font-size:1.625rem}.asideHeader{height:92px}.ordersBanner__icon{font-size:2.75rem}.ordersBanner__text{font-size:0.9375rem;max-width:416px}.mobileHidden{display:none}.separate{margin:0 8px}h1{font-size:1.875rem;letter-spacing:-0.02em}h2{font-size:1.25rem;letter-spacing:-0.02em;margin:0 0 20px}.text,p{margin:0 0 20px}ul.listS{margin-top:20px}ul.listCols{column-count:3}.footer__main{flex-direction:column;padding:32px 0 8px}.footer__col{margin-bottom:var(--footerColSpace)}.footer__title{margin-bottom:8px}.footer__apps{margin-top:16px}.footer__btm{flex-wrap:wrap}.footer__text{text-align:center}.col--m1{flex-basis:8.3333333333%;max-width:8.3333333333%}.col--m2{flex-basis:16.6666666667%;max-width:16.6666666667%}.col--m3{flex-basis:25%;max-width:25%}.col--m4{flex-basis:33.3333333333%;max-width:33.3333333333%}.col--m5{flex-basis:41.6666666667%;max-width:41.6666666667%}.col--m6{flex-basis:50%;max-width:50%}.col--m7{flex-basis:58.3333333333%;max-width:58.3333333333%}.col--m8{flex-basis:66.6666666667%;max-width:66.6666666667%}.col--m9{flex-basis:75%;max-width:75%}.col--m10{flex-basis:83.3333333333%;max-width:83.3333333333%}.col--m11{flex-basis:91.6666666667%;max-width:91.6666666667%}.col--m12{flex-basis:100%;max-width:100%}.header__top{padding:12px 0 0}.header__leftBlock{padding-bottom:12px}.header__topInner{flex-wrap:wrap;position:relative}.header__logo{width:200px;height:26px}.header__tools{background:url(../media/wood.png) repeat scroll center;flex-shrink:0;justify-content:flex-end;margin-left:calc(-1*var(--gridSpace));padding:6px 0;width:calc(100% + var(--gridSpace)*2)}.header__tool{margin-right:20px}.header__tool--account{display:none}.acc--stripe{margin:12px 0}.acc--stripe .acc__header{font-size:0.875rem;margin-bottom:12px;padding:12px}.acc--beige .acc__header{font-size:1rem;font-weight:500;letter-spacing:-0.02em;line-height:1.37}.acc--beige .acc__content{padding:24px 0 0}.acc--colorStripe .acc__header{padding-block:16px}.acc__header{padding:16px 0}.acc__headerInner{flex-flow:column;flex-wrap:wrap;padding-right:10px}.acc__headerInner--price{flex-flow:row;align-items:center}.acc__headerInner--price .acc__headerInnerTitle--info{display:none}.acc__headerInner--price .acc__headerInnerTitle--sum{display:inline-block}.acc__headerInnerTitle--info{margin-left:0;margin-top:8px}.acc__headerInnerTitle--sum{padding-left:10px}.acc__headerInnerTitle--large{font-size:1.125rem;letter-spacing:-0.02em;line-height:1.2}.acc__icon{font-size:1.5rem}.articleFeatured{display:none}.articleList--column{margin-bottom:40px}.articleList--contests .article{width:calc(50% - 1*var(--productSpaceH)/2)}.articleDetails__title:after{margin:20px auto 32px 0;width:68px}.bnr{padding:20px 0}.bnr__text{margin:0 16px}.breadcrumb__list{align-items:flex-start;flex-direction:column}.breadcrumb__item{font-weight:500}.cardRow{min-height:55px}.cardRow__msg{font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.3;max-width:120px}.catalogue__title{font-size:1.125rem;font-weight:500;letter-spacing:-0.02em;line-height:1.33}.collectionBox__title{font-size:0.875rem}.contestBnr{padding:64px 24px;min-height:209px}.contestBnr h3{font-size:1.125rem;line-height:1.2}.deliveryFlowNav{left:24px}.radiobuttons--deliveryType{gap:8px;margin:0 auto;padding-bottom:112px;position:relative}.radiobutton--deliveryType{position:static}.radiobutton--deliveryType .radiobutton__label{background:#f2efe8;border-radius:8px;font-size:0.875rem;font-weight:400;padding:16px}.radiobutton--deliveryType .radiobutton__label b{display:block}.radiobutton--deliveryType .radiobutton__text{line-height:1.286}.radiobutton--deliveryType .radiobutton__border:after{right:8px;top:8px;width:26px;height:26px}.radiobutton--deliveryType .icon{margin:0 auto 8px;height:32px}.deliveryTypeInfo ul{background:#f7f5f0;border-radius:8px;flex-grow:1;margin:0;padding:12px}.deliveryTypeInfo{align-items:center;bottom:0;display:flex;left:0;position:absolute;width:100%;height:112px}.radiobutton:not(.checked) .deliveryTypeInfo{display:none}.deliveryTypeInfo__sum{align-items:flex-start;text-align:left}.deliveryTypeInfo__sum p{margin-bottom:4px}.selectedFilters{display:none}.form{width:100%}.formBox__more{justify-content:flex-start}.formBox .checkbox~.formBox__more .checkbox~.formBox__more{padding-left:var(--labelSpace)}.loginWrap__img{display:none}.loginWrap__form{padding:64px 16px 40px}.registerPromo{margin-top:20px}.formText{padding:16px 0 0}.formText p{font-size:0.8125rem}.goToTop{bottom:16px;font-size:0.75rem;line-height:56px;right:16px;width:56px;height:56px}.orderTrack .indicator{margin-bottom:6px}.loadMore{--loadMoreSpace: 16px}.message{margin-bottom:30px}.modal__wrap .btnWrap{margin-top:24px}.modal__titleWrap{margin-bottom:24px;text-align:left}.modal__titleWrap p{font-size:0.875rem}.modal__title{margin-inline:0;text-align:left}.modal__title{font-size:1.125rem}.newsletter__inner{margin:0 auto;max-width:400px}.newsletter__form{border-bottom:1px solid gray;margin-bottom:24px;padding-bottom:24px}.newsletter__input{flex:1}.notifications{right:0;padding:0 var(--gridSpace);width:100%}.notifications__content{width:100%}.notificationsBtn:after{content:"";top:-1px;right:0;width:8px;height:8px;background:#d91a32;border-radius:50%}.outputsRow{gap:16px}.output--init{padding:8px}.output--pickup:not(.output--init) .output__inner,.output--delivery:not(.output--init) .output__inner{background-size:auto 26px;padding-left:60px;min-height:26px}.output--pickup.output--init .output__inner,.output--delivery.output--init .output__inner{background-size:auto 34px;padding-left:64px;min-height:34px}.output--init .output__title{font-size:0.875rem}.product__title{font-size:0.9375rem}.productInfo .productTags{margin-bottom:8px}.productList .priceContainer{height:32px}.priceRow--total{font-size:1rem;margin-bottom:12px}.productList .quantity{height:34px}.quantity__btn{font-size:0.875rem;width:40px}.quantity__btn--notAvailable{font-size:0.8125rem}.quantity__input{font-size:0.875rem}.quantity__input span{font-size:0.75rem;font-weight:400}.quantity__message{padding:8px}.result__title{font-size:1.625rem;letter-spacing:-0.03em}.result__p--b{font-size:1.125rem;letter-spacing:-0.02em}.result__code strong{display:block;margin-top:8px}.result__mainimg--notsupported{margin-bottom:32px;max-width:160px}.sidemenu{margin-top:16px}.sliderSection{--sliderSectionSpaceBottom: 32px}.simpleSlider--cat:not(.swiper-initialized) .swiper-slide{width:calc(33.3333333333% - 16px)}.productsSlider{margin-top:16px}.productsSlider .swiper-slide{width:160px}.storeTile__address{margin-bottom:12px}.storeTileSpecs{align-items:flex-start;flex-flow:column;margin-bottom:15px}.storeTileSpecs__title{font-size:1.375rem;font-weight:700;letter-spacing:-0.03em;line-height:1.36}.storeTileSpecs__title{font-size:1.25rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2;margin-bottom:8px}.storeTileSpecs__iconWrap{margin-bottom:12px}.storeTileOrder--details{flex-flow:column;margin-bottom:32px;padding:24px}.storeTileOrder--details .storeTileOrder__icon{margin:0 auto 16px 0}.storeTileOrder--details .storeTileOrder__info{padding-right:0;width:100%;max-width:initial}.storeTileOrder--details .storeTileOrder__actions{margin-top:16px;width:100%}.storeSearch .form{background-color:#fff;transform:translateY(0)}.storeSearch.sticky{padding-bottom:64px}.storeSearch.sticky .form{padding-inline:var(--gridSpace);position:fixed;top:calc(var(--headerHeight) - 64px);left:0;transform:translateY(100%);z-index:3;transition:transform 250ms ease-out;width:100%}.storeSearch p:last-of-type{margin-bottom:16px}.pin__count{font-size:1.125rem;letter-spacing:-0.02em;line-height:1.2}.mapInfo{padding-top:46px;max-width:246px}.mapInfo__close{right:16px;top:16px;color:#333}.storeLocator__title{font-size:1.375rem;font-weight:700;letter-spacing:-0.03em;line-height:1.36}.storeLocator__title{font-size:1.25rem;font-weight:700;letter-spacing:-0.02em;line-height:1.2}.storeLocator__sub{margin-bottom:32px}.storeLocator__form .field--small{display:none}.storeHours{padding:24px 24px 32px}.storeHours .acc__header p{display:inline}.storeHours .acc__headerInner{display:block}.storeHours .acc__icon{display:inline-block}.storeHours hr{margin:27px auto;max-width:initial}.storeHours__top{display:flex;align-items:flex-start;text-align:left;flex-flow:column}.storeDetails__map{padding-top:calc(470 / 343 * 100%);position:relative;width:100%}.timetable{margin-bottom:12px}.timetable__day{border:none;padding-inline:56px;height:72px}.timetableNav{justify-content:center;position:absolute;top:16px;z-index:2;width:40px;height:40px}.timetableNav{font-size:1rem}.timetableNav__icon,.timetableNav__text{display:none}.timetableNav--next{right:4px}.timetableNav--prev{left:4px}.topnav{margin-top:16px}.topnav__selected{border:1px solid #a6a6a6;border-radius:8px;color:#333;font-size:0.9375rem;line-height:1;overflow:hidden;padding:16px 40px 16px 16px;position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.topnav__selected:before{color:#838385;font-size:1rem;margin-top:-8px;position:absolute;right:16px;top:50%;transition:transform 250ms ease-out;transform-origin:center}.topnav__selected.active:before{transform:rotate(180deg)}.topnav__list{scroll-behavior:smooth;overflow:auto;scrollbar-color:rgba(166,166,166,.3) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;background-color:#fff;border:1px solid #a6a6a6;border-radius:8px;display:none;left:0;margin-top:12px;position:absolute;top:100%;width:100%;max-height:400px}.topnav__list::-webkit-scrollbar{width:6px;height:6px}.topnav__list::-webkit-scrollbar-thumb{background:rgba(166,166,166,.3);border-radius:13px}.topnav__list::-webkit-scrollbar-thumb:hover{background:rgba(166,166,166,.5)}.topnav__list::-webkit-scrollbar-thumb:active{background:rgba(166,166,166,.7)}.topnav__list::-webkit-scrollbar-track{background:transparent}.topnav__item{line-height:1.534;margin:0}.topnav__item:not(:first-child){border-top:1px solid #ececec}.topnav__link{color:#333;display:block;font-size:0.9375rem;padding:12px 16px}.topnav__link.selected{background-color:#f4f4f4}.unavailabelBox .listTools--noBorder{padding-top:8px}.userMenu{right:0;padding:0 var(--gridSpace);width:100%}.userMenu__content{width:100%}.gridBoxes__box{width:calc(50% - var(--gridBoxSpace)*2)}.userNavBlock{--tabItemHeight: 32px;margin-left:calc(-1*var(--gridSpace));margin-bottom:32px;overflow-x:auto;width:calc(100% + var(--gridSpace)*2);max-width:initial}.userNav{padding:0 var(--gridSpace)}.userNav__item{white-space:nowrap;flex:1 0 auto}.userNav__item:not(:last-child){margin-right:8px}.userNav__link{font-size:0.875rem;font-weight:500;letter-spacing:initial;line-height:1.28;padding:8px 12px}.accountDetails{flex-direction:column;margin-bottom:24px}.accountDetails__form{margin-bottom:8px}.basketTable__row--head .basketTable__cell{font-size:0.875rem}.basketTable__cell--price{margin-right:0}.basketTable__cell--quant{margin:0 16px}.minibasket{--miniBasketWidth: 100%}.minibasket__overlay{display:none}.minibasket__inner{top:var(--headerHeight);height:calc(var(--windowHeight) - var(--headerHeight))}.minibasket__header{padding-top:8px;padding-bottom:12px}.minibasket__product{padding:16px 0}.minibasket__bottom{padding:12px 16px}.minibasket .miniBasketButton{display:none}.basketInfo{margin-top:8px}.secureCheckout{flex-direction:column}.secureCheckout__text{margin:0 0 8px 0}.secureCheckout__img{width:120px}.checkout__title{margin:0 0 31px}.checkout>h2{font-size:1.375rem;font-weight:700;letter-spacing:-0.03em;line-height:1.36}.checkout>h2{margin:0 0 46px}.checkoutMsg{margin:0 0 60px}.checkoutMsg img{margin-bottom:6px}.checkoutMsg__title{margin:0}.checkoutMsg__code strong{display:block;margin-top:8px}.checkoutTracking{margin:0 auto 54px;flex-flow:column}.checkoutTracking__action{margin-top:37px}.checkoutTrackingMsg{margin:0 0 56px}.loyalty__img{margin-bottom:20px}.loyalty__inner{flex-flow:column;align-items:center}.loyalty__row{flex-flow:column}.loyalty__cell{width:100%}.loyalty__cell:not(:last-child){margin-bottom:1px}.loyalty__table{width:100%}.loyaltyList{margin:20px auto 0}.loyaltyList li{font-size:0.9375rem;font-weight:400;letter-spacing:-0.03em;line-height:1.47}.history{--historycnt: 72px}.history__mainimg{margin-bottom:32px}.history__date{padding-right:38px}.history__date:before,.history__date:after{right:28px}.landingList{--colGap: 0;row-gap:0}.landingList__item{width:33.33%}.landingItem__title{font-size:0.875rem;margin:0 var(--landingTitleMobSpace)}.landingItem--box .landingItem__title{font-size:0.8125rem}.landingItem__submenu{left:var(--landingTitleMobSpace);width:calc(100% - var(--landingTitleMobSpace)*2)}.myLists--grid{--listsGap: 16px}.myLists--row{--listsGap: 12px}.myList--box{padding-top:16px;padding-bottom:16px}.myList--box .myList__title{font-size:1.125rem}.productList .product .priceBlock__price,.productsSlider .product .priceBlock__price{font-size:0.75rem;margin-top:4px}.productList .product .priceBlock__price--init,.productsSlider .product .priceBlock__price--init{font-size:0.6875rem;line-height:1.091;margin-top:0}.productList .product .priceBlock__price--b,.productsSlider .product .priceBlock__price--b{font-size:0.875rem;line-height:1.286;margin-top:2px}.productList .product .priceBlock__text,.productsSlider .product .priceBlock__text{font-size:0.625rem;line-height:1.2}.orderRow__items{grid-area:1/1/2/4;width:var(--orderProductsWidth)}.orderRow__status{grid-area:2/1/3/4}.orderRow__info--1{grid-area:3/1/4/2}.orderRow__info--2{grid-area:3/2/4/3}.orderRow__info--3{grid-area:3/3/4/4}.orderHistory{--outerPaddingY: 18px;flex-flow:column}.orderHistory .copyText__tooltip{bottom:100%;transform:translate3d(-90%, -10px, 0);top:auto}.orderHistory .copyText__tooltip--open{bottom:100%;transform:translate3d(-90%, -15px, 0);top:auto}.orderHistory--qr .orderHistory__section--top{margin-top:0}.orderHistory__qr{margin-right:15px}.orderHistory__section:not(.orderHistory__section--top){padding-right:0}.orderHistory__section:not(.orderHistory__section--top):not(:last-child){border-bottom:1px solid #c2c2c2;margin-bottom:10px;padding-bottom:10px}.orderHistory__section--top{align-items:flex-end;margin:55px 0 15px}.orderHistory__section--top .copyText{margin-bottom:17px}.orderStatusInfo{margin-bottom:16px}.orderTrack{margin:0 0 16px;padding:16px}.orderTrack__inner{align-items:flex-start;flex-flow:column}.orderTrack__date{display:block;margin-top:6px}.productPage{margin:24px 0 32px}.productPage__imageCol{margin:0 auto 32px;max-width:560px}.productPage__imageMain{margin-bottom:16px}.productInfo__title{font-size:1.5rem;line-height:1.25}.productInfo__desc{margin-bottom:16px}.productInfo__codeWrap{margin-bottom:8px}.productDetails{margin-top:24px;padding-top:24px}.productDetails__heading{margin-bottom:0}.productDetailsNutrTable td{padding:8px 14px}.productSliderModal .modal__wrap{padding:24px}.productThumbs{--thumbImageWidth: 64px}.productMainImg .imgControl{display:none}.notifyMe__main{max-width:90vw}}@media (max-width: 767px)and (max-width: 767px){.sectionTitle h2{font-size:1.125rem;letter-spacing:-0.02em;line-height:1.2}.storeTileSpecs__title{font-size:1.125rem;letter-spacing:-0.02em;line-height:1.2}.storeLocator__title{font-size:1.125rem;letter-spacing:-0.02em;line-height:1.2}.checkout>h2{font-size:1.125rem;letter-spacing:-0.02em;line-height:1.2}}@media (max-width: 639px){.sectionTitle p{font-size:0.9375rem}.ordersBanner__img img{object-fit:contain;object-position:left top}.ordersBanner__icon{margin-bottom:16px}.ordersBanner__text{max-width:100%}.btnWrap--stickyBtm{background-color:#fff;bottom:0;left:0;margin-top:12px;padding-top:20px;position:sticky;z-index:9}.footer{--footerSpaceTop: 40px}.col--s1{flex-basis:8.3333333333%;max-width:8.3333333333%}.col--s2{flex-basis:16.6666666667%;max-width:16.6666666667%}.col--s3{flex-basis:25%;max-width:25%}.col--s4{flex-basis:33.3333333333%;max-width:33.3333333333%}.col--s5{flex-basis:41.6666666667%;max-width:41.6666666667%}.col--s6{flex-basis:50%;max-width:50%}.col--s7{flex-basis:58.3333333333%;max-width:58.3333333333%}.col--s8{flex-basis:66.6666666667%;max-width:66.6666666667%}.col--s9{flex-basis:75%;max-width:75%}.col--s10{flex-basis:83.3333333333%;max-width:83.3333333333%}.col--s11{flex-basis:91.6666666667%;max-width:91.6666666667%}.col--s12{flex-basis:100%;max-width:100%}.acc-section{margin-bottom:40px}.acc-section__title{font-size:1.25rem}.deliveryFlowNav{left:16px}.radiobutton--tab .icon{font-size:1.375rem;margin-right:4px}.radiobutton--tab .radiobutton__label{font-size:0.9375rem}.form{--fieldColumnSpace: 24px}.form__row{flex-direction:column;margin-left:calc(-1*var(--fieldColumnSpace)/2);width:calc(100% + var(--fieldColumnSpace))}.form__col{width:100%}.field{flex:1}.field--small{flex:initial}.field__legend{margin:0 0 20px}.field__mapInner{padding-top:137.0262390671%}.formBox__text{font-size:0.875rem}.radiobuttons--inline,.checkboxes--inline{flex-flow:column}.file-upload__title{max-width:151px}.loginWrap__form{padding-bottom:24px}.modal__wrap{padding:64px 16px 24px}.outputsRow{gap:8px;flex-direction:column}.product__discount{border-width:3px;font-size:0.6875rem;font-weight:500;width:44px;height:44px}.product__discount .product__discountVal{font-size:0.875rem;margin-bottom:-3px}.product__badge{--badgePosition: var(--productPadding)}.simpleSlider--cat:not(.swiper-initialized) .swiper-slide{width:calc(50% - 16px)}.storeTileOrder{flex-wrap:wrap;padding:10px}.storeTileOrder__details{margin-bottom:4px}.storeTileOrder__actions{flex-basis:100%;margin-top:20px}.storeTileOrder__actions .button{width:100%}.tooltip__main{padding:16px}.gridBoxes{margin:32px 0 32px calc(-1*var(--gridBoxSpace))}.gridBoxes__box{margin-left:0;margin-right:0;width:100%}.contentBox{flex-wrap:wrap}.contentBox__icon{font-size:2rem;margin:0 8px 0 0}.contentBox__title{margin-bottom:0}.contentBox__text{margin-top:8px;width:100%}.addBox__icon{font-size:3.5rem;margin-bottom:24px}.addBox__text{margin-bottom:24px}.addresses__box,.addresses .addBox{width:100%}.basketTable{--imgWidth: 80px;--basketProductSpaceV: 16px}.basketTable .basketTable__row:not(.basketTable__row--head){align-content:center;align-items:flex-start;flex-wrap:wrap;padding:var(--basketProductSpaceV) 8px var(--basketProductSpaceV) 96px;min-height:112px}.basketTable .basketTable__remove{font-size:1.5rem;margin:0;right:8px;top:var(--basketProductSpaceV);z-index:2}.basketTable .basketTable__cell--product{flex:auto;width:100%}.basketTable .basketTable__cell--product:not(:last-child){margin-bottom:8px}.basketTable .basketTable__cell--quant{margin:0}.basketTable .basketTable__cell--price{align-items:flex-end;display:inline-flex;flex:1;justify-content:flex-end;margin:0;width:auto;height:34px}.basketTable .fav{font-size:1.5rem;margin:0;right:40px;top:var(--basketProductSpaceV)}.basketTable .product__img{left:8px;margin-top:-40px;position:absolute;top:50%}.basketTable .product__title{font-size:0.9375rem;padding-right:72px}.basketTable__row--head .basketTable__cell--product:not(:last-child){margin-bottom:0}.basketTable__row--head .basketTable__cell:not(:first-child){display:none}.minibasket .basketTable .priceBlock__price{font-size:1rem;line-height:1.375}.minibasket .basketTable .priceBlock__price--init{font-size:0.6875rem;line-height:1.546;margin-bottom:2px;margin-top:0}.minibasket .basketTable .product__title{font-size:0.8125rem}.form--basket{margin-block:20px}.checkoutStep{--checkoutStepSpace: 16px}.history__section{padding:0 12px}.history__thumb{margin-bottom:20px}.listsBlock{left:0;opacity:0;padding:24px;position:fixed;top:0;transition:opacity 250ms ease-in-out;z-index:9;width:100%;height:100%}.wishlistButton:not(.open) .listsBlock{pointer-events:none}.wishlistButton.open .listsBlock{opacity:1}.listsBlock__inner{padding-top:56px;z-index:10;height:100%}.listsBlock__title{font-size:1.25rem;font-weight:700;text-align:center}.listsBlock__list{margin-bottom:20px;padding-bottom:20px}.listsBlock__close{font-size:1.5rem;right:16px;top:16px}.myLists--grid .myList{width:100%}.myLists--row .myList{width:100%}.productList .product .product__img,.productsSlider .product .product__img{margin-left:calc(-1*var(--productPadding));width:calc(100% + var(--productPadding)*2)}.productList .product{width:calc(50% - var(--productSpaceH)/2)}.listTools{padding-bottom:8px}.orderRow{display:flex;flex-direction:column;gap:var(--orderRowGap)}.orderSum{--orderSumColSpace: 16px}.productPage__imageCol{margin-bottom:24px}.productInfo__quantity{margin:14px 0 20px}.productInfo .priceContainer{margin:0 0 8px}.productThumbs .swiper-button-prev,.productThumbs .swiper-button-next{top:0;height:100%}.productThumbs .swiper-button-prev:before{background:linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%)}.productThumbs .swiper-button-next:before{background:linear-gradient(to left, white 0%, rgba(255, 255, 255, 0) 100%)}.productHeader .product__img{width:56px}.productHeader .addToCartButton{min-width:initial}.productHeader .addToCartButton:before{margin-right:0}.productHeader .addToCartButton__text{display:none}.notifyMe__main{padding:16px}}@media (max-width: 639px)and (max-width: 639px){.basketTable .priceBlock__price{font-size:1rem;line-height:1.375}.basketTable .priceBlock__price--init{font-size:0.6875rem;line-height:1.546;margin-bottom:2px;margin-top:0}.basketTable .product__title{font-size:0.8125rem}}@media (max-width: 479px){:root{--formMaxWidthS: 100%}.sectionTitle{align-items:flex-start;flex-direction:column}.btnWrap{--buttonsMargin: 4px;align-items:center;flex-direction:column}.btnWrap .button{width:100%}ul.listCols{column-count:1}.header--checkout .header__topInner{padding-top:42px}.header--checkout .header__logo{top:0;transform:translateX(-50%)}.articleList--contests .article{width:100%}.catalogueList .catalogue{width:100%}.emptyContent{grid-template-areas:"icon text" "buttons buttons"}.table{--paddingExternalX: 20px;--cellPaddingY: 8px;margin:20px 0 32px;font-size:0.8125rem;font-weight:400;letter-spacing:-0.02em;line-height:1.07}.table th{display:none}.table tr{border-width:1px}.table tr:not(.highlight){border-color:#ececec}.table thead tr{display:none}.table td:first-child{padding-top:var(--paddingExternalY)}.table td:last-child{padding-bottom:var(--paddingExternalY)}.table td{align-items:center;display:flex;justify-content:flex-start;max-width:initial;padding:var(--cellPaddingY) var(--paddingExternalX)}.table td.table__tools{padding:11px var(--paddingExternalX) 24px}.table td.table__tools{position:relative;margin-top:var(--cellPaddingY);justify-content:flex-end}.table td.table__tools:after{content:"";display:block;position:absolute;top:0;right:var(--paddingExternalX);left:var(--paddingExternalX);border-top:1px dashed #838385}.table .mob-th{display:inline-block;margin-right:25px;flex:0 0 45%}.accountDetails__box{width:100%}.checkoutTracking__action{min-width:initial;width:100%}.landingList__item{width:50%}.addProduct{flex-wrap:wrap}.addProduct .quantity{margin-bottom:16px}.addToCartButton{width:calc(100% - 64px)}.productHeader .product__desc{display:none}}@media (hover: hover)and (pointer: fine){.breadcrumb__itemLink:hover{color:var(--buttonColorHover)}.breadcrumb__itemLink:active{color:var(--buttonColorActive)}.button:not(.disabled):hover{background-color:var(--buttonColorHover)}.button:not(.disabled):active{background-color:var(--buttonColorActive)}.button--border:not(.disabled):hover{background:transparent;border-color:var(--buttonColorHover);color:var(--buttonColorHover)}.button--border:not(.disabled):active{background:transparent;border-color:var(--buttonColorActive);color:var(--buttonColorActive)}.button--alt:not(.disabled):hover{background:#f7f5f0;border-color:#c2c2c2;color:inherit}.button--alt:not(.disabled):hover .icon{color:#f47920}.button--alt:not(.disabled):active{background:#f2efe8;border-color:#c2c2c2;color:inherit}.button--alt:not(.disabled):active .icon{color:#f47920}.iconButton--border:not(.disabled):hover{border-color:var(--buttonColorHover)}.iconButton--border:not(.disabled):active{border-color:var(--buttonColorActive)}.iconButton:not(.disabled):hover,.selectedFilters__remove:not(.disabled):hover{color:var(--buttonColorHover)}.iconButton:not(.disabled):active,.selectedFilters__remove:not(.disabled):active{color:var(--buttonColorActive)}.link:not(.disabled):hover,.text a:not(.disabled):hover,p a:not(.disabled):hover{color:var(--buttonColorHover)}.link:not(.disabled):active,.text a:not(.disabled):active,p a:not(.disabled):active{color:var(--buttonColorActive)}.deliveryTypeInfo__link:hover{color:var(--buttonColorHover)}.deliveryTypeInfo__link:active{color:var(--buttonColorActive)}.categoriesList__item>a:hover,.categoriesList__item>.acc__header:hover{color:#333}.checkbox__label a:hover,.radiobutton__label a:hover{text-decoration:underline}.radiobutton--box:not(.disabled):hover .radiobutton__border{background-color:#f4f4f4}.radiobutton--onlyColor:hover .radiobutton__icon{border-color:#838385}.radiobutton--onlyIcon:hover .radiobutton__icon{border-color:#a6a6a6}.select__option:not(.selected):hover,.autocomplete__option:not(.selected):hover{background-color:#f4f4f4}.select__option:not(.selected):active,.autocomplete__option:not(.selected):active{background-color:#ececec}.select--card .select__option:not(.selected):hover,.select--card .autocomplete__option:not(.selected):hover{background-color:#f7f5f0}.select--card .select__option:not(.selected):active,.select--card .autocomplete__option:not(.selected):active{color:var(--buttonColorActive)}.file-upload__delete:hover{color:#838385}.file-upload__delete:hover .file-upload__icon{color:#a6a6a6}.file-upload__delete:active{color:#f47920}.file-upload__delete:active .file-upload__icon{color:#f47920}.goToTop:hover:before{transform:translateY(-6px)}.mainNav__item:hover{color:#333}.megamenu__list a:hover{color:#333}.output__link:hover,.output__mainLink:hover{color:var(--buttonColorHover)}.output__link:active,.output__mainLink:active{color:var(--buttonColorActive)}.pagination__link:hover{color:var(--buttonColorHover)}.pagination__link:active{color:var(--buttonColorActive)}.quantity--init:hover:after{background-color:#e8e2d7}.quantity__btn:not(.disabled):hover{background-color:var(--buttonBgColorHover)}.quantity__btn:not(.disabled):active{background-color:var(--buttonBgColorActive)}.sideNav__item--level1:not(.open) .sideNav__link--level1:hover{color:#838385}.sideNav__link--level2:not(.active):hover{color:#838385}.swiper-button-prev:not(.swiper-button-disabled):hover,.swiper-button-next:not(.swiper-button-disabled):hover{color:#595959}.swiper-button-prev:not(.swiper-button-disabled):active,.swiper-button-next:not(.swiper-button-disabled):active{color:#f47920}.table tbody tr:hover:after{opacity:1}.timetable__hour:not(.timetable__hour--selected):not(.timetable__hour--unavailable):hover{border-color:#a6a6a6}.playvideo__icon:hover{color:var(--buttonColorHover)}.playvideo__icon:active{color:var(--buttonColorActive)}.userMenu__link:hover{color:var(--hoverColor)}.contentBox__link:hover{color:#333}.userNav__link:not(.active):hover{background-color:#e8e2d7}.contactinfo__link:hover{color:#838385}.contactinfo__link:active{color:#f47920}.contactinfo__link:active .contactinfo__icon{color:#f47920}.landingList__item:hover .landingItem__title{color:#fff}.landingList__item:hover .landingItem__title:before{opacity:1}.landingItem__link:hover{color:var(--buttonColorHover)}.landingItem__link:active{color:var(--buttonColorActive)}.landingItem--box .landingItem__title:hover{color:var(--buttonColorHover)}.landingItem--box .landingItem__title:active{color:var(--buttonColorActive)}.landingItem__submenuLink:hover{color:#838385}.myList--box:hover:after{opacity:1}.myList__title:hover{color:var(--buttonColorHover)}.myList__title:active{color:var(--buttonColorActive)}.productList .product:hover,.productsSlider .product:hover{box-shadow:0px 6px 16px rgba(51,51,51,.15)}.productThumbs__slide:not(.swiper-slide-thumb-active):hover:after{opacity:1;border-color:#a6a6a6}.sitemapnav__link:hover{color:var(--buttonColorHover)}.sitemapnav__link:active{color:var(--buttonColorActive)}}@media (hover: none)and (pointer: coarse){.landingList__item.active .landingItem__title{color:#fff}.landingList__item.active .landingItem__title:before{opacity:1}} -/*# sourceMappingURL=main.css.map */ diff --git a/html/content/css/overides.css b/html/content/css/overides.css deleted file mode 100644 index 2019468..0000000 --- a/html/content/css/overides.css +++ /dev/null @@ -1,18 +0,0 @@ - -/* main.min.css */ -.product__img { - /* max-width: 320px; */ - max-width: 240px; -} - -.footer__listLink { - color: #bbb; -} -.footer__listLink:hover { - color: #eee; -} - -.footer__title { - /* color: #4d4d4d; */ - color: #bbb7; -} diff --git a/html/content/fonts/CFAstyStd-Bold.woff b/html/content/fonts/CFAstyStd-Bold.woff deleted file mode 100644 index cc78076..0000000 Binary files a/html/content/fonts/CFAstyStd-Bold.woff and /dev/null differ diff --git a/html/content/fonts/CFAstyStd-Bold.woff2 b/html/content/fonts/CFAstyStd-Bold.woff2 deleted file mode 100644 index 1e64724..0000000 Binary files a/html/content/fonts/CFAstyStd-Bold.woff2 and /dev/null differ diff --git a/html/content/fonts/CFAstyStd-Book.woff b/html/content/fonts/CFAstyStd-Book.woff deleted file mode 100644 index 33b40ac..0000000 Binary files a/html/content/fonts/CFAstyStd-Book.woff and /dev/null differ diff --git a/html/content/fonts/CFAstyStd-Book.woff2 b/html/content/fonts/CFAstyStd-Book.woff2 deleted file mode 100644 index 0dd75b1..0000000 Binary files a/html/content/fonts/CFAstyStd-Book.woff2 and /dev/null differ diff --git a/html/content/fonts/CFAstyStd-Medium.woff b/html/content/fonts/CFAstyStd-Medium.woff deleted file mode 100644 index 9138069..0000000 Binary files a/html/content/fonts/CFAstyStd-Medium.woff and /dev/null differ diff --git a/html/content/fonts/CFAstyStd-Medium.woff2 b/html/content/fonts/CFAstyStd-Medium.woff2 deleted file mode 100644 index 8067163..0000000 Binary files a/html/content/fonts/CFAstyStd-Medium.woff2 and /dev/null differ diff --git a/html/content/fonts/iconfont.svg b/html/content/fonts/iconfont.svg deleted file mode 100644 index eefc590..0000000 --- a/html/content/fonts/iconfont.svg +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/html/content/fonts/iconfont.ttf b/html/content/fonts/iconfont.ttf deleted file mode 100644 index af098dd..0000000 Binary files a/html/content/fonts/iconfont.ttf and /dev/null differ diff --git a/html/content/fonts/iconfont.woff b/html/content/fonts/iconfont.woff deleted file mode 100644 index 28f14dd..0000000 Binary files a/html/content/fonts/iconfont.woff and /dev/null differ diff --git a/html/content/fonts/iconfont.woff2 b/html/content/fonts/iconfont.woff2 deleted file mode 100644 index 278d0e1..0000000 Binary files a/html/content/fonts/iconfont.woff2 and /dev/null differ diff --git a/html/content/images/1243x385/jpg/files/pageTitleAnakoinoseis.jpg b/html/content/images/1243x385/jpg/files/pageTitleAnakoinoseis.jpg deleted file mode 100644 index fdabc32..0000000 Binary files a/html/content/images/1243x385/jpg/files/pageTitleAnakoinoseis.jpg and /dev/null differ diff --git a/html/content/images/1243x385/jpg/files/pageTitleDiagonismoi.jpg b/html/content/images/1243x385/jpg/files/pageTitleDiagonismoi.jpg deleted file mode 100644 index a0097d0..0000000 Binary files a/html/content/images/1243x385/jpg/files/pageTitleDiagonismoi.jpg and /dev/null differ diff --git a/html/content/images/1243x385/jpg/files/pageTitleKatalogoi.jpg b/html/content/images/1243x385/jpg/files/pageTitleKatalogoi.jpg deleted file mode 100644 index 70149d2..0000000 Binary files a/html/content/images/1243x385/jpg/files/pageTitleKatalogoi.jpg and /dev/null differ diff --git a/html/content/images/1243x385/jpg/files/pageTitleKatastimata.jpg b/html/content/images/1243x385/jpg/files/pageTitleKatastimata.jpg deleted file mode 100644 index 2e5ce5a..0000000 Binary files a/html/content/images/1243x385/jpg/files/pageTitleKatastimata.jpg and /dev/null differ diff --git a/html/content/images/1243x385/jpg/files/pageTitleOrario.jpg b/html/content/images/1243x385/jpg/files/pageTitleOrario.jpg deleted file mode 100644 index 7acf891..0000000 Binary files a/html/content/images/1243x385/jpg/files/pageTitleOrario.jpg and /dev/null differ diff --git a/html/content/images/1243x385/png/files/emarket.png b/html/content/images/1243x385/png/files/emarket.png deleted file mode 100644 index 8914a17..0000000 Binary files a/html/content/images/1243x385/png/files/emarket.png and /dev/null differ diff --git a/html/content/images/140x42/png/Content/media/appstore.webp b/html/content/images/140x42/png/Content/media/appstore.webp deleted file mode 100644 index 0de0499..0000000 Binary files a/html/content/images/140x42/png/Content/media/appstore.webp and /dev/null differ diff --git a/html/content/images/140x42/png/Content/media/googlePlay.webp b/html/content/images/140x42/png/Content/media/googlePlay.webp deleted file mode 100644 index a420b24..0000000 Binary files a/html/content/images/140x42/png/Content/media/googlePlay.webp and /dev/null differ diff --git a/html/content/images/300x300/png/Content/media/sampleProduct.jp2 b/html/content/images/300x300/png/Content/media/sampleProduct.jp2 deleted file mode 100644 index fcffcca..0000000 Binary files a/html/content/images/300x300/png/Content/media/sampleProduct.jp2 and /dev/null differ diff --git a/html/content/images/300x300/png/Content/media/sampleProduct.jpg b/html/content/images/300x300/png/Content/media/sampleProduct.jpg deleted file mode 100644 index d79daac..0000000 Binary files a/html/content/images/300x300/png/Content/media/sampleProduct.jpg and /dev/null differ diff --git a/html/content/images/300x300/png/Content/media/sampleProduct.png b/html/content/images/300x300/png/Content/media/sampleProduct.png deleted file mode 100644 index c244909..0000000 Binary files a/html/content/images/300x300/png/Content/media/sampleProduct.png and /dev/null differ diff --git a/html/content/images/300x300/png/Content/media/sampleProduct.webp b/html/content/images/300x300/png/Content/media/sampleProduct.webp deleted file mode 100644 index acf68b5..0000000 Binary files a/html/content/images/300x300/png/Content/media/sampleProduct.webp and /dev/null differ diff --git a/html/content/images/h20/png/Content/media/cards/dinersClub.png b/html/content/images/h20/png/Content/media/cards/dinersClub.png deleted file mode 100644 index da2b36a..0000000 Binary files a/html/content/images/h20/png/Content/media/cards/dinersClub.png and /dev/null differ diff --git a/html/content/images/h20/png/Content/media/cards/dinersClub.webp b/html/content/images/h20/png/Content/media/cards/dinersClub.webp deleted file mode 100644 index 1625a1b..0000000 Binary files a/html/content/images/h20/png/Content/media/cards/dinersClub.webp and /dev/null differ diff --git a/html/content/images/h20/png/Content/media/cards/mastercard.png b/html/content/images/h20/png/Content/media/cards/mastercard.png deleted file mode 100644 index abd172e..0000000 Binary files a/html/content/images/h20/png/Content/media/cards/mastercard.png and /dev/null differ diff --git a/html/content/images/h20/png/Content/media/cards/mastercard.webp b/html/content/images/h20/png/Content/media/cards/mastercard.webp deleted file mode 100644 index 710f177..0000000 Binary files a/html/content/images/h20/png/Content/media/cards/mastercard.webp and /dev/null differ diff --git a/html/content/images/h20/png/Content/media/cards/visa.png b/html/content/images/h20/png/Content/media/cards/visa.png deleted file mode 100644 index 283c48f..0000000 Binary files a/html/content/images/h20/png/Content/media/cards/visa.png and /dev/null differ diff --git a/html/content/images/h20/png/Content/media/cards/visa.webp b/html/content/images/h20/png/Content/media/cards/visa.webp deleted file mode 100644 index 1402fb2..0000000 Binary files a/html/content/images/h20/png/Content/media/cards/visa.webp and /dev/null differ diff --git a/html/content/js/Cart/miniCart.js b/html/content/js/Cart/miniCart.js deleted file mode 100644 index c02cc38..0000000 --- a/html/content/js/Cart/miniCart.js +++ /dev/null @@ -1,96 +0,0 @@ -$$plugins.define('miniCart', ['dom'], function (element, options, dom) { - const plugin = this, - selectors = { - openMiniCart: '.open-mini-cart', // Link that opens cart - closeMiniCart: '.close-mini-cart', // Link that closes cart - contentOuterContainer: '.miniCart', // Container for loader and inner content inner - loaderContainer: '.miniCart__holder', // Spinner or any other loader - contentInnerContainer: '.miniCart__main', // Content of mini cart - cartPluginElement: '[data-plugin-cart]' - }, cssClasses = { - opened: 'opened', // Added to 'openMinicart' link when opened - containerOpened: 'active' - }; - let pendingXhr, clearOnClick; - - function onBodyClick(e) { - if (element.contains(e.target)) { - return; - } - // case where node is removed from DOM. This means we dont know it's parent. Usually the case of cart remove. - if (!document.body.contains(e.target)) { - return; - } - close(); - } - - function close() { - // Remove opened class from link - element.querySelector(selectors.openMiniCart).classList.remove(cssClasses.opened); - - //Hide outer element - var outterContainer = element.querySelector(selectors.contentOuterContainer); - // dom.hide(outterContainer); - outterContainer.classList.remove(cssClasses.containerOpened); - // Hide and reset inner element - const inner = element.querySelector(selectors.contentInnerContainer); - //dom.empty(inner); - // dom.hide(inner); - - - // Show loader again to be ready for next time - //dom.show(element.querySelector(selectors.loaderContainer)); - - // Unbind body click - clearOnClick && clearOnClick(); - } - - function open() { - // Add opened class to link - element.querySelector(selectors.openMiniCart).classList.add(cssClasses.opened); - - // Show outer container - //dom.show(); - var outterContainer = element.querySelector(selectors.contentOuterContainer); - outterContainer.style.display = "block"; - outterContainer.classList.add(cssClasses.containerOpened); - // Listen for body clicks to close - clearOnClick && clearOnClick(); - clearOnClick = plugin.on('click', document.body, onBodyClick); - return true; - } - - function updateContent() { - return; - if (pendingXhr) { - return; - } - pendingXhr = true; - http.post(options.RefreshUrl, { responseType: "text" }) - .then(function (r) { - const container = element.querySelector(selectors.contentInnerContainer); - container.innerHTML = r.data; - dom.hide(element.querySelector(selectors.loaderContainer)); - dom.show(container); - }) - .finally(function () { - pendingXhr = false; - }); - } - - const openedStateSelector = selectors.openMiniCart + '.' + cssClasses.opened, - closedStateSelector = selectors.openMiniCart + ':not(.' + cssClasses.opened + ')'; - - plugin.on('click', element, function (e) { - if (dom.closest(e.target, openedStateSelector)) { - e.preventDefault(); - close(); - } else if (dom.closest(e.target, closedStateSelector)) { - - if (open()) { - e.preventDefault(); - updateContent(); - } - } - }); -}); diff --git a/html/content/js/Filters/filterStatus.js b/html/content/js/Filters/filterStatus.js deleted file mode 100644 index 1338b4c..0000000 --- a/html/content/js/Filters/filterStatus.js +++ /dev/null @@ -1,113 +0,0 @@ -$$plugins.define('filterStatus', ['domHelper'], function (element, options, $) { - var filterName = element.dataset.inputname, - filterInput = element.querySelectorAll('.filter__input'), - clear = element.querySelectorAll('.filtersClear'), - clearAll = document.querySelectorAll('.filtersClearAll'), - selectedRadios, - selectedRadio; - - //on radiobutton, checkbox change - if (filterInput.length > 0) { - for (var i = 0; i < filterInput.length; i++) { - filterInput[i].addEventListener('change', function (e) { - filterGroupStatus(); - selectedFilters(e.target); - filterBarStatus(); - activeFilters(); - }); - } - } - - //clear filter group - for (var i = 0; i < clear.length; i++) { - clear[i].addEventListener('click', function (e) { - clearFilterGroup(); - filterBarStatus(); - activeFilters(); - }) - } - - //clearAll - for (var i = 0; i < clearAll.length; i++) { - clearAll[i].addEventListener('click', function (e) { - document.querySelectorAll('.selectedFilters__remove').forEach((elem) => elem.click()); - filterBarStatus(); - activeFilters(); - }) - } - - //check filter group status - function filterGroupStatus() { - if ($('.filter__input[name=' + filterName + ']:checked').length >= 1) { - element.classList.add('filter--checked'); - } - else { - element.classList.remove('filter--checked'); - } - } - - //add-remove selected filters on filters bar and on filter - function selectedFilters(inputElm) { - if (inputElm.checked) { - var selectedValue = $(inputElm).siblings('.filter__value').text(), - selectedItemId = inputElm.id, - selectedItem = document.createElement('li'), - selectedItemValue = document.createElement('span'), - selectedItemButton = document.createElement('button'); - - selectedItem.dataset.id = selectedItemId; - selectedItem.dataset.name = filterName; - selectedItem.setAttribute("class", "selectedFilters__item"); - selectedItemValue.setAttribute("class", "selectedFilters__value"); - selectedItemValue.innerHTML = selectedValue; - selectedItemButton.setAttribute("class", "selectedFilters__remove"); - - selectedItem.prepend(selectedItemButton); - selectedItem.prepend(selectedItemValue); - document.querySelector('.selectedFilters__list').prepend(selectedItem); - - if (inputElm.classList.contains('radiobutton__input')) { - - selectedRadios = Object.values(element.querySelectorAll('[name=' + filterName + ']')).filter(selectedRadio => selectedRadio !== inputElm); - for (var i = 0; i < selectedRadios.length; i++) { - selectedRadio = document.querySelector('[data-id=' + selectedRadios[i].id + ']') - if (typeof(selectedRadio) != 'undefined' && selectedRadio != null) { - selectedRadio.remove(); - //$('.filter__selectedValItem[data-id=' + $(this).attr('id') + ']').remove(); - } - } - } - } else { - if (inputElm.classList.contains('checkbox__input')) { - document.querySelector('[data-id=' + inputElm.id + ']').remove(); - //$('.filter__selectedValItem[data-id=' + inputElm.attr('id') + ']').remove(); - } - } - } - - //clear filter group - function clearFilterGroup() { - document.querySelectorAll('input[name=' + filterName + ']').forEach((elem) => elem.checked = false); - document.querySelectorAll('[data-name=' + filterName + ']').forEach((elem) => elem.remove()); - //$('.filter__selectedVal[data-name=' + filterName + ']').empty(); - filterGroupStatus(); - } - - function filterBarStatus() { - if ($('.selectedFilters__item').length > 1) { - $('.selectedFilters').addClass('active'); - } else { - $('.selectedFilters').removeClass('active'); - } - } - - //no of active filter groups - function activeFilters() { - document.getElementsByClassName("filters__mobButton")[0].dataset.activefilters = $('.filter--checked').length; - if ($('.filter--checked').length > 0) { - $('.filters').addClass('filters--checked'); - } else { - $('.filters').removeClass('filters--checked'); - } - } -}); \ No newline at end of file diff --git a/html/content/js/Filters/filters.js b/html/content/js/Filters/filters.js deleted file mode 100644 index e5ade01..0000000 --- a/html/content/js/Filters/filters.js +++ /dev/null @@ -1,110 +0,0 @@ -$$plugins.define('filters', ['domHelper','throttle'], function (element, options, $, throttle) { - var filterTitle = element.querySelectorAll(".filter__title"), - closeButton = element.querySelectorAll(".filters__close"), - filterBack = element.querySelectorAll(".filters__mobTitle--prev"), - filterContent; - - document.documentElement.style.setProperty('--windowHeight', window.innerHeight + "px"); - - //filter accordions - for (var i = 0; i < filterTitle.length; i++) { - filterTitle[i].addEventListener('click', function (e) { - filterContent = $(e.target).siblings('.filter__content'); - if ($(e.target).parents('.filter').hasClass('filter--closed')) { - $(e.target).parents('.filter').removeClass('filter--closed'); - filterContent.slideDown(240, function () { - filterContent.removeAttr('style'); - }); - if ($('.filter:not(.filter--closed)').not($(e.target).parents('.filter')).length > 0) { - $('.filter:not(.filter--closed)').not($(e.target).parents('.filter')).addClass('filter--closed'); - //$('.filter:not(.filter--closed)').not($(e.target).parents('.filter')).find('.filter__title').trigger('click'); - } - } else { - filterContent.slideUp(240, function () { - $(e.target).parents('.filter').addClass('filter--closed'); - filterContent.removeAttr('style'); - }); - } - }); - }; - - //mobile filter back - for (var i = 0; i < filterBack.length; i++) { - filterBack[i].addEventListener('click', function (e) { - e.target.closest('.filters__item').classList.remove('filters__item--opened'); - element.classList.remove('filters--2levelOpened'); - }) - } - - //mobile filter button - //function scrollEvents() { - // var button = document.getElementsByClassName("filters__mobButton")[0]; - // if (window.scrollY > window.innerHeight * 0.5) { - // button.classList.add("filters__mobButton--mini"); - // } else { - // button.classList.remove("filters__mobButton--mini"); - // } - //} - - function resizeEvents() { - //close mobile menu on desktop - if (window.innerWidth >= 1024 && document.documentElement.classList.contains('filtersOpened')) { - element.classList.remove('filters--opened'); - element.classList.remove('filters--2levelOpened'); - element.querySelector('.filters__item').classList.remove('filters__item--opened'); - document.documentElement.classList.remove('filtersOpened'); - element.style.setProperty('--mobFiltersTop', 0 + "px"); - document.querySelector('.mainContainer').style.transform = ''; - } - - ////mobile filters Height - if (window.innerWidth < 1024) { - document.documentElement.style.setProperty('--windowHeight', window.innerHeight + "px"); - } - } - - //scrollEvents(); - - //window.addEventListener('scroll', EventUtils.throttle(scrollEvents, 50)); - window.addEventListener('resize', throttle(resizeEvents, 200)); - - element.querySelector('.filters__mobButton').addEventListener('click', function (e) { - openFilters(); - }); - - for (var i = 0; i < closeButton.length; i++) { - closeButton[i].addEventListener('click', function (e) { - closeFilters(); - }) - } - - var positionTop; - function openFilters() { - positionTop = -window.pageYOffset; - element.classList.add('filters--opened'); - document.documentElement.classList.add('filtersOpened'); - element.style.setProperty('--mobFiltersTop', -positionTop + "px"); - document.querySelector('.mainContainer').style.transform = "translateY(" + positionTop + "px)"; - } - - function closeFilters() { - element.classList.remove('filters--opened'); - element.classList.remove('filters--2levelOpened'); - setTimeout(function () { element.querySelector('.filters__item--opened').classList.remove('filters__item--opened'); }, 350); - document.documentElement.classList.remove('filtersOpened'); - element.style.setProperty('--mobFiltersTop', 0 + "px"); - document.querySelector('.mainContainer').style.transform = ''; - - window.scrollTo({ - top: -positionTop - }); - } - - document.addEventListener('click', function (event) { - if (!$('.filter').not('.filter--closed').length || $(event.target).parents('.filter').length) { - return; - } - - $('.filter').not('.filter--closed').find('.filter__title').trigger('click'); - }); -}); \ No newline at end of file diff --git a/html/content/js/Filters/filtersBar.js b/html/content/js/Filters/filtersBar.js deleted file mode 100644 index feb3cd9..0000000 --- a/html/content/js/Filters/filtersBar.js +++ /dev/null @@ -1,32 +0,0 @@ -$$plugins.define('filtersBar', ['domHelper'], function (element, options, $) { - //clear filter item - //$('.selectedFilters').on('click', '.selectedFilters__remove', function () { - // var filterItemId = $(this).parents('.selectedFilters__item').data('id'), - // filterName = $(this).parents('.selectedFilters__item').data('name'), - // filterGroup = $('.filters__item[data-input-name=' + filterName + ']'); - - // if ($("#" + filterItemId).hasClass('checkbox__input') || $("#" + filterItemId).hasClass('radiobutton__input')) { - // $("#" + filterItemId).prop("checked", false); - // $(this).parents('.selectedFilters__item').remove(); - // $('.filter__selectedValItem[data-id=' + filterItemId + ']').remove(); - // } - - // if ($("#" + filterItemId).hasClass('range')) { - // $(this).parents('.selectedFilters__item').remove(); - // $("#" + filterItemId).parents('.filters__item').find('.filtersClear').trigger('click'); - // } - - // if (filterGroup.find('.filter__input:checked').length >= 1) { - // filterGroup.addClass('filter--checked'); - // } - // else { - // filterGroup.removeClass('filter--checked'); - // } - - // if ($('.selectedFilters__item').length > 1) { - // $('.selectedFilters').addClass('active'); - // } else { - // $('.selectedFilters').removeClass('active'); - // } - //}); -}); diff --git a/html/content/js/Filters/range.js b/html/content/js/Filters/range.js deleted file mode 100644 index fb8c941..0000000 --- a/html/content/js/Filters/range.js +++ /dev/null @@ -1,98 +0,0 @@ -$$plugins.define('range', ['domHelper', 'nouislider', 'wNumb', 'debounce'], function (element, options, $, noUiSlider, wNumb, debounce) { - var slider = element.querySelector('.range__slider'), - inputs = $('.range__input--min,.range__input--max'), - selectedMin = element.closest('.filters__item').querySelector('.filter__selectedPriceMin'), - selectedMax = element.closest('.filters__item').querySelector('.filter__selectedPriceMax'); - - - noUiSlider.create(slider, { - start: [options.selectedMin, options.selectedMax], - connect: true, - tooltips: [wNumb({ decimals: 0, postfix: '€' }), wNumb({ decimals: 0, postfix: '€' })], - range: { - 'min': options.initMin, - 'max': options.initMax - } - }); - - - slider.noUiSlider.on('update', function (values, handle) { - var input = inputs.get(handle); - var previousValue = input.value; - - input.value = parseFloat(values[handle]).toFixed(0); - if (input.value == previousValue) { - return; - } - changing = true; - - $(input).trigger('change'); - changing = false; - - selectedMin.innerHTML = slider.noUiSlider.get(true)[0].toFixed(0); - selectedMax.innerHTML = slider.noUiSlider.get(true)[1].toFixed(0); - }); - - var changing = false; - var setValue = debounce(function (handle, value) { - slider.noUiSlider.setHandle(handle, value); - $(inputs.get(handle)).trigger('change'); - }, 500); - - inputs.each(function (input, handle) { - $(input).on('change', function () { - if (changing) { - return; - } - slider.noUiSlider.setHandle(handle, this.value); - }); - - $(input).on('keydown', function (e) { - var value = Number($(this).val()); - var steps = slider.noUiSlider.steps(); - - var step = steps[handle]; - var position; - switch (e.which) { - //enter - case 13: - slider.noUiSlider.setHandle(handle, this.value); - break; - // key up - case 38: - e.preventDefault(); - // Get step to go increase slider value (up) - position = step[1]; - - // false = no step is set - if (position === false) { - position = 1; - } - - // null = edge of slider - if (position !== null) { - setValue(handle, input.value = value + position) - } - - break; - // key down - case 40: - e.preventDefault(); - position = step[0]; - - if (position === false) { - position = 1; - } - - if (position !== null) { - setValue(handle, input.value = value - 1) - } - - break; - } - input.focus(); - }); - }); - - -}); diff --git a/html/content/js/Forms/ajaxForm.js b/html/content/js/Forms/ajaxForm.js deleted file mode 100644 index 6ade446..0000000 --- a/html/content/js/Forms/ajaxForm.js +++ /dev/null @@ -1,188 +0,0 @@ -$.defineAttributePlugin('ajaxform', ['serialize', 'debounce'], function ($element, options, serialize, debounce) { - options = options || {}; - options.Url = options.Url || $element.attr('action'); - - var loader = ''; - var submit; - var onError = debounce(scrollToFirstError, 100); - - onError(); - - function getElementToReplace() { - var $toReplace; - if (options.ElementID) { - $toReplace = $("#" + options.ElementID); - } - else { - $toReplace = $element.closest('.ajax-replace-container'); - if ($toReplace.length === 0) { - $toReplace = $element.closest('div.form'); - } - if ($toReplace.length === 0) { - $toReplace = $element; - } - } - return $toReplace; - } - - function ajaxComplete(response, $element) { - var flow = response.getResponseHeader("X-FlowComplete"); - - if (flow) { - - $element.trigger('flowcomplete', flow); - } - } - - function createReplacement(content) { - return $(content); // $('
' + content + '
'); //.find('> *'); - } - var submitting = false; - submit = function () { - if (!options.Url || submitting) { - return; - } - submitting = true; - mask(); - var headers = { - "X-NoRedirect": "true" - }; - var $toReplace = getElementToReplace(); - if ($toReplace.is('.ajax-modal')) { - headers["X-Modal"] = "true"; - } - var result = { - redirected: false - }; - - var ajaxOptions = { - url: options.Url, - headers: headers, - beforeSend: function () { - $('body').trigger('TopLoader:Show'); - $element.find('[type="submit"]').attr('disabled', 'disabled'); - }, - type: 'post', - success: function (content, status, response) { - if (content.RedirectUrl) { - result.redirected = true; - window.location.href = content.RedirectUrl; - return; - } - if (content) { - var $replacement = createReplacement(content); - $toReplace.replaceWith($replacement); - $replacement.parseAttributePlugins(); - ajaxComplete(response, $replacement); - $replacement.trigger('ajaxForm.submitted'); - } - else { - ajaxComplete(response, $element); - } - - - }, - complete: function () { - $('body').trigger('TopLoader:Hide'); - if (!result.redirected) { - unmask(); - $element.find('[clicked]').removeAttr('clicked'); - $element.find('[type="submit"]').removeAttr('disabled'); - submitting = false; - } - }, - error: function (r) { - if (r.status === 401) { - location.reload(); - return; - } - } - }; - - if ($element.is("form") && $element.prop("enctype") === "multipart/form-data") { - ajaxOptions.data = new FormData($element.get(0)); - ajaxOptions.contentType = false; - ajaxOptions.processData = false; - } else { - var $elements = $element.find('input[name], textarea[name], select[name], :submit[name][clicked=true]') - ajaxOptions.data = serialize($elements); - } - - $.ajax(ajaxOptions); - }; - - function mask() { - $element.find('[clicked]').addClass('in-progress').append(loader); - $element.trigger('ajaxform.submitting'); - } - function unmask() { - $element.find('[clicked]').removeClass('in-progress').find('.ajax-loader').remove(); - $element.trigger('ajaxform.complete'); - } - - if (options.LazyVerification) { - var s = submit; - submit = function () { - $.ajax({ - url: options.LazyVerification, - beforeSend: function () { - $element.find('[type="submit"]').attr('disabled', 'disabled'); - }, - type: 'post', - success: function (content, status, response) { - $element.append(content); - s(); - }, - complete: function () { - $element.find('[type="submit"]').removeAttr('disabled'); - } - }); - }; - } - $element.find("[type=submit]").click(function () { - $element.find("[type=submit]").removeAttr("clicked"); - $(this).attr("clicked", "true"); - }); - if ($element.is('form')) { - $element.on('submit', function (e) { - - if (options.Url) { - e.preventDefault(); - } - var clickedButton = $element.find('[clicked]'); - if (!clickedButton.is('.cancel')) { - if (!$element.valid()) { - console.warn('validation error'); - onError(); - return; - } - } - submit(); - }); - } - else { - $element.find('[type="submit"]').click(function (e) { - e.preventDefault(); - e.stopPropagation(); - submit(); - }); - } - $element.data('ajaxform.submit', submit); - - function scrollToFirstError() { - var $erroneousElement = $element.find(".field-validation-error").eq(0).parents(".field"); - - if ($erroneousElement.length === 1) { - var top = $erroneousElement.offset().top; - var $header = $('.headerWrp'); - if ($header.length) { - top -= $header.height() + 80; - } - $('html,body').animate({ - scrollTop: top - }, 500); - $erroneousElement.find("input").focus(); - } - } - -}); diff --git a/html/content/js/Forms/clearinput.js b/html/content/js/Forms/clearinput.js deleted file mode 100644 index 903244f..0000000 --- a/html/content/js/Forms/clearinput.js +++ /dev/null @@ -1,16 +0,0 @@ -$$plugins.define('clearinput', function (element, options) { - var input = element.previousElementSibling; - - input.addEventListener("keyup", function (e) { - e.preventDefault(); - if (input.value !== "") { - element.classList.add("active"); - } - }); - - element.addEventListener("click", function (e) { - e.preventDefault(); - input.value = ""; - element.classList.remove("active"); - }); -}); diff --git a/html/content/js/Forms/customValidators.js b/html/content/js/Forms/customValidators.js deleted file mode 100644 index 3ebecf9..0000000 --- a/html/content/js/Forms/customValidators.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['jQuery', 'jquery.validate', 'jquery.validate.unobtrusive'], function () { - $.validator.unobtrusive.adapters.add("requirechecked", [], - function (options) { - options.rules['requirechecked'] = 'requirechecked'; - options.messages['requirechecked'] = options.message; - } - ); - $.validator.addMethod("requirechecked", function (value, element, e) { - return $(element).is(':checked'); - }); -}); \ No newline at end of file diff --git a/html/content/js/Forms/password.js b/html/content/js/Forms/password.js deleted file mode 100644 index c0ccbef..0000000 --- a/html/content/js/Forms/password.js +++ /dev/null @@ -1,15 +0,0 @@ -$$plugins.define('password', function (element, options) { - var input = element.previousElementSibling; - - element.addEventListener("click", function (e) { - e.preventDefault(); - if (input.type === 'password') { - input.type = 'text'; - element.classList.add('disabled'); - } - else { - input.type = 'password'; - element.classList.remove('disabled'); - } - }); -}); diff --git a/html/content/js/Forms/select.js b/html/content/js/Forms/select.js deleted file mode 100644 index 3ea5435..0000000 --- a/html/content/js/Forms/select.js +++ /dev/null @@ -1,52 +0,0 @@ -$$plugins.define('select', ['domHelper'], function (element, options, $) { - var list = element.querySelector('.select__listWrap'), - selected = $('.select__button'), - selectedMob = element.querySelector('.select__button--mobile'), - input = element.querySelector('.select__input'), - options = $('.select__option'); - - function open() { - element.classList.add('select--open'); - $(list).slideDown(250); - } - - function close() { - $(list).slideUp(250, function () { - element.classList.remove('select--open'); - }); - } - - document.addEventListener('click', function (event) { - if (!isOpen() || element == event.target || $(event.target).parents().contains(element)) { - return; - } - close(); - }); - - selected.on("click", function (e) { - e.preventDefault(); - if (element.classList.contains('select--open')) { - close(); - } else { - open(); - } - }); - - function isOpen() { - return element.classList.contains('select--open'); - } - - options.on('click', function (e) { - e.target.classList.add('selected'); - prevActiveOption = Object.values(element.querySelectorAll('.selected')).filter(prevActive => prevActive !== e.target); - if (prevActiveOption.length != 0) { - prevActiveOption[0].classList.remove('selected'); - } - selected.text(e.target.innerHTML); - if (selectedMob) { - selectedMob.innerHTML = e.target.innerHTML; - } - $(input).val(e.target.dataset.value).trigger('change'); - close(); - }); -}); diff --git a/html/content/js/Forms/serialize.js b/html/content/js/Forms/serialize.js deleted file mode 100644 index 0bdd44c..0000000 --- a/html/content/js/Forms/serialize.js +++ /dev/null @@ -1,30 +0,0 @@ -define(function () { - return function ($elements) { - var values = {}; - $elements.each(function () { - var $input = $(this); - var value = $input.val(); - if (!value) { - return; - } - if ($input.is(':checkbox, :radio') && !$input.is(':checked')) { - return; - } - var name = $(this).attr('name'); - var v = values[name] || []; - values[name] = v; - v.push(value); - }); - var s = ''; - for (var k in values) { - for (var i = 0; i < values[k].length; i++) { - s += '&' + k + '=' + encodeURIComponent(values[k][i]); - } - } - if (s) { - s = s.substr(1); - } - return s; - }; - -}); \ No newline at end of file diff --git a/html/content/js/Forms/textarea.js b/html/content/js/Forms/textarea.js deleted file mode 100644 index 493c78f..0000000 --- a/html/content/js/Forms/textarea.js +++ /dev/null @@ -1,26 +0,0 @@ -$$plugins.define('textarea', function (element, options) { - const textarea = element.querySelector('textarea'); - - //style focus - textarea.addEventListener('focus', (event) => { - textarea.closest(".textarea").classList.add("focus"); - }); - - textarea.addEventListener('blur', (event) => { - textarea.closest(".textarea").classList.remove("focus"); - }); - - //characters count - textarea.addEventListener("input", event => { - const target = event.currentTarget; - const maxLength = target.getAttribute("maxlength"); - const currentLength = target.value.length; - const currentLengthText = document.getElementsByClassName("textarea__remaining")[0]; - - currentLengthText.innerHTML = currentLength; - - if (currentLength >= maxLength) { - return; - } - }); -}); diff --git a/html/content/js/Forms/validateform.js b/html/content/js/Forms/validateform.js deleted file mode 100644 index 38629e2..0000000 --- a/html/content/js/Forms/validateform.js +++ /dev/null @@ -1,3 +0,0 @@ -$.defineAttributePlugin('validateform', ['jQuery', 'jquery.validate', 'jquery.validate.unobtrusive', 'customValidators'], function ($element) { - $.validator.unobtrusive.parse($element); -}); \ No newline at end of file diff --git a/html/content/js/Images/lazyload.js b/html/content/js/Images/lazyload.js deleted file mode 100644 index 4f954af..0000000 --- a/html/content/js/Images/lazyload.js +++ /dev/null @@ -1,61 +0,0 @@ -$$plugins.define('lazyload', function (element, options) { - const plugin = this; - plugin.logger.debug("lazy loading"); - const mutationObserver = - new MutationObserver(function (mutations) { - mutations.forEach(function (mutation, index) { - if (mutation.type === 'childList') { - mutation.addedNodes.forEach(update); - } - }); - }), - observer = - new IntersectionObserver(function (entries, self) { - entries.forEach(function (entry) { - if (entry.isIntersecting) { - load(entry.target); - self.unobserve(entry.target); - } - }); - }, options || { - rootMargin: '0px 0px 1250px 0px', - threshold: 0 - }), - elms = element.querySelectorAll('.lazy'); - elms.forEach(elm => observer.observe(elm)); - mutationObserver.observe(element, { childList: true, subtree: true }); - - function update(element) { - if (!(element instanceof (HTMLElement))) { - return; - } - const container = element || document; - if (!container.querySelectorAll) { - return; - } - const elms = container.querySelectorAll('.lazy'); - Array.prototype.forEach.call(elms, (elm) => !elm.getAttribute('data-loaded') && observer.observe(elm)); - } - - function load(elm) { - let i = 0, source, attr, picture = elm.parentElement, sources = picture.querySelectorAll('.lazysrcset'); - if (sources.length) { - for (; i < sources.length; i++) { - source = sources[i]; - attr = source.getAttribute('data-srcset'); - if (attr) { - source.srcset = source.getAttribute('data-srcset'); - } - } - } - - if (!elm.getAttribute('data-loaded') && elm.getAttribute('data-src')) { - elm.src = elm.getAttribute('data-src'); - elm.setAttribute('data-loaded', true); - } - } - - return { - update: update - }; -}); \ No newline at end of file diff --git a/html/content/js/Modals/modal.js b/html/content/js/Modals/modal.js deleted file mode 100644 index 7ce9145..0000000 --- a/html/content/js/Modals/modal.js +++ /dev/null @@ -1,6 +0,0 @@ -$$plugins.define('modal', ['domHelper'], function (element, options, $) { - var close = $(element).find('.modal__close'); - close.on('click', function () { - $(element).removeClass('open'); - }); -}); diff --git a/html/content/js/Plugins/accordion.js b/html/content/js/Plugins/accordion.js deleted file mode 100644 index 62e25ad..0000000 --- a/html/content/js/Plugins/accordion.js +++ /dev/null @@ -1,43 +0,0 @@ -$$plugins.define('accordion', ['domHelper'], function (element, options, $) { - var animating = false, - $header = $(element).find('.acc:not(.acc--disabled) .acc__header'), - $content, - $prevActiveAcc, - $this, - $accItem, - singleOpen = options.singleOpen ? options.singleOpen : false; - - $header.on('click', function (e) { - $this = $(this); - $accItem = $this.parent('.acc'); - $content = $this.next('.acc__content'); - if (animating === true) { - return; - } - animating = true; - if ($accItem.is('.open')) { - $content.slideUp(300, function () { - $accItem.removeClass('open'); - $content.removeAttr('style'); - animating = false; - }); - } else { - $content.slideDown(300, function () { - $accItem.addClass('open'); - $content.removeAttr('style'); - animating = false; - }); - - if (singleOpen) { - $prevActiveAcc = $accItem.siblings('.acc.open'); - if ($prevActiveAcc.length != 0) { - $prevActiveAcc.find('.acc__content').slideUp(300, function () { - $prevActiveAcc.removeClass('open'); - $prevActiveAcc.find('.acc__content').removeAttr('style'); - animating = false; - }); - } - } - } - }); -}); diff --git a/html/content/js/Plugins/breadcrumb.js b/html/content/js/Plugins/breadcrumb.js deleted file mode 100644 index 112824b..0000000 --- a/html/content/js/Plugins/breadcrumb.js +++ /dev/null @@ -1,9 +0,0 @@ -$$plugins.define('breadcrumb', function (element, options) { - var scrollPos = element.querySelector('.breadcrumb__item:last-child').offsetLeft - element.offsetLeft; - - element.scroll({ - top: 0, - left: scrollPos, - behavior: 'smooth' - }); -}); diff --git a/html/content/js/Plugins/copy.js b/html/content/js/Plugins/copy.js deleted file mode 100644 index c33430f..0000000 --- a/html/content/js/Plugins/copy.js +++ /dev/null @@ -1,25 +0,0 @@ -$$plugins.define('copy', function (element, options) { - //copyButton: data-copy-btn - //content to be copied: data-copy-text - //tooltip: data-copy-tooltip - - const copyButton = element, - copyButtonId = copyButton.getAttribute('data-copy-btn'), - copyText = document.querySelector(`[data-copy-text='${copyButtonId}']`), - tooltip = document.querySelector(`[data-copy-tooltip='${copyButtonId}']`); - - function copy() { - var r = document.createRange(); - r.selectNode(copyText); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(r); - document.execCommand('copy'); - window.getSelection().removeAllRanges(); - tooltip.classList.add('copyText__tooltip--open'); - setTimeout(function () { - tooltip.classList.remove('copyText__tooltip--open'); - }, 1600); - } - - copyButton.addEventListener("click", copy); -}); diff --git a/html/content/js/Plugins/expand.js b/html/content/js/Plugins/expand.js deleted file mode 100644 index 533e978..0000000 --- a/html/content/js/Plugins/expand.js +++ /dev/null @@ -1,38 +0,0 @@ -$$plugins.define('expand', ['domHelper'], function (element, options, $) { - //triggerButton: data-trigger-expand - //content to be initialized: data-content-expand - const triggerButton = element.querySelector('[data-trigger-expand]'), - triggerButtonId = triggerButton.getAttribute('data-trigger-expand'), - content = $(`[data-content-expand='${triggerButtonId}']`); - - var $triggerButton = $(triggerButton); - - $triggerButton.on('click', function (e) { - e.preventDefault(); - if ($triggerButton.hasClass('active')) { - content.slideUp(300, function () { - $triggerButton.removeClass('active'); - content.removeAttr('style'); - }); - } else { - $triggerButton.addClass('active'); - content.slideDown(300, function () { - if (content.find('.scrollbarShadow').length > 0 && !content.find('.scrollbarShadow').hasClass('initialized')) { - content.find('.scrollbarShadow').addClass('initialized'); - } - }); - } - }); - - if (options.closeOnCLickAway == true) { - document.addEventListener('click', function (event) { - if (!$triggerButton.hasClass('active') || element == event.target || $(event.target).parents().contains(element)) { - return; - } - content.slideUp(300, function () { - $triggerButton.removeClass('active'); - content.removeAttr('style'); - }); - }); - } -}); diff --git a/html/content/js/Plugins/expandText.js b/html/content/js/Plugins/expandText.js deleted file mode 100644 index 0b58cb7..0000000 --- a/html/content/js/Plugins/expandText.js +++ /dev/null @@ -1,5 +0,0 @@ -$$plugins.define('expandText', function (element, options) { - element.querySelector('.expandText__button').addEventListener('click', () => { - element.classList.toggle('open'); - }); -}); diff --git a/html/content/js/Plugins/fileinput.js b/html/content/js/Plugins/fileinput.js deleted file mode 100644 index 10ba891..0000000 --- a/html/content/js/Plugins/fileinput.js +++ /dev/null @@ -1,20 +0,0 @@ -$$plugins.define('fileinput', function (element, options) { - const inputfile = element.querySelector('.file-upload__input'); - const filedelete = element.querySelector('.file-upload__delete'); - - inputfile.addEventListener('change', (event) => { - const inputname = element.querySelector('.file-upload__name'); - const filename = inputfile.files[0].name; - inputname.innerText = filename; - element.classList.add('file-upload__filled'); - }); - - filedelete.addEventListener('click', (event) => { - const inputname = element.querySelector('.file-upload__name'); - - inputname.innerText = ""; - element.classList.remove('file-upload__filled'); - inputfile.value = ""; - }); - -}); diff --git a/html/content/js/Plugins/gallery.js b/html/content/js/Plugins/gallery.js deleted file mode 100644 index 6ac147a..0000000 --- a/html/content/js/Plugins/gallery.js +++ /dev/null @@ -1,51 +0,0 @@ -$$plugins.define('gallery', ['swiper-bundle', 'domHelper'], function (element, options, Swiper, $) { - var $galleryImg = $('.gallery__figure img'), - thumbs = document.querySelector('.galleryThumbs'), - sliderModal = document.querySelector('.gallerySliderModal'), - $image; - - var swiperThumbs = new Swiper(".galleryThumbs", { - direction: "horizontal", - freeMode: true, - init: false, - slidesPerView: 4, - spaceBetween: 8, - speed: 800, - watchSlidesProgress: true, - pagination: { - el: '.swiper-pagination', - }, - breakpoints: { - 768: { - slidesPerView: 5, - spaceBetween: 17, - } - }, - }); - - var swiperMain = new Swiper(".galleryMainImg", { - init: false, - loop: true, - navigation: { - nextEl: ".swiper-button-next", - prevEl: ".swiper-button-prev", - }, - speed: 800, - thumbs: { - swiper: swiperThumbs, - }, - }); - - $galleryImg.on('click', function () { - if (!thumbs.classList.contains('swiper-initialized')) { - swiperThumbs.init(); - swiperMain.init(); - } - sliderModal.classList.add('open'); - $image = $(this).parents('.gallery__figure'); - swiperMain.slideTo($image.index() + 1, 0); - - //document.documentElement.classList.add('noScroll'); - - }); -}); \ No newline at end of file diff --git a/html/content/js/Plugins/infoPopup.js b/html/content/js/Plugins/infoPopup.js deleted file mode 100644 index e11ad16..0000000 --- a/html/content/js/Plugins/infoPopup.js +++ /dev/null @@ -1,8 +0,0 @@ -$$plugins.define('infoPopup', function (element, options) { - element.addEventListener('click', event => { - element.closest('.infoPopup').classList.add('moveOut'); - setTimeout(function () { - element.closest('.infoPopup').remove() - }, 500); - }); -}); diff --git a/html/content/js/Plugins/initialize.js b/html/content/js/Plugins/initialize.js deleted file mode 100644 index ecdca48..0000000 --- a/html/content/js/Plugins/initialize.js +++ /dev/null @@ -1,11 +0,0 @@ -$$plugins.define('initialize', function (element, options) { - //triggerButton: data-trigger-initialize - //content to be initialized: data-content-initialize - - const triggerButton = element.getAttribute('data-trigger-initialize'), - content = document.querySelector(`[data-content-initialize='${triggerButton}']`); - - element.addEventListener('click', function (event) { - content.classList.add("initialized"); - }); -}); diff --git a/html/content/js/Plugins/intersecting.js b/html/content/js/Plugins/intersecting.js deleted file mode 100644 index 87faf61..0000000 --- a/html/content/js/Plugins/intersecting.js +++ /dev/null @@ -1,18 +0,0 @@ -$$plugins.define('intersecting', function (element, options) { - const el = document.querySelector(options.target); - - const observer = new window.IntersectionObserver(([entry]) => { - const intersectionRatio = entry.intersectionRatio.toFixed(2); - if (entry.isIntersecting) { - element.classList.add("sticky"); - } else { - element.classList.remove("sticky"); - } - }, { - root: null, - rootMargin: '-30% 0px -70%', - threshold: 0 - }) - - observer.observe(el) -}); diff --git a/html/content/js/Plugins/menu.js b/html/content/js/Plugins/menu.js deleted file mode 100644 index d6dced2..0000000 --- a/html/content/js/Plugins/menu.js +++ /dev/null @@ -1,97 +0,0 @@ -$$plugins.define('menu', ['domHelper'], function (element, options, $) { - var level1 = $('.mainNav__link--hasChildren', element), - closeElements = $('.mainLayer, .megamenu__close'), - body = $('body'), - burgerMenu = $('.burgerMenu'), - mainContainer = $('.mainContainer'), - header = $('.header'), - megaMenuBack = $('.megamenu__back'), - positionTopDesktop, - scrollBarWidth; - - - level1.on('click', function (event) { - event.preventDefault(); - var $this = $(this); - if ($this.parent('.mainNav__item').is('.mainNav__item--active')) { - closeMenuLevel1($this); - } - else { - openMenuLevel1($this); - } - }); - - //close menu - closeElements.on('click', function () { - if (window.innerWidth < 1024) { - closeMobileMenu(); - } else { - closeMenuLevel1($('.mainNav__item--active .mainNav__link')); - } - }); - - function openMenuLevel1($activeItem) { - var $activeItemParent = $activeItem.parent('.mainNav__item'); - - positionTopDesktop = -window.scrollY; - scrollBarWidth = window.innerWidth - mainContainer.innerWidth(); - - var activeItemsExceptCurrent = $('.mainNav__item--active').not($activeItemParent); - if (activeItemsExceptCurrent.length > 0) { - activeItemsExceptCurrent.removeClass('mainNav__item--active').addClass('mainNav__item--fadeOut'); - setTimeout(function () { - activeItemsExceptCurrent.removeClass('mainNav__item--fadeOut'); - }, 350); - } - - $activeItemParent.addClass('mainNav__item--active'); - body.addClass('menuOpened menuOpened--level2').each(e => e.style.paddingRight = scrollBarWidth + "px"); - burgerMenu.addClass('burgerMenu--opened'); - - mainContainer.each(e => e.style.transform = "translateY(" + positionTopDesktop + "px)"); - header.each(e => e.style.width = "calc(100vw - " + scrollBarWidth + "px)"); - } - - function closeMenuLevel1($activeItem) { - var $activeItemParent = $activeItem.parent('.mainNav__item'); - $activeItemParent.removeClass('mainNav__item--active'); - body.removeClass('menuOpened').each(e => e.style.paddingRight = ""); - burgerMenu.removeClass('burgerMenu--opened'); - mainContainer.each(e => e.style.transform = ""); - header.each(e => e.style.width = ""); - body.scroll({ - top: -positionTopDesktop - }); - } - - burgerMenu.on('click', function (e) { - e.preventDefault(); - if (e.target.matches('.burgerMenu--opened')) { - closeMobileMenu(); - } else { - openMobileMenu(); - } - }); - - var positionTop; - function openMobileMenu() { - positionTop = -window.scrollY; - burgerMenu.addClass('burgerMenu--opened'); - body.addClass('menuOpened menuOpened--level2'); - mainContainer.each(e => e.style.transform = "translateY(" + positionTop + "px)"); - } - - function closeMobileMenu() { - burgerMenu.removeClass('burgerMenu--opened'); - body.removeClass('menuOpened menuOpened--level2'); - mainContainer.each(e => e.style.transform = ""); - body.scroll({ - top: -positionTop - }); - } - - megaMenuBack.on('click', function (event) { - $('.mainNav__item--active').removeClass('mainNav__item--active'); - body.removeClass('menuOpened--level2'); - }); -}); diff --git a/html/content/js/Plugins/quantity.js b/html/content/js/Plugins/quantity.js deleted file mode 100644 index f124c63..0000000 --- a/html/content/js/Plugins/quantity.js +++ /dev/null @@ -1,55 +0,0 @@ -$$plugins.define('quantity', ['dom'], function (element, options, dom) { - //const plugin = this, - // increaseButton = element.querySelector('.quantity__btn--inc'), - // decreaseButton = element.querySelector('.quantity__btn--dec'), - // input = element.querySelector('input'), - // maxQuantity = options.MaxQuantity, - // minQuantity = options.MinQuantity || 1; - - //let currentValue = parseInt(input.value); - - //checkButtons(); - //plugin.on('click', increaseButton, updateValue); - //plugin.on('click', decreaseButton, updateValue); - - //function updateValue(e) { - // const button = dom.closest(e.target, '[data-ref="quantity-control"]'), - // previousValue = currentValue; - // if (!button || button.classList.contains('disabled')) { - // return false; - // } - // if (button === increaseButton) { - // currentValue += 1; - // } else { - // currentValue -= 1; - // } - - // console.log(button) - // input.value = currentValue; - // checkButtons(); - // if (options.ItemId) { - // plugin.emit('cart:quantity.changed', { - // quantity: currentValue, - // item: options.ItemId, - // element: e.target, - // fail: function onFail() { - // currentValue = previousValue; - // } - // }); - // } - //} - - //function checkButtons() { - // if (currentValue > minQuantity) { - // decreaseButton.classList.remove('disabled'); - // } else { - // decreaseButton.classList.add('disabled'); - // } - - // if (currentValue < maxQuantity) { - // increaseButton.classList.remove('disabled'); - // } else { - // increaseButton.classList.add('disabled'); - // } - //} -}); diff --git a/html/content/js/Plugins/scrollShadowHor.js b/html/content/js/Plugins/scrollShadowHor.js deleted file mode 100644 index eed0325..0000000 --- a/html/content/js/Plugins/scrollShadowHor.js +++ /dev/null @@ -1,42 +0,0 @@ -$$plugins.define('scrollShadowHor', function (element, options) { - var scrollElm = element.querySelector('.scrollbar'), - listInner = element.querySelector('.scrollbar__inner'); - - const observer = new MutationObserver(function(mutations) { - var childrenMutations = mutations.filter((x) => x.type === "childList"); - if (childrenMutations.length > 0){ - checkScrollPos(scrollElm); - } - }); - - observer.observe(listInner, { subtree: true, childList: true }); - - checkScrollPos(scrollElm); - - scrollElm.addEventListener("scroll", function () { - checkScrollPos(this); - }); - - function checkScrollPos(scrollContainer) { - if (scrollContainer.scrollLeft + element.offsetWidth > listInner.offsetWidth - 8) { - element.classList.add('scrollbarShadow--right'); - } else { - element.classList.remove('scrollbarShadow--right'); - } - if (scrollContainer.scrollLeft < 8) { - element.classList.add('scrollbarShadow--left'); - } else { - element.classList.remove('scrollbarShadow--left'); - } - } - - //checkScrollInit(); - - //function checkScrollInit() { - // if (element.offsetWidth >= listInner.offsetWidth) { - // element.classList.add('scrollbarShadow--noScroll'); - // } else { - // element.classList.remove('scrollbarShadow--noScroll'); - // } - //} -}); diff --git a/html/content/js/Plugins/scrollShadowVert.js b/html/content/js/Plugins/scrollShadowVert.js deleted file mode 100644 index 2824c22..0000000 --- a/html/content/js/Plugins/scrollShadowVert.js +++ /dev/null @@ -1,57 +0,0 @@ -$$plugins.define('scrollShadowVert', function (element, options) { - var scrollElm = element.querySelector('.scrollbar'), - listInner = element.querySelector('.scrollbar__inner'); - - //observer for adding/removing children elements - const observer = new MutationObserver(function (mutations) { - var childrenMutations = mutations.filter((x) => x.type === "childList"); - if (childrenMutations.length > 0) { - checkScrollPos(scrollElm); - } - }); - - observer.observe(listInner, { subtree: true, childList: true }); - - //observer for initialized class - if (options.initialize == true) { - const targetNode = element; - - const observer2 = new MutationObserver(function (mutations) { - var classMutations = mutations.filter((x) => x.type === "attributes"); - if (classMutations.length > 0 && targetNode.classList.contains('initialized')) { - checkScrollPos(scrollElm); - observer2.disconnect(); - } - }); - observer2.observe(targetNode, { attributes: true, attributeFilter: ['class'] }); - } - - checkScrollPos(scrollElm); - - scrollElm.addEventListener("scroll", function () { - checkScrollPos(this); - }); - - function checkScrollPos(scrollContainer) { - if (scrollContainer.scrollTop + element.offsetHeight > listInner.offsetHeight - 8) { - element.classList.add('scrollbarShadow--bottom'); - } else { - element.classList.remove('scrollbarShadow--bottom'); - } - if (scrollContainer.scrollTop < 8) { - element.classList.add('scrollbarShadow--top'); - } else { - element.classList.remove('scrollbarShadow--top'); - } - } - - //checkScrollInit(); - - //function checkScrollInit() { - // if (element.offsetHeight >= listInner.offsetHeight) { - // element.classList.add('scrollbarShadow--noScroll'); - // } else { - // element.classList.remove('scrollbarShadow--noScroll'); - // } - //} -}); diff --git a/html/content/js/Plugins/tabs.js b/html/content/js/Plugins/tabs.js deleted file mode 100644 index 74d4efc..0000000 --- a/html/content/js/Plugins/tabs.js +++ /dev/null @@ -1,28 +0,0 @@ -$.defineAttributePlugin('tabs', function ($element, options) { - var animating = false, - dataTab, - slideSpeed = options.slideSpeed ? options.slideSpeed : 400; - - if (!$element.find("[data-tab-trigger]").hasClass('active')) { - setTimeout(function () { $element.find("[data-tab-trigger]").first().trigger('click'); }, 50); - } - - $element.find("[data-tab-trigger]").click(function (e) { - e.preventDefault(); - if (animating === true || $(this).hasClass('active')) { - return; - } - animating = true; - $(this).addClass('active').siblings().removeClass('active'); - dataTab = $(this).data('tab-trigger'); - - $('[data-tab-content="' + dataTab + '"]').siblings('.active').slideUp(slideSpeed, function () { - $(this).removeClass('active').removeAttr('style'); - }); - - $('[data-tab-content="' + dataTab + '"]').slideDown(slideSpeed, function () { - $(this).addClass('active').removeAttr('style'); - animating = false; - }); - }); -}); diff --git a/html/content/js/Plugins/tabtoggle.js b/html/content/js/Plugins/tabtoggle.js deleted file mode 100644 index 84a0508..0000000 --- a/html/content/js/Plugins/tabtoggle.js +++ /dev/null @@ -1,27 +0,0 @@ -$$plugins.define('tabtoggle', function (element, options) { - var activeTab = element.querySelector(".active"); - var sliderNav = element.querySelector(".tabToggle__tabs"); - var activeTabContent = document.querySelector("[data-tabToggle-content].active"); - - if (element.querySelector(".tabToggle__tab:nth-child(2)").classList.contains("active")) { - sliderNav.classList.add("slide"); - } - - element.addEventListener("click", function (e) { - if (!(e.target.classList.contains("active"))) { - activeTab.classList.remove("active"); - activeTab = e.target; - - activeTab.classList.add("active"); - sliderNav.classList.toggle("slide"); - activeTabContent.classList.remove("active"); - activeTabContent = document.querySelector("[data-tabToggle-content=" + activeTab.dataset.tabtoggleTarget) - activeTabContent.classList.add("active"); - - window.scrollTo({ - top: activeTabContent.getBoundingClientRect().top + window.scrollY - document.querySelector(".header").offsetHeight, - behavior: 'smooth' - }); - } - }); -}); diff --git a/html/content/js/Plugins/tooltip.js b/html/content/js/Plugins/tooltip.js deleted file mode 100644 index 2326caf..0000000 --- a/html/content/js/Plugins/tooltip.js +++ /dev/null @@ -1,45 +0,0 @@ -$$plugins.define('tooltip', ['throttle'], function (element, options, throttle) { - var openBtn = element.querySelector('.tooltip__btn'), - tooltipMain = element.querySelector('.tooltip__main'); - - openBtn.addEventListener('click', (event) => { - event.preventDefault(); - if (element.classList.contains('tooltip--open')) { - element.classList.remove('tooltip--open'); - } else { - $('.tooltip').not(element).removeClass('tooltip--open'); - element.classList.add('tooltip--open'); - } - }); - - document.addEventListener('click', function (event) { - if (element !== event.target && !element.contains(event.target) && element.classList.contains('tooltip--open')) { - element.classList.remove('tooltip--open'); - } - }); - - function tooltipPosition() { - element.classList.remove('tooltip--bottom'); - element.classList.remove('tooltip--right'); - element.classList.remove('tooltip--left'); - - if (element.getBoundingClientRect().top < window.innerHeight / 2) { - element.classList.add('tooltip--bottom'); - } else { - element.classList.remove('tooltip--bottom'); - } - - if (element.getBoundingClientRect().left < tooltipMain.offsetWidth / 2) { - element.classList.add('tooltip--right'); - } - - if (document.body.clientWidth - element.getBoundingClientRect().left < tooltipMain.offsetWidth / 2) { - element.classList.add('tooltip--left'); - } - } - - tooltipPosition(); - - window.addEventListener('scroll', throttle(tooltipPosition, 50)); - window.addEventListener('resize', throttle(tooltipPosition, 200)); -}); diff --git a/html/content/js/Products/productHeader.js b/html/content/js/Products/productHeader.js deleted file mode 100644 index 3e12eee..0000000 --- a/html/content/js/Products/productHeader.js +++ /dev/null @@ -1,21 +0,0 @@ -$$plugins.define('productHeader', function (element, options) { - const el = document.querySelector('#addToCartButton'); - const header = document.querySelector(".productHeader"); - - const observer = new window.IntersectionObserver(([entry]) => { - if (entry.isIntersecting) { - header.classList.remove("active"); - return - } - if (entry.boundingClientRect.top > 0) { - header.classList.remove("active"); - } else { - header.classList.add("active"); - } - }, { - root: null, - threshold: 0, - }) - - observer.observe(el) -}); diff --git a/html/content/js/Products/productImageModal.js b/html/content/js/Products/productImageModal.js deleted file mode 100644 index 9873bed..0000000 --- a/html/content/js/Products/productImageModal.js +++ /dev/null @@ -1,47 +0,0 @@ -$$plugins.define('productImageModal', ['swiper-bundle', 'domHelper'], function (element, options, Swiper, $) { - var $productImg = $('.productPage__image'), - thumbs = document.querySelector('.productThumbs'), - sliderModal = document.querySelector('.productSliderModal'), - $image; - - var swiperThumbs = new Swiper(".productThumbs", { - direction: "vertical", - freeMode: true, - init: false, - slidesPerView: 'auto', - spaceBetween: 8, - speed: 800, - watchSlidesProgress: true, - breakpoints: { - 0: { - direction: "horizontal", - }, - 640: { - direction: "vertical", - } - } - }); - - var swiperMain = new Swiper(".productMainImg", { - init: false, - loop: true, - navigation: { - nextEl: ".swiper-button-next", - prevEl: ".swiper-button-prev", - }, - speed: 800, - thumbs: { - swiper: swiperThumbs, - }, - }); - - $productImg.on('click', function () { - if (!thumbs.classList.contains('swiper-initialized')) { - swiperThumbs.init(); - swiperMain.init(); - } - sliderModal.classList.add('open'); - $image = $(this).parents('.productPage__image'); - swiperMain.slideTo($image.index() + 1, 0); - }) -}); diff --git a/html/content/js/Products/productattr.js b/html/content/js/Products/productattr.js deleted file mode 100644 index d28c0a7..0000000 --- a/html/content/js/Products/productattr.js +++ /dev/null @@ -1,11 +0,0 @@ -$$plugins.define('productattr', function (element, options) { - const selected = element.querySelector('.productAttr__selected'); - element.querySelectorAll('.radiobutton__input').forEach(input => { - if (input.checked) { - selected.innerHTML = input.parentElement.querySelector('.radiobutton__text').innerText; - } - input.addEventListener('change', function (event) { - selected.innerHTML = event.target.parentElement.querySelector('.radiobutton__text').innerText; - }); - }) -}); diff --git a/html/content/js/Sliders/productsSlider.js b/html/content/js/Sliders/productsSlider.js deleted file mode 100644 index cc043b9..0000000 --- a/html/content/js/Sliders/productsSlider.js +++ /dev/null @@ -1,45 +0,0 @@ -// Modules included: -// 'virtual', -// 'mousewheel', -// 'navigation', -// 'pagination', -// 'zoom', -// 'lazy', -// 'autoplay', -// 'thumbs', -// 'manipulation', -// 'effect-fade', - -$$plugins.define('productsSlider', ['swiper-bundle'], function (element, options, Swiper) { - if (element.childNodes.length == 0) { - return; - } - - // init Swiper - const swiper = new Swiper(element, { - breakpoints: { - 0: { - slidesPerGroup: 1 - }, - 768: { - slidesPerGroup: 2 - }, - 1024: { - slidesPerGroup: 3 - } - }, - navigation: { - nextEl: element.querySelector('.swiper-button-next'), - prevEl: element.querySelector('.swiper-button-prev'), - }, - pagination: { - el: element.querySelector('.swiper-pagination'), - type: 'bullets', - clickable: 'true' - }, - slidesPerGroup: 3, - slidesPerView: 'auto', - spaceBetween: 16, - speed: 1000 - }); -}); diff --git a/html/content/js/Sliders/slider.js b/html/content/js/Sliders/slider.js deleted file mode 100644 index a9f5824..0000000 --- a/html/content/js/Sliders/slider.js +++ /dev/null @@ -1,42 +0,0 @@ -// Modules included: -// 'virtual', -// 'mousewheel', -// 'navigation', -// 'pagination', -// 'zoom', -// 'lazy', -// 'autoplay', -// 'thumbs', -// 'manipulation', -// 'effect-fade', - -$$plugins.define('slider', ['swiper-bundle'], function (element, options, Swiper) { - if (element.childNodes.length == 0) { - return; - } - - // init Swiper - const swiper = new Swiper(element, { - autoHeight: options.autoHeight ? options.autoHeight : false, - breakpoints: options.breakpoints, - centerInsufficientSlides: options.centerInsufficientSlides ? options.centerInsufficientSlides : false, - centeredSlides: options.centeredSlides ? options.centeredSlides : false, - direction: options.direction ? options.direction : 'horizontal', - effect: options.effect ? options.effect : 'slide', - loop: options.loop ? options.loop : false, - navigation: { - nextEl: element.querySelector('.swiper-button-next'), - prevEl: element.querySelector('.swiper-button-prev'), - }, - pagination: { - el: element.querySelector('.swiper-pagination'), - type: 'bullets', - clickable: 'true' - }, - slidesPerGroup: options.slidesPerGroup ? options.slidesPerGroup : 1, - slidesPerView: options.slidesPerView ? options.slidesPerView : 1, - spaceBetween: options.spaceBetween ? options.spaceBetween : 0, - speed: options.speed ? options.speed : 800, - watchSlidesProgress: true - }); -}); diff --git a/html/content/js/Utils/Event.js b/html/content/js/Utils/Event.js deleted file mode 100644 index 7a5ada8..0000000 --- a/html/content/js/Utils/Event.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - return function () { - var handlers = []; - this.bind = function (handler) { - handlers.push(handler); - } - this.trigger = function (_this, arguments) { - for (var i = 0; i < handlers.length; i++) { - handlers[i].apply(_this, arguments); - } - } - } -}); \ No newline at end of file diff --git a/html/content/js/Utils/EventUtils.js b/html/content/js/Utils/EventUtils.js deleted file mode 100644 index 21a1ce9..0000000 --- a/html/content/js/Utils/EventUtils.js +++ /dev/null @@ -1,75 +0,0 @@ -(function(){ - var _ = {}; - _.now = Date.now || function(){ - return new Date().getTime(); - }; - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. Normally, the throttled function will run - // as much as it can, without ever going more than once per `wait` duration; - // but if you'd like to disable the execution on the leading edge, pass - // `{leading: false}`. To disable execution on the trailing edge, ditto. - _.throttle = function(func, wait, options) { - var context, args, result; - var timeout = null; - var previous = 0; - if (!options) options = {}; - var later = function() { - previous = options.leading === false ? 0 : _.now(); - timeout = null; - result = func.apply(context, args); - if (!timeout) context = args = null; - }; - return function() { - var now = _.now(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0 || remaining > wait) { - if (timeout) { - clearTimeout(timeout); - timeout = null; - } - previous = now; - result = func.apply(context, args); - if (!timeout) context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, args, context, timestamp, result; - var later = function() { - var last = _.now() - timestamp; - if (last < wait && last >= 0) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - if (!timeout) context = args = null; - } - } - }; - return function() { - context = this; - args = arguments; - timestamp = _.now(); - var callNow = immediate && !timeout; - if (!timeout) timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - context = args = null; - } - return result; - }; - }; - - window.EventUtils = _; -}()); \ No newline at end of file diff --git a/html/content/js/Utils/apiready.js b/html/content/js/Utils/apiready.js deleted file mode 100644 index 17f1ad4..0000000 --- a/html/content/js/Utils/apiready.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function () { - return function ($element, name) { - return new Promise(function (resolve, reject) { - var api = $element.data(name); - if (api) { - resolve(api); - } - else { - $element.one(name + '.ready', function () { - resolve($element.data(name)); - }); - } - }); - }; -}); \ No newline at end of file diff --git a/html/content/js/Utils/confirm.js b/html/content/js/Utils/confirm.js deleted file mode 100644 index ef59cbb..0000000 --- a/html/content/js/Utils/confirm.js +++ /dev/null @@ -1,27 +0,0 @@ -define(function () { - return function (options, callback) { - var $dialog = $(options.template instanceof jQuery ? options.template.html() : options.template); - $dialog.hide(); - $('body').append($dialog); - $dialog.parseAttributePlugins(); - - function close() { - $dialog.remove(); - } - - function open() { - $dialog.show(); - } - - open(); - $dialog.find('.button.yes').click(function (e) { - e.preventDefault(); - close(); - callback(); - }); - $dialog.find('.button.no').click(function (e) { - e.preventDefault(); - close(); - }); - }; -}); \ No newline at end of file diff --git a/html/content/js/Utils/debounce.js b/html/content/js/Utils/debounce.js deleted file mode 100644 index f81d9a5..0000000 --- a/html/content/js/Utils/debounce.js +++ /dev/null @@ -1,16 +0,0 @@ -define('debounce', function () { - return function (func, wait, immediate) { - var timeout; - return function () { - var context = this, args = arguments; - var later = function () { - timeout = null; - if (!immediate) func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; - }; -}); diff --git a/html/content/js/Utils/defineApi.js b/html/content/js/Utils/defineApi.js deleted file mode 100644 index 3215714..0000000 --- a/html/content/js/Utils/defineApi.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function () { - return function ($element, name, api) { - if (typeof (api) === 'undefined' || !api) { - throw 'undefined api'; - } - $element.data(name, api); - $element.trigger(name + '.ready'); - }; -}); \ No newline at end of file diff --git a/html/content/js/Utils/destroyevent.js b/html/content/js/Utils/destroyevent.js deleted file mode 100644 index e6fe48a..0000000 --- a/html/content/js/Utils/destroyevent.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function () { - (function ($) { - $.event.special.destroyed = { - remove: function (o) { - if ((o.handler && o.type !== 'destroyed')) { - o.handler() - } - } - } - })(jQuery) -}); \ No newline at end of file diff --git a/html/content/js/Utils/dom.js b/html/content/js/Utils/dom.js deleted file mode 100644 index 78f3562..0000000 --- a/html/content/js/Utils/dom.js +++ /dev/null @@ -1,68 +0,0 @@ -define(function () { - const reduce = (elements, fn, initialValue) => { - return Array.prototype.reduce.call(elements, fn, initialValue); - } - - const forEach = (elements, fn) => { - Array.prototype.forEach.call(elements, fn); - } - const map = (elements, fn) => { - return Array.prototype.map.call(elements, fn); - } - - const replace = (toReplace, replacement) => { - var parentElement = toReplace.parentElement - if (parentElement) { - parentElement.replaceChild(replacement, toReplace); - } - } - - const matches = (element, selector) => { - var m = element.matches - || Element.prototype.matchesSelector - || Element.prototype.mozMatchesSelector - || Element.prototype.msMatchesSelector - || Element.prototype.oMatchesSelector - || Element.prototype.webkitMatchesSelector; - return m.call(element, selector); - } - - const closest = (element, selector) => { - while (element) { - if (matches(element, selector)) { - return element; - } else { - element = element.parentElement; - } - } - return null; - } - const isFunction = (input) => (typeof input === "function"); - const dispatchEvent = (eventName, data) => { - let event; - if (window.CustomEvent && isFunction(window.CustomEvent)) { - event = new CustomEvent(eventName, { detail: data, cancelable: true, bubbles: false }); - } else { - event = document.createEvent('CustomEvent'); - event.initCustomEvent(eventName, false, true, data); - } - return window.document.dispatchEvent(event); - } - - const parseHtml = (htmlString) => { - const c = document.createElement('div'); - c.innerHTML = htmlString.trim(); - return c.firstChild; - } - - return { - dispatchEvent, - closest, - matches, - reduce, - map, - forEach, - replace, - parseHtml - }; -}); \ No newline at end of file diff --git a/html/content/js/Utils/domHelper.js b/html/content/js/Utils/domHelper.js deleted file mode 100644 index f36ab1a..0000000 --- a/html/content/js/Utils/domHelper.js +++ /dev/null @@ -1,375 +0,0 @@ -define(function () { - - function isElement(obj) { - //instanceof fails for elements that have been created by another document (iframe case) - //in that case we check other properties existing in all element nodes - return obj instanceof HTMLElement || ((typeof obj === "object") && - (obj.nodeType === 1) && (typeof obj.style === "object") && - (typeof obj.ownerDocument === "object")); - } - - let slideUp = (target, duration = 500, callback = null) => { - target.style.transitionProperty = 'height, margin, padding'; - target.style.transitionDuration = duration + 'ms'; - target.style.boxSizing = 'border-box'; - target.style.height = target.offsetHeight + 'px'; - target.offsetHeight; - target.style.overflow = 'hidden'; - target.style.height = 0; - target.style.paddingTop = 0; - target.style.paddingBottom = 0; - target.style.marginTop = 0; - target.style.marginBottom = 0; - window.setTimeout(() => { - target.style.display = 'none'; - target.style.removeProperty('height'); - target.style.removeProperty('padding-top'); - target.style.removeProperty('padding-bottom'); - target.style.removeProperty('margin-top'); - target.style.removeProperty('margin-bottom'); - target.style.removeProperty('overflow'); - target.style.removeProperty('transition-duration'); - target.style.removeProperty('transition-property'); - if (callback) { - callback(); - } - }, duration); - } - - let slideDown = (target, duration = 500, callback = null) => { - target.style.removeProperty('display'); - let display = window.getComputedStyle(target).display; - - if (display === 'none') - display = 'block'; - - target.style.display = display; - let height = target.offsetHeight; - target.style.overflow = 'hidden'; - target.style.height = 0; - target.style.paddingTop = 0; - target.style.paddingBottom = 0; - target.style.marginTop = 0; - target.style.marginBottom = 0; - target.offsetHeight; - target.style.boxSizing = 'border-box'; - target.style.transitionProperty = "height, margin, padding"; - target.style.transitionDuration = duration + 'ms'; - target.style.height = height + 'px'; - target.style.removeProperty('padding-top'); - target.style.removeProperty('padding-bottom'); - target.style.removeProperty('margin-top'); - target.style.removeProperty('margin-bottom'); - window.setTimeout(() => { - target.style.removeProperty('height'); - target.style.removeProperty('overflow'); - target.style.removeProperty('transition-duration'); - target.style.removeProperty('transition-property'); - if (callback) { - callback(); - } - }, duration); - } - - var slideToggle = (target, duration = 500, callback = null) => { - if (window.getComputedStyle(target).display === 'none') { - return slideDown(target, duration, callback); - } else { - return slideUp(target, duration, callback); - } - } - - function resolveSelector(selector, context) { - if (typeof (selector) !== "string") { - if (context) { - throw 'Context is allowed only when selector is a string.'; - } - if (Array.isArray(selector)) { - return selector; - } - if (isElement(selector)) { - return [selector]; - } - - throw 'Selector can either be a string or an array'; - } - if (!context) { - return document.querySelectorAll(selector); - } - if (typeof (context) == "string") { - return resolveSelector(selector).filter(element => element.matches(selector)); - } - else if (Array.isArray(context)) { - return context.filter(element => element.matches(selector)); - } - else if (isElement(context)) { - return context.querySelectorAll(selector); - } - else { - throw 'Unknown context type: ' + typeof (context) + ". Not a string, array or HTMLElement."; - } - } - - var factory = (target, context) => new domHelper(target, context); - function domHelper(target, context) { - this.elements = Array.from(resolveSelector(target, context)); - this.on = function (event, callback) { - for (let i = 0; i < this.elements.length; i++) { - this.elements[i].addEventListener(event, function (e) { - callback.apply(e.target, arguments); - }); - } - return this; - } - this.parent = function (selector) { - if (!selector) { - return factory( - this.elements.map(e => e.parentElement).filter(e => e) - ); - } - return factory( - this.elements.map(element => { - do { - if (element.parentElement.matches(selector)) { - return element.parentElement; - } - element = element.parentElement; - - } while (element.parentElement); - return null; - }).filter(e => e) - ); - } - this.parents = function (selector) { - var parents = this.elements.map(e => { - var r = []; - while (e.parentElement) { - r.push(e.parentElement); - e = e.parentElement; - } - return r; - }).reduce((acc, curVal) => { - return acc.concat(curVal) - }).filter(e => e); - - if (!selector) { - return factory(parents); - } - return factory(selector, parents); - } - this.find = function (selector) { - return factory(this.elements.map(e => { - return factory(selector, e).elements; - }).reduce((acc, curVal) => { - return acc.concat(curVal) - })); - } - this.show = function () { - this.each(e => e.style.display = "block"); - } - this.hide = function () { - this.each(e => e.style.display = "none"); - } - this.innerWidth = function () { - var element = this.elements[0]; - return parseInt(window.getComputedStyle(element).width); - } - this.toggle = function () { - this.each(e => { - if ((e.offsetParent === null)) // hidden - { - e.style.display = "block"; - } - else { - e.style.display = "none"; - } - }); - } - this.each = function (callback) { - this.elements.forEach(callback); - return this; - } - this.scroll = function () { - this.each(element => element.scroll.apply(element, arguments)); - return this; - } - this.addClass = function (cssClass) { - if (!cssClass) { - return; - } - var classes = cssClass.split(' '); - this.elements.forEach(element => { - classes.forEach(cssClass => { - element.classList.add(cssClass); - }); - }); - return this; - } - this.removeClass = function (cssClass) { - if (!cssClass) { - return; - } - var classes = cssClass.split(' '); - this.elements.forEach(element => { - classes.forEach(cssClass => { - element.classList.remove(cssClass); - }); - }); - return this; - } - this.toggleClass = function (cssClass) { - if (!cssClass) { - return; - } - var classes = cssClass.split(' '); - this.elements.forEach(element => { - classes.forEach(cssClass => { - element.classList.toggle(cssClass); - }); - }); - return this; - } - this.is = function (selector) { - return factory(selector, this.elements).elements.length > 0; - } - this.not = function (exclude) { - if (typeof (exclude) == "string") { - return factory(this.elements.filter(e => !e.matches(exclude))); - } - else if (Array.isArray(exclude)) { - return factory(this.elements.filter(e => exclude.indexOf(e) == -1)); - } - else if (isElement(exclude)) { - return factory(this.elements.filter(e => e != exclude)); - } - else if (exclude instanceof domHelper) { - return factory(this.elements.filter(e => exclude.elements.indexOf(e) == -1)); - } - else { - throw 'Unknown exclude type: ' + typeof (exclude) + ". Not a string, array or HTMLElement or domHelper."; - } - } - this.get = (index) => this.elements[index]; - this.length = this.elements.length; - this.siblings = function (selector) { - var next = this.next(selector); - var prev = this.prev(selector); - return factory(prev.elements.concat(next.elements)); - } - this.next = function (selector) { - var siblings = this.elements.map(e => { - var r = []; - while (e.nextElementSibling) { - r.push(e.nextElementSibling); - e = e.nextElementSibling; - } - return r; - }).reduce((acc, curVal) => { - return acc.concat(curVal) - }).filter(e => e); - - if (!selector) { - return factory(siblings); - } - return factory(selector, siblings); - } - this.prev = function (selector) { - var siblings = this.elements.map(e => { - var r = []; - while (e.previousElementSibling) { - r.push(e.previousElementSibling); - e = e.previousElementSibling; - } - return r; - }).reduce((acc, curVal) => { - return acc.concat(curVal) - }).filter(e => e); - - if (!selector) { - return factory(siblings); - } - return factory(selector, siblings); - } - this.index = function () { - var items = []; - this.prev().each(function (e) { - items.push(e); - }); - items.push(this.get(0)); - this.next().each(function (e) { - items.push(e); - }); - return items.indexOf(this.get(0)); - } - this.slideDown = function (duration, callback) { - return this.each(function (e) { - slideDown(e, duration, callback); - }); - } - this.slideUp = function (duration, callback) { - return this.each(function (e) { - slideUp(e, duration, callback); - }); - } - this.slideToggle = function (duration, callback) { - return this.each(function (e) { - slideToggle(e, duration, callback); - }); - } - this.removeAttr = function (attribute) { - this.each(e => e.removeAttribute(attribute)); - } - this.hasClass = function (cssClass) { - if (!cssClass) { - return; - } - return new RegExp('(\\s|^)' + cssClass + '(\\s|$)').test(this.get(0).className); - } - this.val = function (inputValue) { - if (typeof (inputValue) === 'undefined') { - return this.elements[0].value; - } - return this.each(function (e) { - e.value = inputValue; - }); - } - this.data = function (attribute, inputValue) { - if (typeof (inputValue) === 'undefined') { - return this.elements[0].dataset[attribute]; - } - return this.each(function (e) { - e.dataset[attribute] = inputValue; - }); - } - this.text = function (inputValue) { - if (typeof (inputValue) === 'undefined') { - return this.elements[0].innerText; - } - return this.each(function (e) { - e.innerText = inputValue; - }); - } - this.contains = function (element) { - return this.elements.indexOf(element) >= 0; - } - - this.trigger = function (eventName) { - - if ("createEvent" in document) { - var evt = document.createEvent("HTMLEvents"); - evt.initEvent(eventName, false, true); - return this.each(function (e) { - e.dispatchEvent(evt); - }); - } - else { - return this.each(function (e) { - e.fireEvent("on" + eventName); - }); - - } - } - } - - return factory; -}); \ No newline at end of file diff --git a/html/content/js/Utils/enabled.js b/html/content/js/Utils/enabled.js deleted file mode 100644 index 658b2dc..0000000 --- a/html/content/js/Utils/enabled.js +++ /dev/null @@ -1,6 +0,0 @@ -define(function () { - $.fn.enabled = function (e) { - $(this).prop('disabled', !e); - $(this).trigger('enabled:change', e); - }; -}); \ No newline at end of file diff --git a/html/content/js/Utils/getApis.js b/html/content/js/Utils/getApis.js deleted file mode 100644 index 46788a6..0000000 --- a/html/content/js/Utils/getApis.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['apiReady', 'whenAll'], function (apiReady, whenAll) { - return function ($elements, name) { - var result = []; - var d = $.Deferred(); - var p = $elements.map(function () { - var $element = $(this); - return apiReady($element, name).then(function (api) { - result.push({ api: api, $element: $element }); - }); - }); - whenAll(p).then(function () { - d.resolve(result); - }); - - return d; - }; -}); \ No newline at end of file diff --git a/html/content/js/Utils/throttle.js b/html/content/js/Utils/throttle.js deleted file mode 100644 index ccfc9a7..0000000 --- a/html/content/js/Utils/throttle.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function () { - return function (func, limit) { - var timeout; - var inThrottle; - return function () { - var context = this, args = arguments; - if (!inThrottle) { - func.apply(context, args); - inThrottle = true; - } - setTimeout(() => inThrottle = false, limit); - - }; - }; -}); diff --git a/html/content/js/Utils/whenAll.js b/html/content/js/Utils/whenAll.js deleted file mode 100644 index 8d1c3e2..0000000 --- a/html/content/js/Utils/whenAll.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - return function (deferreds) { - return $.Deferred(function (def) { - $.when.apply(jQuery, deferreds).then( - function () { - def.resolveWith(this, [Array.prototype.slice.call(arguments)]); - }, - function () { - def.rejectWith(this, [Array.prototype.slice.call(arguments)]); - }); - }); - }; -}); diff --git a/html/content/js/Wishlist/wishlistbutton.js b/html/content/js/Wishlist/wishlistbutton.js deleted file mode 100644 index bde43c1..0000000 --- a/html/content/js/Wishlist/wishlistbutton.js +++ /dev/null @@ -1,25 +0,0 @@ -$$plugins.define('wishlistbutton', ['domHelper'], function (element, options, $) { - const $button = $(element).find('.listsClose'); - - $button.on('click', function () { - if (window.innerWidth > 768) { - $button.siblings('.listsBlock').slideToggle(300, function () { - $(element).toggleClass('open'); - $button.siblings('.listsBlock').removeAttr('style'); - }); - } else { - $(element).toggleClass('open'); - } - }); - - document.addEventListener('click', function (event) { - if (!$(element).hasClass('open') || element == event.target || $(event.target).parents().contains(element)) { - return; - } - $button.siblings('.listsBlock').slideUp(300, function () { - $(element).removeClass('open'); - $button.siblings('.listsBlock').removeAttr('style'); - }); - }); - -}); \ No newline at end of file diff --git a/html/content/lib/current-device.min.js b/html/content/lib/current-device.min.js deleted file mode 100644 index a6fae95..0000000 --- a/html/content/lib/current-device.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.device=e():n.device=e()}(window,function(){return function(n){var e={};function o(t){if(e[t])return e[t].exports;var i=e[t]={i:t,l:!1,exports:{}};return n[t].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=n,o.c=e,o.d=function(n,e,t){o.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:t})},o.r=function(n){Object.defineProperty(n,"__esModule",{value:!0})},o.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(e,"a",e),e},o.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},o.p="",o(o.s=1)}([function(n,e,o){"use strict";o.r(e);var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},i=window.device,r={},a=[];window.device=r;var c=window.document.documentElement,d=window.navigator.userAgent.toLowerCase(),u=["googletv","viera","smarttv","internet.tv","netcast","nettv","appletv","boxee","kylo","roku","dlnadoc","roku","pov_tv","hbbtv","ce-html"];function l(n){return-1!==d.indexOf(n)}function s(n){return c.className.match(new RegExp(n,"i"))}function f(n){var e=null;s(n)||(e=c.className.replace(/^\s+|\s+$/g,""),c.className=e+" "+n)}function b(n){s(n)&&(c.className=c.className.replace(" "+n,""))}function p(){r.landscape()?(b("portrait"),f("landscape"),w("landscape")):(b("landscape"),f("portrait"),w("portrait")),h()}function w(n){for(var e in a)a[e](n)}r.macos=function(){return l("mac")},r.ios=function(){return r.iphone()||r.ipod()||r.ipad()},r.iphone=function(){return!r.windows()&&l("iphone")},r.ipod=function(){return l("ipod")},r.ipad=function(){return l("ipad")},r.android=function(){return!r.windows()&&l("android")},r.androidPhone=function(){return r.android()&&l("mobile")},r.androidTablet=function(){return r.android()&&!l("mobile")},r.blackberry=function(){return l("blackberry")||l("bb10")||l("rim")},r.blackberryPhone=function(){return r.blackberry()&&!l("tablet")},r.blackberryTablet=function(){return r.blackberry()&&l("tablet")},r.windows=function(){return l("windows")},r.windowsPhone=function(){return r.windows()&&l("phone")},r.windowsTablet=function(){return r.windows()&&l("touch")&&!r.windowsPhone()},r.fxos=function(){return(l("(mobile")||l("(tablet"))&&l(" rv:")},r.fxosPhone=function(){return r.fxos()&&l("mobile")},r.fxosTablet=function(){return r.fxos()&&l("tablet")},r.meego=function(){return l("meego")},r.cordova=function(){return window.cordova&&"file:"===location.protocol},r.nodeWebkit=function(){return"object"===t(window.process)},r.mobile=function(){return r.androidPhone()||r.iphone()||r.ipod()||r.windowsPhone()||r.blackberryPhone()||r.fxosPhone()||r.meego()},r.tablet=function(){return r.ipad()||r.androidTablet()||r.blackberryTablet()||r.windowsTablet()||r.fxosTablet()},r.desktop=function(){return!r.tablet()&&!r.mobile()},r.television=function(){for(var n=0;n1},r.landscape=function(){return screen.orientation&&Object.prototype.hasOwnProperty.call(window,"onorientationchange")?screen.orientation.type.includes("landscape"):window.innerHeight/window.innerWidth<1},r.noConflict=function(){return window.device=i,this},r.ios()?r.ipad()?f("ios ipad tablet"):r.iphone()?f("ios iphone mobile"):r.ipod()&&f("ios ipod mobile"):r.macos()?f("macos desktop"):r.android()?r.androidTablet()?f("android tablet"):f("android mobile"):r.blackberry()?r.blackberryTablet()?f("blackberry tablet"):f("blackberry mobile"):r.windows()?r.windowsTablet()?f("windows tablet"):r.windowsPhone()?f("windows mobile"):f("windows desktop"):r.fxos()?r.fxosTablet()?f("fxos tablet"):f("fxos mobile"):r.meego()?f("meego mobile"):r.nodeWebkit()?f("node-webkit"):r.television()?f("television"):r.desktop()&&f("desktop"),r.cordova()&&f("cordova"),r.onChangeOrientation=function(n){"function"==typeof n&&a.push(n)};var m="resize";function y(n){for(var e=0;e?@\[\\\]^`{|}~])/g, "\\$1"); - } - - function getModelPrefix(fieldName) { - return fieldName.substr(0, fieldName.lastIndexOf(".") + 1); - } - - function appendModelPrefix(value, prefix) { - if (value.indexOf("*.") === 0) { - value = value.replace("*.", prefix); - } - return value; - } - - function onError(error, inputElement) { // 'this' is the form element - var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"), - replaceAttrValue = container.attr("data-valmsg-replace"), - replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null; - - container.removeClass("field-validation-valid").addClass("field-validation-error"); - error.data("unobtrusiveContainer", container); - - if (replace) { - container.empty(); - error.removeClass("input-validation-error").appendTo(container); - } - else { - error.hide(); - } - } - - function onErrors(event, validator) { // 'this' is the form element - var container = $(this).find("[data-valmsg-summary=true]"), - list = container.find("ul"); - - if (list && list.length && validator.errorList.length) { - list.empty(); - container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); - - $.each(validator.errorList, function () { - $("
  • ").html(this.message).appendTo(list); - }); - } - } - - function onSuccess(error) { // 'this' is the form element - var container = error.data("unobtrusiveContainer"); - - if (container) { - var replaceAttrValue = container.attr("data-valmsg-replace"), - replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null; - - container.addClass("field-validation-valid").removeClass("field-validation-error"); - error.removeData("unobtrusiveContainer"); - - if (replace) { - container.empty(); - } - } - } - - function onReset(event) { // 'this' is the form element - var $form = $(this), - key = '__jquery_unobtrusive_validation_form_reset'; - if ($form.data(key)) { - return; - } - // Set a flag that indicates we're currently resetting the form. - $form.data(key, true); - try { - $form.data("validator").resetForm(); - } finally { - $form.removeData(key); - } - - $form.find(".validation-summary-errors") - .addClass("validation-summary-valid") - .removeClass("validation-summary-errors"); - $form.find(".field-validation-error") - .addClass("field-validation-valid") - .removeClass("field-validation-error") - .removeData("unobtrusiveContainer") - .find(">*") // If we were using valmsg-replace, get the underlying error - .removeData("unobtrusiveContainer"); - } - - function validationInfo(form) { - var $form = $(form), - result = $form.data(data_validation), - onResetProxy = $.proxy(onReset, form), - defaultOptions = $jQval.unobtrusive.options || {}, - execInContext = function (name, args) { - var func = defaultOptions[name]; - func && $.isFunction(func) && func.apply(form, args); - }; - - if (!result) { - result = { - options: { // options structure passed to jQuery Validate's validate() method - errorClass: defaultOptions.errorClass || "input-validation-error", - errorElement: defaultOptions.errorElement || "span", - errorPlacement: function () { - onError.apply(form, arguments); - execInContext("errorPlacement", arguments); - }, - invalidHandler: function () { - onErrors.apply(form, arguments); - execInContext("invalidHandler", arguments); - }, - messages: {}, - rules: {}, - success: function () { - onSuccess.apply(form, arguments); - execInContext("success", arguments); - } - }, - attachValidation: function () { - $form - .off("reset." + data_validation, onResetProxy) - .on("reset." + data_validation, onResetProxy) - .validate(this.options); - }, - validate: function () { // a validation function that is called by unobtrusive Ajax - $form.validate(); - return $form.valid(); - } - }; - $form.data(data_validation, result); - } - - return result; - } - - $jQval.unobtrusive = { - adapters: [], - - parseElement: function (element, skipAttach) { - /// - /// Parses a single HTML element for unobtrusive validation attributes. - /// - /// The HTML element to be parsed. - /// [Optional] true to skip attaching the - /// validation to the form. If parsing just this single element, you should specify true. - /// If parsing several elements, you should specify false, and manually attach the validation - /// to the form when you are finished. The default is false. - var $element = $(element), - form = $element.parents("form")[0], - valInfo, rules, messages; - - if (!form) { // Cannot do client-side validation without a form - return; - } - - valInfo = validationInfo(form); - valInfo.options.rules[element.name] = rules = {}; - valInfo.options.messages[element.name] = messages = {}; - - $.each(this.adapters, function () { - var prefix = "data-val-" + this.name, - message = $element.attr(prefix), - paramValues = {}; - - if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy) - prefix += "-"; - - $.each(this.params, function () { - paramValues[this] = $element.attr(prefix + this); - }); - - this.adapt({ - element: element, - form: form, - message: message, - params: paramValues, - rules: rules, - messages: messages - }); - } - }); - - $.extend(rules, { "__dummy__": true }); - - if (!skipAttach) { - valInfo.attachValidation(); - } - }, - - parse: function (selector) { - /// - /// Parses all the HTML elements in the specified selector. It looks for input elements decorated - /// with the [data-val=true] attribute value and enables validation according to the data-val-* - /// attribute values. - /// - /// Any valid jQuery selector. - - // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one - // element with data-val=true - var $selector = $(selector), - $forms = $selector.parents() - .addBack() - .filter("form") - .add($selector.find("form")) - .has("[data-val=true]"); - - $selector.find("[data-val=true]").each(function () { - $jQval.unobtrusive.parseElement(this, true); - }); - - $forms.each(function () { - var info = validationInfo(this); - if (info) { - info.attachValidation(); - } - }); - } - }; - - adapters = $jQval.unobtrusive.adapters; - - adapters.add = function (adapterName, params, fn) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). - /// [Optional] An array of parameter names (strings) that will - /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and - /// mmmm is the parameter name). - /// The function to call, which adapts the values from the HTML - /// attributes into jQuery Validate rules and/or messages. - /// - if (!fn) { // Called with no params, just a function - fn = params; - params = []; - } - this.push({ name: adapterName, params: params, adapt: fn }); - return this; - }; - - adapters.addBool = function (adapterName, ruleName) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where - /// the jQuery Validate validation rule has no parameter values. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). - /// [Optional] The name of the jQuery Validate rule. If not provided, the value - /// of adapterName will be used instead. - /// - return this.add(adapterName, function (options) { - setValidationValues(options, ruleName || adapterName, true); - }); - }; - - adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where - /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and - /// one for min-and-max). The HTML parameters are expected to be named -min and -max. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). - /// The name of the jQuery Validate rule to be used when you only - /// have a minimum value. - /// The name of the jQuery Validate rule to be used when you only - /// have a maximum value. - /// The name of the jQuery Validate rule to be used when you - /// have both a minimum and maximum value. - /// [Optional] The name of the HTML attribute that - /// contains the minimum value. The default is "min". - /// [Optional] The name of the HTML attribute that - /// contains the maximum value. The default is "max". - /// - return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) { - var min = options.params.min, - max = options.params.max; - - if (min && max) { - setValidationValues(options, minMaxRuleName, [min, max]); - } - else if (min) { - setValidationValues(options, minRuleName, min); - } - else if (max) { - setValidationValues(options, maxRuleName, max); - } - }); - }; - - adapters.addSingleVal = function (adapterName, attribute, ruleName) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where - /// the jQuery Validate validation rule has a single value. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name). - /// [Optional] The name of the HTML attribute that contains the value. - /// The default is "val". - /// [Optional] The name of the jQuery Validate rule. If not provided, the value - /// of adapterName will be used instead. - /// - return this.add(adapterName, [attribute || "val"], function (options) { - setValidationValues(options, ruleName || adapterName, options.params[attribute]); - }); - }; - - $jQval.addMethod("__dummy__", function (value, element, params) { - return true; - }); - - $jQval.addMethod("regex", function (value, element, params) { - var match; - if (this.optional(element)) { - return true; - } - - match = new RegExp(params).exec(value); - return (match && (match.index === 0) && (match[0].length === value.length)); - }); - - $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) { - var match; - if (nonalphamin) { - match = value.match(/\W/g); - match = match && match.length >= nonalphamin; - } - return match; - }); - - if ($jQval.methods.extension) { - adapters.addSingleVal("accept", "mimtype"); - adapters.addSingleVal("extension", "extension"); - } else { - // for backward compatibility, when the 'extension' validation method does not exist, such as with versions - // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for - // validating the extension, and ignore mime-type validations as they are not supported. - adapters.addSingleVal("extension", "extension", "accept"); - } - - adapters.addSingleVal("regex", "pattern"); - adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"); - adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range"); - adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength"); - adapters.add("equalto", ["other"], function (options) { - var prefix = getModelPrefix(options.element.name), - other = options.params.other, - fullOtherName = appendModelPrefix(other, prefix), - element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0]; - - setValidationValues(options, "equalTo", element); - }); - adapters.add("required", function (options) { - // jQuery Validate equates "required" with "mandatory" for checkbox elements - if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") { - setValidationValues(options, "required", true); - } - }); - adapters.add("remote", ["url", "type", "additionalfields"], function (options) { - var value = { - url: options.params.url, - type: options.params.type || "GET", - data: {} - }, - prefix = getModelPrefix(options.element.name); - - $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) { - var paramName = appendModelPrefix(fieldName, prefix); - value.data[paramName] = function () { - var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']"); - // For checkboxes and radio buttons, only pick up values from checked fields. - if (field.is(":checkbox")) { - return field.filter(":checked").val() || field.filter(":hidden").val() || ''; - } - else if (field.is(":radio")) { - return field.filter(":checked").val() || ''; - } - return field.val(); - }; - }); - - setValidationValues(options, "remote", value); - }); - adapters.add("password", ["min", "nonalphamin", "regex"], function (options) { - if (options.params.min) { - setValidationValues(options, "minlength", options.params.min); - } - if (options.params.nonalphamin) { - setValidationValues(options, "nonalphamin", options.params.nonalphamin); - } - if (options.params.regex) { - setValidationValues(options, "regex", options.params.regex); - } - }); - adapters.add("fileextensions", ["extensions"], function (options) { - setValidationValues(options, "extension", options.params.extensions); - }); - - $(function () { - $jQval.unobtrusive.parse(document); - }); - - return $jQval.unobtrusive; -})); diff --git a/html/content/lib/jquery-validation/dist/additional-methods.js b/html/content/lib/jquery-validation/dist/additional-methods.js deleted file mode 100644 index 480ecd1..0000000 --- a/html/content/lib/jquery-validation/dist/additional-methods.js +++ /dev/null @@ -1,1158 +0,0 @@ -/*! - * jQuery Validation Plugin v1.17.0 - * - * https://jqueryvalidation.org/ - * - * Copyright (c) 2017 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery", "./jquery.validate"], factory ); - } else if (typeof module === "object" && module.exports) { - module.exports = factory( require( "jquery" ) ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -( function() { - - function stripHtml( value ) { - - // Remove html tags and space chars - return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " ) - - // Remove punctuation - .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" ); - } - - $.validator.addMethod( "maxWords", function( value, element, params ) { - return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params; - }, $.validator.format( "Please enter {0} words or less." ) ); - - $.validator.addMethod( "minWords", function( value, element, params ) { - return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params; - }, $.validator.format( "Please enter at least {0} words." ) ); - - $.validator.addMethod( "rangeWords", function( value, element, params ) { - var valueStripped = stripHtml( value ), - regex = /\b\w+\b/g; - return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ]; - }, $.validator.format( "Please enter between {0} and {1} words." ) ); - -}() ); - -// Accept a value from a file input based on a required mimetype -$.validator.addMethod( "accept", function( value, element, param ) { - - // Split mime on commas in case we have multiple types we can accept - var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*", - optionalValue = this.optional( element ), - i, file, regex; - - // Element is optional - if ( optionalValue ) { - return optionalValue; - } - - if ( $( element ).attr( "type" ) === "file" ) { - - // Escape string to be used in the regex - // see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex - // Escape also "/*" as "/.*" as a wildcard - typeParam = typeParam - .replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" ) - .replace( /,/g, "|" ) - .replace( /\/\*/g, "/.*" ); - - // Check if the element has a FileList before checking each file - if ( element.files && element.files.length ) { - regex = new RegExp( ".?(" + typeParam + ")$", "i" ); - for ( i = 0; i < element.files.length; i++ ) { - file = element.files[ i ]; - - // Grab the mimetype from the loaded file, verify it matches - if ( !file.type.match( regex ) ) { - return false; - } - } - } - } - - // Either return true because we've validated each file, or because the - // browser does not support element.files and the FileList feature - return true; -}, $.validator.format( "Please enter a value with a valid mimetype." ) ); - -$.validator.addMethod( "alphanumeric", function( value, element ) { - return this.optional( element ) || /^\w+$/i.test( value ); -}, "Letters, numbers, and underscores only please" ); - -/* - * Dutch bank account numbers (not 'giro' numbers) have 9 digits - * and pass the '11 check'. - * We accept the notation with spaces, as that is common. - * acceptable: 123456789 or 12 34 56 789 - */ -$.validator.addMethod( "bankaccountNL", function( value, element ) { - if ( this.optional( element ) ) { - return true; - } - if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) { - return false; - } - - // Now '11 check' - var account = value.replace( / /g, "" ), // Remove spaces - sum = 0, - len = account.length, - pos, factor, digit; - for ( pos = 0; pos < len; pos++ ) { - factor = len - pos; - digit = account.substring( pos, pos + 1 ); - sum = sum + factor * digit; - } - return sum % 11 === 0; -}, "Please specify a valid bank account number" ); - -$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) { - return this.optional( element ) || - ( $.validator.methods.bankaccountNL.call( this, value, element ) ) || - ( $.validator.methods.giroaccountNL.call( this, value, element ) ); -}, "Please specify a valid bank or giro account number" ); - -/** - * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. - * - * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional) - * - * Validation is case-insensitive. Please make sure to normalize input yourself. - * - * BIC definition in detail: - * - First 4 characters - bank code (only letters) - * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters) - * - Next 2 characters - location code (letters and digits) - * a. shall not start with '0' or '1' - * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing) - * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits) - */ -$.validator.addMethod( "bic", function( value, element ) { - return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() ); -}, "Please specify a valid BIC code" ); - -/* - * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities - * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal - * - * Spanish CIF structure: - * - * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ] - * - * Where: - * - * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW] - * P: 2 characters. Province. - * N: 5 characters. Secuencial Number within the province. - * C: 1 character. Control Digit: [0-9A-J]. - * - * [ T ]: Kind of Organizations. Possible values: - * - * A. Corporations - * B. LLCs - * C. General partnerships - * D. Companies limited partnerships - * E. Communities of goods - * F. Cooperative Societies - * G. Associations - * H. Communities of homeowners in horizontal property regime - * J. Civil Societies - * K. Old format - * L. Old format - * M. Old format - * N. Nonresident entities - * P. Local authorities - * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions - * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008) - * S. Organs of State Administration and regions - * V. Agrarian Transformation - * W. Permanent establishments of non-resident in Spain - * - * [ C ]: Control Digit. It can be a number or a letter depending on T value: - * [ T ] --> [ C ] - * ------ ---------- - * A Number - * B Number - * E Number - * H Number - * K Letter - * P Letter - * Q Letter - * S Letter - * - */ -$.validator.addMethod( "cifES", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi ); - var letter = value.substring( 0, 1 ), // [ T ] - number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ] - control = value.substring( 8, 9 ), // [ C ] - all_sum = 0, - even_sum = 0, - odd_sum = 0, - i, n, - control_digit, - control_letter; - - function isOdd( n ) { - return n % 2 === 0; - } - - // Quick format test - if ( value.length !== 9 || !cifRegEx.test( value ) ) { - return false; - } - - for ( i = 0; i < number.length; i++ ) { - n = parseInt( number[ i ], 10 ); - - // Odd positions - if ( isOdd( i ) ) { - - // Odd positions are multiplied first. - n *= 2; - - // If the multiplication is bigger than 10 we need to adjust - odd_sum += n < 10 ? n : n - 9; - - // Even positions - // Just sum them - } else { - even_sum += n; - } - } - - all_sum = even_sum + odd_sum; - control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString(); - control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit; - control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString(); - - // Control must be a digit - if ( letter.match( /[ABEH]/ ) ) { - return control === control_digit; - - // Control must be a letter - } else if ( letter.match( /[KPQS]/ ) ) { - return control === control_letter; - } - - // Can be either - return control === control_digit || control === control_letter; - -}, "Please specify a valid CIF number." ); - -/* - * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number. - * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. - */ -$.validator.addMethod( "cpfBR", function( value ) { - - // Removing special characters from value - value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); - - // Checking value to have 11 digits only - if ( value.length !== 11 ) { - return false; - } - - var sum = 0, - firstCN, secondCN, checkResult, i; - - firstCN = parseInt( value.substring( 9, 10 ), 10 ); - secondCN = parseInt( value.substring( 10, 11 ), 10 ); - - checkResult = function( sum, cn ) { - var result = ( sum * 10 ) % 11; - if ( ( result === 10 ) || ( result === 11 ) ) { - result = 0; - } - return ( result === cn ); - }; - - // Checking for dump data - if ( value === "" || - value === "00000000000" || - value === "11111111111" || - value === "22222222222" || - value === "33333333333" || - value === "44444444444" || - value === "55555555555" || - value === "66666666666" || - value === "77777777777" || - value === "88888888888" || - value === "99999999999" - ) { - return false; - } - - // Step 1 - using first Check Number: - for ( i = 1; i <= 9; i++ ) { - sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i ); - } - - // If first Check Number (CN) is valid, move to Step 2 - using second Check Number: - if ( checkResult( sum, firstCN ) ) { - sum = 0; - for ( i = 1; i <= 10; i++ ) { - sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i ); - } - return checkResult( sum, secondCN ); - } - return false; - -}, "Please specify a valid CPF number" ); - -// https://jqueryvalidation.org/creditcard-method/ -// based on https://en.wikipedia.org/wiki/Luhn_algorithm -$.validator.addMethod( "creditcard", function( value, element ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - - // Accept only spaces, digits and dashes - if ( /[^0-9 \-]+/.test( value ) ) { - return false; - } - - var nCheck = 0, - nDigit = 0, - bEven = false, - n, cDigit; - - value = value.replace( /\D/g, "" ); - - // Basing min and max length on - // https://developer.ean.com/general_info/Valid_Credit_Card_Types - if ( value.length < 13 || value.length > 19 ) { - return false; - } - - for ( n = value.length - 1; n >= 0; n-- ) { - cDigit = value.charAt( n ); - nDigit = parseInt( cDigit, 10 ); - if ( bEven ) { - if ( ( nDigit *= 2 ) > 9 ) { - nDigit -= 9; - } - } - - nCheck += nDigit; - bEven = !bEven; - } - - return ( nCheck % 10 ) === 0; -}, "Please enter a valid credit card number." ); - -/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator - * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 - * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) - */ -$.validator.addMethod( "creditcardtypes", function( value, element, param ) { - if ( /[^0-9\-]+/.test( value ) ) { - return false; - } - - value = value.replace( /\D/g, "" ); - - var validTypes = 0x0000; - - if ( param.mastercard ) { - validTypes |= 0x0001; - } - if ( param.visa ) { - validTypes |= 0x0002; - } - if ( param.amex ) { - validTypes |= 0x0004; - } - if ( param.dinersclub ) { - validTypes |= 0x0008; - } - if ( param.enroute ) { - validTypes |= 0x0010; - } - if ( param.discover ) { - validTypes |= 0x0020; - } - if ( param.jcb ) { - validTypes |= 0x0040; - } - if ( param.unknown ) { - validTypes |= 0x0080; - } - if ( param.all ) { - validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; - } - if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard - return value.length === 16; - } - if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa - return value.length === 16; - } - if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex - return value.length === 15; - } - if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub - return value.length === 14; - } - if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute - return value.length === 15; - } - if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover - return value.length === 16; - } - if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb - return value.length === 16; - } - if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb - return value.length === 15; - } - if ( validTypes & 0x0080 ) { // Unknown - return true; - } - return false; -}, "Please enter a valid credit card number." ); - -/** - * Validates currencies with any given symbols by @jameslouiz - * Symbols can be optional or required. Symbols required by default - * - * Usage examples: - * currency: ["£", false] - Use false for soft currency validation - * currency: ["$", false] - * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc - * - * - * - * Soft symbol checking - * currencyInput: { - * currency: ["$", false] - * } - * - * Strict symbol checking (default) - * currencyInput: { - * currency: "$" - * //OR - * currency: ["$", true] - * } - * - * Multiple Symbols - * currencyInput: { - * currency: "$,£,¢" - * } - */ -$.validator.addMethod( "currency", function( value, element, param ) { - var isParamString = typeof param === "string", - symbol = isParamString ? param : param[ 0 ], - soft = isParamString ? true : param[ 1 ], - regex; - - symbol = symbol.replace( /,/g, "" ); - symbol = soft ? symbol + "]" : symbol + "]?"; - regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$"; - regex = new RegExp( regex ); - return this.optional( element ) || regex.test( value ); - -}, "Please specify a valid currency" ); - -$.validator.addMethod( "dateFA", function( value, element ) { - return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value ); -}, $.validator.messages.date ); - -/** - * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. - * - * @example $.validator.methods.date("01/01/1900") - * @result true - * - * @example $.validator.methods.date("01/13/1990") - * @result false - * - * @example $.validator.methods.date("01.01.1900") - * @result false - * - * @example - * @desc Declares an optional input element whose value must be a valid date. - * - * @name $.validator.methods.dateITA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "dateITA", function( value, element ) { - var check = false, - re = /^\d{1,2}\/\d{1,2}\/\d{4}$/, - adata, gg, mm, aaaa, xdata; - if ( re.test( value ) ) { - adata = value.split( "/" ); - gg = parseInt( adata[ 0 ], 10 ); - mm = parseInt( adata[ 1 ], 10 ); - aaaa = parseInt( adata[ 2 ], 10 ); - xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) ); - if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) { - check = true; - } else { - check = false; - } - } else { - check = false; - } - return this.optional( element ) || check; -}, $.validator.messages.date ); - -$.validator.addMethod( "dateNL", function( value, element ) { - return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value ); -}, $.validator.messages.date ); - -// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept -$.validator.addMethod( "extension", function( value, element, param ) { - param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif"; - return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) ); -}, $.validator.format( "Please enter a value with a valid extension." ) ); - -/** - * Dutch giro account numbers (not bank numbers) have max 7 digits - */ -$.validator.addMethod( "giroaccountNL", function( value, element ) { - return this.optional( element ) || /^[0-9]{1,7}$/.test( value ); -}, "Please specify a valid giro account number" ); - -/** - * IBAN is the international bank account number. - * It has a country - specific format, that is checked here too - * - * Validation is case-insensitive. Please make sure to normalize input yourself. - */ -$.validator.addMethod( "iban", function( value, element ) { - - // Some quick simple tests to prevent needless work - if ( this.optional( element ) ) { - return true; - } - - // Remove spaces and to upper case - var iban = value.replace( / /g, "" ).toUpperCase(), - ibancheckdigits = "", - leadingZeroes = true, - cRest = "", - cOperator = "", - countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p; - - // Check for IBAN code length. - // It contains: - // country code ISO 3166-1 - two letters, - // two check digits, - // Basic Bank Account Number (BBAN) - up to 30 chars - var minimalIBANlength = 5; - if ( iban.length < minimalIBANlength ) { - return false; - } - - // Check the country code and find the country specific format - countrycode = iban.substring( 0, 2 ); - bbancountrypatterns = { - "AL": "\\d{8}[\\dA-Z]{16}", - "AD": "\\d{8}[\\dA-Z]{12}", - "AT": "\\d{16}", - "AZ": "[\\dA-Z]{4}\\d{20}", - "BE": "\\d{12}", - "BH": "[A-Z]{4}[\\dA-Z]{14}", - "BA": "\\d{16}", - "BR": "\\d{23}[A-Z][\\dA-Z]", - "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}", - "CR": "\\d{17}", - "HR": "\\d{17}", - "CY": "\\d{8}[\\dA-Z]{16}", - "CZ": "\\d{20}", - "DK": "\\d{14}", - "DO": "[A-Z]{4}\\d{20}", - "EE": "\\d{16}", - "FO": "\\d{14}", - "FI": "\\d{14}", - "FR": "\\d{10}[\\dA-Z]{11}\\d{2}", - "GE": "[\\dA-Z]{2}\\d{16}", - "DE": "\\d{18}", - "GI": "[A-Z]{4}[\\dA-Z]{15}", - "GR": "\\d{7}[\\dA-Z]{16}", - "GL": "\\d{14}", - "GT": "[\\dA-Z]{4}[\\dA-Z]{20}", - "HU": "\\d{24}", - "IS": "\\d{22}", - "IE": "[\\dA-Z]{4}\\d{14}", - "IL": "\\d{19}", - "IT": "[A-Z]\\d{10}[\\dA-Z]{12}", - "KZ": "\\d{3}[\\dA-Z]{13}", - "KW": "[A-Z]{4}[\\dA-Z]{22}", - "LV": "[A-Z]{4}[\\dA-Z]{13}", - "LB": "\\d{4}[\\dA-Z]{20}", - "LI": "\\d{5}[\\dA-Z]{12}", - "LT": "\\d{16}", - "LU": "\\d{3}[\\dA-Z]{13}", - "MK": "\\d{3}[\\dA-Z]{10}\\d{2}", - "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}", - "MR": "\\d{23}", - "MU": "[A-Z]{4}\\d{19}[A-Z]{3}", - "MC": "\\d{10}[\\dA-Z]{11}\\d{2}", - "MD": "[\\dA-Z]{2}\\d{18}", - "ME": "\\d{18}", - "NL": "[A-Z]{4}\\d{10}", - "NO": "\\d{11}", - "PK": "[\\dA-Z]{4}\\d{16}", - "PS": "[\\dA-Z]{4}\\d{21}", - "PL": "\\d{24}", - "PT": "\\d{21}", - "RO": "[A-Z]{4}[\\dA-Z]{16}", - "SM": "[A-Z]\\d{10}[\\dA-Z]{12}", - "SA": "\\d{2}[\\dA-Z]{18}", - "RS": "\\d{18}", - "SK": "\\d{20}", - "SI": "\\d{15}", - "ES": "\\d{20}", - "SE": "\\d{20}", - "CH": "\\d{5}[\\dA-Z]{12}", - "TN": "\\d{20}", - "TR": "\\d{5}[\\dA-Z]{17}", - "AE": "\\d{3}\\d{16}", - "GB": "[A-Z]{4}\\d{14}", - "VG": "[\\dA-Z]{4}\\d{16}" - }; - - bbanpattern = bbancountrypatterns[ countrycode ]; - - // As new countries will start using IBAN in the - // future, we only check if the countrycode is known. - // This prevents false negatives, while almost all - // false positives introduced by this, will be caught - // by the checksum validation below anyway. - // Strict checking should return FALSE for unknown - // countries. - if ( typeof bbanpattern !== "undefined" ) { - ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" ); - if ( !( ibanregexp.test( iban ) ) ) { - return false; // Invalid country specific format - } - } - - // Now check the checksum, first convert to digits - ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 ); - for ( i = 0; i < ibancheck.length; i++ ) { - charAt = ibancheck.charAt( i ); - if ( charAt !== "0" ) { - leadingZeroes = false; - } - if ( !leadingZeroes ) { - ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt ); - } - } - - // Calculate the result of: ibancheckdigits % 97 - for ( p = 0; p < ibancheckdigits.length; p++ ) { - cChar = ibancheckdigits.charAt( p ); - cOperator = "" + cRest + "" + cChar; - cRest = cOperator % 97; - } - return cRest === 1; -}, "Please specify a valid IBAN" ); - -$.validator.addMethod( "integer", function( value, element ) { - return this.optional( element ) || /^-?\d+$/.test( value ); -}, "A positive or negative non-decimal number please" ); - -$.validator.addMethod( "ipv4", function( value, element ) { - return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value ); -}, "Please enter a valid IP v4 address." ); - -$.validator.addMethod( "ipv6", function( value, element ) { - return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value ); -}, "Please enter a valid IP v6 address." ); - -$.validator.addMethod( "lettersonly", function( value, element ) { - return this.optional( element ) || /^[a-z]+$/i.test( value ); -}, "Letters only please" ); - -$.validator.addMethod( "letterswithbasicpunc", function( value, element ) { - return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value ); -}, "Letters or punctuation only please" ); - -$.validator.addMethod( "mobileNL", function( value, element ) { - return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value ); -}, "Please specify a valid mobile number" ); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -$.validator.addMethod( "mobileUK", function( phone_number, element ) { - phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ ); -}, "Please specify a valid mobile number" ); - -$.validator.addMethod( "netmask", function( value, element ) { - return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value ); -}, "Please enter a valid netmask." ); - -/* - * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish - * authorities to any foreigner. - * - * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal - * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to - * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter. - */ -$.validator.addMethod( "nieES", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi ); - var validChars = "TRWAGMYFPDXBNJZSQVHLCKET", - letter = value.substr( value.length - 1 ).toUpperCase(), - number; - - value = value.toString().toUpperCase(); - - // Quick format test - if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) { - return false; - } - - // X means same number - // Y means number + 10000000 - // Z means number + 20000000 - value = value.replace( /^[X]/, "0" ) - .replace( /^[Y]/, "1" ) - .replace( /^[Z]/, "2" ); - - number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 ); - - return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter; - -}, "Please specify a valid NIE number." ); - -/* - * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals - */ -$.validator.addMethod( "nifES", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - value = value.toUpperCase(); - - // Basic format test - if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { - return false; - } - - // Test NIF - if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) { - return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) ); - } - - // Test specials NIF (starts with K, L or M) - if ( /^[KLM]{1}/.test( value ) ) { - return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) ); - } - - return false; - -}, "Please specify a valid NIF number." ); - -/* - * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies - */ -$.validator.addMethod( "nipPL", function( value ) { - "use strict"; - - value = value.replace( /[^0-9]/g, "" ); - - if ( value.length !== 10 ) { - return false; - } - - var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ]; - var intSum = 0; - for ( var i = 0; i < 9; i++ ) { - intSum += arrSteps[ i ] * value[ i ]; - } - var int2 = intSum % 11; - var intControlNr = ( int2 === 10 ) ? 0 : int2; - - return ( intControlNr === parseInt( value[ 9 ], 10 ) ); -}, "Please specify a valid NIP number." ); - -$.validator.addMethod( "notEqualTo", function( value, element, param ) { - return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param ); -}, "Please enter a different value, values must not be the same." ); - -$.validator.addMethod( "nowhitespace", function( value, element ) { - return this.optional( element ) || /^\S+$/i.test( value ); -}, "No white space please" ); - -/** -* Return true if the field value matches the given format RegExp -* -* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) -* @result true -* -* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) -* @result false -* -* @name $.validator.methods.pattern -* @type Boolean -* @cat Plugins/Validate/Methods -*/ -$.validator.addMethod( "pattern", function( value, element, param ) { - if ( this.optional( element ) ) { - return true; - } - if ( typeof param === "string" ) { - param = new RegExp( "^(?:" + param + ")$" ); - } - return param.test( value ); -}, "Invalid format." ); - -/** - * Dutch phone numbers have 10 digits (or 11 and start with +31). - */ -$.validator.addMethod( "phoneNL", function( value, element ) { - return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value ); -}, "Please specify a valid phone number." ); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ - -// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers -$.validator.addMethod( "phonesUK", function( phone_number, element ) { - phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ ); -}, "Please specify a valid uk phone number" ); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -$.validator.addMethod( "phoneUK", function( phone_number, element ) { - phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ ); -}, "Please specify a valid phone number" ); - -/** - * Matches US phone number format - * - * where the area code may not start with 1 and the prefix may not start with 1 - * allows '-' or ' ' as a separator and allows parens around area code - * some people may want to put a '1' in front of their number - * - * 1(212)-999-2345 or - * 212 999 2344 or - * 212-999-0983 - * - * but not - * 111-123-5434 - * and not - * 212 123 4567 - */ -$.validator.addMethod( "phoneUS", function( phone_number, element ) { - phone_number = phone_number.replace( /\s+/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ ); -}, "Please specify a valid phone number" ); - -/* -* Valida CEPs do brasileiros: -* -* Formatos aceitos: -* 99999-999 -* 99.999-999 -* 99999999 -*/ -$.validator.addMethod( "postalcodeBR", function( cep_value, element ) { - return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value ); -}, "Informe um CEP válido." ); - -/** - * Matches a valid Canadian Postal Code - * - * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element ) - * @result true - * - * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element ) - * @result false - * - * @name jQuery.validator.methods.postalCodeCA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "postalCodeCA", function( value, element ) { - return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value ); -}, "Please specify a valid postal code" ); - -/* Matches Italian postcode (CAP) */ -$.validator.addMethod( "postalcodeIT", function( value, element ) { - return this.optional( element ) || /^\d{5}$/.test( value ); -}, "Please specify a valid postal code" ); - -$.validator.addMethod( "postalcodeNL", function( value, element ) { - return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value ); -}, "Please specify a valid postal code" ); - -// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) -$.validator.addMethod( "postcodeUK", function( value, element ) { - return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value ); -}, "Please specify a valid UK postcode" ); - -/* - * Lets you say "at least X inputs that match selector Y must be filled." - * - * The end result is that neither of these inputs: - * - * - * - * - * ...will validate unless at least one of them is filled. - * - * partnumber: {require_from_group: [1,".productinfo"]}, - * description: {require_from_group: [1,".productinfo"]} - * - * options[0]: number of fields that must be filled in the group - * options[1]: CSS selector that defines the group of conditionally required fields - */ -$.validator.addMethod( "require_from_group", function( value, element, options ) { - var $fields = $( options[ 1 ], element.form ), - $fieldsFirst = $fields.eq( 0 ), - validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ), - isValid = $fields.filter( function() { - return validator.elementValue( this ); - } ).length >= options[ 0 ]; - - // Store the cloned validator for future validation - $fieldsFirst.data( "valid_req_grp", validator ); - - // If element isn't being validated, run each require_from_group field's validation rules - if ( !$( element ).data( "being_validated" ) ) { - $fields.data( "being_validated", true ); - $fields.each( function() { - validator.element( this ); - } ); - $fields.data( "being_validated", false ); - } - return isValid; -}, $.validator.format( "Please fill at least {0} of these fields." ) ); - -/* - * Lets you say "either at least X inputs that match selector Y must be filled, - * OR they must all be skipped (left blank)." - * - * The end result, is that none of these inputs: - * - * - * - * - * - * ...will validate unless either at least two of them are filled, - * OR none of them are. - * - * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, - * description: {skip_or_fill_minimum: [2,".productinfo"]}, - * color: {skip_or_fill_minimum: [2,".productinfo"]} - * - * options[0]: number of fields that must be filled in the group - * options[1]: CSS selector that defines the group of conditionally required fields - * - */ -$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) { - var $fields = $( options[ 1 ], element.form ), - $fieldsFirst = $fields.eq( 0 ), - validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ), - numberFilled = $fields.filter( function() { - return validator.elementValue( this ); - } ).length, - isValid = numberFilled === 0 || numberFilled >= options[ 0 ]; - - // Store the cloned validator for future validation - $fieldsFirst.data( "valid_skip", validator ); - - // If element isn't being validated, run each skip_or_fill_minimum field's validation rules - if ( !$( element ).data( "being_validated" ) ) { - $fields.data( "being_validated", true ); - $fields.each( function() { - validator.element( this ); - } ); - $fields.data( "being_validated", false ); - } - return isValid; -}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) ); - -/* Validates US States and/or Territories by @jdforsythe - * Can be case insensitive or require capitalization - default is case insensitive - * Can include US Territories or not - default does not - * Can include US Military postal abbreviations (AA, AE, AP) - default does not - * - * Note: "States" always includes DC (District of Colombia) - * - * Usage examples: - * - * This is the default - case insensitive, no territories, no military zones - * stateInput: { - * caseSensitive: false, - * includeTerritories: false, - * includeMilitary: false - * } - * - * Only allow capital letters, no territories, no military zones - * stateInput: { - * caseSensitive: false - * } - * - * Case insensitive, include territories but not military zones - * stateInput: { - * includeTerritories: true - * } - * - * Only allow capital letters, include territories and military zones - * stateInput: { - * caseSensitive: true, - * includeTerritories: true, - * includeMilitary: true - * } - * - */ -$.validator.addMethod( "stateUS", function( value, element, options ) { - var isDefault = typeof options === "undefined", - caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive, - includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories, - includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary, - regex; - - if ( !includeTerritories && !includeMilitary ) { - regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; - } else if ( includeTerritories && includeMilitary ) { - regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; - } else if ( includeTerritories ) { - regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; - } else { - regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; - } - - regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" ); - return this.optional( element ) || regex.test( value ); -}, "Please specify a valid state" ); - -// TODO check if value starts with <, otherwise don't try stripping anything -$.validator.addMethod( "strippedminlength", function( value, element, param ) { - return $( value ).text().length >= param; -}, $.validator.format( "Please enter at least {0} characters" ) ); - -$.validator.addMethod( "time", function( value, element ) { - return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value ); -}, "Please enter a valid time, between 00:00 and 23:59" ); - -$.validator.addMethod( "time12h", function( value, element ) { - return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value ); -}, "Please enter a valid time in 12-hour am/pm format" ); - -// Same as url, but TLD is optional -$.validator.addMethod( "url2", function( value, element ) { - return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value ); -}, $.validator.messages.url ); - -/** - * Return true, if the value is a valid vehicle identification number (VIN). - * - * Works with all kind of text inputs. - * - * @example - * @desc Declares a required input element whose value must be a valid vehicle identification number. - * - * @name $.validator.methods.vinUS - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "vinUS", function( v ) { - if ( v.length !== 17 ) { - return false; - } - - var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ], - VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ], - FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ], - rs = 0, - i, n, d, f, cd, cdv; - - for ( i = 0; i < 17; i++ ) { - f = FL[ i ]; - d = v.slice( i, i + 1 ); - if ( i === 8 ) { - cdv = d; - } - if ( !isNaN( d ) ) { - d *= f; - } else { - for ( n = 0; n < LL.length; n++ ) { - if ( d.toUpperCase() === LL[ n ] ) { - d = VL[ n ]; - d *= f; - if ( isNaN( cdv ) && n === 8 ) { - cdv = LL[ n ]; - } - break; - } - } - } - rs += d; - } - cd = rs % 11; - if ( cd === 10 ) { - cd = "X"; - } - if ( cd === cdv ) { - return true; - } - return false; -}, "The specified vehicle identification number (VIN) is invalid." ); - -$.validator.addMethod( "zipcodeUS", function( value, element ) { - return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value ); -}, "The specified US ZIP Code is invalid" ); - -$.validator.addMethod( "ziprange", function( value, element ) { - return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value ); -}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" ); -return $; -})); \ No newline at end of file diff --git a/html/content/lib/jquery-validation/dist/jquery.validate.js b/html/content/lib/jquery-validation/dist/jquery.validate.js deleted file mode 100644 index af51b2d..0000000 --- a/html/content/lib/jquery-validation/dist/jquery.validate.js +++ /dev/null @@ -1,1601 +0,0 @@ -/*! - * jQuery Validation Plugin v1.17.0 - * - * https://jqueryvalidation.org/ - * - * Copyright (c) 2017 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery"], factory ); - } else if (typeof module === "object" && module.exports) { - module.exports = factory( require( "jquery" ) ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -$.extend( $.fn, { - - // https://jqueryvalidation.org/validate/ - validate: function( options ) { - - // If nothing is selected, return nothing; can't chain anyway - if ( !this.length ) { - if ( options && options.debug && window.console ) { - console.warn( "Nothing selected, can't validate, returning nothing." ); - } - return; - } - - // Check if a validator for this form was already created - var validator = $.data( this[ 0 ], "validator" ); - if ( validator ) { - return validator; - } - - // Add novalidate tag if HTML5. - this.attr( "novalidate", "novalidate" ); - - validator = new $.validator( options, this[ 0 ] ); - $.data( this[ 0 ], "validator", validator ); - - if ( validator.settings.onsubmit ) { - - this.on( "click.validate", ":submit", function( event ) { - - // Track the used submit button to properly handle scripted - // submits later. - validator.submitButton = event.currentTarget; - - // Allow suppressing validation by adding a cancel class to the submit button - if ( $( this ).hasClass( "cancel" ) ) { - validator.cancelSubmit = true; - } - - // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button - if ( $( this ).attr( "formnovalidate" ) !== undefined ) { - validator.cancelSubmit = true; - } - } ); - - // Validate the form on submit - this.on( "submit.validate", function( event ) { - if ( validator.settings.debug ) { - - // Prevent form submit to be able to see console output - event.preventDefault(); - } - function handle() { - var hidden, result; - - // Insert a hidden input as a replacement for the missing submit button - // The hidden input is inserted in two cases: - // - A user defined a `submitHandler` - // - There was a pending request due to `remote` method and `stopRequest()` - // was called to submit the form in case it's valid - if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) { - hidden = $( "" ) - .attr( "name", validator.submitButton.name ) - .val( $( validator.submitButton ).val() ) - .appendTo( validator.currentForm ); - } - - if ( validator.settings.submitHandler ) { - result = validator.settings.submitHandler.call( validator, validator.currentForm, event ); - if ( hidden ) { - - // And clean up afterwards; thanks to no-block-scope, hidden can be referenced - hidden.remove(); - } - if ( result !== undefined ) { - return result; - } - return false; - } - return true; - } - - // Prevent submit for invalid forms or custom submit handlers - if ( validator.cancelSubmit ) { - validator.cancelSubmit = false; - return handle(); - } - if ( validator.form() ) { - if ( validator.pendingRequest ) { - validator.formSubmitted = true; - return false; - } - return handle(); - } else { - validator.focusInvalid(); - return false; - } - } ); - } - - return validator; - }, - - // https://jqueryvalidation.org/valid/ - valid: function() { - var valid, validator, errorList; - - if ( $( this[ 0 ] ).is( "form" ) ) { - valid = this.validate().form(); - } else { - errorList = []; - valid = true; - validator = $( this[ 0 ].form ).validate(); - this.each( function() { - valid = validator.element( this ) && valid; - if ( !valid ) { - errorList = errorList.concat( validator.errorList ); - } - } ); - validator.errorList = errorList; - } - return valid; - }, - - // https://jqueryvalidation.org/rules/ - rules: function( command, argument ) { - var element = this[ 0 ], - settings, staticRules, existingRules, data, param, filtered; - - // If nothing is selected, return empty object; can't chain anyway - if ( element == null ) { - return; - } - - if ( !element.form && element.hasAttribute( "contenteditable" ) ) { - element.form = this.closest( "form" )[ 0 ]; - element.name = this.attr( "name" ); - } - - if ( element.form == null ) { - return; - } - - if ( command ) { - settings = $.data( element.form, "validator" ).settings; - staticRules = settings.rules; - existingRules = $.validator.staticRules( element ); - switch ( command ) { - case "add": - $.extend( existingRules, $.validator.normalizeRule( argument ) ); - - // Remove messages from rules, but allow them to be set separately - delete existingRules.messages; - staticRules[ element.name ] = existingRules; - if ( argument.messages ) { - settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages ); - } - break; - case "remove": - if ( !argument ) { - delete staticRules[ element.name ]; - return existingRules; - } - filtered = {}; - $.each( argument.split( /\s/ ), function( index, method ) { - filtered[ method ] = existingRules[ method ]; - delete existingRules[ method ]; - } ); - return filtered; - } - } - - data = $.validator.normalizeRules( - $.extend( - {}, - $.validator.classRules( element ), - $.validator.attributeRules( element ), - $.validator.dataRules( element ), - $.validator.staticRules( element ) - ), element ); - - // Make sure required is at front - if ( data.required ) { - param = data.required; - delete data.required; - data = $.extend( { required: param }, data ); - } - - // Make sure remote is at back - if ( data.remote ) { - param = data.remote; - delete data.remote; - data = $.extend( data, { remote: param } ); - } - - return data; - } -} ); - -// Custom selectors -$.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support - - // https://jqueryvalidation.org/blank-selector/ - blank: function( a ) { - return !$.trim( "" + $( a ).val() ); - }, - - // https://jqueryvalidation.org/filled-selector/ - filled: function( a ) { - var val = $( a ).val(); - return val !== null && !!$.trim( "" + val ); - }, - - // https://jqueryvalidation.org/unchecked-selector/ - unchecked: function( a ) { - return !$( a ).prop( "checked" ); - } -} ); - -// Constructor for validator -$.validator = function( options, form ) { - this.settings = $.extend( true, {}, $.validator.defaults, options ); - this.currentForm = form; - this.init(); -}; - -// https://jqueryvalidation.org/jQuery.validator.format/ -$.validator.format = function( source, params ) { - if ( arguments.length === 1 ) { - return function() { - var args = $.makeArray( arguments ); - args.unshift( source ); - return $.validator.format.apply( this, args ); - }; - } - if ( params === undefined ) { - return source; - } - if ( arguments.length > 2 && params.constructor !== Array ) { - params = $.makeArray( arguments ).slice( 1 ); - } - if ( params.constructor !== Array ) { - params = [ params ]; - } - $.each( params, function( i, n ) { - source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() { - return n; - } ); - } ); - return source; -}; - -$.extend( $.validator, { - - defaults: { - messages: {}, - groups: {}, - rules: {}, - errorClass: "error", - pendingClass: "pending", - validClass: "valid", - errorElement: "label", - focusCleanup: false, - focusInvalid: true, - errorContainer: $( [] ), - errorLabelContainer: $( [] ), - onsubmit: true, - ignore: ":hidden", - ignoreTitle: false, - onfocusin: function( element ) { - this.lastActive = element; - - // Hide error label and remove error class on focus if enabled - if ( this.settings.focusCleanup ) { - if ( this.settings.unhighlight ) { - this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); - } - this.hideThese( this.errorsFor( element ) ); - } - }, - onfocusout: function( element ) { - if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) { - this.element( element ); - } - }, - onkeyup: function( element, event ) { - - // Avoid revalidate the field when pressing one of the following keys - // Shift => 16 - // Ctrl => 17 - // Alt => 18 - // Caps lock => 20 - // End => 35 - // Home => 36 - // Left arrow => 37 - // Up arrow => 38 - // Right arrow => 39 - // Down arrow => 40 - // Insert => 45 - // Num lock => 144 - // AltGr key => 225 - var excludedKeys = [ - 16, 17, 18, 20, 35, 36, 37, - 38, 39, 40, 45, 144, 225 - ]; - - if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) { - return; - } else if ( element.name in this.submitted || element.name in this.invalid ) { - this.element( element ); - } - }, - onclick: function( element ) { - - // Click on selects, radiobuttons and checkboxes - if ( element.name in this.submitted ) { - this.element( element ); - - // Or option elements, check parent select in that case - } else if ( element.parentNode.name in this.submitted ) { - this.element( element.parentNode ); - } - }, - highlight: function( element, errorClass, validClass ) { - if ( element.type === "radio" ) { - this.findByName( element.name ).addClass( errorClass ).removeClass( validClass ); - } else { - $( element ).addClass( errorClass ).removeClass( validClass ); - } - }, - unhighlight: function( element, errorClass, validClass ) { - if ( element.type === "radio" ) { - this.findByName( element.name ).removeClass( errorClass ).addClass( validClass ); - } else { - $( element ).removeClass( errorClass ).addClass( validClass ); - } - } - }, - - // https://jqueryvalidation.org/jQuery.validator.setDefaults/ - setDefaults: function( settings ) { - $.extend( $.validator.defaults, settings ); - }, - - messages: { - required: "This field is required.", - remote: "Please fix this field.", - email: "Please enter a valid email address.", - url: "Please enter a valid URL.", - date: "Please enter a valid date.", - dateISO: "Please enter a valid date (ISO).", - number: "Please enter a valid number.", - digits: "Please enter only digits.", - equalTo: "Please enter the same value again.", - maxlength: $.validator.format( "Please enter no more than {0} characters." ), - minlength: $.validator.format( "Please enter at least {0} characters." ), - rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ), - range: $.validator.format( "Please enter a value between {0} and {1}." ), - max: $.validator.format( "Please enter a value less than or equal to {0}." ), - min: $.validator.format( "Please enter a value greater than or equal to {0}." ), - step: $.validator.format( "Please enter a multiple of {0}." ) - }, - - autoCreateRanges: false, - - prototype: { - - init: function() { - this.labelContainer = $( this.settings.errorLabelContainer ); - this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm ); - this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer ); - this.submitted = {}; - this.valueCache = {}; - this.pendingRequest = 0; - this.pending = {}; - this.invalid = {}; - this.reset(); - - var groups = ( this.groups = {} ), - rules; - $.each( this.settings.groups, function( key, value ) { - if ( typeof value === "string" ) { - value = value.split( /\s/ ); - } - $.each( value, function( index, name ) { - groups[ name ] = key; - } ); - } ); - rules = this.settings.rules; - $.each( rules, function( key, value ) { - rules[ key ] = $.validator.normalizeRule( value ); - } ); - - function delegate( event ) { - - // Set form expando on contenteditable - if ( !this.form && this.hasAttribute( "contenteditable" ) ) { - this.form = $( this ).closest( "form" )[ 0 ]; - this.name = $( this ).attr( "name" ); - } - - var validator = $.data( this.form, "validator" ), - eventType = "on" + event.type.replace( /^validate/, "" ), - settings = validator.settings; - if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) { - settings[ eventType ].call( validator, this, event ); - } - } - - $( this.currentForm ) - .on( "focusin.validate focusout.validate keyup.validate", - ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " + - "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " + - "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " + - "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate ) - - // Support: Chrome, oldIE - // "select" is provided as event.target when clicking a option - .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate ); - - if ( this.settings.invalidHandler ) { - $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler ); - } - }, - - // https://jqueryvalidation.org/Validator.form/ - form: function() { - this.checkForm(); - $.extend( this.submitted, this.errorMap ); - this.invalid = $.extend( {}, this.errorMap ); - if ( !this.valid() ) { - $( this.currentForm ).triggerHandler( "invalid-form", [ this ] ); - } - this.showErrors(); - return this.valid(); - }, - - checkForm: function() { - this.prepareForm(); - for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) { - this.check( elements[ i ] ); - } - return this.valid(); - }, - - // https://jqueryvalidation.org/Validator.element/ - element: function( element ) { - var cleanElement = this.clean( element ), - checkElement = this.validationTargetFor( cleanElement ), - v = this, - result = true, - rs, group; - - if ( checkElement === undefined ) { - delete this.invalid[ cleanElement.name ]; - } else { - this.prepareElement( checkElement ); - this.currentElements = $( checkElement ); - - // If this element is grouped, then validate all group elements already - // containing a value - group = this.groups[ checkElement.name ]; - if ( group ) { - $.each( this.groups, function( name, testgroup ) { - if ( testgroup === group && name !== checkElement.name ) { - cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) ); - if ( cleanElement && cleanElement.name in v.invalid ) { - v.currentElements.push( cleanElement ); - result = v.check( cleanElement ) && result; - } - } - } ); - } - - rs = this.check( checkElement ) !== false; - result = result && rs; - if ( rs ) { - this.invalid[ checkElement.name ] = false; - } else { - this.invalid[ checkElement.name ] = true; - } - - if ( !this.numberOfInvalids() ) { - - // Hide error containers on last error - this.toHide = this.toHide.add( this.containers ); - } - this.showErrors(); - - // Add aria-invalid status for screen readers - $( element ).attr( "aria-invalid", !rs ); - } - - return result; - }, - - // https://jqueryvalidation.org/Validator.showErrors/ - showErrors: function( errors ) { - if ( errors ) { - var validator = this; - - // Add items to error list and map - $.extend( this.errorMap, errors ); - this.errorList = $.map( this.errorMap, function( message, name ) { - return { - message: message, - element: validator.findByName( name )[ 0 ] - }; - } ); - - // Remove items from success list - this.successList = $.grep( this.successList, function( element ) { - return !( element.name in errors ); - } ); - } - if ( this.settings.showErrors ) { - this.settings.showErrors.call( this, this.errorMap, this.errorList ); - } else { - this.defaultShowErrors(); - } - }, - - // https://jqueryvalidation.org/Validator.resetForm/ - resetForm: function() { - if ( $.fn.resetForm ) { - $( this.currentForm ).resetForm(); - } - this.invalid = {}; - this.submitted = {}; - this.prepareForm(); - this.hideErrors(); - var elements = this.elements() - .removeData( "previousValue" ) - .removeAttr( "aria-invalid" ); - - this.resetElements( elements ); - }, - - resetElements: function( elements ) { - var i; - - if ( this.settings.unhighlight ) { - for ( i = 0; elements[ i ]; i++ ) { - this.settings.unhighlight.call( this, elements[ i ], - this.settings.errorClass, "" ); - this.findByName( elements[ i ].name ).removeClass( this.settings.validClass ); - } - } else { - elements - .removeClass( this.settings.errorClass ) - .removeClass( this.settings.validClass ); - } - }, - - numberOfInvalids: function() { - return this.objectLength( this.invalid ); - }, - - objectLength: function( obj ) { - /* jshint unused: false */ - var count = 0, - i; - for ( i in obj ) { - - // This check allows counting elements with empty error - // message as invalid elements - if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) { - count++; - } - } - return count; - }, - - hideErrors: function() { - this.hideThese( this.toHide ); - }, - - hideThese: function( errors ) { - errors.not( this.containers ).text( "" ); - this.addWrapper( errors ).hide(); - }, - - valid: function() { - return this.size() === 0; - }, - - size: function() { - return this.errorList.length; - }, - - focusInvalid: function() { - if ( this.settings.focusInvalid ) { - try { - $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] ) - .filter( ":visible" ) - .focus() - - // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find - .trigger( "focusin" ); - } catch ( e ) { - - // Ignore IE throwing errors when focusing hidden elements - } - } - }, - - findLastActive: function() { - var lastActive = this.lastActive; - return lastActive && $.grep( this.errorList, function( n ) { - return n.element.name === lastActive.name; - } ).length === 1 && lastActive; - }, - - elements: function() { - var validator = this, - rulesCache = {}; - - // Select all valid inputs inside the form (no submit or reset buttons) - return $( this.currentForm ) - .find( "input, select, textarea, [contenteditable]" ) - .not( ":submit, :reset, :image, :disabled" ) - .not( this.settings.ignore ) - .filter( function() { - var name = this.name || $( this ).attr( "name" ); // For contenteditable - if ( !name && validator.settings.debug && window.console ) { - console.error( "%o has no name assigned", this ); - } - - // Set form expando on contenteditable - if ( this.hasAttribute( "contenteditable" ) ) { - this.form = $( this ).closest( "form" )[ 0 ]; - this.name = name; - } - - // Select only the first element for each name, and only those with rules specified - if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) { - return false; - } - - rulesCache[ name ] = true; - return true; - } ); - }, - - clean: function( selector ) { - return $( selector )[ 0 ]; - }, - - errors: function() { - var errorClass = this.settings.errorClass.split( " " ).join( "." ); - return $( this.settings.errorElement + "." + errorClass, this.errorContext ); - }, - - resetInternals: function() { - this.successList = []; - this.errorList = []; - this.errorMap = {}; - this.toShow = $( [] ); - this.toHide = $( [] ); - }, - - reset: function() { - this.resetInternals(); - this.currentElements = $( [] ); - }, - - prepareForm: function() { - this.reset(); - this.toHide = this.errors().add( this.containers ); - }, - - prepareElement: function( element ) { - this.reset(); - this.toHide = this.errorsFor( element ); - }, - - elementValue: function( element ) { - var $element = $( element ), - type = element.type, - val, idx; - - if ( type === "radio" || type === "checkbox" ) { - return this.findByName( element.name ).filter( ":checked" ).val(); - } else if ( type === "number" && typeof element.validity !== "undefined" ) { - return element.validity.badInput ? "NaN" : $element.val(); - } - - if ( element.hasAttribute( "contenteditable" ) ) { - val = $element.text(); - } else { - val = $element.val(); - } - - if ( type === "file" ) { - - // Modern browser (chrome & safari) - if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) { - return val.substr( 12 ); - } - - // Legacy browsers - // Unix-based path - idx = val.lastIndexOf( "/" ); - if ( idx >= 0 ) { - return val.substr( idx + 1 ); - } - - // Windows-based path - idx = val.lastIndexOf( "\\" ); - if ( idx >= 0 ) { - return val.substr( idx + 1 ); - } - - // Just the file name - return val; - } - - if ( typeof val === "string" ) { - return val.replace( /\r/g, "" ); - } - return val; - }, - - check: function( element ) { - element = this.validationTargetFor( this.clean( element ) ); - - var rules = $( element ).rules(), - rulesCount = $.map( rules, function( n, i ) { - return i; - } ).length, - dependencyMismatch = false, - val = this.elementValue( element ), - result, method, rule, normalizer; - - // Prioritize the local normalizer defined for this element over the global one - // if the former exists, otherwise user the global one in case it exists. - if ( typeof rules.normalizer === "function" ) { - normalizer = rules.normalizer; - } else if ( typeof this.settings.normalizer === "function" ) { - normalizer = this.settings.normalizer; - } - - // If normalizer is defined, then call it to retreive the changed value instead - // of using the real one. - // Note that `this` in the normalizer is `element`. - if ( normalizer ) { - val = normalizer.call( element, val ); - - if ( typeof val !== "string" ) { - throw new TypeError( "The normalizer should return a string value." ); - } - - // Delete the normalizer from rules to avoid treating it as a pre-defined method. - delete rules.normalizer; - } - - for ( method in rules ) { - rule = { method: method, parameters: rules[ method ] }; - try { - result = $.validator.methods[ method ].call( this, val, element, rule.parameters ); - - // If a method indicates that the field is optional and therefore valid, - // don't mark it as valid when there are no other rules - if ( result === "dependency-mismatch" && rulesCount === 1 ) { - dependencyMismatch = true; - continue; - } - dependencyMismatch = false; - - if ( result === "pending" ) { - this.toHide = this.toHide.not( this.errorsFor( element ) ); - return; - } - - if ( !result ) { - this.formatAndAdd( element, rule ); - return false; - } - } catch ( e ) { - if ( this.settings.debug && window.console ) { - console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e ); - } - if ( e instanceof TypeError ) { - e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method."; - } - - throw e; - } - } - if ( dependencyMismatch ) { - return; - } - if ( this.objectLength( rules ) ) { - this.successList.push( element ); - } - return true; - }, - - // Return the custom message for the given element and validation method - // specified in the element's HTML5 data attribute - // return the generic message if present and no method specific message is present - customDataMessage: function( element, method ) { - return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() + - method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" ); - }, - - // Return the custom message for the given element name and validation method - customMessage: function( name, method ) { - var m = this.settings.messages[ name ]; - return m && ( m.constructor === String ? m : m[ method ] ); - }, - - // Return the first defined argument, allowing empty strings - findDefined: function() { - for ( var i = 0; i < arguments.length; i++ ) { - if ( arguments[ i ] !== undefined ) { - return arguments[ i ]; - } - } - return undefined; - }, - - // The second parameter 'rule' used to be a string, and extended to an object literal - // of the following form: - // rule = { - // method: "method name", - // parameters: "the given method parameters" - // } - // - // The old behavior still supported, kept to maintain backward compatibility with - // old code, and will be removed in the next major release. - defaultMessage: function( element, rule ) { - if ( typeof rule === "string" ) { - rule = { method: rule }; - } - - var message = this.findDefined( - this.customMessage( element.name, rule.method ), - this.customDataMessage( element, rule.method ), - - // 'title' is never undefined, so handle empty string as undefined - !this.settings.ignoreTitle && element.title || undefined, - $.validator.messages[ rule.method ], - "Warning: No message defined for " + element.name + "" - ), - theregex = /\$?\{(\d+)\}/g; - if ( typeof message === "function" ) { - message = message.call( this, rule.parameters, element ); - } else if ( theregex.test( message ) ) { - message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters ); - } - - return message; - }, - - formatAndAdd: function( element, rule ) { - var message = this.defaultMessage( element, rule ); - - this.errorList.push( { - message: message, - element: element, - method: rule.method - } ); - - this.errorMap[ element.name ] = message; - this.submitted[ element.name ] = message; - }, - - addWrapper: function( toToggle ) { - if ( this.settings.wrapper ) { - toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); - } - return toToggle; - }, - - defaultShowErrors: function() { - var i, elements, error; - for ( i = 0; this.errorList[ i ]; i++ ) { - error = this.errorList[ i ]; - if ( this.settings.highlight ) { - this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); - } - this.showLabel( error.element, error.message ); - } - if ( this.errorList.length ) { - this.toShow = this.toShow.add( this.containers ); - } - if ( this.settings.success ) { - for ( i = 0; this.successList[ i ]; i++ ) { - this.showLabel( this.successList[ i ] ); - } - } - if ( this.settings.unhighlight ) { - for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) { - this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass ); - } - } - this.toHide = this.toHide.not( this.toShow ); - this.hideErrors(); - this.addWrapper( this.toShow ).show(); - }, - - validElements: function() { - return this.currentElements.not( this.invalidElements() ); - }, - - invalidElements: function() { - return $( this.errorList ).map( function() { - return this.element; - } ); - }, - - showLabel: function( element, message ) { - var place, group, errorID, v, - error = this.errorsFor( element ), - elementID = this.idOrName( element ), - describedBy = $( element ).attr( "aria-describedby" ); - - if ( error.length ) { - - // Refresh error/success class - error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); - - // Replace message on existing label - error.html( message ); - } else { - - // Create error element - error = $( "<" + this.settings.errorElement + ">" ) - .attr( "id", elementID + "-error" ) - .addClass( this.settings.errorClass ) - .html( message || "" ); - - // Maintain reference to the element to be placed into the DOM - place = error; - if ( this.settings.wrapper ) { - - // Make sure the element is visible, even in IE - // actually showing the wrapped element is handled elsewhere - place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent(); - } - if ( this.labelContainer.length ) { - this.labelContainer.append( place ); - } else if ( this.settings.errorPlacement ) { - this.settings.errorPlacement.call( this, place, $( element ) ); - } else { - place.insertAfter( element ); - } - - // Link error back to the element - if ( error.is( "label" ) ) { - - // If the error is a label, then associate using 'for' - error.attr( "for", elementID ); - - // If the element is not a child of an associated label, then it's necessary - // to explicitly apply aria-describedby - } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) { - errorID = error.attr( "id" ); - - // Respect existing non-error aria-describedby - if ( !describedBy ) { - describedBy = errorID; - } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) { - - // Add to end of list if not already present - describedBy += " " + errorID; - } - $( element ).attr( "aria-describedby", describedBy ); - - // If this element is grouped, then assign to all elements in the same group - group = this.groups[ element.name ]; - if ( group ) { - v = this; - $.each( v.groups, function( name, testgroup ) { - if ( testgroup === group ) { - $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm ) - .attr( "aria-describedby", error.attr( "id" ) ); - } - } ); - } - } - } - if ( !message && this.settings.success ) { - error.text( "" ); - if ( typeof this.settings.success === "string" ) { - error.addClass( this.settings.success ); - } else { - this.settings.success( error, element ); - } - } - this.toShow = this.toShow.add( error ); - }, - - errorsFor: function( element ) { - var name = this.escapeCssMeta( this.idOrName( element ) ), - describer = $( element ).attr( "aria-describedby" ), - selector = "label[for='" + name + "'], label[for='" + name + "'] *"; - - // 'aria-describedby' should directly reference the error element - if ( describer ) { - selector = selector + ", #" + this.escapeCssMeta( describer ) - .replace( /\s+/g, ", #" ); - } - - return this - .errors() - .filter( selector ); - }, - - // See https://api.jquery.com/category/selectors/, for CSS - // meta-characters that should be escaped in order to be used with JQuery - // as a literal part of a name/id or any selector. - escapeCssMeta: function( string ) { - return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" ); - }, - - idOrName: function( element ) { - return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name ); - }, - - validationTargetFor: function( element ) { - - // If radio/checkbox, validate first element in group instead - if ( this.checkable( element ) ) { - element = this.findByName( element.name ); - } - - // Always apply ignore filter - return $( element ).not( this.settings.ignore )[ 0 ]; - }, - - checkable: function( element ) { - return ( /radio|checkbox/i ).test( element.type ); - }, - - findByName: function( name ) { - return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" ); - }, - - getLength: function( value, element ) { - switch ( element.nodeName.toLowerCase() ) { - case "select": - return $( "option:selected", element ).length; - case "input": - if ( this.checkable( element ) ) { - return this.findByName( element.name ).filter( ":checked" ).length; - } - } - return value.length; - }, - - depend: function( param, element ) { - return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true; - }, - - dependTypes: { - "boolean": function( param ) { - return param; - }, - "string": function( param, element ) { - return !!$( param, element.form ).length; - }, - "function": function( param, element ) { - return param( element ); - } - }, - - optional: function( element ) { - var val = this.elementValue( element ); - return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch"; - }, - - startRequest: function( element ) { - if ( !this.pending[ element.name ] ) { - this.pendingRequest++; - $( element ).addClass( this.settings.pendingClass ); - this.pending[ element.name ] = true; - } - }, - - stopRequest: function( element, valid ) { - this.pendingRequest--; - - // Sometimes synchronization fails, make sure pendingRequest is never < 0 - if ( this.pendingRequest < 0 ) { - this.pendingRequest = 0; - } - delete this.pending[ element.name ]; - $( element ).removeClass( this.settings.pendingClass ); - if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) { - $( this.currentForm ).submit(); - - // Remove the hidden input that was used as a replacement for the - // missing submit button. The hidden input is added by `handle()` - // to ensure that the value of the used submit button is passed on - // for scripted submits triggered by this method - if ( this.submitButton ) { - $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove(); - } - - this.formSubmitted = false; - } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) { - $( this.currentForm ).triggerHandler( "invalid-form", [ this ] ); - this.formSubmitted = false; - } - }, - - previousValue: function( element, method ) { - method = typeof method === "string" && method || "remote"; - - return $.data( element, "previousValue" ) || $.data( element, "previousValue", { - old: null, - valid: true, - message: this.defaultMessage( element, { method: method } ) - } ); - }, - - // Cleans up all forms and elements, removes validator-specific events - destroy: function() { - this.resetForm(); - - $( this.currentForm ) - .off( ".validate" ) - .removeData( "validator" ) - .find( ".validate-equalTo-blur" ) - .off( ".validate-equalTo" ) - .removeClass( "validate-equalTo-blur" ); - } - - }, - - classRuleSettings: { - required: { required: true }, - email: { email: true }, - url: { url: true }, - date: { date: true }, - dateISO: { dateISO: true }, - number: { number: true }, - digits: { digits: true }, - creditcard: { creditcard: true } - }, - - addClassRules: function( className, rules ) { - if ( className.constructor === String ) { - this.classRuleSettings[ className ] = rules; - } else { - $.extend( this.classRuleSettings, className ); - } - }, - - classRules: function( element ) { - var rules = {}, - classes = $( element ).attr( "class" ); - - if ( classes ) { - $.each( classes.split( " " ), function() { - if ( this in $.validator.classRuleSettings ) { - $.extend( rules, $.validator.classRuleSettings[ this ] ); - } - } ); - } - return rules; - }, - - normalizeAttributeRule: function( rules, type, method, value ) { - - // Convert the value to a number for number inputs, and for text for backwards compability - // allows type="date" and others to be compared as strings - if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) { - value = Number( value ); - - // Support Opera Mini, which returns NaN for undefined minlength - if ( isNaN( value ) ) { - value = undefined; - } - } - - if ( value || value === 0 ) { - rules[ method ] = value; - } else if ( type === method && type !== "range" ) { - - // Exception: the jquery validate 'range' method - // does not test for the html5 'range' type - rules[ method ] = true; - } - }, - - attributeRules: function( element ) { - var rules = {}, - $element = $( element ), - type = element.getAttribute( "type" ), - method, value; - - for ( method in $.validator.methods ) { - - // Support for in both html5 and older browsers - if ( method === "required" ) { - value = element.getAttribute( method ); - - // Some browsers return an empty string for the required attribute - // and non-HTML5 browsers might have required="" markup - if ( value === "" ) { - value = true; - } - - // Force non-HTML5 browsers to return bool - value = !!value; - } else { - value = $element.attr( method ); - } - - this.normalizeAttributeRule( rules, type, method, value ); - } - - // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs - if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) { - delete rules.maxlength; - } - - return rules; - }, - - dataRules: function( element ) { - var rules = {}, - $element = $( element ), - type = element.getAttribute( "type" ), - method, value; - - for ( method in $.validator.methods ) { - value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() ); - this.normalizeAttributeRule( rules, type, method, value ); - } - return rules; - }, - - staticRules: function( element ) { - var rules = {}, - validator = $.data( element.form, "validator" ); - - if ( validator.settings.rules ) { - rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {}; - } - return rules; - }, - - normalizeRules: function( rules, element ) { - - // Handle dependency check - $.each( rules, function( prop, val ) { - - // Ignore rule when param is explicitly false, eg. required:false - if ( val === false ) { - delete rules[ prop ]; - return; - } - if ( val.param || val.depends ) { - var keepRule = true; - switch ( typeof val.depends ) { - case "string": - keepRule = !!$( val.depends, element.form ).length; - break; - case "function": - keepRule = val.depends.call( element, element ); - break; - } - if ( keepRule ) { - rules[ prop ] = val.param !== undefined ? val.param : true; - } else { - $.data( element.form, "validator" ).resetElements( $( element ) ); - delete rules[ prop ]; - } - } - } ); - - // Evaluate parameters - $.each( rules, function( rule, parameter ) { - rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter; - } ); - - // Clean number parameters - $.each( [ "minlength", "maxlength" ], function() { - if ( rules[ this ] ) { - rules[ this ] = Number( rules[ this ] ); - } - } ); - $.each( [ "rangelength", "range" ], function() { - var parts; - if ( rules[ this ] ) { - if ( $.isArray( rules[ this ] ) ) { - rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ]; - } else if ( typeof rules[ this ] === "string" ) { - parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ ); - rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ]; - } - } - } ); - - if ( $.validator.autoCreateRanges ) { - - // Auto-create ranges - if ( rules.min != null && rules.max != null ) { - rules.range = [ rules.min, rules.max ]; - delete rules.min; - delete rules.max; - } - if ( rules.minlength != null && rules.maxlength != null ) { - rules.rangelength = [ rules.minlength, rules.maxlength ]; - delete rules.minlength; - delete rules.maxlength; - } - } - - return rules; - }, - - // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} - normalizeRule: function( data ) { - if ( typeof data === "string" ) { - var transformed = {}; - $.each( data.split( /\s/ ), function() { - transformed[ this ] = true; - } ); - data = transformed; - } - return data; - }, - - // https://jqueryvalidation.org/jQuery.validator.addMethod/ - addMethod: function( name, method, message ) { - $.validator.methods[ name ] = method; - $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ]; - if ( method.length < 3 ) { - $.validator.addClassRules( name, $.validator.normalizeRule( name ) ); - } - }, - - // https://jqueryvalidation.org/jQuery.validator.methods/ - methods: { - - // https://jqueryvalidation.org/required-method/ - required: function( value, element, param ) { - - // Check if dependency is met - if ( !this.depend( param, element ) ) { - return "dependency-mismatch"; - } - if ( element.nodeName.toLowerCase() === "select" ) { - - // Could be an array for select-multiple or a string, both are fine this way - var val = $( element ).val(); - return val && val.length > 0; - } - if ( this.checkable( element ) ) { - return this.getLength( value, element ) > 0; - } - return value.length > 0; - }, - - // https://jqueryvalidation.org/email-method/ - email: function( value, element ) { - - // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address - // Retrieved 2014-01-14 - // If you have a problem with this implementation, report a bug against the above spec - // Or use custom methods to implement your own email validation - return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value ); - }, - - // https://jqueryvalidation.org/url-method/ - url: function( value, element ) { - - // Copyright (c) 2010-2013 Diego Perini, MIT licensed - // https://gist.github.com/dperini/729294 - // see also https://mathiasbynens.be/demo/url-regex - // modified to allow protocol-relative URLs - return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value ); - }, - - // https://jqueryvalidation.org/date-method/ - date: function( value, element ) { - return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() ); - }, - - // https://jqueryvalidation.org/dateISO-method/ - dateISO: function( value, element ) { - return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value ); - }, - - // https://jqueryvalidation.org/number-method/ - number: function( value, element ) { - return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value ); - }, - - // https://jqueryvalidation.org/digits-method/ - digits: function( value, element ) { - return this.optional( element ) || /^\d+$/.test( value ); - }, - - // https://jqueryvalidation.org/minlength-method/ - minlength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || length >= param; - }, - - // https://jqueryvalidation.org/maxlength-method/ - maxlength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || length <= param; - }, - - // https://jqueryvalidation.org/rangelength-method/ - rangelength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] ); - }, - - // https://jqueryvalidation.org/min-method/ - min: function( value, element, param ) { - return this.optional( element ) || value >= param; - }, - - // https://jqueryvalidation.org/max-method/ - max: function( value, element, param ) { - return this.optional( element ) || value <= param; - }, - - // https://jqueryvalidation.org/range-method/ - range: function( value, element, param ) { - return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] ); - }, - - // https://jqueryvalidation.org/step-method/ - step: function( value, element, param ) { - var type = $( element ).attr( "type" ), - errorMessage = "Step attribute on input type " + type + " is not supported.", - supportedTypes = [ "text", "number", "range" ], - re = new RegExp( "\\b" + type + "\\b" ), - notSupported = type && !re.test( supportedTypes.join() ), - decimalPlaces = function( num ) { - var match = ( "" + num ).match( /(?:\.(\d+))?$/ ); - if ( !match ) { - return 0; - } - - // Number of digits right of decimal point. - return match[ 1 ] ? match[ 1 ].length : 0; - }, - toInt = function( num ) { - return Math.round( num * Math.pow( 10, decimals ) ); - }, - valid = true, - decimals; - - // Works only for text, number and range input types - // TODO find a way to support input types date, datetime, datetime-local, month, time and week - if ( notSupported ) { - throw new Error( errorMessage ); - } - - decimals = decimalPlaces( param ); - - // Value can't have too many decimals - if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) { - valid = false; - } - - return this.optional( element ) || valid; - }, - - // https://jqueryvalidation.org/equalTo-method/ - equalTo: function( value, element, param ) { - - // Bind to the blur event of the target in order to revalidate whenever the target field is updated - var target = $( param ); - if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) { - target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() { - $( element ).valid(); - } ); - } - return value === target.val(); - }, - - // https://jqueryvalidation.org/remote-method/ - remote: function( value, element, param, method ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - - method = typeof method === "string" && method || "remote"; - - var previous = this.previousValue( element, method ), - validator, data, optionDataString; - - if ( !this.settings.messages[ element.name ] ) { - this.settings.messages[ element.name ] = {}; - } - previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ]; - this.settings.messages[ element.name ][ method ] = previous.message; - - param = typeof param === "string" && { url: param } || param; - optionDataString = $.param( $.extend( { data: value }, param.data ) ); - if ( previous.old === optionDataString ) { - return previous.valid; - } - - previous.old = optionDataString; - validator = this; - this.startRequest( element ); - data = {}; - data[ element.name ] = value; - $.ajax( $.extend( true, { - mode: "abort", - port: "validate" + element.name, - dataType: "json", - data: data, - context: validator.currentForm, - success: function( response ) { - var valid = response === true || response === "true", - errors, message, submitted; - - validator.settings.messages[ element.name ][ method ] = previous.originalMessage; - if ( valid ) { - submitted = validator.formSubmitted; - validator.resetInternals(); - validator.toHide = validator.errorsFor( element ); - validator.formSubmitted = submitted; - validator.successList.push( element ); - validator.invalid[ element.name ] = false; - validator.showErrors(); - } else { - errors = {}; - message = response || validator.defaultMessage( element, { method: method, parameters: value } ); - errors[ element.name ] = previous.message = message; - validator.invalid[ element.name ] = true; - validator.showErrors( errors ); - } - previous.valid = valid; - validator.stopRequest( element, valid ); - } - }, param ) ); - return "pending"; - } - } - -} ); - -// Ajax mode: abort -// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); -// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() - -var pendingRequests = {}, - ajax; - -// Use a prefilter if available (1.5+) -if ( $.ajaxPrefilter ) { - $.ajaxPrefilter( function( settings, _, xhr ) { - var port = settings.port; - if ( settings.mode === "abort" ) { - if ( pendingRequests[ port ] ) { - pendingRequests[ port ].abort(); - } - pendingRequests[ port ] = xhr; - } - } ); -} else { - - // Proxy ajax - ajax = $.ajax; - $.ajax = function( settings ) { - var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, - port = ( "port" in settings ? settings : $.ajaxSettings ).port; - if ( mode === "abort" ) { - if ( pendingRequests[ port ] ) { - pendingRequests[ port ].abort(); - } - pendingRequests[ port ] = ajax.apply( this, arguments ); - return pendingRequests[ port ]; - } - return ajax.apply( this, arguments ); - }; -} -return $; -})); \ No newline at end of file diff --git a/html/content/lib/jquery/dist/jquery.js b/html/content/lib/jquery/dist/jquery.js deleted file mode 100644 index 5546015..0000000 --- a/html/content/lib/jquery/dist/jquery.js +++ /dev/null @@ -1,10872 +0,0 @@ -/*! - * jQuery JavaScript Library v3.5.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2020-05-04T22:49Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.5.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.5 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2020-03-14 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
    " ], - col: [ 2, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( "