├── Sushi website └── assets ├── img ├── main header.png ├── testimonial .png ├── testimonial 2.png ├── testimonial1.jpg ├── testimonial2.jpg ├── testimonial3.jpg ├── testimonial4.jpg ├── testimonial5.jpg ├── testimonial6.jpg ├── Sushi Salad -- 2.png ├── Sushi Salad -- 3.png ├── popular image 1.png ├── hero card makisushi.png ├── hero card califonia roll.png └── _58fe2d9b-c176-4f25-92b4-88dc1c6de795-removebg.png ├── css ├── swiper.min.css ├── cdn.jsdelivr.net_npm_swiper@8.1.1_swiper-bundle.min.css └── style.css └── js ├── main.js ├── scroll.min.js └── swiper.min.js.js /Sushi website: -------------------------------------------------------------------------------- 1 | # E-commerce-Foods 2 | -------------------------------------------------------------------------------- /assets/img/main header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/main header.png -------------------------------------------------------------------------------- /assets/img/testimonial .png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial .png -------------------------------------------------------------------------------- /assets/img/testimonial 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial 2.png -------------------------------------------------------------------------------- /assets/img/testimonial1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial1.jpg -------------------------------------------------------------------------------- /assets/img/testimonial2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial2.jpg -------------------------------------------------------------------------------- /assets/img/testimonial3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial3.jpg -------------------------------------------------------------------------------- /assets/img/testimonial4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial4.jpg -------------------------------------------------------------------------------- /assets/img/testimonial5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial5.jpg -------------------------------------------------------------------------------- /assets/img/testimonial6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/testimonial6.jpg -------------------------------------------------------------------------------- /assets/img/Sushi Salad -- 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/Sushi Salad -- 2.png -------------------------------------------------------------------------------- /assets/img/Sushi Salad -- 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/Sushi Salad -- 3.png -------------------------------------------------------------------------------- /assets/img/popular image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/popular image 1.png -------------------------------------------------------------------------------- /assets/img/hero card makisushi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/hero card makisushi.png -------------------------------------------------------------------------------- /assets/img/hero card califonia roll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/hero card califonia roll.png -------------------------------------------------------------------------------- /assets/img/_58fe2d9b-c176-4f25-92b4-88dc1c6de795-removebg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoshuaNwaizu/E-commerce-Foods/HEAD/assets/img/_58fe2d9b-c176-4f25-92b4-88dc1c6de795-removebg.png -------------------------------------------------------------------------------- /assets/css/swiper.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 11.0.5 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * https://swiperjs.com 5 | * 6 | * Copyright 2014-2023 Vladimir Kharlampidi 7 | * 8 | * Released under the MIT License 9 | * 10 | * Released on: November 22, 2023 11 | */ 12 | 13 | @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}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.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-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{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,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(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,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | /*=============== SHOW MENU ===============*/ 2 | const showMenu = (toggleId, navId) => { 3 | const toggle = document.getElementById(toggleId), 4 | nav = document.getElementById(navId) 5 | 6 | toggle.addEventListener('click', () => { 7 | // Add show-menu class to nav menu 8 | nav.classList.toggle('show-menu') 9 | // Add show-icon to show and hide menu icon 10 | toggle.classList.toggle('show-icon') 11 | }) 12 | } 13 | 14 | showMenu('nav-toggle', 'nav-menu') 15 | //Display Video 16 | const videoBtn = document.querySelector('.button__link') 17 | const video = document.querySelector('.home__video') 18 | 19 | videoBtn.addEventListener('click', () => { 20 | video.classList.toggle('video-open') 21 | }) 22 | 23 | 24 | window.addEventListener('scroll', scrollNav) 25 | /**********************SCROLL UP SECTION ACTIVE LINK ********************/ 26 | const sections = document.querySelectorAll('section[id]') 27 | 28 | function scrollActive() { 29 | const scrollY = window.pageYOffset 30 | 31 | sections.forEach(current => { 32 | const sectionHeight = current.offsetHeight, 33 | sectionTop = current.offsetTop - 58, 34 | sectionId = current.getAttribute('id') 35 | 36 | 37 | if (scrollY > sectionTop && scrollY <= sectionTop + sectionHeight) { 38 | document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.add('active-link') 39 | } else { 40 | document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.remove('active-link') 41 | } 42 | }) 43 | } 44 | window.addEventListener('scroll', scrollActive) 45 | // REMOVE MENU MOBILE 46 | /* 47 | const navLink = document.querySelectorAll('.nav__link') 48 | 49 | function linkAction() { 50 | const toggle = document.getElementById('nav-toggle') 51 | const navMenu = document.querySelector('#nav-menu') 52 | navMenu.classList.toggle('show-menu') 53 | toggle.classList.toggle('show-icon') 54 | } 55 | 56 | navLink.forEach(n => n.addEventListener('click', linkAction)) 57 | */ 58 | 59 | //Close menu when ScrollY is less than 50 60 | function scrollNav() { 61 | const navMenu = document.querySelector('#nav-menu') 62 | const toggle = document.getElementById('nav-toggle') 63 | 64 | if (this.scrollY >= 50) { 65 | navMenu.classList.remove('show-menu'); 66 | toggle.classList.remove('show-icon') 67 | 68 | } 69 | } 70 | window.addEventListener('scroll', scrollNav) 71 | // CHANGE BACKGROUND HEADER 72 | function scrollHeader() { 73 | const header = document.getElementById('header') 74 | // When the scroll is greater than 50 viewport height, add the scroll-header class to the header tag 75 | if (this.scrollY >= 50) header.classList.add('scroll-header'); else header.classList.remove('scroll-header') 76 | } 77 | 78 | window.addEventListener('scroll', scrollHeader) 79 | /********************** MAIN DISH NAV SHOW ********************/ 80 | const dishNav = document.querySelector('.main__dish-close') 81 | const popularCard = document.querySelector('.main-dish') 82 | const popularContainer = document.querySelector('.popular__dish-category-main__dish') 83 | const breakfastCon = document.querySelector('.popular__dish-category-breakfast') 84 | const breakfastCard = document.querySelector('.break-fast') 85 | const breakfastClose = document.querySelector('.breakfast') 86 | const sushiCard = document.querySelector('.sushi-combo'), 87 | sushiCon = document.querySelector('.sushi__combo-container'), 88 | sushiClose = document.querySelector('.sushi-close'), 89 | browseAll = document.querySelector('.browse-all'), 90 | browseAllCon = document.querySelector('.browse__all'), 91 | browseClose = document.querySelector('.browse__close') 92 | 93 | 94 | 95 | /********************** OPEN DISH NAV ********************/ 96 | function openItem(itemClass, itemCon) { 97 | itemClass.addEventListener('click', () => { 98 | itemCon.classList.add('dish-open') 99 | }) 100 | } 101 | /********************** CLOSE DISH NAV ********************/ 102 | function closeItem(itemClass, itemCon) { 103 | itemClass.addEventListener('click', () => { 104 | itemCon.classList.remove('dish-open') 105 | }) 106 | } 107 | 108 | 109 | 110 | openItem(popularCard, popularContainer) 111 | closeItem(dishNav, popularContainer) 112 | 113 | openItem(breakfastCard, breakfastCon) 114 | closeItem(breakfastClose, breakfastCon) 115 | 116 | openItem(sushiCard, sushiCon) 117 | closeItem(sushiClose, sushiCon) 118 | 119 | openItem(browseAll, browseAllCon) 120 | closeItem(browseClose, browseAllCon) 121 | 122 | // SWIPER POPULAR SECTION 123 | const popularSwiper = new Swiper('.best__dishes-content ', { 124 | // Optional parameters 125 | slidesPerView: 'auto', 126 | centeredSlides: true, 127 | loop: true, 128 | // Navigation arrows 129 | navigation: { 130 | nextEl: '.swiper-button-next', 131 | prevEl: '.swiper-button-prev', 132 | }, 133 | breakpoints: { 134 | 768: { 135 | centeredSlides: true, 136 | } 137 | } 138 | }); 139 | 140 | /*SHOW SCROLL UP*/ 141 | function scrollUp() { 142 | const scrollUp = document.getElementById('scroll-up'); 143 | // When the scroll is higher than 400 viewport height, add the show-scroll class to the a tag with the scroll-top class 144 | if (this.scrollY >= 400) scrollUp.classList.add('show-scroll'); else scrollUp.classList.remove('show-scroll') 145 | } 146 | window.addEventListener('scroll', scrollUp) 147 | 148 | 149 | /*=============== DARK LIGHT THEME ===============*/ 150 | const themeButton = document.getElementById('theme-button') 151 | const darkTheme = 'dark-theme' 152 | const iconTheme = 'ri-sun-line' 153 | 154 | // Previously selected topic (if user selected) 155 | const selectedTheme = localStorage.getItem('selected-theme') 156 | const selectedIcon = localStorage.getItem('selected-icon') 157 | 158 | // We obtain the current theme that the interface has by validating the dark-theme class 159 | const getCurrentTheme = () => document.body.classList.contains(darkTheme) ? 'dark' : 'light' 160 | const getCurrentIcon = () => themeButton.classList.contains(iconTheme) ? 'ri-moon-line' : 'ri-sun-line' 161 | 162 | // We validate if the user previously chose a topic 163 | if (selectedTheme) { 164 | // If the validation is fulfilled, we ask what the issue was to know if we activated or deactivated the dark 165 | document.body.classList[selectedTheme === 'dark' ? 'add' : 'remove'](darkTheme) 166 | themeButton.classList[selectedIcon === 'ri-moon-line' ? 'add' : 'remove'](iconTheme) 167 | } 168 | 169 | // Activate / deactivate the theme manually with the button 170 | themeButton.addEventListener('click', () => { 171 | // Add or remove the dark / icon theme 172 | document.body.classList.toggle(darkTheme) 173 | themeButton.classList.toggle(iconTheme) 174 | // We save the theme and the current icon that the user chose 175 | localStorage.setItem('selected-theme', getCurrentTheme()) 176 | localStorage.setItem('selected-icon', getCurrentIcon()) 177 | }) 178 | 179 | /*=============== Scroll reveal animation ===============*/ 180 | const sr = ScrollReveal({ 181 | origin: 'top', 182 | distance: '60px', 183 | duration: 1200, 184 | delay: 200, 185 | reset: true // animation repeat 186 | }) 187 | 188 | sr.reveal(`.home__content, .popular__container, .best__dishes, .join__bg, .footer__container`) 189 | sr.reveal(`.home__image`, {origin: 'bottom'}) 190 | sr.reveal(`.testimonial__blob, .services__card-container`, {origin: 'left'}) 191 | sr.reveal(`.testimonial__data, .services__hero`, {origin: 'right'}) 192 | 193 | -------------------------------------------------------------------------------- /assets/css/cdn.jsdelivr.net_npm_swiper@8.1.1_swiper-bundle.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 8.1.1 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * https://swiperjs.com 5 | * 6 | * Copyright 2014-2022 Vladimir Kharlampidi 7 | * 8 | * Released under the MIT License 9 | * 10 | * Released on: April 15, 2022 11 | */ 12 | 13 | @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:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{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: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:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{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,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(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,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(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{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{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{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{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-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.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-next,.swiper-button-prev{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-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev: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:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.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, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-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-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.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%;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:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.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%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;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;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-slide-visible .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.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}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} -------------------------------------------------------------------------------- /assets/js/scroll.min.js: -------------------------------------------------------------------------------- 1 | /*! @license ScrollReveal v4.0.9 2 | 3 | Copyright 2021 Fisssion LLC. 4 | 5 | Licensed under the GNU General Public License 3.0 for 6 | compatible open source projects and non-commercial use. 7 | 8 | For commercial sites, themes, projects, and applications, 9 | keep your source code private/proprietary by purchasing 10 | a commercial license from https://scrollrevealjs.org/ 11 | */ 12 | var ScrollReveal = function () { "use strict"; var r = { delay: 0, distance: "0", duration: 600, easing: "cubic-bezier(0.5, 0, 0, 1)", interval: 0, opacity: 0, origin: "bottom", rotate: { x: 0, y: 0, z: 0 }, scale: 1, cleanup: !1, container: document.documentElement, desktop: !0, mobile: !0, reset: !1, useDelay: "always", viewFactor: 0, viewOffset: { top: 0, right: 0, bottom: 0, left: 0 }, afterReset: function () { }, afterReveal: function () { }, beforeReset: function () { }, beforeReveal: function () { } }; var n = { success: function () { document.documentElement.classList.add("sr"), document.body ? document.body.style.height = "100%" : document.addEventListener("DOMContentLoaded", function () { document.body.style.height = "100%" }) }, failure: function () { return document.documentElement.classList.remove("sr"), { clean: function () { }, destroy: function () { }, reveal: function () { }, sync: function () { }, get noop() { return !0 } } } }; function o(e) { return "object" == typeof window.Node ? e instanceof window.Node : null !== e && "object" == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName } function u(e, t) { if (void 0 === t && (t = document), e instanceof Array) return e.filter(o); if (o(e)) return [e]; if (n = e, i = Object.prototype.toString.call(n), "object" == typeof window.NodeList ? n instanceof window.NodeList : null !== n && "object" == typeof n && "number" == typeof n.length && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(i) && (0 === n.length || o(n[0]))) return Array.prototype.slice.call(e); var n, i; if ("string" == typeof e) try { var r = t.querySelectorAll(e); return Array.prototype.slice.call(r) } catch (e) { return [] } return [] } function s(e) { return null !== e && e instanceof Object && (e.constructor === Object || "[object Object]" === Object.prototype.toString.call(e)) } function f(n, i) { if (s(n)) return Object.keys(n).forEach(function (e) { return i(n[e], e, n) }); if (n instanceof Array) return n.forEach(function (e, t) { return i(e, t, n) }); throw new TypeError("Expected either an array or object literal.") } function h(e) { for (var t = [], n = arguments.length - 1; 0 < n--;)t[n] = arguments[n + 1]; if (this.constructor.debug && console) { var i = "%cScrollReveal: " + e; t.forEach(function (e) { return i += "\n — " + e }), console.log(i, "color: #ea654b;") } } function t() { var n = this, i = { active: [], stale: [] }, t = { active: [], stale: [] }, r = { active: [], stale: [] }; try { f(u("[data-sr-id]"), function (e) { var t = parseInt(e.getAttribute("data-sr-id")); i.active.push(t) }) } catch (e) { throw e } f(this.store.elements, function (e) { -1 === i.active.indexOf(e.id) && i.stale.push(e.id) }), f(i.stale, function (e) { return delete n.store.elements[e] }), f(this.store.elements, function (e) { -1 === r.active.indexOf(e.containerId) && r.active.push(e.containerId), e.hasOwnProperty("sequence") && -1 === t.active.indexOf(e.sequence.id) && t.active.push(e.sequence.id) }), f(this.store.containers, function (e) { -1 === r.active.indexOf(e.id) && r.stale.push(e.id) }), f(r.stale, function (e) { var t = n.store.containers[e].node; t.removeEventListener("scroll", n.delegate), t.removeEventListener("resize", n.delegate), delete n.store.containers[e] }), f(this.store.sequences, function (e) { -1 === t.active.indexOf(e.id) && t.stale.push(e.id) }), f(t.stale, function (e) { return delete n.store.sequences[e] }) } function N(e) { if (e.constructor !== Array) throw new TypeError("Expected array."); if (16 === e.length) return e; if (6 !== e.length) throw new RangeError("Expected array with either 6 or 16 values."); var t = z(); return t[0] = e[0], t[1] = e[1], t[4] = e[2], t[5] = e[3], t[12] = e[4], t[13] = e[5], t } function z() { for (var e = [], t = 0; t < 16; t++)t % 5 == 0 ? e.push(1) : e.push(0); return e } function F(e, t) { for (var n = N(e), i = N(t), r = [], o = 0; o < 4; o++)for (var s = [n[o], n[o + 4], n[o + 8], n[o + 12]], a = 0; a < 4; a++) { var c = 4 * a, l = [i[c], i[c + 1], i[c + 2], i[c + 3]], d = s[0] * l[0] + s[1] * l[1] + s[2] * l[2] + s[3] * l[3]; r[o + c] = d } return r } function D(e, t) { var n = z(); return n[0] = e, n[5] = "number" == typeof t ? t : e, n } var S = function () { var n = {}, i = document.documentElement.style; function e(e, t) { if (void 0 === t && (t = i), e && "string" == typeof e) { if (n[e]) return n[e]; if ("string" == typeof t[e]) return n[e] = e; if ("string" == typeof t["-webkit-" + e]) return n[e] = "-webkit-" + e; throw new RangeError('Unable to find "' + e + '" style property.') } throw new TypeError("Expected a string.") } return e.clearCache = function () { return n = {} }, e }(); function p(e) { var t = window.getComputedStyle(e.node), n = t.position, i = e.config, r = {}, o = (e.node.getAttribute("style") || "").match(/[\w-]+\s*:\s*[^;]+\s*/gi) || []; r.computed = o ? o.map(function (e) { return e.trim() }).join("; ") + ";" : "", r.generated = o.some(function (e) { return e.match(/visibility\s?:\s?visible/i) }) ? r.computed : o.concat(["visibility: visible"]).map(function (e) { return e.trim() }).join("; ") + ";"; var s, a, c, l, d, u, f, h, p, m, y, v, g, b = parseFloat(t.opacity), w = isNaN(parseFloat(i.opacity)) ? parseFloat(t.opacity) : parseFloat(i.opacity), E = { computed: b !== w ? "opacity: " + b + ";" : "", generated: b !== w ? "opacity: " + w + ";" : "" }, j = []; if (parseFloat(i.distance)) { var T = "top" === i.origin || "bottom" === i.origin ? "Y" : "X", k = i.distance; "top" !== i.origin && "left" !== i.origin || (k = /^-/.test(k) ? k.substr(1) : "-" + k); var O = k.match(/(^-?\d+\.?\d?)|(em$|px$|%$)/g), x = O[0]; switch (O[1]) { case "em": k = parseInt(t.fontSize) * x; break; case "px": k = x; break; case "%": k = "Y" === T ? e.node.getBoundingClientRect().height * x / 100 : e.node.getBoundingClientRect().width * x / 100; break; default: throw new RangeError("Unrecognized or missing distance unit.") }"Y" === T ? j.push((c = k, (l = z())[13] = c, l)) : j.push((s = k, (a = z())[12] = s, a)) } i.rotate.x && j.push((d = i.rotate.x, u = Math.PI / 180 * d, (f = z())[5] = f[10] = Math.cos(u), f[6] = f[9] = Math.sin(u), f[9] *= -1, f)), i.rotate.y && j.push((h = i.rotate.y, p = Math.PI / 180 * h, (m = z())[0] = m[10] = Math.cos(p), m[2] = m[8] = Math.sin(p), m[2] *= -1, m)), i.rotate.z && j.push((y = i.rotate.z, v = Math.PI / 180 * y, (g = z())[0] = g[5] = Math.cos(v), g[1] = g[4] = Math.sin(v), g[4] *= -1, g)), 1 !== i.scale && (0 === i.scale ? j.push(D(2e-4)) : j.push(D(i.scale))); var R = {}; if (j.length) { R.property = S("transform"), R.computed = { raw: t[R.property], matrix: function (e) { if ("string" == typeof e) { var t = e.match(/matrix(3d)?\(([^)]+)\)/); if (t) return N(t[2].split(", ").map(parseFloat)) } return z() }(t[R.property]) }, j.unshift(R.computed.matrix); var q = j.reduce(F); R.generated = { initial: R.property + ": matrix3d(" + q.join(", ") + ");", final: R.property + ": matrix3d(" + R.computed.matrix.join(", ") + ");" } } else R.generated = { initial: "", final: "" }; var A = {}; if (E.generated || R.generated.initial) { A.property = S("transition"), A.computed = t[A.property], A.fragments = []; var P = i.delay, L = i.duration, M = i.easing; E.generated && A.fragments.push({ delayed: "opacity " + L / 1e3 + "s " + M + " " + P / 1e3 + "s", instant: "opacity " + L / 1e3 + "s " + M + " 0s" }), R.generated.initial && A.fragments.push({ delayed: R.property + " " + L / 1e3 + "s " + M + " " + P / 1e3 + "s", instant: R.property + " " + L / 1e3 + "s " + M + " 0s" }), A.computed && !A.computed.match(/all 0s|none 0s/) && A.fragments.unshift({ delayed: A.computed, instant: A.computed }); var I = A.fragments.reduce(function (e, t, n) { return e.delayed += 0 === n ? t.delayed : ", " + t.delayed, e.instant += 0 === n ? t.instant : ", " + t.instant, e }, { delayed: "", instant: "" }); A.generated = { delayed: A.property + ": " + I.delayed + ";", instant: A.property + ": " + I.instant + ";" } } else A.generated = { delayed: "", instant: "" }; return { inline: r, opacity: E, position: n, transform: R, transition: A } } function m(r, e) { e.split(";").forEach(function (e) { var t = e.split(":"), n = t[0], i = t.slice(1); n && i && (r.style[n.trim()] = i.join(":")) }) } function y(e) { var i, r = this; try { f(u(e), function (e) { var t = e.getAttribute("data-sr-id"); if (null !== t) { i = !0; var n = r.store.elements[t]; n.callbackTimer && window.clearTimeout(n.callbackTimer.clock), m(n.node, n.styles.inline.generated), e.removeAttribute("data-sr-id"), delete r.store.elements[t] } }) } catch (e) { return h.call(this, "Clean failed.", e.message) } if (i) try { t.call(this) } catch (e) { return h.call(this, "Clean failed.", e.message) } } function v(n) { for (var e = [], t = arguments.length - 1; 0 < t--;)e[t] = arguments[t + 1]; if (s(n)) return f(e, function (e) { f(e, function (e, t) { s(e) ? (n[t] && s(n[t]) || (n[t] = {}), v(n[t], e)) : n[t] = e }) }), n; throw new TypeError("Target must be an object literal.") } function g(e) { return void 0 === e && (e = navigator.userAgent), /Android|iPhone|iPad|iPod/i.test(e) } var e, b = (e = 0, function () { return e++ }); function w() { var n = this; t.call(this), f(this.store.elements, function (e) { var t = [e.styles.inline.generated]; e.visible ? (t.push(e.styles.opacity.computed), t.push(e.styles.transform.generated.final), e.revealed = !0) : (t.push(e.styles.opacity.generated), t.push(e.styles.transform.generated.initial), e.revealed = !1), m(e.node, t.filter(function (e) { return "" !== e }).join(" ")) }), f(this.store.containers, function (e) { var t = e.node === document.documentElement ? window : e.node; t.addEventListener("scroll", n.delegate), t.addEventListener("resize", n.delegate) }), this.delegate(), this.initTimeout = null } function c(e, t) { void 0 === t && (t = {}); var n = t.pristine || this.pristine, i = "always" === e.config.useDelay || "onload" === e.config.useDelay && n || "once" === e.config.useDelay && !e.seen, r = e.visible && !e.revealed, o = !e.visible && e.revealed && e.config.reset; return t.reveal || r ? function (e, t) { var n = [e.styles.inline.generated, e.styles.opacity.computed, e.styles.transform.generated.final]; t ? n.push(e.styles.transition.generated.delayed) : n.push(e.styles.transition.generated.instant); e.revealed = e.seen = !0, m(e.node, n.filter(function (e) { return "" !== e }).join(" ")), a.call(this, e, t) }.call(this, e, i) : t.reset || o ? function (e) { var t = [e.styles.inline.generated, e.styles.opacity.generated, e.styles.transform.generated.initial, e.styles.transition.generated.instant]; e.revealed = !1, m(e.node, t.filter(function (e) { return "" !== e }).join(" ")), a.call(this, e) }.call(this, e) : void 0 } function a(e, t) { var n = this, i = t ? e.config.duration + e.config.delay : e.config.duration, r = e.revealed ? e.config.beforeReveal : e.config.beforeReset, o = e.revealed ? e.config.afterReveal : e.config.afterReset, s = 0; e.callbackTimer && (s = Date.now() - e.callbackTimer.start, window.clearTimeout(e.callbackTimer.clock)), r(e.node), e.callbackTimer = { start: Date.now(), clock: window.setTimeout(function () { o(e.node), e.callbackTimer = null, e.revealed && !e.config.reset && e.config.cleanup && y.call(n, e.node) }, i - s) } } function l(e, t) { if (void 0 === t && (t = this.pristine), !e.visible && e.revealed && e.config.reset) return c.call(this, e, { reset: !0 }); var n = this.store.sequences[e.sequence.id], i = e.sequence.index; if (n) { var r = new d(n, "visible", this.store), o = new d(n, "revealed", this.store); if (n.models = { visible: r, revealed: o }, !o.body.length) { var s = n.members[r.body[0]], a = this.store.elements[s]; if (a) return j.call(this, n, r.body[0], -1, t), j.call(this, n, r.body[0], 1, t), c.call(this, a, { reveal: !0, pristine: t }) } if (!n.blocked.head && i === [].concat(o.head).pop() && i >= [].concat(r.body).shift()) return j.call(this, n, i, -1, t), c.call(this, e, { reveal: !0, pristine: t }); if (!n.blocked.foot && i === [].concat(o.foot).shift() && i <= [].concat(r.body).pop()) return j.call(this, n, i, 1, t), c.call(this, e, { reveal: !0, pristine: t }) } } function E(e) { var t = Math.abs(e); if (isNaN(t)) throw new RangeError("Invalid sequence interval."); this.id = b(), this.interval = Math.max(t, 16), this.members = [], this.models = {}, this.blocked = { head: !1, foot: !1 } } function d(e, i, r) { var o = this; this.head = [], this.body = [], this.foot = [], f(e.members, function (e, t) { var n = r.elements[e]; n && n[i] && o.body.push(t) }), this.body.length && f(e.members, function (e, t) { var n = r.elements[e]; n && !n[i] && (t < o.body[0] ? o.head.push(t) : o.foot.push(t)) }) } function j(e, t, n, i) { var r = this, o = ["head", null, "foot"][1 + n], s = e.members[t + n], a = this.store.elements[s]; e.blocked[o] = !0, setTimeout(function () { e.blocked[o] = !1, a && l.call(r, a, i) }, e.interval) } function i(e, a, t) { var c = this; void 0 === a && (a = {}), void 0 === t && (t = !1); var l, d = [], n = a.interval || r.interval; try { n && (l = new E(n)); var i = u(e); if (!i.length) throw new Error("Invalid reveal target."); f(i.reduce(function (e, t) { var n = {}, i = t.getAttribute("data-sr-id"); i ? (v(n, c.store.elements[i]), m(n.node, n.styles.inline.computed)) : (n.id = b(), n.node = t, n.seen = !1, n.revealed = !1, n.visible = !1); var r = v({}, n.config || c.defaults, a); if (!r.mobile && g() || !r.desktop && !g()) return i && y.call(c, n), e; var o, s = u(r.container)[0]; if (!s) throw new Error("Invalid container."); return s.contains(t) && (null === (o = function (t) { var e = [], n = arguments.length - 1; for (; 0 < n--;)e[n] = arguments[n + 1]; var i = null; return f(e, function (e) { f(e, function (e) { null === i && e.node === t && (i = e.id) }) }), i }(s, d, c.store.containers)) && (o = b(), d.push({ id: o, node: s })), n.config = r, n.containerId = o, n.styles = p(n), l && (n.sequence = { id: l.id, index: l.members.length }, l.members.push(n.id)), e.push(n)), e }, []), function (e) { (c.store.elements[e.id] = e).node.setAttribute("data-sr-id", e.id) }) } catch (e) { return h.call(this, "Reveal failed.", e.message) } f(d, function (e) { c.store.containers[e.id] = { id: e.id, node: e.node } }), l && (this.store.sequences[l.id] = l), !0 !== t && (this.store.history.push({ target: e, options: a }), this.initTimeout && window.clearTimeout(this.initTimeout), this.initTimeout = window.setTimeout(w.bind(this), 0)) } var T, k = Math.sign || function (e) { return (0 < e) - (e < 0) || +e }, O = (T = Date.now(), function (e) { var t = Date.now(); 16 < t - T ? e(T = t) : setTimeout(function () { return O(e) }, 0) }), x = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || O; function R(e, t) { for (var n = t ? e.node.clientHeight : e.node.offsetHeight, i = t ? e.node.clientWidth : e.node.offsetWidth, r = 0, o = 0, s = e.node; isNaN(s.offsetTop) || (r += s.offsetTop), isNaN(s.offsetLeft) || (o += s.offsetLeft), s = s.offsetParent;); return { bounds: { top: r, right: o + i, bottom: r + n, left: o }, height: n, width: i } } function q(e, t) { var i = this; void 0 === e && (e = { type: "init" }), void 0 === t && (t = this.store.elements), x(function () { var n = "init" === e.type || "resize" === e.type; f(i.store.containers, function (e) { n && (e.geometry = R.call(i, e, !0)); var t = function (e) { var t, n; return n = e.node === document.documentElement ? (t = window.pageYOffset, window.pageXOffset) : (t = e.node.scrollTop, e.node.scrollLeft), { top: t, left: n } }.call(i, e); e.scroll && (e.direction = { x: k(t.left - e.scroll.left), y: k(t.top - e.scroll.top) }), e.scroll = t }), f(t, function (e) { (n || void 0 === e.geometry) && (e.geometry = R.call(i, e)), e.visible = function (e) { void 0 === e && (e = {}); var t = this.store.containers[e.containerId]; if (t) { var n = Math.max(0, Math.min(1, e.config.viewFactor)), i = e.config.viewOffset, r = e.geometry.bounds.top + e.geometry.height * n, o = e.geometry.bounds.right - e.geometry.width * n, s = e.geometry.bounds.bottom - e.geometry.height * n, a = e.geometry.bounds.left + e.geometry.width * n, c = t.geometry.bounds.top + t.scroll.top + i.top, l = t.geometry.bounds.right + t.scroll.left - i.right, d = t.geometry.bounds.bottom + t.scroll.top - i.bottom, u = t.geometry.bounds.left + t.scroll.left + i.left; return r < d && u < o && c < s && a < l || "fixed" === e.styles.position } }.call(i, e) }), f(t, function (e) { e.sequence ? l.call(i, e) : c.call(i, e) }), i.pristine = !1 }) } var A, P, L, M, I, C, W, Y, $ = "4.0.9"; function H(e) { var t; if (void 0 === e && (e = {}), void 0 === this || Object.getPrototypeOf(this) !== H.prototype) return new H(e); if (!H.isSupported()) return h.call(this, "Instantiation failed.", "This browser is not supported."), n.failure(); try { t = v({}, C || r, e) } catch (e) { return h.call(this, "Invalid configuration.", e.message), n.failure() } try { if (!u(t.container)[0]) throw new Error("Invalid container.") } catch (e) { return h.call(this, e.message), n.failure() } return !(C = t).mobile && g() || !C.desktop && !g() ? (h.call(this, "This device is disabled.", "desktop: " + C.desktop, "mobile: " + C.mobile), n.failure()) : (n.success(), this.store = { containers: {}, elements: {}, history: [], sequences: {} }, this.pristine = !0, A = A || q.bind(this), P = P || function () { var n = this; f(this.store.elements, function (e) { m(e.node, e.styles.inline.generated), e.node.removeAttribute("data-sr-id") }), f(this.store.containers, function (e) { var t = e.node === document.documentElement ? window : e.node; t.removeEventListener("scroll", n.delegate), t.removeEventListener("resize", n.delegate) }), this.store = { containers: {}, elements: {}, history: [], sequences: {} } }.bind(this), L = L || i.bind(this), M = M || y.bind(this), I = I || function () { var t = this; f(this.store.history, function (e) { i.call(t, e.target, e.options, !0) }), w.call(this) }.bind(this), Object.defineProperty(this, "delegate", { get: function () { return A } }), Object.defineProperty(this, "destroy", { get: function () { return P } }), Object.defineProperty(this, "reveal", { get: function () { return L } }), Object.defineProperty(this, "clean", { get: function () { return M } }), Object.defineProperty(this, "sync", { get: function () { return I } }), Object.defineProperty(this, "defaults", { get: function () { return C } }), Object.defineProperty(this, "version", { get: function () { return $ } }), Object.defineProperty(this, "noop", { get: function () { return !1 } }), Y || (Y = this)) } return H.isSupported = function () { return ("transform" in (t = document.documentElement.style) || "WebkitTransform" in t) && ("transition" in (e = document.documentElement.style) || "WebkitTransition" in e); var e, t }, Object.defineProperty(H, "debug", { get: function () { return W || !1 }, set: function (e) { return W = "boolean" == typeof e ? e : W } }), H(), H }(); -------------------------------------------------------------------------------- /assets/css/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@300&family=Montserrat:wght@400;500;600&family=Poppins:wght@400;500&family=Roboto:wght@400;500;700&display=swap'); 2 | 3 | /**=============== VARAIBLE CSS ===============**/ 4 | :root { 5 | --header-height: 3.5rem; 6 | /**=============== Colors ===============**/ 7 | /**Color mode HSL(hue, saturation, lightness) */ 8 | --first-color: #39DB4A; 9 | --first-color-alt: #F63B3B; 10 | --title-color: #1e1e1e; 11 | --text-color: #555555; 12 | --white-color: #FFFFFF; 13 | --body-color: #f4f4f4; 14 | --first-color-light: #6ce278; 15 | --container-color: #ffffff; 16 | --box-shadow: 0 2px 16px #00000019; 17 | 18 | /**=============== Font and typography ===============**/ 19 | /** .5rem = 8px | 1rem = 16px .... */ 20 | --body-font: 'Poppins', sans-serif; 21 | --body-font-alt: 'Josefin Sans', sans-serif; 22 | --second-font: font-family: 'Montserrat', sans-serif; 23 | --biggest-font-size: 2.25rem; 24 | --bigger-font-size: 2rem; 25 | --big-font-size: 1.5rem; 26 | --h1-font-size: 1.5rem; 27 | --h2-font-size: 1.2rem; 28 | --h3-font-size: 1rem; 29 | --normal-font-size: .94rem; 30 | --small-font-size: .813rem; 31 | --smaller-font-size: .75rem; 32 | --smallest-font-size: .7rem; 33 | 34 | 35 | /*=============== Margins bottom ===============*/ 36 | --mb-0-5: .5rem; 37 | --mb-0-75: .75ren; 38 | --mb-1: 1rem; 39 | --mb-1-5: 1.5rem; 40 | --mb-2: 2rem; 41 | --mb-2-5: 2.5rem; 42 | --mb-3: 3rem; 43 | --mb-3-5: 3.5rem; 44 | --mb-4: 4rem; 45 | 46 | /*=============== Font weight ===============*/ 47 | --font-weight-regular: 400; 48 | --font-weight-medium: 500; 49 | --font-weight-bold: 600; 50 | 51 | /*=============== z - index ===============*/ 52 | --z-tooltip: 10; 53 | --z-fixed: 100; 54 | } 55 | 56 | /*=============== VARIABLE DARK THEME ===============*/ 57 | body.dark-theme { 58 | --title-color: #fff; 59 | --text-color: #aaaaaa; 60 | --body-color: #000; 61 | --container-color: hsl(0, 0%, 12%); 62 | --box-shadow: 0 1px 11px hsla(0, 0%, 60%); 63 | 64 | --white-color: hsl(0, 0%, 15%); 65 | --first-color: #2ca338; 66 | } 67 | 68 | .dark-theme .scroll-header { 69 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2) 70 | } 71 | 72 | .dark-theme .button, 73 | .dark-theme .dish__close { 74 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2); 75 | color: #fff8f8; 76 | } 77 | 78 | .dark-theme .swiper-button-next, 79 | .dark-theme .swiper-button-prev, 80 | .dark-theme .scroll__up { 81 | color: var(--first-color); 82 | background-color: #1e1e1e; 83 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2) 84 | } 85 | 86 | .dark-theme .button__link .play { 87 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2); 88 | } 89 | 90 | .dark-theme .button__link:hover .play { 91 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, 0.33) 92 | } 93 | 94 | .dark-theme .home__blob-bubble, 95 | .dark-theme .testimonial__bubble { 96 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2) 97 | } 98 | 99 | .dark-theme .best__dishes-icon i, 100 | .dark-theme .main__dish-icon i, 101 | .dark-theme .contact__phone, 102 | .dark-theme .nav__logo span { 103 | color: #fff; 104 | } 105 | 106 | .dark-theme .best__dishes-card, 107 | .dark-theme .popular__wrapper, 108 | .dark-theme .main__dish, 109 | .dark-theme .services__card, 110 | .dark-theme .scroll__up, 111 | .dark-theme .image__card-blob, 112 | .dark-theme .testimonial__data-text .quotes { 113 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, 0.3) 114 | } 115 | 116 | .dark-theme .best__dishes-card:hover, 117 | .dark-theme .popular__wrapper:hover, 118 | .dark-theme .main__dish:hover, 119 | .dark-theme .services__card:hover { 120 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .35) 121 | } 122 | 123 | 124 | .dark-theme .dish__title { 125 | color: #f76161; 126 | } 127 | 128 | .dark-theme .popular__blob { 129 | background-color: #C1F1C6; 130 | } 131 | 132 | .dark-theme .dropdown__link:hover { 133 | color: #fff; 134 | } 135 | 136 | /*=============== Reusable Css Classes ===============*/ 137 | .container { 138 | max-width: 1120px; 139 | margin-inline: var(--mb-1-5); 140 | } 141 | 142 | .grid { 143 | display: grid; 144 | gap: var(--mb-1-5); 145 | } 146 | 147 | .section { 148 | padding-block: 5rem 1rem; 149 | } 150 | 151 | .section__title-alt { 152 | font-size: var(--small-font-size); 153 | font-weight: var(--font-weight-medium); 154 | color: var(--first-color-alt); 155 | letter-spacing: 2px; 156 | word-spacing: 2px; 157 | text-transform: uppercase; 158 | } 159 | 160 | .section__title { 161 | font-size: var(--big-font-size); 162 | margin-bottom: var(--mb-1-5); 163 | text-align: center; 164 | } 165 | 166 | 167 | .main { 168 | overflow: hidden; 169 | align-items: center; 170 | justify-content: center; 171 | /** 172 | * For animation scrollreveal */ 173 | } 174 | 175 | /*=============== BUTTONS ===============*/ 176 | .button { 177 | display: inline-block; 178 | background: var(--first-color); 179 | padding: .75rem 1.8rem; 180 | border-radius: 4rem; 181 | color: var(--white-color); 182 | } 183 | 184 | .button, 185 | .button__link { 186 | font-weight: var(--font-weight-medium); 187 | } 188 | 189 | .button__link { 190 | display: flex; 191 | align-items: center; 192 | column-gap: .25rem; 193 | } 194 | 195 | /*=============== BASE ===============*/ 196 | * { 197 | box-sizing: border-box; 198 | padding: 0; 199 | margin: 0; 200 | } 201 | 202 | html { 203 | scroll-behavior: smooth; 204 | } 205 | 206 | input, 207 | button, 208 | body { 209 | font-family: var(--body-font); 210 | font-size: var(--normal-font-size); 211 | } 212 | 213 | body { 214 | background-color: var(--white-color); 215 | color: var(--text-color); 216 | transition: .3s; 217 | } 218 | 219 | input, 220 | button { 221 | border: none; 222 | outline: none; 223 | } 224 | 225 | h1, 226 | h2, 227 | h3, 228 | h4 { 229 | color: var(--title-color); 230 | font-family: var(--second-font); 231 | font-weight: var(--font-weight-bold); 232 | } 233 | 234 | ul { 235 | list-style: none; 236 | } 237 | 238 | a { 239 | text-decoration: none; 240 | } 241 | 242 | img { 243 | max-width: 100%; 244 | height: auto; 245 | } 246 | 247 | 248 | /*=============== HEADER AND NAV ===============*/ 249 | .header { 250 | position: fixed; 251 | width: 100%; 252 | top: 0; 253 | left: 0; 254 | background-color: var(--white-color); 255 | z-index: 2; 256 | 257 | } 258 | 259 | .nav { 260 | height: var(--header-height); 261 | display: flex; 262 | align-items: center; 263 | justify-content: space-between; 264 | } 265 | 266 | .nav__logo { 267 | color: var(--title-color); 268 | font-family: var(--second-font); 269 | font-size: var(--h1-font-size); 270 | font-weight: var(--font-weight-medium); 271 | transition: .4s; 272 | letter-spacing: .5px; 273 | } 274 | 275 | .nav__logo span { 276 | color: var(--white-color); 277 | background-color: var(--first-color); 278 | padding: 0 .4rem; 279 | border-radius: .55rem; 280 | } 281 | 282 | .nav__close, 283 | .nav__toggle, 284 | .nav__shop, 285 | .nav__search, 286 | .contact__phone { 287 | display: flex; 288 | cursor: pointer; 289 | } 290 | 291 | .nav__toggle { 292 | color: var(--title-color); 293 | transition: color .4s; 294 | } 295 | 296 | .nav__toggle i { 297 | font-size: 1.4rem; 298 | margin-left: -.1rem; 299 | 300 | } 301 | 302 | .nav__buttons { 303 | display: flex; 304 | column-gap: 1.25rem; 305 | font-size: 1.55rem; 306 | color: var(--title-color); 307 | margin-inline: -1.5rem; 308 | align-items: center; 309 | justify-content: space-between; 310 | } 311 | 312 | .scroll-header { 313 | background-color: var(--white-color); 314 | box-shadow: var(--box-shadow); 315 | transition: .5s; 316 | } 317 | 318 | .contact__phone { 319 | background-color: var(--first-color); 320 | padding: .2rem .3rem; 321 | color: var(--white-color); 322 | border-radius: 1.55rem; 323 | transition: .3s; 324 | cursor: pointer; 325 | } 326 | 327 | .contact__phone:hover { 328 | transform: translateY(-.35rem); 329 | } 330 | 331 | .theme__button { 332 | cursor: pointer; 333 | } 334 | 335 | /**Navigation for mobile devices */ 336 | @media screen and (max-width: 950px) { 337 | .nav__menu { 338 | position: absolute; 339 | left: 0; 340 | top: 2.5rem; 341 | width: 100%; 342 | height: calc(100vh - 3.5rem); 343 | overflow: auto; 344 | pointer-events: none; 345 | opacity: 0; 346 | transition: top .4s, opacity .3s; 347 | 348 | } 349 | 350 | .nav__menu::-webkit-scrollbar { 351 | width: 0; 352 | } 353 | 354 | .contact__phone span { 355 | display: none; 356 | } 357 | .nav-list { 358 | background-color: var(--white-color); 359 | padding-top: 1rem; 360 | box-shadow: 0 9px 50px #1a19192a; 361 | } 362 | 363 | .nav__link { 364 | color: var(--title-color); 365 | background-color: var(--white-color); 366 | font-weight: var(--font-weight-medium); 367 | padding: 1rem 1.5rem; 368 | display: flex; 369 | align-items: center; 370 | justify-content: space-between; 371 | transition: background-color .4s; 372 | } 373 | 374 | .nav__link:hover { 375 | background-color: var(--body-color); 376 | color: var(--first-color); 377 | transition: .3s; 378 | } 379 | 380 | .nav__toggle { 381 | position: relative; 382 | width: 32px; 383 | height: 32px; 384 | transition: .3s; 385 | } 386 | 387 | .nav__burger, 388 | .nav__close { 389 | position: absolute; 390 | width: max-content; 391 | height: max-content; 392 | margin: auto; 393 | font-size: 1.25rem; 394 | cursor: pointer; 395 | transition: opacity .1s, transform .4s; 396 | inset: 0; 397 | } 398 | 399 | .nav__toggle:hover { 400 | transform: translateY(-.35rem); 401 | } 402 | 403 | .nav__close { 404 | opacity: 0; 405 | } 406 | 407 | /**show menu */ 408 | .show-menu { 409 | opacity: 1; 410 | top: 3.5rem; 411 | pointer-events: initial; 412 | } 413 | 414 | /**show icon */ 415 | .show-icon .nav__burger { 416 | opacity: 0; 417 | transform: rotate(90deg); 418 | } 419 | 420 | .show-icon .nav__close { 421 | opacity: 1; 422 | transform: rotate(90deg); 423 | } 424 | 425 | /**DROP DOWN */ 426 | .drop__down-item { 427 | cursor: pointer; 428 | } 429 | 430 | .dropdown__arrow { 431 | font-size: 1.55rem; 432 | font-weight: initial; 433 | color: var(--first-color); 434 | } 435 | 436 | .dropdown__link { 437 | padding: 1.25rem 1.25rem 1.25rem 2.5rem; 438 | background-color: var(--body-color); 439 | color: var(--text-color); 440 | display: flex; 441 | align-items: center; 442 | column-gap: .5rem; 443 | font-weight: var(--font-weight-bold); 444 | font-family: var(--body-font-alt); 445 | transition: background-color .3s; 446 | } 447 | 448 | .dropdown__link:hover { 449 | background-color: var(--first-color); 450 | color: var(--white-color); 451 | transition: background-color .3s, color .3s; 452 | } 453 | 454 | .dropdown__menu { 455 | max-height: 0; 456 | overflow: hidden; 457 | transition: max-height .5s ease-out; 458 | } 459 | 460 | /**Animate dropdown */ 461 | .drop__down-item:hover .dropdown__menu { 462 | max-height: 1000px; 463 | transition: max-height 1s ease-in; 464 | } 465 | 466 | /**rotate droodown arrow */ 467 | .drop__down-item:hover .dropdown__arrow { 468 | transform: rotate(180deg); 469 | transition: transform .3s; 470 | } 471 | } 472 | 473 | /**************** HOME ****************** */ 474 | .home { 475 | position: relative; 476 | } 477 | 478 | .home__container { 479 | position: relative; 480 | display: grid; 481 | row-gap: 2rem; 482 | padding-top: var(--mb-2-5); 483 | align-items: center; 484 | justify-content: center; 485 | } 486 | 487 | .home__content { 488 | row-gap: 3rem; 489 | } 490 | 491 | .home__data { 492 | display: grid; 493 | text-align: center; 494 | } 495 | 496 | .home__title { 497 | font-size: var(--biggest-font-size); 498 | font-weight: var(--font-weight-bold); 499 | margin-bottom: var(--mb-1-5); 500 | } 501 | 502 | .home__title span { 503 | color: var(--first-color); 504 | } 505 | 506 | .home__subtitle { 507 | font-size: var(--normal-font-size); 508 | font-weight: var(--font-weight-regular); 509 | font-family: var(--second-font); 510 | margin-bottom: var(--mb-1-5); 511 | padding-inline: 1.5rem; 512 | color: var(--text-color); 513 | } 514 | 515 | .home__buttons { 516 | display: flex; 517 | justify-content: center; 518 | column-gap: 2rem; 519 | margin-bottom: var(--mb-1-5); 520 | } 521 | 522 | .button { 523 | box-shadow: var(--box-shadow); 524 | font-size: var(--small-font-size); 525 | padding: 1rem 1.7rem; 526 | cursor: pointer; 527 | width: 150px; 528 | } 529 | 530 | .button__link { 531 | color: var(--text-color); 532 | font-size: var(--small-font-size); 533 | cursor: pointer; 534 | 535 | } 536 | 537 | .home__buttons .button__link i { 538 | align-items: center; 539 | font-size: 1.5rem; 540 | color: var(--title-color); 541 | background-color: var(--white-color); 542 | padding: .3rem .35rem .3rem .45rem; 543 | align-items: center; 544 | border-radius: 50%; 545 | box-shadow: 0 2px 16px #00000019; 546 | margin-left: .75rem; 547 | cursor: pointer; 548 | transition: .3s; 549 | } 550 | 551 | .home__buttons .button__link:hover i { 552 | box-shadow: 0 2px 20px #00000046; 553 | } 554 | 555 | .home__video { 556 | height: 225px; 557 | display: none; 558 | transition: opacity 0.3s, height 0.4s; 559 | } 560 | 561 | .home__video iframe { 562 | width: 340px; 563 | height: 100%; 564 | transition: width 0.3s ease, height 0.2s ease; 565 | border-radius: 2rem; 566 | } 567 | 568 | @keyframes fadeIn { 569 | from { 570 | opacity: 0; 571 | height: 0; 572 | } 573 | 574 | to { 575 | opacity: 1; 576 | height: 225px; 577 | } 578 | } 579 | 580 | .video-open { 581 | display: block; 582 | animation: fadeIn .3s ease-in-out; 583 | margin-block: 2rem; 584 | } 585 | 586 | 587 | 588 | .home__blob { 589 | justify-self: center; 590 | width: 100%; 591 | margin: 0 auto; 592 | overflow: hidden; 593 | margin-top: -2rem; 594 | 595 | } 596 | 597 | .home__blob-bubble { 598 | width: 150px; 599 | padding: .5rem .5rem .5rem 1rem; 600 | position: relative; 601 | background-color: var(--white-color); 602 | top: 1.4rem; 603 | left: .4rem; 604 | border-radius: 1rem; 605 | font-size: var(--small-font-size); 606 | color: var(--first-color-alt); 607 | margin-bottom: -3rem; 608 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 609 | 610 | } 611 | 612 | .blob__chat { 613 | width: 20px; 614 | height: 20px; 615 | background-color: var(--white-color); 616 | position: absolute; 617 | transform: rotate(200deg); 618 | z-index: 1; 619 | left: 127px; 620 | top: 17px; 621 | 622 | } 623 | 624 | .home__image { 625 | display: grid; 626 | position: relative; 627 | justify-self: center; 628 | } 629 | 630 | .home__img { 631 | display: block; 632 | position: relative; 633 | right: 4rem; 634 | min-width: 400px; 635 | margin: 0 auto; 636 | justify-content: center; 637 | } 638 | 639 | .home__image-container { 640 | display: flex; 641 | align-items: center; 642 | justify-content: center; 643 | column-gap: 1rem; 644 | margin-bottom: var(--mb-3); 645 | } 646 | 647 | .image__card-blob { 648 | position: relative; 649 | background-color: var(--white-color); 650 | width: 180px; 651 | height: 90px; 652 | top: -6.5rem; 653 | flex-direction: row; 654 | display: flex; 655 | column-gap: 1rem; 656 | padding: .4rem .5rem .4rem .5rem; 657 | border-radius: 1rem; 658 | z-index: -1; 659 | box-shadow: var(--box-shadow); 660 | transition: .3s; 661 | } 662 | 663 | .image__card-img { 664 | height: 50px; 665 | top: 2px; 666 | } 667 | 668 | .image__card-data { 669 | display: flex; 670 | margin-top: .5rem; 671 | flex-direction: column; 672 | row-gap: .4rem; 673 | } 674 | 675 | .image__card-title { 676 | font-size: var(--small-font-size); 677 | color: var(--title-color); 678 | font-weight: var(--font-weight-medium); 679 | } 680 | 681 | .image__card-ratings { 682 | color: #FFE605; 683 | display: flex; 684 | margin-bottom: -.2rem; 685 | } 686 | 687 | .image__card-price { 688 | font-weight: var(--font-weight-medium); 689 | 690 | } 691 | 692 | .image__card-price span { 693 | color: var(--first-color-alt); 694 | font-size: var(--normal-font-size); 695 | font-weight: var(--font-weight-regular); 696 | } 697 | 698 | /*=============== POPULAR ===============*/ 699 | .popular__container { 700 | margin-top: -9rem; 701 | } 702 | 703 | .popular__data { 704 | text-align: center; 705 | } 706 | 707 | .popular__content { 708 | margin-top: -2rem; 709 | padding-block: 2.5rem 5rem; 710 | grid-template-columns: repeat(2, 1fr); 711 | gap: 1; 712 | align-content: center; 713 | justify-self: center; 714 | } 715 | 716 | .popular__wrapper { 717 | background-color: var(--white-color); 718 | width: 160px; 719 | height: 160px; 720 | display: flex; 721 | align-items: center; 722 | justify-content: center; 723 | flex-direction: column; 724 | text-align: center; 725 | border-radius: 1.5rem; 726 | box-shadow: var(--box-shadow); 727 | transition: box-shadow .4s; 728 | } 729 | 730 | .popular__wrapper:hover { 731 | box-shadow: 0 2px 26px #00000046 732 | } 733 | 734 | .popular__blob { 735 | background-color: #C1F1C6; 736 | border-radius: 50%; 737 | width: 70px; 738 | 739 | } 740 | 741 | .popular__img { 742 | display: block; 743 | height: 70px; 744 | padding: .7rem .7rem; 745 | } 746 | 747 | .popular__title { 748 | margin-top: var(--mb-0-5); 749 | font-size: var(--h3-font-size); 750 | font-weight: var(--font-weight-bold); 751 | padding-bottom: var(--mb-0-5); 752 | } 753 | 754 | .popular__subtitle { 755 | font-size: var(--small-font-size); 756 | } 757 | 758 | /*=============== DISH SECTION ===============*/ 759 | .popular__dish-category, 760 | .popular__dish-category-breakfast, 761 | .popular__dish-category-sushi-combo, 762 | .popular__dish-category-main__dish, 763 | .browse__all { 764 | display: grid; 765 | align-self: center; 766 | justify-content: center; 767 | width: 100%; 768 | height: 100%; 769 | background-color: var(--white-color); 770 | position: fixed; 771 | gap: 1rem; 772 | bottom: .2rem; 773 | padding: 3.5rem 2rem; 774 | overflow-y: scroll; 775 | transition: .3s; 776 | right: -100%; 777 | z-index: var(--z-fixed); 778 | } 779 | 780 | .popular__dish { 781 | display: flex; 782 | margin-top: 4rem; 783 | flex-direction: column; 784 | row-gap: 2rem; 785 | } 786 | 787 | .dish-open { 788 | right: 0; 789 | } 790 | 791 | .dish__main-title { 792 | position: relative; 793 | top: 2rem; 794 | } 795 | 796 | .dish__close { 797 | color: var(--title-color); 798 | font-size: var(--big-font-size); 799 | border-radius: .5rem; 800 | position: sticky; 801 | top: 0; 802 | width: 50px; 803 | right: 21rem; 804 | padding: .3rem .5rem; 805 | background-color: var(--white-color); 806 | box-shadow: var(--box-shadow); 807 | z-index: 2; 808 | transition: .3s; 809 | text-align: center; 810 | } 811 | 812 | .main__dish { 813 | width: 270px; 814 | height: 290px; 815 | background-color: var(--white-color); 816 | box-shadow: var(--box-shadow); 817 | border-radius: 2rem; 818 | transition: .3s; 819 | } 820 | 821 | .main__dish:hover { 822 | box-shadow: 0 2px 26px #00000046 823 | } 824 | 825 | .main__dish-icon i { 826 | background-color: var(--first-color); 827 | font-size: var(--big-font-size); 828 | padding: 1rem; 829 | color: var(--white-color); 830 | position: relative; 831 | top: 1rem; 832 | left: 13.5rem; 833 | border-top-right-radius: 2rem; 834 | border-bottom-left-radius: 2rem; 835 | 836 | } 837 | 838 | .dish__blob { 839 | width: 140px; 840 | } 841 | 842 | .dish__text { 843 | display: flex; 844 | flex-direction: column; 845 | row-gap: .5rem; 846 | position: relative; 847 | left: -3rem; 848 | } 849 | 850 | .dish__content { 851 | display: flex; 852 | align-items: center; 853 | justify-content: center; 854 | flex-direction: column; 855 | row-gap: 1rem; 856 | } 857 | 858 | 859 | .dish__title { 860 | font-size: var(--normal-font-size); 861 | } 862 | 863 | .dish__description { 864 | font-size: var(--small-font-size); 865 | } 866 | 867 | .dish__data { 868 | display: flex; 869 | flex-direction: row; 870 | column-gap: 9rem; 871 | margin-bottom: var(--mb-1); 872 | } 873 | 874 | .dish__price { 875 | font-size: var(--normal-font-size); 876 | } 877 | 878 | .dish__price span { 879 | color: var(--first-color-alt); 880 | font-weight: var(--font-weight-medium); 881 | } 882 | 883 | .dish__rating { 884 | font-size: var(--normal-font-size); 885 | margin-bottom: 1.5rem; 886 | } 887 | 888 | .dish__rating i { 889 | color: #FFE605; 890 | font-size: var(--mb-1); 891 | } 892 | 893 | /*=============== BEST DISHES SECTION ===============*/ 894 | .best__dishes { 895 | align-items: center; 896 | justify-self: center; 897 | margin-top: -3rem; 898 | } 899 | 900 | .best__dishes-data { 901 | text-align: center; 902 | } 903 | 904 | .best__dishes-content { 905 | padding-block: 2.5rem 5rem; 906 | } 907 | 908 | .best__dishes-card { 909 | position: relative; 910 | height: 290px; 911 | background-color: var(--white-color); 912 | box-shadow: var(--box-shadow); 913 | margin-inline: 1rem; 914 | } 915 | 916 | /**swiper class */ 917 | .swiper-button-prev::after, 918 | .swiper-button-next::after { 919 | content: ''; 920 | } 921 | 922 | 923 | .swiper-button-prev, 924 | .swiper-button-next { 925 | top: initial; 926 | bottom: 1.5rem; 927 | width: 2.5rem; 928 | height: 2.5rem; 929 | background-color: var(--container-color); 930 | padding: 5px; 931 | font-size: 1.8rem; 932 | border-radius: 50%; 933 | color: var(--first-color); 934 | box-shadow: var(--box-shadow); 935 | transition: background .3s; 936 | 937 | } 938 | 939 | .swiper-button-prev { 940 | left: calc(50% - 3.5rem); 941 | } 942 | 943 | .swiper-button-next { 944 | right: calc(50% - 3.5rem); 945 | background-color: var(--first-color); 946 | color: var(--white-color); 947 | } 948 | 949 | /*=============== TESTIMONIAL SECTION ===============*/ 950 | .testimonials { 951 | margin-top: 7rem; 952 | } 953 | 954 | .testimonial__container { 955 | margin-bottom: var(--mb-1); 956 | row-gap: 1rem; 957 | 958 | } 959 | 960 | .testimonial__blob { 961 | background-color: var(--first-color); 962 | height: 230px; 963 | border-top-right-radius: 5rem; 964 | border-top-left-radius: 5rem; 965 | border-bottom-right-radius: 2rem; 966 | border-bottom-left-radius: 2rem; 967 | } 968 | 969 | .testimonial__data { 970 | margin-top: 4rem; 971 | } 972 | 973 | .testimonial__title { 974 | text-align: center; 975 | } 976 | 977 | .testimonial__img { 978 | position: relative; 979 | justify-self: center; 980 | transform: translateY(-7.5rem); 981 | } 982 | 983 | .testimonial__bubble { 984 | width: 150px; 985 | padding: .5rem .5rem .5rem 1rem; 986 | position: relative; 987 | background-color: var(--white-color); 988 | top: -8.5rem; 989 | right: -13rem; 990 | border-radius: 1rem; 991 | font-size: var(--small-font-size); 992 | color: var(--first-color-alt); 993 | margin-bottom: -3rem; 994 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 995 | } 996 | 997 | .testimonial__chat { 998 | width: 18px; 999 | height: 18px; 1000 | background-color: var(--white-color); 1001 | position: absolute; 1002 | transform: rotate(200deg); 1003 | z-index: 1; 1004 | border-top-right-radius: 15px; 1005 | left: 1px; 1006 | top: -1.7px; 1007 | } 1008 | 1009 | .testimonial__subtitle { 1010 | font-size: var(--h1-font-size); 1011 | text-transform: capitalize; 1012 | text-align: center; 1013 | } 1014 | 1015 | .testimonial__desscription { 1016 | color: var(--text-color); 1017 | } 1018 | 1019 | .testimonial__blob-image { 1020 | display: inline-flex; 1021 | column-gap: 1rem; 1022 | 1023 | } 1024 | 1025 | .testimonial__data-text .quotes { 1026 | font-size: var(--big-font-size); 1027 | background-color: var(--white-color); 1028 | padding: .4rem; 1029 | position: relative; 1030 | color: var(--first-color); 1031 | box-shadow: var(--box-shadow); 1032 | border-radius: .5rem; 1033 | bottom: .5rem; 1034 | 1035 | } 1036 | 1037 | .testimonial__image { 1038 | display: flex; 1039 | position: relative; 1040 | margin-top: var(--mb-1); 1041 | margin-left: 0rem; 1042 | } 1043 | 1044 | .testimonial__blob-img { 1045 | height: 50px; 1046 | border: 4px solid var(--white-color); 1047 | border-radius: 50%; 1048 | } 1049 | 1050 | .img1 { 1051 | position: relative; 1052 | left: 1rem; 1053 | z-index: -1; 1054 | } 1055 | 1056 | .img3 { 1057 | position: relative; 1058 | left: -1.2rem; 1059 | } 1060 | 1061 | .testimonial__feedback { 1062 | display: flex; 1063 | flex-direction: column; 1064 | align-items: center; 1065 | justify-content: center; 1066 | position: relative; 1067 | top: .5rem; 1068 | } 1069 | 1070 | .feedback { 1071 | font-size: var(--normal-font-size); 1072 | } 1073 | 1074 | .feedback__ratings i { 1075 | color: #FFE605; 1076 | } 1077 | 1078 | .feedback__ratings span { 1079 | font-size: var(--small-font-size); 1080 | } 1081 | 1082 | /*=============== SERVICES SECTION ===============*/ 1083 | .services__title { 1084 | text-align: center; 1085 | } 1086 | 1087 | .services__hero { 1088 | display: flex; 1089 | flex-direction: column; 1090 | } 1091 | 1092 | .services__hero-title { 1093 | text-align: center; 1094 | font-size: var(--h1-font-size); 1095 | } 1096 | 1097 | .services__hero-sub { 1098 | margin-top: var(--mb-1); 1099 | margin-bottom: var(--mb-1); 1100 | } 1101 | 1102 | .services__hero-button { 1103 | text-align: center; 1104 | } 1105 | 1106 | .services__card-container { 1107 | display: grid; 1108 | grid-template-columns: repeat(2, 1fr); 1109 | align-items: center; 1110 | justify-content: center; 1111 | gap: 1rem; 1112 | margin-top: 1rem; 1113 | } 1114 | 1115 | .services__card { 1116 | width: 162px; 1117 | height: 180px; 1118 | display: flex; 1119 | align-items: center; 1120 | justify-content: center; 1121 | flex-direction: column; 1122 | row-gap: .5rem; 1123 | background-color: var(--white-color); 1124 | box-shadow: var(--box-shadow); 1125 | border-radius: 1rem; 1126 | transition: .3s; 1127 | } 1128 | 1129 | .services__card i { 1130 | font-size: 3.5rem; 1131 | font-weight: var(--font-weight-regular); 1132 | color: var(--first-color); 1133 | } 1134 | 1135 | .services__card:hover { 1136 | box-shadow: 0 2px 26px #00000046 1137 | } 1138 | 1139 | .services__card-data { 1140 | display: flex; 1141 | flex-direction: column; 1142 | row-gap: .4rem; 1143 | } 1144 | 1145 | .data__title { 1146 | font-size: var(--h3-font-size); 1147 | text-align: center; 1148 | color: var(--first-color); 1149 | } 1150 | 1151 | .data__description { 1152 | font-size: var(--smallest-font-size); 1153 | padding-left: .2rem; 1154 | padding-right: .2rem; 1155 | color: #90BD95; 1156 | text-align: center; 1157 | } 1158 | 1159 | /*=============== FOOOTER SECTION ===============*/ 1160 | .footer { 1161 | margin-top: 4rem; 1162 | } 1163 | 1164 | .footer__description { 1165 | 1166 | margin-top: .5rem; 1167 | } 1168 | 1169 | .footer__title { 1170 | color: var(--title-color); 1171 | font-weight: var(--font-weight-medium); 1172 | font-size: var(--h3-font-size); 1173 | margin-bottom: 1rem; 1174 | } 1175 | 1176 | .footer__link { 1177 | color: var(--text-color); 1178 | } 1179 | 1180 | .footer__links { 1181 | display: grid; 1182 | row-gap: .75rem; 1183 | } 1184 | 1185 | .footer__social, 1186 | .footer__group, 1187 | .footer__terms { 1188 | display: flex; 1189 | } 1190 | 1191 | .footer__social { 1192 | column-gap: 1.25rem; 1193 | 1194 | } 1195 | 1196 | .footer__group { 1197 | margin-top: 4rem; 1198 | flex-direction: column; 1199 | color: var(--title-color); 1200 | align-items: center; 1201 | row-gap: 1rem; 1202 | margin-bottom: 3rem; 1203 | } 1204 | 1205 | .footer__social-link { 1206 | font-size: var(--big-font-size); 1207 | color: var(--first-color); 1208 | transition: .3s; 1209 | } 1210 | 1211 | .footer__social-link:hover { 1212 | transform: translateY(-1rem); 1213 | } 1214 | 1215 | .footer__terms { 1216 | column-gap: 1.25rem; 1217 | } 1218 | 1219 | .footer__terms a { 1220 | color: var(--text-color); 1221 | } 1222 | 1223 | /**/ 1224 | 1225 | ::-webkit-scrollbar { 1226 | width: .6rem; 1227 | background: hsl(0, 0%, 74%); 1228 | border-radius: .5rem; 1229 | } 1230 | 1231 | ::-webkit-scrollbar-thumb { 1232 | background: var(--first-color); 1233 | border-radius: .5rem; 1234 | } 1235 | 1236 | ::-webkit-scrollbar-thumb:hoveractive-link { 1237 | background: #6ce278; 1238 | } 1239 | 1240 | .scroll__up { 1241 | position: fixed; 1242 | right: 1rem; 1243 | bottom: -50%; 1244 | background: var(--container-color); 1245 | display: inline-flex; 1246 | padding: 6px; 1247 | font-size: 1.25rem; 1248 | color: var(--title-color); 1249 | z-index: var(--z-tooltip); 1250 | border-radius: .25rem; 1251 | box-shadow: 0 4px 16px hsla(0, 0%, 0%, .1); 1252 | transition: bottom .4s, transform .4s, background .4s; 1253 | 1254 | } 1255 | 1256 | .scroll__up:hover { 1257 | transform: translateY(-.5rem); 1258 | transition: .3s; 1259 | } 1260 | 1261 | .show-scroll { 1262 | bottom: 3rem; 1263 | } 1264 | 1265 | 1266 | /**/ 1267 | /**For small devices */ 1268 | @media screen and (max-width: 380px) { 1269 | .container { 1270 | margin-inline: 1rem; 1271 | } 1272 | 1273 | .home__buttons { 1274 | display: flex; 1275 | flex-direction: column; 1276 | align-items: center; 1277 | row-gap: 1rem; 1278 | } 1279 | 1280 | .button__link { 1281 | margin-left: .7rem; 1282 | } 1283 | 1284 | .home__title { 1285 | font-size: var(--bigger-font-size); 1286 | } 1287 | 1288 | .home__subtitle { 1289 | font-size: var(--small-font-size); 1290 | } 1291 | 1292 | .home__video { 1293 | height: 200px; 1294 | } 1295 | 1296 | .home__video iframe { 1297 | width: 300px; 1298 | height: 100%; 1299 | } 1300 | 1301 | .home__image-container { 1302 | flex-direction: column; 1303 | justify-content: center; 1304 | row-gap: 1rem; 1305 | margin-bottom: var(--mb-3); 1306 | } 1307 | 1308 | .image__card-blob { 1309 | width: 100%; 1310 | flex-direction: row; 1311 | display: flex; 1312 | justify-content: center; 1313 | align-items: center; 1314 | column-gap: 1.5rem; 1315 | 1316 | } 1317 | 1318 | .home__img { 1319 | display: block; 1320 | position: relative; 1321 | right: 5rem; 1322 | min-width: 400px; 1323 | margin: 0 auto; 1324 | justify-content: center; 1325 | } 1326 | 1327 | .image__card-data { 1328 | display: flex; 1329 | align-items: center; 1330 | justify-content: center; 1331 | margin-top: .5rem; 1332 | flex-direction: column; 1333 | row-gap: .4rem; 1334 | } 1335 | 1336 | .image__card-img { 1337 | height: 60px; 1338 | top: 3px; 1339 | } 1340 | 1341 | .nav__buttons { 1342 | column-gap: 1rem; 1343 | font-size: 1.2rem; 1344 | } 1345 | 1346 | .nav__logo { 1347 | font-size: var(--h2-font-size); 1348 | 1349 | } 1350 | 1351 | .nav__logo span { 1352 | padding: 0 .3rem; 1353 | } 1354 | 1355 | .home__blob-bubble { 1356 | width: 150px; 1357 | padding: .5rem .5rem .5rem 1rem; 1358 | position: relative; 1359 | background-color: var(--white-color); 1360 | top: .5rem; 1361 | left: .4rem; 1362 | border-radius: 1rem; 1363 | font-size: var(--small-font-size); 1364 | color: var(--first-color-alt); 1365 | margin-bottom: -3rem; 1366 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1367 | } 1368 | 1369 | .popular__content { 1370 | grid-template-columns: repeat(1, 1fr); 1371 | row-gap: 1.7rem; 1372 | 1373 | } 1374 | 1375 | .popular__wrapper { 1376 | width: 180px; 1377 | height: 180px; 1378 | } 1379 | 1380 | .main__dish { 1381 | width: 250px; 1382 | height: 290px; 1383 | } 1384 | 1385 | .main__dish-icon i { 1386 | top: 1rem; 1387 | left: 12.1rem; 1388 | } 1389 | 1390 | .services__card-container { 1391 | grid-template-columns: repeat(1, 1fr); 1392 | justify-self: center; 1393 | row-gap: 1.5rem; 1394 | margin-top: 1rem; 1395 | } 1396 | 1397 | .services__card { 1398 | width: 180px; 1399 | height: 180px; 1400 | } 1401 | 1402 | .testimonial__blob { 1403 | background-color: var(--first-color); 1404 | height: 190px; 1405 | } 1406 | 1407 | .testimonial__bubble { 1408 | width: 150px; 1409 | padding: .5rem .5rem .5rem 1rem; 1410 | position: relative; 1411 | background-color: var(--white-color); 1412 | top: -8.5rem; 1413 | right: -9rem; 1414 | border-radius: 1rem; 1415 | font-size: var(--small-font-size); 1416 | color: var(--first-color-alt); 1417 | margin-bottom: -3rem; 1418 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1419 | } 1420 | 1421 | .testimonial__desscription, 1422 | .services__hero-sub, 1423 | .footer__description, 1424 | .footer__links, 1425 | .footer__terms, 1426 | .footer__copy { 1427 | font-size: var(--small-font-size); 1428 | } 1429 | } 1430 | 1431 | /**For Medium devices */ 1432 | @media screen and (min-width: 390px) { 1433 | .services__card-container { 1434 | display: grid; 1435 | align-items: center; 1436 | justify-self: center; 1437 | gap: 2rem; 1438 | } 1439 | 1440 | .testimonial__blob-image { 1441 | display: flex; 1442 | margin-top: 1rem; 1443 | column-gap: 2rem; 1444 | align-items: center; 1445 | justify-content: center; 1446 | 1447 | } 1448 | 1449 | .testimonial__img { 1450 | position: relative; 1451 | transform: translateY(-8.5rem); 1452 | } 1453 | } 1454 | 1455 | @media screen and (min-width: 500px) { 1456 | .testimonial__blob { 1457 | background-color: var(--first-color); 1458 | height: 190px; 1459 | } 1460 | 1461 | .home__blob-bubble { 1462 | width: 150px; 1463 | padding: .5rem .5rem .5rem 1rem; 1464 | position: relative; 1465 | background-color: var(--white-color); 1466 | top: .5rem; 1467 | right: -9rem; 1468 | border-radius: 1rem; 1469 | font-size: var(--small-font-size); 1470 | color: var(--first-color-alt); 1471 | margin-bottom: -3rem; 1472 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1473 | 1474 | } 1475 | 1476 | .testimonial__bubble { 1477 | width: 150px; 1478 | padding: .5rem .5rem .5rem 1rem; 1479 | position: relative; 1480 | background-color: var(--white-color); 1481 | top: -14rem; 1482 | right: -20rem; 1483 | border-radius: 1rem; 1484 | font-size: var(--small-font-size); 1485 | color: var(--first-color-alt); 1486 | margin-bottom: -3rem; 1487 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1488 | } 1489 | 1490 | .testimonial__blob { 1491 | background-color: var(--first-color); 1492 | height: 290px; 1493 | border-top-right-radius: 5rem; 1494 | border-top-left-radius: 5rem; 1495 | border-bottom-right-radius: 2rem; 1496 | border-bottom-left-radius: 2rem; 1497 | } 1498 | 1499 | .testimonial__blob-image { 1500 | display: flex; 1501 | margin-top: 1rem; 1502 | column-gap: 2rem; 1503 | align-items: center; 1504 | justify-content: center; 1505 | 1506 | } 1507 | 1508 | .testimonial__img { 1509 | position: relative; 1510 | transform: translateY(-11rem); 1511 | } 1512 | } 1513 | 1514 | @media screen and (min-width: 576px) { 1515 | .home__video { 1516 | height: 300px; 1517 | } 1518 | 1519 | .home__video iframe { 1520 | width: 400px; 1521 | height: 100%; 1522 | } 1523 | 1524 | .home__blob-bubble { 1525 | top: 3rem; 1526 | left: .5rem; 1527 | 1528 | } 1529 | 1530 | .home__image { 1531 | margin-top: -1rem; 1532 | } 1533 | 1534 | .home__img { 1535 | right: 1rem; 1536 | 1537 | } 1538 | 1539 | .home__image-container { 1540 | display: flex; 1541 | align-items: center; 1542 | justify-content: center; 1543 | column-gap: 1.5rem; 1544 | margin-bottom: var(--mb-3); 1545 | } 1546 | 1547 | .image__card-blob { 1548 | position: relative; 1549 | background-color: var(--white-color); 1550 | height: 220px; 1551 | height: 95px; 1552 | top: -8.5rem; 1553 | flex-direction: row; 1554 | display: flex; 1555 | column-gap: 2rem; 1556 | padding: .4rem .5rem .4rem .5rem; 1557 | border-radius: 1rem; 1558 | z-index: -1; 1559 | box-shadow: var(--box-shadow); 1560 | transition: .3s; 1561 | } 1562 | 1563 | .image__card-img { 1564 | height: 50px; 1565 | top: 2px; 1566 | } 1567 | 1568 | .popular__content { 1569 | row-gap: 1.7rem; 1570 | gap: 3rem; 1571 | 1572 | } 1573 | 1574 | .popular__wrapper { 1575 | width: 190px; 1576 | height: 190px; 1577 | } 1578 | 1579 | .popular__dish { 1580 | display: grid; 1581 | align-items: center; 1582 | justify-self: center; 1583 | grid-template-columns: repeat(2, 1fr); 1584 | row-gap: 2rem; 1585 | gap: 1.5rem; 1586 | } 1587 | 1588 | .main-dish-alt { 1589 | display: flex; 1590 | flex-direction: column; 1591 | row-gap: 2rem; 1592 | 1593 | } 1594 | 1595 | .main__dish { 1596 | width: 240px; 1597 | height: 290px; 1598 | 1599 | } 1600 | 1601 | .main__dish-icon i { 1602 | top: 1rem; 1603 | left: 11.5rem; 1604 | } 1605 | 1606 | .testimonial__container { 1607 | row-gap: 2rem; 1608 | } 1609 | 1610 | .testimonials { 1611 | margin-top: 10rem; 1612 | } 1613 | 1614 | .testimonial__data { 1615 | margin-inline: 3rem; 1616 | } 1617 | 1618 | .testimonial__img { 1619 | position: relative; 1620 | transform: translateY(-13.5rem); 1621 | left: 1rem; 1622 | } 1623 | 1624 | .quotes { 1625 | margin-bottom: 1.5rem; 1626 | } 1627 | 1628 | .testimonial__bubble { 1629 | width: 150px; 1630 | padding: .5rem .5rem .5rem 1rem; 1631 | position: relative; 1632 | background-color: var(--white-color); 1633 | top: -14rem; 1634 | right: -20rem; 1635 | border-radius: 1rem; 1636 | font-size: var(--small-font-size); 1637 | color: var(--first-color-alt); 1638 | margin-bottom: -3rem; 1639 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1640 | } 1641 | 1642 | .testimonial__blob { 1643 | background-color: var(--first-color); 1644 | height: 290px; 1645 | border-top-right-radius: 5rem; 1646 | border-top-left-radius: 5rem; 1647 | border-bottom-right-radius: 2rem; 1648 | border-bottom-left-radius: 2rem; 1649 | } 1650 | 1651 | .testimonial__blob-image { 1652 | display: flex; 1653 | margin-top: 1rem; 1654 | column-gap: 2rem; 1655 | align-items: center; 1656 | justify-content: center; 1657 | 1658 | } 1659 | 1660 | .services__hero { 1661 | display: flex; 1662 | text-align: center; 1663 | align-items: center; 1664 | justify-content: center; 1665 | } 1666 | 1667 | .services__hero-button { 1668 | width: 250px; 1669 | } 1670 | 1671 | .services__card-container { 1672 | display: grid; 1673 | align-items: center; 1674 | justify-self: center; 1675 | gap: 3rem; 1676 | } 1677 | 1678 | .services__card { 1679 | width: 190px; 1680 | height: 180px; 1681 | } 1682 | 1683 | .footer__container { 1684 | margin-top: 4rem; 1685 | 1686 | } 1687 | 1688 | .footer__description { 1689 | width: 300px; 1690 | } 1691 | 1692 | .footer__data { 1693 | grid-template-columns: repeat(2, max-content); 1694 | } 1695 | 1696 | } 1697 | 1698 | @media screen and (min-width: 768px) { 1699 | .home__container { 1700 | grid-template-columns: repeat(2, 1fr); 1701 | column-gap: 2rem; 1702 | } 1703 | 1704 | .home__content, 1705 | .testimonial__container { 1706 | margin-top: -3rem; 1707 | margin-inline: 2rem; 1708 | } 1709 | 1710 | .home__data { 1711 | text-align: initial; 1712 | } 1713 | 1714 | .home__subtitle { 1715 | margin-left: -1.3rem; 1716 | } 1717 | 1718 | .home__buttons { 1719 | column-gap: 1rem; 1720 | align-items: initial; 1721 | justify-content: initial; 1722 | } 1723 | 1724 | .home__image { 1725 | margin-top: 1rem; 1726 | } 1727 | 1728 | .button { 1729 | box-shadow: var(--box-shadow); 1730 | font-size: var(--small-font-size); 1731 | padding: 1rem 1rem; 1732 | cursor: pointer; 1733 | width: 120px; 1734 | 1735 | } 1736 | 1737 | .button__link { 1738 | color: var(--text-color); 1739 | font-size: var(--small-font-size); 1740 | cursor: pointer; 1741 | 1742 | } 1743 | 1744 | .home__buttons .button__link i { 1745 | margin-left: .7rem; 1746 | 1747 | } 1748 | 1749 | 1750 | .home__video { 1751 | height: 200px; 1752 | } 1753 | 1754 | .home__video iframe { 1755 | width: 300px; 1756 | height: 100%; 1757 | } 1758 | 1759 | .home__blob-bubble { 1760 | width: 150px; 1761 | padding: .5rem .5rem .5rem 1rem; 1762 | position: relative; 1763 | background-color: var(--white-color); 1764 | top: 1.5rem; 1765 | left: .4rem; 1766 | border-radius: 1rem; 1767 | font-size: var(--small-font-size); 1768 | color: var(--first-color-alt); 1769 | margin-bottom: -3rem; 1770 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1771 | } 1772 | 1773 | .home__image-container { 1774 | position: relative; 1775 | flex-direction: row; 1776 | justify-content: center; 1777 | top: 1.5rem; 1778 | row-gap: .5rem; 1779 | margin-bottom: var(--mb-3); 1780 | } 1781 | 1782 | .image__card-blob { 1783 | width: 100%; 1784 | flex-direction: row; 1785 | display: flex; 1786 | justify-content: center; 1787 | align-items: center; 1788 | column-gap: 1.5rem; 1789 | 1790 | } 1791 | 1792 | .home__img { 1793 | display: block; 1794 | position: relative; 1795 | right: 5rem; 1796 | min-width: 400px; 1797 | margin: 0 auto; 1798 | justify-content: center; 1799 | } 1800 | 1801 | .popular__content { 1802 | grid-template-columns: repeat(3, 1fr); 1803 | } 1804 | 1805 | .testimonial__data { 1806 | margin-top: -1rem; 1807 | row-gap: 1rem; 1808 | } 1809 | 1810 | .popular__dish-category, 1811 | .popular__dish-category-breakfast, 1812 | .popular__dish-category-main__dish { 1813 | width: 65%; 1814 | box-shadow: var(--box-shadow); 1815 | } 1816 | 1817 | .dark-theme .popular__dish-category, 1818 | .dark-theme .popular__dish-category-breakfast, 1819 | .dark-theme .popular__dish-category-main__dish { 1820 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2) 1821 | } 1822 | 1823 | .testimonial__title, 1824 | .testimonial__desscription, 1825 | .testimonial__subtitle, 1826 | .services__title, 1827 | .services__hero-sub, 1828 | .services__hero-title { 1829 | text-align: initial; 1830 | margin-bottom: var(--mb-1); 1831 | } 1832 | 1833 | .testimonial__title { 1834 | margin-top: -3rem; 1835 | } 1836 | 1837 | .testimonial__blob { 1838 | align-items: center; 1839 | justify-content: center; 1840 | height: 270px; 1841 | } 1842 | 1843 | .testimonial__container { 1844 | grid-template-columns: repeat(2, 1fr); 1845 | column-gap: 2rem; 1846 | margin-top: -3rem; 1847 | } 1848 | 1849 | .services__container { 1850 | grid-template-columns: repeat(2, 1fr); 1851 | column-gap: 2rem; 1852 | 1853 | } 1854 | 1855 | .services__hero { 1856 | align-items: initial; 1857 | justify-content: initial; 1858 | row-gap: 1rem; 1859 | } 1860 | 1861 | .services__card-container { 1862 | gap: 1rem; 1863 | } 1864 | 1865 | .services__hero-button { 1866 | align-items: initial; 1867 | justify-content: initial; 1868 | } 1869 | 1870 | .testimonial__img { 1871 | position: relative; 1872 | transform: translateY(-5.5rem); 1873 | left: -.1rem; 1874 | } 1875 | 1876 | .testimonial__bubble { 1877 | width: 150px; 1878 | padding: .5rem .5rem .5rem 1rem; 1879 | position: relative; 1880 | background-color: var(--white-color); 1881 | top: -7.5rem; 1882 | right: -14rem; 1883 | border-radius: 1rem; 1884 | font-size: var(--small-font-size); 1885 | color: var(--first-color-alt); 1886 | margin-bottom: -3rem; 1887 | box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.145); 1888 | } 1889 | 1890 | .testimonial__blob-image { 1891 | display: flex; 1892 | margin-top: -.5rem; 1893 | flex-direction: row; 1894 | align-items: initial; 1895 | justify-content: initial; 1896 | column-gap: 5rem; 1897 | margin-left: -1.5rem; 1898 | 1899 | } 1900 | 1901 | 1902 | .feedback { 1903 | font-size: var(--small-font-size); 1904 | } 1905 | 1906 | .footer__container { 1907 | margin-top: 7rem; 1908 | } 1909 | 1910 | .footer__data { 1911 | grid-template-columns: repeat(3, 1fr); 1912 | align-items: center; 1913 | justify-self: center; 1914 | } 1915 | 1916 | .footer__terms-container { 1917 | display: flex; 1918 | flex-direction: row; 1919 | column-gap: 4rem; 1920 | } 1921 | } 1922 | 1923 | /**For large devices */ 1924 | @media screen and (min-width: 951px) { 1925 | .contact__phone { 1926 | display: flex; 1927 | align-items: center; 1928 | justify-content: center; 1929 | } 1930 | .contact__phone span { 1931 | display: flex; 1932 | align-items: center; 1933 | justify-content: center; 1934 | font-size: 1rem; 1935 | padding: .5rem; 1936 | } 1937 | 1938 | .nav { 1939 | height: calc(var(--header-height) + 2rem); 1940 | display: flex; 1941 | justify-content: space-between; 1942 | margin-inline: 3rem; 1943 | 1944 | } 1945 | 1946 | .nav__toggle { 1947 | display: none; 1948 | } 1949 | 1950 | .nav-list { 1951 | height: 100%; 1952 | display: flex; 1953 | column-gap: 3rem; 1954 | 1955 | padding: 0; 1956 | box-shadow: none; 1957 | } 1958 | 1959 | .nav__link { 1960 | height: 100%; 1961 | padding: 0; 1962 | justify-content: initial; 1963 | column-gap: 2rem; 1964 | color: var(--text-color); 1965 | transition: color .3s; 1966 | } 1967 | 1968 | .nav__link:hover { 1969 | background-color: transparent; 1970 | color: var(--first-color); 1971 | } 1972 | 1973 | .drop__down-item { 1974 | position: relative; 1975 | 1976 | } 1977 | 1978 | .dropdown__menu { 1979 | display: flex; 1980 | flex-direction: column; 1981 | row-gap: 1rem; 1982 | max-height: initial; 1983 | overflow: initial; 1984 | width: 300px; 1985 | padding: 1rem; 1986 | position: absolute; 1987 | left: -2rem; 1988 | top: 2rem; 1989 | opacity: 0; 1990 | pointer-events: none; 1991 | transition: opacity .3s; 1992 | background-color: var(--body-color); 1993 | color: var(--white-color); 1994 | border-radius: 1rem; 1995 | } 1996 | 1997 | .dropdown__link { 1998 | color: var(--text-color); 1999 | transition: color .3s; 2000 | } 2001 | 2002 | .dropdown__link:hover { 2003 | color: var(--first-color); 2004 | 2005 | } 2006 | 2007 | .drop__down-item:hover .dropdown__menu { 2008 | opacity: 1; 2009 | top: 1.5rem; 2010 | pointer-events: initial; 2011 | transition: top .3s; 2012 | } 2013 | 2014 | .home__content { 2015 | margin-inline: 2rem; 2016 | } 2017 | 2018 | .home__data { 2019 | margin-top: -2rem; 2020 | } 2021 | 2022 | .home__title { 2023 | font-size: 3rem; 2024 | } 2025 | 2026 | .section__title-alt, 2027 | .section__title { 2028 | margin-inline: 2rem; 2029 | 2030 | } 2031 | 2032 | .popular__content { 2033 | grid-template-columns: repeat(4, 1fr); 2034 | } 2035 | 2036 | .popular__dish-category, 2037 | .popular__dish-category-breakfast, 2038 | .popular__dish-category-main__dish { 2039 | width: 60%; 2040 | box-shadow: var(--box-shadow); 2041 | } 2042 | 2043 | .dark-theme .popular__dish-category, 2044 | .dark-theme .popular__dish-category-breakfast, 2045 | .dark-theme .popular__dish-category-main__dish { 2046 | box-shadow: 0 12px 8px hsla(0, 0%, 0%, .2) 2047 | } 2048 | 2049 | .best__dishes-container { 2050 | 2051 | margin: auto; 2052 | } 2053 | 2054 | .best__dishes-content { 2055 | max-width: 800px; 2056 | margin-top: 0; 2057 | } 2058 | 2059 | .testimonial__container, 2060 | .services__container, 2061 | .footer__container { 2062 | margin-inline: 2rem; 2063 | } 2064 | .services__container { 2065 | margin-top: 6rem; 2066 | } 2067 | 2068 | .testimonial__img { 2069 | max-width: 400px; 2070 | transform: translateY(-6rem); 2071 | 2072 | 2073 | } 2074 | 2075 | .testimonial__blob { 2076 | max-width: 410px; 2077 | } 2078 | 2079 | } 2080 | 2081 | @media screen and (min-width: 1124px) { 2082 | .nav { 2083 | height: calc(var(--header-height) + 2rem); 2084 | display: flex; 2085 | justify-content: space-between; 2086 | margin-inline: 9rem; 2087 | 2088 | } 2089 | 2090 | .nav__toggle { 2091 | display: none; 2092 | } 2093 | .container { 2094 | margin-inline: auto; 2095 | } 2096 | .image__card-blob { 2097 | top: -10rem; 2098 | } 2099 | .home__container, 2100 | .testimonial__container { 2101 | display: grid; 2102 | column-gap: 6rem; 2103 | align-items: center; 2104 | justify-self: center; 2105 | } 2106 | .footer__content { 2107 | grid-template-columns: repeat(2, 1fr); 2108 | justify-self: center; 2109 | row-gap: 8rem; 2110 | align-items: center; 2111 | } 2112 | .footer__data { 2113 | align-items: center; 2114 | justify-self: center; 2115 | margin-left: -3rem; 2116 | } 2117 | .footer { 2118 | padding-block: 3rem; 2119 | } 2120 | } -------------------------------------------------------------------------------- /assets/js/swiper.min.js.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 11.0.5 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * https://swiperjs.com 5 | * 6 | * Copyright 2014-2023 Vladimir Kharlampidi 7 | * 8 | * Released under the MIT License 9 | * 10 | * Released on: November 22, 2023 11 | */ 12 | 13 | var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function x(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function y(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=x(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},P=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},I=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&P(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&P(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?y=parseFloat(y.replace("%",""))/100*n:"string"==typeof y&&(y=parseFloat(y)),e.virtualSize=-y,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+y;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${y}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(y||0)})),e-=y;const t=e-n;f=f.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(y||0)})),e-=y,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&I(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var z={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):x=n;const y="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/h.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),y&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&y)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x+M,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&y)if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/h.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function G(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function D(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void G(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!G(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function _(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,x=n.resistanceRatio;if(n.touchReleaseOnEdges&&(x=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**x))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(f-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function B(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function $(e){const t=this;C(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),n[d]("load",e.onLoad,{capture:!0})};const j=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Y(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const q={eventsEmitter:M,update:L,translate:k,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),O({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),O({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=D.bind(e),e.onTouchMove=_.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=B.bind(e)),e.onClick=F.bind(e),e.onLoad=$.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=j(e,i),d=j(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=x(),o.device=y({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:Y(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?i[o].swiperSlideSize:0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&C(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?C(t,e):e.addEventListener("load",(e=>{C(t,e.target)}))})),I(t),t.initialized=!0,I(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}return Object.keys(q).forEach((e=>{Object.keys(q[e]).forEach((t=>{U.prototype[t]=q[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),U}(); 14 | //# sourceMappingURL=swiper.min.js.map --------------------------------------------------------------------------------