commit d53d4417b2256aabbdb60305164e12351be42be8 Author: r2xrzh9q2z-lab Date: Mon Feb 2 11:00:08 2026 +0700 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49e96f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +#vs code +/.vscode \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..1cc3745 --- /dev/null +++ b/README.md @@ -0,0 +1,218 @@ +# VisaService - Website Dịch Vụ Visa + +Website dịch vụ visa chuyên nghiệp được xây dựng với Next.js 15, TypeScript và Tailwind CSS. Hỗ trợ tư vấn visa cho hơn 50 quốc gia với tỷ lệ thành công 99%. + +## 🚀 Tính Năng + +- **8 Trang Chính**: Trang chủ, Giới thiệu, Dịch vụ, Visa, Quốc gia, Bảng giá, Blog, Liên hệ +- **Hệ Thống Đặt Lịch**: Đặt lịch tư vấn với chuyên gia +- **Responsive Design**: Tối ưu cho mọi thiết bị +- **JSON-Based Content**: Dễ dàng quản lý nội dung +- **Interactive Components**: Form, accordion, filter, modal +- **SEO Optimized**: Metadata và structure tối ưu + +## 🛠️ Công Nghệ Sử Dụng + +- **Framework**: Next.js 15 (App Router) +- **Language**: TypeScript +- **Styling**: Tailwind CSS +- **Icons**: Emoji icons +- **Deployment**: Docker support + +## 📁 Cấu Trúc Thư Mục + +``` +app/ +├── components/ # Shared components +│ ├── Header.tsx # Navigation header +│ └── Footer.tsx # Site footer +├── about/ # Trang giới thiệu +│ ├── about.json # Dữ liệu về công ty +│ └── page.tsx # Component trang +├── services/ # Trang dịch vụ +│ ├── services.json # Dữ liệu dịch vụ +│ └── page.tsx # Component trang +├── visa/ # Trang visa +│ ├── visa.json # Dữ liệu các loại visa +│ └── page.tsx # Component trang +├── countries/ # Trang quốc gia +│ ├── countries.json # Dữ liệu quốc gia +│ └── page.tsx # Component trang +├── pricing/ # Trang bảng giá +│ ├── pricing.json # Dữ liệu giá cả +│ └── page.tsx # Component trang +├── blog/ # Trang blog +│ ├── blog.json # Dữ liệu bài viết +│ └── page.tsx # Component trang +├── contact/ # Trang liên hệ +│ ├── contact.json # Thông tin liên hệ +│ └── page.tsx # Component trang +├── appointment/ # Trang đặt lịch +│ ├── appointment.json # Dữ liệu booking +│ └── page.tsx # Component trang +├── layout.tsx # Root layout +├── page.tsx # Trang chủ +└── globals.css # Global styles +``` + +## 🚀 Hướng Dẫn Chạy Dự Án + +### Yêu Cầu Hệ Thống + +- Node.js 18+ +- npm, yarn, hoặc pnpm + +### Cài Đặt và Chạy + +1. **Clone repository** + +```bash +git clone +cd visa-service-website +``` + +2. **Cài đặt dependencies** + +```bash +npm install +# hoặc +yarn install +# hoặc +pnpm install +``` + +3. **Chạy development server** + +```bash +npm run dev +# hoặc +yarn dev +# hoặc +pnpm dev +``` + +4. **Mở trình duyệt** + Truy cập [http://localhost:3000](http://localhost:3000) để xem website + +### Scripts Có Sẵn + +```bash +npm run dev # Chạy development server +npm run build # Build production +npm run start # Chạy production server +npm run lint # Kiểm tra code style +``` + +## 🐳 Chạy Với Docker + +### Development với Docker + +```bash +# Build và chạy container +docker-compose up --build + +# Chạy ở background +docker-compose up -d + +# Dừng container +docker-compose down +``` + +### Production với Docker + +```bash +# Build production image +docker build -t visa-service . + +# Chạy container +docker run -p 3000:3000 visa-service +``` + +## 📝 Tùy Chỉnh Nội Dung + +### Cập Nhật Dữ Liệu + +Mỗi trang có file JSON riêng chứa dữ liệu: + +- `about/about.json` - Thông tin công ty +- `services/services.json` - Danh sách dịch vụ +- `visa/visa.json` - Các loại visa +- `countries/countries.json` - Quốc gia hỗ trợ +- `pricing/pricing.json` - Bảng giá dịch vụ +- `blog/blog.json` - Bài viết blog +- `contact/contact.json` - Thông tin liên hệ +- `appointment/appointment.json` - Cấu hình đặt lịch + +### Thêm Trang Mới + +1. Tạo thư mục mới trong `app/` +2. Tạo file `data.json` chứa dữ liệu +3. Tạo file `page.tsx` với React component +4. Cập nhật navigation trong `Header.tsx` + +### Tùy Chỉnh Styling + +- Sử dụng Tailwind CSS classes +- Tùy chỉnh theme trong `tailwind.config.js` +- Global styles trong `app/globals.css` + +## 🌐 Deployment + +### Vercel (Khuyến nghị) + +1. Push code lên GitHub +2. Kết nối repository với Vercel +3. Deploy tự động + +### Netlify + +1. Build project: `npm run build` +2. Upload thư mục `out/` lên Netlify + +### VPS/Server + +1. Build project: `npm run build` +2. Chạy: `npm run start` +3. Sử dụng PM2 hoặc Docker cho production + +## 📱 Responsive Design + +Website được tối ưu cho: + +- **Mobile**: < 768px +- **Tablet**: 768px - 1024px +- **Desktop**: > 1024px + +## 🔧 Cấu Hình Môi Trường + +Tạo file `.env.local` (tùy chọn): + +```env +NEXT_PUBLIC_SITE_URL=http://localhost:3000 +NEXT_PUBLIC_CONTACT_EMAIL=info@visaservice.com +NEXT_PUBLIC_PHONE=1900-1234 +``` + +## 🤝 Đóng Góp + +1. Fork repository +2. Tạo feature branch: `git checkout -b feature/new-feature` +3. Commit changes: `git commit -m 'Add new feature'` +4. Push branch: `git push origin feature/new-feature` +5. Tạo Pull Request + +## 📄 License + +MIT License - xem file [LICENSE](LICENSE) để biết thêm chi tiết. + +## 📞 Hỗ Trợ + +- **Email**: info@visaservice.com +- **Phone**: 1900 1234 +- **Website**: [visaservice.com](https://visaservice.com) + +--- + +**Phát triển bởi**: VisaService Team +**Phiên bản**: 1.0.0 +**Cập nhật**: January 2025 diff --git a/app/about/about.json b/app/about/about.json new file mode 100644 index 0000000..73963bd --- /dev/null +++ b/app/about/about.json @@ -0,0 +1,33 @@ +{ + "title": "Về Chúng Tôi", + "subtitle": "Đối tác tin cậy cho dịch vụ visa và du lịch", + "description": "Chúng tôi là công ty hàng đầu trong lĩnh vực tư vấn visa và dịch vụ du lịch, với hơn 10 năm kinh nghiệm phục vụ khách hàng.", + "sections": [ + { + "heading": "Sứ Mệnh", + "content": "Mang đến cho khách hàng những trải nghiệm du lịch tuyệt vời và hỗ trợ thủ tục visa một cách nhanh chóng, chính xác." + }, + { + "heading": "Tầm Nhìn", + "content": "Trở thành công ty dẫn đầu trong lĩnh vực dịch vụ visa và du lịch tại Việt Nam." + }, + { + "heading": "Giá Trị Cốt Lõi", + "content": "Uy tín - Chất lượng - Tận tâm - Chuyên nghiệp" + } + ], + "stats": [ + { + "number": "10000+", + "label": "Khách hàng hài lòng" + }, + { + "number": "50+", + "label": "Quốc gia hỗ trợ visa" + }, + { + "number": "99%", + "label": "Tỷ lệ thành công" + } + ] +} diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..46f771d --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,49 @@ +import aboutData from "./about.json"; + +export default function AboutPage() { + return ( +
+
+ {/* Header */} +
+

+ {aboutData.title} +

+

{aboutData.subtitle}

+

+ {aboutData.description} +

+
+ + {/* Sections */} +
+ {aboutData.sections.map((section, index) => ( +
+

+ {section.heading} +

+

{section.content}

+
+ ))} +
+ + {/* Stats */} +
+

+ Thành Tích Của Chúng Tôi +

+
+ {aboutData.stats.map((stat, index) => ( +
+
+ {stat.number} +
+
{stat.label}
+
+ ))} +
+
+
+
+ ); +} diff --git a/app/appointment/appointment.json b/app/appointment/appointment.json new file mode 100644 index 0000000..eabf228 --- /dev/null +++ b/app/appointment/appointment.json @@ -0,0 +1,255 @@ +{ + "title": "Đặt Lịch Tư Vấn", + "subtitle": "Nhận tư vấn miễn phí từ chuyên gia visa của chúng tôi", + "hero": { + "title": "Tư Vấn Visa Miễn Phí", + "description": "Đặt lịch hẹn với chuyên gia để được tư vấn chi tiết về visa và dịch vụ phù hợp nhất cho bạn.", + "benefits": [ + "Tư vấn 1-1 với chuyên gia", + "Phân tích hồ sơ miễn phí", + "Báo giá chi tiết", + "Lộ trình xin visa rõ ràng" + ] + }, + "appointmentTypes": [ + { + "id": "consultation", + "name": "Tư Vấn Tổng Quát", + "duration": "30 phút", + "price": "Miễn phí", + "description": "Tư vấn về loại visa phù hợp, yêu cầu cơ bản và quy trình xin visa", + "icon": "💬", + "popular": true + }, + { + "id": "document-review", + "name": "Kiểm Tra Hồ Sơ", + "duration": "45 phút", + "price": "500,000 VNĐ", + "description": "Kiểm tra chi tiết hồ sơ hiện tại và đưa ra lời khuyên cải thiện", + "icon": "📋", + "popular": false + }, + { + "id": "interview-prep", + "name": "Luyện Phỏng Vấn", + "duration": "60 phút", + "price": "800,000 VNĐ", + "description": "Luyện tập kỹ năng phỏng vấn visa với chuyên gia có kinh nghiệm", + "icon": "🎯", + "popular": false + }, + { + "id": "premium", + "name": "Tư Vấn Cao Cấp", + "duration": "90 phút", + "price": "1,200,000 VNĐ", + "description": "Tư vấn toàn diện bao gồm chiến lược, hồ sơ và luyện phỏng vấn", + "icon": "⭐", + "popular": false + } + ], + "timeSlots": [ + { + "time": "08:00", + "label": "8:00 AM", + "available": true + }, + { + "time": "09:00", + "label": "9:00 AM", + "available": true + }, + { + "time": "10:00", + "label": "10:00 AM", + "available": false + }, + { + "time": "11:00", + "label": "11:00 AM", + "available": true + }, + { + "time": "13:00", + "label": "1:00 PM", + "available": true + }, + { + "time": "14:00", + "label": "2:00 PM", + "available": true + }, + { + "time": "15:00", + "label": "3:00 PM", + "available": false + }, + { + "time": "16:00", + "label": "4:00 PM", + "available": true + }, + { + "time": "17:00", + "label": "5:00 PM", + "available": true + } + ], + "consultants": [ + { + "id": "nguyen-van-a", + "name": "Nguyễn Văn A", + "title": "Chuyên gia Visa Mỹ & Canada", + "experience": "8 năm kinh nghiệm", + "specialties": ["Visa Mỹ", "Visa Canada", "Visa du học"], + "languages": ["Tiếng Việt", "English"], + "rating": 4.9, + "reviews": 156, + "avatar": "/images/consultant-1.jpg", + "description": "Chuyên gia hàng đầu về visa Bắc Mỹ với tỷ lệ thành công 98%" + }, + { + "id": "tran-thi-b", + "name": "Trần Thị B", + "title": "Chuyên gia Visa Châu Âu", + "experience": "6 năm kinh nghiệm", + "specialties": ["Visa Schengen", "Visa Anh", "Visa du lịch"], + "languages": ["Tiếng Việt", "English", "Français"], + "rating": 4.8, + "reviews": 203, + "avatar": "/images/consultant-2.jpg", + "description": "Chuyên gia visa châu Âu với kinh nghiệm sống và làm việc tại Pháp" + }, + { + "id": "le-van-c", + "name": "Lê Văn C", + "title": "Chuyên gia Visa Châu Á", + "experience": "5 năm kinh nghiệm", + "specialties": ["Visa Nhật Bản", "Visa Hàn Quốc", "Visa Singapore"], + "languages": ["Tiếng Việt", "日本語", "한국어"], + "rating": 4.9, + "reviews": 134, + "avatar": "/images/consultant-3.jpg", + "description": "Chuyên gia visa châu Á với khả năng giao tiếp đa ngôn ngữ" + } + ], + "formFields": [ + { + "name": "fullName", + "label": "Họ và tên", + "type": "text", + "required": true, + "placeholder": "Nhập họ và tên đầy đủ" + }, + { + "name": "email", + "label": "Email", + "type": "email", + "required": true, + "placeholder": "example@email.com" + }, + { + "name": "phone", + "label": "Số điện thoại", + "type": "tel", + "required": true, + "placeholder": "+84 xxx xxx xxx" + }, + { + "name": "visaType", + "label": "Loại visa quan tâm", + "type": "select", + "required": true, + "options": [ + "Visa du lịch", + "Visa công tác", + "Visa du học", + "Visa thăm thân", + "Visa lao động", + "Chưa xác định" + ] + }, + { + "name": "country", + "label": "Quốc gia đích", + "type": "select", + "required": true, + "options": [ + "Mỹ", + "Canada", + "Schengen", + "Anh", + "Úc", + "Nhật Bản", + "Hàn Quốc", + "Singapore", + "Khác" + ] + }, + { + "name": "travelDate", + "label": "Dự kiến ngày đi", + "type": "date", + "required": false, + "placeholder": "" + }, + { + "name": "previousVisa", + "label": "Đã từng xin visa nước này?", + "type": "select", + "required": false, + "options": [ + "Chưa bao giờ", + "Đã xin và được duyệt", + "Đã xin nhưng bị từ chối", + "Đang trong quá trình xin" + ] + }, + { + "name": "notes", + "label": "Ghi chú thêm", + "type": "textarea", + "required": false, + "placeholder": "Mô tả thêm về tình huống của bạn..." + } + ], + "faqs": [ + { + "question": "Tư vấn có thực sự miễn phí không?", + "answer": "Có, buổi tư vấn tổng quát 30 phút đầu tiên hoàn toàn miễn phí. Bạn chỉ cần đặt lịch và tham gia." + }, + { + "question": "Tôi có thể hủy hoặc đổi lịch hẹn không?", + "answer": "Có, bạn có thể hủy hoặc đổi lịch hẹn trước 24 giờ mà không mất phí. Liên hệ với chúng tôi để thay đổi." + }, + { + "question": "Buổi tư vấn diễn ra như thế nào?", + "answer": "Buổi tư vấn có thể diễn ra trực tiếp tại văn phòng hoặc online qua video call tùy theo lựa chọn của bạn." + }, + { + "question": "Tôi cần chuẩn bị gì cho buổi tư vấn?", + "answer": "Bạn nên chuẩn bị các câu hỏi cụ thể và nếu có, mang theo hộ chiếu và các giấy tờ liên quan để được tư vấn chính xác hơn." + } + ], + "offices": [ + { + "name": "TP. Hồ Chí Minh", + "address": "123 Nguyễn Huệ, Quận 1", + "phone": "+84 28 1234 5678", + "hours": "8:00 - 18:00 (T2-T6), 8:00 - 12:00 (T7)" + }, + { + "name": "Hà Nội", + "address": "456 Hoàn Kiếm, Hà Nội", + "phone": "+84 24 1234 5678", + "hours": "8:00 - 18:00 (T2-T6), 8:00 - 12:00 (T7)" + }, + { + "name": "Đà Nẵng", + "address": "789 Hải Châu, Đà Nẵng", + "phone": "+84 236 1234 567", + "hours": "8:00 - 18:00 (T2-T6), 8:00 - 12:00 (T7)" + } + ] +} diff --git a/app/appointment/page.tsx b/app/appointment/page.tsx new file mode 100644 index 0000000..d1667bc --- /dev/null +++ b/app/appointment/page.tsx @@ -0,0 +1,501 @@ +"use client"; + +import { useState } from "react"; +import appointmentData from "./appointment.json"; + +export default function AppointmentPage() { + const [selectedType, setSelectedType] = useState("consultation"); + const [selectedConsultant, setSelectedConsultant] = useState(""); + const [selectedDate, setSelectedDate] = useState(""); + const [selectedTime, setSelectedTime] = useState(""); + const [selectedOffice, setSelectedOffice] = useState("online"); + const [openFaq, setOpenFaq] = useState(null); + + const [formData, setFormData] = useState({ + fullName: "", + email: "", + phone: "", + visaType: "", + country: "", + travelDate: "", + previousVisa: "", + notes: "", + }); + + const handleInputChange = ( + e: React.ChangeEvent< + HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement + >, + ) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + console.log("Appointment booked:", { + type: selectedType, + consultant: selectedConsultant, + date: selectedDate, + time: selectedTime, + office: selectedOffice, + ...formData, + }); + alert( + "Đặt lịch thành công! Chúng tôi sẽ liên hệ xác nhận trong thời gian sớm nhất.", + ); + }; + + const toggleFaq = (index: number) => { + setOpenFaq(openFaq === index ? null : index); + }; + + const selectedAppointmentType = appointmentData.appointmentTypes.find( + (type) => type.id === selectedType, + ); + const selectedConsultantData = appointmentData.consultants.find( + (c) => c.id === selectedConsultant, + ); + + return ( +
+
+ {/* Header */} +
+

+ {appointmentData.title} +

+

+ {appointmentData.subtitle} +

+ + {/* Benefits */} +
+ {appointmentData.hero.benefits.map((benefit, index) => ( +
+

{benefit}

+
+ ))} +
+
+ +
+ {/* Booking Form */} +
+
+

+ Đặt Lịch Hẹn +

+ +
+ {/* Appointment Type */} +
+ +
+ {appointmentData.appointmentTypes.map((type) => ( +
setSelectedType(type.id)} + > +
+
+ {type.icon} +
+

{type.name}

+ {type.popular && ( + + Phổ biến + + )} +
+
+
+
+ {type.price} +
+
+ {type.duration} +
+
+
+

+ {type.description} +

+
+ ))} +
+
+ + {/* Consultant Selection */} +
+ +
+
setSelectedConsultant("")} + > +
+ Để chúng tôi chọn chuyên gia phù hợp +
+
+ Dựa trên loại visa và quốc gia bạn quan tâm +
+
+ + {appointmentData.consultants.map((consultant) => ( +
setSelectedConsultant(consultant.id)} + > +
+
+ 👤 +
+
+
+ {consultant.name} +
+
+ {consultant.title} +
+
+ + ⭐ {consultant.rating} + + + ({consultant.reviews} đánh giá) + + {consultant.experience} +
+
+
+
+ ))} +
+
+ + {/* Date & Time */} +
+
+ + setSelectedDate(e.target.value)} + min={new Date().toISOString().split("T")[0]} + required + className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" + /> +
+ +
+ + +
+
+ + {/* Office Selection */} +
+ +
+
setSelectedOffice("online")} + > +
+ 💻 +
+
Tư vấn online
+
+ Video call qua Zoom/Google Meet +
+
+
+
+ + {appointmentData.offices.map((office, index) => ( +
setSelectedOffice(office.name)} + > +
+ 🏢 +
+
+ Văn phòng {office.name} +
+
+ {office.address} +
+
+ {office.hours} +
+
+
+
+ ))} +
+
+ + {/* Personal Information */} +
+

+ Thông Tin Cá Nhân +

+
+ {appointmentData.formFields.map((field) => ( +
+ + + {field.type === "textarea" ? ( + ",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0num)counter.beginAt=num;var isTime=/[0-9]+:[0-9]+:[0-9]+/.test(num);if(isTime){var times=num.split(":"),m=1;s=0;while(times.length>0){s+=m*parseInt(times.pop(),10);m*=60}}for(var i=divisions;i>=counter.beginAt/num*divisions;i--){var newNum=parseFloat(num/divisions*i).toFixed(decimalPlaces);if(isTime){newNum=parseInt(s/divisions*i);var hours=parseInt(newNum/3600)%24;var minutes=parseInt(newNum/60)%60;var seconds=parseInt(newNum%60,10);newNum=(hours<10?"0"+hours:hours)+":"+(minutes<10?"0"+minutes:minutes)+":"+(seconds<10?"0"+seconds:seconds)}if(isComma){while(/(\d+)(\d{3})/.test(newNum.toString())){newNum=newNum.toString().replace(/(\d+)(\d{3})/,"$1"+","+"$2")}}if(settings.formatter){newNum=settings.formatter.call(this,newNum)}nums.unshift(newNum)}$this.data("counterup-nums",nums);$this.text(counter.beginAt);var f=function(){if(!$this.data("counterup-nums")){settings.callback.call(this);return}$this.html($this.data("counterup-nums").shift());if($this.data("counterup-nums").length){setTimeout($this.data("counterup-func"),counter.delay)}else{$this.data("counterup-nums",null);$this.data("counterup-func",null);settings.callback.call(this)}};$this.data("counterup-func",f);setTimeout($this.data("counterup-func"),counter.delay)};$this.waypoint(function(direction){counterUpper();this.destroy()},{offset:counter.offset+"%",context:counter.context})})}})(jQuery); \ No newline at end of file diff --git a/public/assets/js/jquery.magnific-popup.min.js b/public/assets/js/jquery.magnific-popup.min.js new file mode 100644 index 0000000..6ee3a3b --- /dev/null +++ b/public/assets/js/jquery.magnific-popup.min.js @@ -0,0 +1,4 @@ +/*! Magnific Popup - v1.1.0 - 2016-02-20 +* http://dimsemenov.com/plugins/magnific-popup/ +* Copyright (c) 2016 Dmitry Semenov; */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); \ No newline at end of file diff --git a/public/assets/js/jquery.meanmenu.min.js b/public/assets/js/jquery.meanmenu.min.js new file mode 100644 index 0000000..27ced49 --- /dev/null +++ b/public/assets/js/jquery.meanmenu.min.js @@ -0,0 +1,90 @@ +/*! + * jQuery meanMenu v2.0.8 + * @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu) + * + */ +! function(e) { + "use strict"; + e.fn.meanmenu = function(n) { + var a = { + meanMenuTarget: jQuery(this), + meanMenuContainer: "body", + meanMenuClose: "X", + meanMenuCloseSize: "18px", + meanMenuOpen: "", + meanRevealPosition: "right", + meanRevealPositionDistance: "0", + meanRevealColour: "", + meanScreenWidth: "480", + meanNavPush: "", + meanShowChildren: !0, + meanExpandableChildren: !0, + meanRemoveAttrs: !1, + onePage: !1, + meanDisplay: "block", + removeElements: "" + }; + n = e.extend(a, n); + var t = window.innerWidth || document.documentElement.clientWidth; + return this.each(function() { + var e = n.meanMenuTarget, + a = n.meanMenuContainer, + r = n.meanMenuClose, + i = n.meanMenuCloseSize, + s = n.meanMenuOpen, + u = n.meanRevealPosition, + m = n.meanRevealPositionDistance, + l = n.meanRevealColour, + o = n.meanScreenWidth, + c = n.meanNavPush, + d = n.meanShowChildren, + v = n.meanExpandableChildren, + h = n.meanExpand, + y = n.meanRemoveAttrs, + j = n.onePage, + Q = n.meanDisplay, + f = n.removeElements, + p = !1; + (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/Blackberry/i) || navigator.userAgent.match(/Windows Phone/i)) && (p = !0), (navigator.userAgent.match(/MSIE 8/i) || navigator.userAgent.match(/MSIE 7/i)) && jQuery("html").css("overflow-y", "scroll"); + var g = "", + C = function() { + if ("center" === u) { + var e = (window.innerWidth || document.documentElement.clientWidth) / 2 - 22 + "px"; + g = "left:" + e + ";right:auto;", p ? jQuery(".meanmenu-reveal").animate({ + left: e + }) : jQuery(".meanmenu-reveal").css("left", e) + } + }, + w = !1, + A = !1; + "right" === u && (g = "right:" + m + ";left:auto;"), "left" === u && (g = "left:" + m + ";right:auto;"), C(); + var M = "", + P = function() { + jQuery(".mean-bar,.mean-push").remove(), jQuery(a).removeClass("mean-container"), jQuery(e).css("display", Q), w = !1, A = !1, jQuery(f).removeClass("mean-remove") + }, + E = function() { + var n = "background:" + l + ";color:" + l + ";" + g; + if (t <= o) { + jQuery(f).addClass("mean-remove"), A = !0, jQuery(a).addClass("mean-container"), jQuery(".mean-container").prepend(''); + var u = jQuery(e).html(); + jQuery(".mean-nav").html(u), y && jQuery("nav.mean-nav ul, nav.mean-nav ul *").each(function() { + jQuery(this).is(".mean-remove") ? jQuery(this).attr("class", "mean-remove") : jQuery(this).removeAttr("class"), jQuery(this).removeAttr("id") + }), jQuery(e).before('
'), jQuery(".mean-push").css("margin-top", c), jQuery(e).hide(), jQuery(".meanmenu-reveal").show(), jQuery(".meanmenu-reveal").html(s), M = jQuery(".meanmenu-reveal"), jQuery(".mean-nav ul").hide(), d ? v ? (jQuery(".mean-nav ul ul").each(function() { + jQuery(this).children().length && jQuery(this, "li:first").parent().append('' + h + "") + }), jQuery(".mean-expand").on("click", function(e) { + e.preventDefault(), jQuery(this).hasClass("mean-clicked") ? (jQuery(this).prev("ul").slideUp(300, function() {}), jQuery(this).parent().removeClass("dropdown-opened")) : (jQuery(this).prev("ul").slideDown(300, function() {}), jQuery(this).parent().addClass("dropdown-opened")), jQuery(this).toggleClass("mean-clicked") + })) : jQuery(".mean-nav ul ul").show() : jQuery(".mean-nav ul ul").hide(), jQuery(".mean-nav ul li").last().addClass("mean-last"), M.removeClass("meanclose"), jQuery(M).click(function(e) { + e.preventDefault(), !1 === w ? (M.css("text-align", "center"), M.css("text-indent", "0"), M.css("font-size", i), jQuery(".mean-nav ul:first").slideDown(), w = !0) : (jQuery(".mean-nav ul:first").slideUp(), w = !1), M.toggleClass("meanclose"), jQuery(M).is(".meanmenu-reveal.meanclose") ? M.html(r) : M.html(s), jQuery(f).addClass("mean-remove") + }), j && jQuery(".mean-nav ul > li > a:first-child").on("click", function() { + jQuery(".mean-nav ul:first").slideUp(), w = !1, jQuery(M).toggleClass("meanclose").html(s) + }) + } else P() + }; + p || jQuery(window).resize(function() { + t = window.innerWidth || document.documentElement.clientWidth, P(), t <= o ? (E(), C()) : P() + }), jQuery(window).resize(function() { + t = window.innerWidth || document.documentElement.clientWidth, p ? (C(), t <= o ? !1 === A && E() : P()) : (P(), t <= o && (E(), C())) + }), E() + }) + } +}(jQuery); \ No newline at end of file diff --git a/public/assets/js/jquery.nice-select.min.js b/public/assets/js/jquery.nice-select.min.js new file mode 100644 index 0000000..4e9cff1 --- /dev/null +++ b/public/assets/js/jquery.nice-select.min.js @@ -0,0 +1,4 @@ + /* jQuery Nice Select - v1.0 + https://github.com/hernansartorio/jquery-nice-select + Made by Hernán Sartorio */ + !function(e){e.fn.niceSelect=function(t){function s(t){t.after(e("
").addClass("nice-select").addClass(t.attr("class")||"").addClass(t.attr("disabled")?"disabled":"").attr("tabindex",t.attr("disabled")?null:"0").html('
    '));var s=t.next(),n=t.find("option"),i=t.find("option:selected");s.find(".current").html(i.data("display")||i.text()),n.each(function(t){var n=e(this),i=n.data("display");s.find("ul").append(e("
  • ").attr("data-value",n.val()).attr("data-display",i||null).addClass("option"+(n.is(":selected")?" selected":"")+(n.is(":disabled")?" disabled":"")).html(n.text()))})}if("string"==typeof t)return"update"==t?this.each(function(){var t=e(this),n=e(this).next(".nice-select"),i=n.hasClass("open");n.length&&(n.remove(),s(t),i&&t.next().trigger("click"))}):"destroy"==t?(this.each(function(){var t=e(this),s=e(this).next(".nice-select");s.length&&(s.remove(),t.css("display",""))}),0==e(".nice-select").length&&e(document).off(".nice_select")):console.log('Method "'+t+'" does not exist.'),this;this.hide(),this.each(function(){var t=e(this);t.next().hasClass("nice-select")||s(t)}),e(document).off(".nice_select"),e(document).on("click.nice_select",".nice-select",function(t){var s=e(this);e(".nice-select").not(s).removeClass("open"),s.toggleClass("open"),s.hasClass("open")?(s.find(".option"),s.find(".focus").removeClass("focus"),s.find(".selected").addClass("focus")):s.focus()}),e(document).on("click.nice_select",function(t){0===e(t.target).closest(".nice-select").length&&e(".nice-select").removeClass("open").find(".option")}),e(document).on("click.nice_select",".nice-select .option:not(.disabled)",function(t){var s=e(this),n=s.closest(".nice-select");n.find(".selected").removeClass("selected"),s.addClass("selected");var i=s.data("display")||s.text();n.find(".current").text(i),n.prev("select").val(s.data("value")).trigger("change")}),e(document).on("keydown.nice_select",".nice-select",function(t){var s=e(this),n=e(s.find(".focus")||s.find(".list .option.selected"));if(32==t.keyCode||13==t.keyCode)return s.hasClass("open")?n.trigger("click"):s.trigger("click"),!1;if(40==t.keyCode){if(s.hasClass("open")){var i=n.nextAll(".option:not(.disabled)").first();i.length>0&&(s.find(".focus").removeClass("focus"),i.addClass("focus"))}else s.trigger("click");return!1}if(38==t.keyCode){if(s.hasClass("open")){var l=n.prevAll(".option:not(.disabled)").first();l.length>0&&(s.find(".focus").removeClass("focus"),l.addClass("focus"))}else s.trigger("click");return!1}if(27==t.keyCode)s.hasClass("open")&&s.trigger("click");else if(9==t.keyCode&&s.hasClass("open"))return!1});var n=document.createElement("a").style;return n.cssText="pointer-events:auto","auto"!==n.pointerEvents&&e("html").addClass("no-csspointerevents"),this}}(jQuery); \ No newline at end of file diff --git a/public/assets/js/jquery.waypoints.js b/public/assets/js/jquery.waypoints.js new file mode 100644 index 0000000..d70b245 --- /dev/null +++ b/public/assets/js/jquery.waypoints.js @@ -0,0 +1,662 @@ +/*! +Waypoints - 4.0.1 +Copyright © 2011-2016 Caleb Troughton +Licensed under the MIT license. +https://github.com/imakewebthings/waypoints/blob/master/licenses.txt +*/ +(function() { + 'use strict' + + var keyCounter = 0 + var allWaypoints = {} + + /* http://imakewebthings.com/waypoints/api/waypoint */ + function Waypoint(options) { + if (!options) { + throw new Error('No options passed to Waypoint constructor') + } + if (!options.element) { + throw new Error('No element option passed to Waypoint constructor') + } + if (!options.handler) { + throw new Error('No handler option passed to Waypoint constructor') + } + + this.key = 'waypoint-' + keyCounter + this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options) + this.element = this.options.element + this.adapter = new Waypoint.Adapter(this.element) + this.callback = options.handler + this.axis = this.options.horizontal ? 'horizontal' : 'vertical' + this.enabled = this.options.enabled + this.triggerPoint = null + this.group = Waypoint.Group.findOrCreate({ + name: this.options.group, + axis: this.axis + }) + this.context = Waypoint.Context.findOrCreateByElement(this.options.context) + + if (Waypoint.offsetAliases[this.options.offset]) { + this.options.offset = Waypoint.offsetAliases[this.options.offset] + } + this.group.add(this) + this.context.add(this) + allWaypoints[this.key] = this + keyCounter += 1 + } + + /* Private */ + Waypoint.prototype.queueTrigger = function(direction) { + this.group.queueTrigger(this, direction) + } + + /* Private */ + Waypoint.prototype.trigger = function(args) { + if (!this.enabled) { + return + } + if (this.callback) { + this.callback.apply(this, args) + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/destroy */ + Waypoint.prototype.destroy = function() { + this.context.remove(this) + this.group.remove(this) + delete allWaypoints[this.key] + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/disable */ + Waypoint.prototype.disable = function() { + this.enabled = false + return this + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/enable */ + Waypoint.prototype.enable = function() { + this.context.refresh() + this.enabled = true + return this + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/next */ + Waypoint.prototype.next = function() { + return this.group.next(this) + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/previous */ + Waypoint.prototype.previous = function() { + return this.group.previous(this) + } + + /* Private */ + Waypoint.invokeAll = function(method) { + var allWaypointsArray = [] + for (var waypointKey in allWaypoints) { + allWaypointsArray.push(allWaypoints[waypointKey]) + } + for (var i = 0, end = allWaypointsArray.length; i < end; i++) { + allWaypointsArray[i][method]() + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/destroy-all */ + Waypoint.destroyAll = function() { + Waypoint.invokeAll('destroy') + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/disable-all */ + Waypoint.disableAll = function() { + Waypoint.invokeAll('disable') + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/enable-all */ + Waypoint.enableAll = function() { + Waypoint.Context.refreshAll() + for (var waypointKey in allWaypoints) { + allWaypoints[waypointKey].enabled = true + } + return this + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/refresh-all */ + Waypoint.refreshAll = function() { + Waypoint.Context.refreshAll() + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/viewport-height */ + Waypoint.viewportHeight = function() { + return window.innerHeight || document.documentElement.clientHeight + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/viewport-width */ + Waypoint.viewportWidth = function() { + return document.documentElement.clientWidth + } + + Waypoint.adapters = [] + + Waypoint.defaults = { + context: window, + continuous: true, + enabled: true, + group: 'default', + horizontal: false, + offset: 0 + } + + Waypoint.offsetAliases = { + 'bottom-in-view': function() { + return this.context.innerHeight() - this.adapter.outerHeight() + }, + 'right-in-view': function() { + return this.context.innerWidth() - this.adapter.outerWidth() + } + } + + window.Waypoint = Waypoint +}()) +;(function() { + 'use strict' + + function requestAnimationFrameShim(callback) { + window.setTimeout(callback, 1000 / 60) + } + + var keyCounter = 0 + var contexts = {} + var Waypoint = window.Waypoint + var oldWindowLoad = window.onload + + /* http://imakewebthings.com/waypoints/api/context */ + function Context(element) { + this.element = element + this.Adapter = Waypoint.Adapter + this.adapter = new this.Adapter(element) + this.key = 'waypoint-context-' + keyCounter + this.didScroll = false + this.didResize = false + this.oldScroll = { + x: this.adapter.scrollLeft(), + y: this.adapter.scrollTop() + } + this.waypoints = { + vertical: {}, + horizontal: {} + } + + element.waypointContextKey = this.key + contexts[element.waypointContextKey] = this + keyCounter += 1 + if (!Waypoint.windowContext) { + Waypoint.windowContext = true + Waypoint.windowContext = new Context(window) + } + + this.createThrottledScrollHandler() + this.createThrottledResizeHandler() + } + + /* Private */ + Context.prototype.add = function(waypoint) { + var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical' + this.waypoints[axis][waypoint.key] = waypoint + this.refresh() + } + + /* Private */ + Context.prototype.checkEmpty = function() { + var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal) + var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical) + var isWindow = this.element == this.element.window + if (horizontalEmpty && verticalEmpty && !isWindow) { + this.adapter.off('.waypoints') + delete contexts[this.key] + } + } + + /* Private */ + Context.prototype.createThrottledResizeHandler = function() { + var self = this + + function resizeHandler() { + self.handleResize() + self.didResize = false + } + + this.adapter.on('resize.waypoints', function() { + if (!self.didResize) { + self.didResize = true + Waypoint.requestAnimationFrame(resizeHandler) + } + }) + } + + /* Private */ + Context.prototype.createThrottledScrollHandler = function() { + var self = this + function scrollHandler() { + self.handleScroll() + self.didScroll = false + } + + this.adapter.on('scroll.waypoints', function() { + if (!self.didScroll || Waypoint.isTouch) { + self.didScroll = true + Waypoint.requestAnimationFrame(scrollHandler) + } + }) + } + + /* Private */ + Context.prototype.handleResize = function() { + Waypoint.Context.refreshAll() + } + + /* Private */ + Context.prototype.handleScroll = function() { + var triggeredGroups = {} + var axes = { + horizontal: { + newScroll: this.adapter.scrollLeft(), + oldScroll: this.oldScroll.x, + forward: 'right', + backward: 'left' + }, + vertical: { + newScroll: this.adapter.scrollTop(), + oldScroll: this.oldScroll.y, + forward: 'down', + backward: 'up' + } + } + + for (var axisKey in axes) { + var axis = axes[axisKey] + var isForward = axis.newScroll > axis.oldScroll + var direction = isForward ? axis.forward : axis.backward + + for (var waypointKey in this.waypoints[axisKey]) { + var waypoint = this.waypoints[axisKey][waypointKey] + if (waypoint.triggerPoint === null) { + continue + } + var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint + var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint + var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint + var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint + if (crossedForward || crossedBackward) { + waypoint.queueTrigger(direction) + triggeredGroups[waypoint.group.id] = waypoint.group + } + } + } + + for (var groupKey in triggeredGroups) { + triggeredGroups[groupKey].flushTriggers() + } + + this.oldScroll = { + x: axes.horizontal.newScroll, + y: axes.vertical.newScroll + } + } + + /* Private */ + Context.prototype.innerHeight = function() { + /*eslint-disable eqeqeq */ + if (this.element == this.element.window) { + return Waypoint.viewportHeight() + } + /*eslint-enable eqeqeq */ + return this.adapter.innerHeight() + } + + /* Private */ + Context.prototype.remove = function(waypoint) { + delete this.waypoints[waypoint.axis][waypoint.key] + this.checkEmpty() + } + + /* Private */ + Context.prototype.innerWidth = function() { + /*eslint-disable eqeqeq */ + if (this.element == this.element.window) { + return Waypoint.viewportWidth() + } + /*eslint-enable eqeqeq */ + return this.adapter.innerWidth() + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/context-destroy */ + Context.prototype.destroy = function() { + var allWaypoints = [] + for (var axis in this.waypoints) { + for (var waypointKey in this.waypoints[axis]) { + allWaypoints.push(this.waypoints[axis][waypointKey]) + } + } + for (var i = 0, end = allWaypoints.length; i < end; i++) { + allWaypoints[i].destroy() + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/context-refresh */ + Context.prototype.refresh = function() { + /*eslint-disable eqeqeq */ + var isWindow = this.element == this.element.window + /*eslint-enable eqeqeq */ + var contextOffset = isWindow ? undefined : this.adapter.offset() + var triggeredGroups = {} + var axes + + this.handleScroll() + axes = { + horizontal: { + contextOffset: isWindow ? 0 : contextOffset.left, + contextScroll: isWindow ? 0 : this.oldScroll.x, + contextDimension: this.innerWidth(), + oldScroll: this.oldScroll.x, + forward: 'right', + backward: 'left', + offsetProp: 'left' + }, + vertical: { + contextOffset: isWindow ? 0 : contextOffset.top, + contextScroll: isWindow ? 0 : this.oldScroll.y, + contextDimension: this.innerHeight(), + oldScroll: this.oldScroll.y, + forward: 'down', + backward: 'up', + offsetProp: 'top' + } + } + + for (var axisKey in axes) { + var axis = axes[axisKey] + for (var waypointKey in this.waypoints[axisKey]) { + var waypoint = this.waypoints[axisKey][waypointKey] + var adjustment = waypoint.options.offset + var oldTriggerPoint = waypoint.triggerPoint + var elementOffset = 0 + var freshWaypoint = oldTriggerPoint == null + var contextModifier, wasBeforeScroll, nowAfterScroll + var triggeredBackward, triggeredForward + + if (waypoint.element !== waypoint.element.window) { + elementOffset = waypoint.adapter.offset()[axis.offsetProp] + } + + if (typeof adjustment === 'function') { + adjustment = adjustment.apply(waypoint) + } + else if (typeof adjustment === 'string') { + adjustment = parseFloat(adjustment) + if (waypoint.options.offset.indexOf('%') > - 1) { + adjustment = Math.ceil(axis.contextDimension * adjustment / 100) + } + } + + contextModifier = axis.contextScroll - axis.contextOffset + waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment) + wasBeforeScroll = oldTriggerPoint < axis.oldScroll + nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll + triggeredBackward = wasBeforeScroll && nowAfterScroll + triggeredForward = !wasBeforeScroll && !nowAfterScroll + + if (!freshWaypoint && triggeredBackward) { + waypoint.queueTrigger(axis.backward) + triggeredGroups[waypoint.group.id] = waypoint.group + } + else if (!freshWaypoint && triggeredForward) { + waypoint.queueTrigger(axis.forward) + triggeredGroups[waypoint.group.id] = waypoint.group + } + else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) { + waypoint.queueTrigger(axis.forward) + triggeredGroups[waypoint.group.id] = waypoint.group + } + } + } + + Waypoint.requestAnimationFrame(function() { + for (var groupKey in triggeredGroups) { + triggeredGroups[groupKey].flushTriggers() + } + }) + + return this + } + + /* Private */ + Context.findOrCreateByElement = function(element) { + return Context.findByElement(element) || new Context(element) + } + + /* Private */ + Context.refreshAll = function() { + for (var contextId in contexts) { + contexts[contextId].refresh() + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/context-find-by-element */ + Context.findByElement = function(element) { + return contexts[element.waypointContextKey] + } + + window.onload = function() { + if (oldWindowLoad) { + oldWindowLoad() + } + Context.refreshAll() + } + + + Waypoint.requestAnimationFrame = function(callback) { + var requestFn = window.requestAnimationFrame || + window.mozRequestAnimationFrame || + window.webkitRequestAnimationFrame || + requestAnimationFrameShim + requestFn.call(window, callback) + } + Waypoint.Context = Context +}()) +;(function() { + 'use strict' + + function byTriggerPoint(a, b) { + return a.triggerPoint - b.triggerPoint + } + + function byReverseTriggerPoint(a, b) { + return b.triggerPoint - a.triggerPoint + } + + var groups = { + vertical: {}, + horizontal: {} + } + var Waypoint = window.Waypoint + + /* http://imakewebthings.com/waypoints/api/group */ + function Group(options) { + this.name = options.name + this.axis = options.axis + this.id = this.name + '-' + this.axis + this.waypoints = [] + this.clearTriggerQueues() + groups[this.axis][this.name] = this + } + + /* Private */ + Group.prototype.add = function(waypoint) { + this.waypoints.push(waypoint) + } + + /* Private */ + Group.prototype.clearTriggerQueues = function() { + this.triggerQueues = { + up: [], + down: [], + left: [], + right: [] + } + } + + /* Private */ + Group.prototype.flushTriggers = function() { + for (var direction in this.triggerQueues) { + var waypoints = this.triggerQueues[direction] + var reverse = direction === 'up' || direction === 'left' + waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint) + for (var i = 0, end = waypoints.length; i < end; i += 1) { + var waypoint = waypoints[i] + if (waypoint.options.continuous || i === waypoints.length - 1) { + waypoint.trigger([direction]) + } + } + } + this.clearTriggerQueues() + } + + /* Private */ + Group.prototype.next = function(waypoint) { + this.waypoints.sort(byTriggerPoint) + var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) + var isLast = index === this.waypoints.length - 1 + return isLast ? null : this.waypoints[index + 1] + } + + /* Private */ + Group.prototype.previous = function(waypoint) { + this.waypoints.sort(byTriggerPoint) + var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) + return index ? this.waypoints[index - 1] : null + } + + /* Private */ + Group.prototype.queueTrigger = function(waypoint, direction) { + this.triggerQueues[direction].push(waypoint) + } + + /* Private */ + Group.prototype.remove = function(waypoint) { + var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) + if (index > -1) { + this.waypoints.splice(index, 1) + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/first */ + Group.prototype.first = function() { + return this.waypoints[0] + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/last */ + Group.prototype.last = function() { + return this.waypoints[this.waypoints.length - 1] + } + + /* Private */ + Group.findOrCreate = function(options) { + return groups[options.axis][options.name] || new Group(options) + } + + Waypoint.Group = Group +}()) +;(function() { + 'use strict' + + var $ = window.jQuery + var Waypoint = window.Waypoint + + function JQueryAdapter(element) { + this.$element = $(element) + } + + $.each([ + 'innerHeight', + 'innerWidth', + 'off', + 'offset', + 'on', + 'outerHeight', + 'outerWidth', + 'scrollLeft', + 'scrollTop' + ], function(i, method) { + JQueryAdapter.prototype[method] = function() { + var args = Array.prototype.slice.call(arguments) + return this.$element[method].apply(this.$element, args) + } + }) + + $.each([ + 'extend', + 'inArray', + 'isEmptyObject' + ], function(i, method) { + JQueryAdapter[method] = $[method] + }) + + Waypoint.adapters.push({ + name: 'jquery', + Adapter: JQueryAdapter + }) + Waypoint.Adapter = JQueryAdapter +}()) +;(function() { + 'use strict' + + var Waypoint = window.Waypoint + + function createExtension(framework) { + return function() { + var waypoints = [] + var overrides = arguments[0] + + if (framework.isFunction(arguments[0])) { + overrides = framework.extend({}, arguments[1]) + overrides.handler = arguments[0] + } + + this.each(function() { + var options = framework.extend({}, overrides, { + element: this + }) + if (typeof options.context === 'string') { + options.context = framework(this).closest(options.context)[0] + } + waypoints.push(new Waypoint(options)) + }) + + return waypoints + } + } + + if (window.jQuery) { + window.jQuery.fn.waypoint = createExtension(window.jQuery) + } + if (window.Zepto) { + window.Zepto.fn.waypoint = createExtension(window.Zepto) + } +}()) +; \ No newline at end of file diff --git a/public/assets/js/lenis.min.js b/public/assets/js/lenis.min.js new file mode 100644 index 0000000..45d49e6 --- /dev/null +++ b/public/assets/js/lenis.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t||self).Lenis=e()}(this,function(){function o(t,e){for(var i,o=0;oMath.abs(o)?n:o:"horizontal"===r.options.gestureOrientation&&(s=o);o=t&&r.options.syncTouch,i=t&&i&&1> Mobile Menu Js Start <'], + }); + + $('#mobile-menus').meanmenu({ + meanMenuContainer: '.mobile-menus', + meanScreenWidth: "1920", + meanExpand: [''], + }); + + //>> Sidebar Toggle Js Start <> Body Overlay Js Start <= $(document).height()) { + $("#back-top").addClass("show"); + } else { + $("#back-top").removeClass("show"); + } + } + + // On scroll + $windowOn.on('scroll', function() { + toggleBackTop(); + }); + + // On document ready, force hide the button + $(document).ready(function() { + $("#back-top").removeClass("show"); + }); + + // On click + $documentOn.on('click', '#back-top', function() { + $('html, body').animate({ scrollTop: 0 }, 800); + return false; + }); + + + //>> Sticky Header Js Start < 250) { + $("#header-sticky").addClass("sticky"); + } else { + $("#header-sticky").removeClass("sticky"); + } + }); + + //>> Video Popup Start <> Wow Animation Start <> Nice Select Start <"); + }); + } + + + //>> Hero Slider Start < + ${dotContent[index]?.outerHTML || ""} + + `; + }, + }, + }); + + //>> Image Slider Start < + ${dotContent[index]?.outerHTML || ""} + + `; + }, + }, + speed: 800, + effect: "slide", + on: { + slideChangeTransitionStart: function () { + document.querySelectorAll('.hero-image img').forEach(img => { + img.classList.remove('animate__fadeInUp'); + }); + }, + slideChangeTransitionEnd: function () { + let activeImg = document.querySelector('.swiper-slide-active .hero-image img'); + if(activeImg){ + activeImg.classList.add('animate__animated', 'animate__fadeInUp'); + } + } + } + }); + + //>>Testimonial Slider Start < 0) { + const TestimonialSlider = new Swiper(".testimonial-slider", { + spaceBetween: 30, + speed: 1300, + loop: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + breakpoints: { + 1199: { + slidesPerView: 2, + }, + 991: { + slidesPerView: 2, + }, + 767: { + slidesPerView: 1, + }, + 575: { + slidesPerView: 1, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + // Create mask divs for each wrapper + + document.querySelectorAll(".tp-clip-anim").forEach(wrapper => { + const img = wrapper.querySelector(".tp-anim-img[data-animate='true']"); + if (!img) return; + const url = img.src; + + // ensure wrapper position relative + wrapper.style.position = "relative"; + + // IntersectionObserver + const observer = new IntersectionObserver((entries, obs) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + wrapper.querySelectorAll(".mask").forEach(m => m.remove()); + + // Create 9 masks + for (let i = 0; i < 9; i++) { + const mask = document.createElement("div"); + mask.className = `mask mask-${i + 1}`; + Object.assign(mask.style, { + backgroundImage: `url(${url})`, + backgroundSize: "cover", + backgroundPosition: "center", + position: "absolute", + inset: "0" + }); + wrapper.appendChild(mask); + } + + // observer stop + obs.unobserve(entry.target); + } + }); + }, { threshold: 0.2 }); + + observer.observe(wrapper); + }); + + //>> Gt Brand Slider Start < 0) { + const BrandSlider = new Swiper(".brand-slider", { + spaceBetween: 30, + speed: 1300, + loop: true, + centeredSlides: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + + breakpoints: { + 1199: { + slidesPerView: 5, + }, + 991: { + slidesPerView: 4, + }, + 767: { + slidesPerView: 3, + }, + 575: { + slidesPerView: 2, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + //>> Service Slider Start < 0) { + const ServiceSlider = new Swiper(".service-slider", { + spaceBetween: 0, + speed: 1300, + loop: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + navigation: { + nextEl: ".array-prev", + prevEl: ".array-next", + }, + pagination: { + el: ".service-dot", + }, + breakpoints: { + 1199: { + slidesPerView: 4, + }, + 991: { + slidesPerView: 3, + }, + 767: { + slidesPerView: 2, + }, + 575: { + slidesPerView: 1, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + //>> Testimonial Slider Start < 0) { + const TestimonialSlider2 = new Swiper(".testimonial-slider-2", { + spaceBetween: 30, + speed: 1300, + loop: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + + breakpoints: { + 1199: { + slidesPerView: 1, + }, + 991: { + slidesPerView: 1, + }, + 767: { + slidesPerView: 1, + }, + 575: { + slidesPerView: 1, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + //>> Test Slider Start < 0) { + const TestSlider = new Swiper(".test-slider", { + direction: "vertical", + spaceBetween: 30, + speed: 1300, + loop: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + + breakpoints: { + 1199: { + slidesPerView: 3, + }, + 991: { + slidesPerView: 2, + }, + 767: { + slidesPerView: 1, + }, + 575: { + slidesPerView: 1, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + //>> Visa Slider Start < 0) { + const VisaSlider = new Swiper(".visa-slider", { + spaceBetween: 30, + speed: 1300, + loop: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + + navigation: { + nextEl: ".array-prev", + prevEl: ".array-next", + }, + breakpoints: { + 1199: { + slidesPerView: 4, + }, + 991: { + slidesPerView: 3, + }, + 767: { + slidesPerView: 2, + }, + 575: { + slidesPerView: 1, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + + //>> Visa Slider Start < 0) { + const TestimonialSlider3 = new Swiper(".testimonial-slider-3", { + spaceBetween: 30, + speed: 1300, + loop: true, + autoplay: { + delay: 2000, + disableOnInteraction: false, + }, + + navigation: { + nextEl: ".array-prev", + prevEl: ".array-next", + }, + breakpoints: { + 1199: { + slidesPerView: 1, + }, + 991: { + slidesPerView: 1, + }, + 767: { + slidesPerView: 1, + }, + 575: { + slidesPerView: 1, + }, + 0: { + slidesPerView: 1, + }, + }, + }); + } + + //>> Service-item Hover Image Show Slider Start < { + const imageHover = item.querySelector(".image-hover"); + + item.addEventListener("mousemove", (event) => { + const rect = item.getBoundingClientRect(); + const dx = event.clientX - rect.left; + const dy = event.clientY - rect.top; + imageHover.style.transform = `translate(${dx}px, ${dy}px) translate(-50%, -50%)`; + // imageHover.style.transform = `translate(${dx}px, ${dy}px) rotate(28.57deg)`; + imageHover.style.opacity = "1"; + imageHover.style.visibility = "visible"; + }); + + item.addEventListener("mouseleave", () => { + imageHover.style.opacity = "0"; + imageHover.style.visibility = "hidden"; + }); + }); + + /* ================================ + Custom Accordion Js Start + ================================ */ + $(".accordion-single .header-area").on("click", function () { + if ($(this).closest(".accordion-single").hasClass("active")) { + $(this).closest(".accordion-single").removeClass("active"); + $(this).next(".content-area").slideUp(); + } else { + $(".accordion-single").removeClass("active"); + $(this).closest(".accordion-single").addClass("active"); + $(".content-area").not($(this).next(".content-area")).slideUp(); + $(this).next(".content-area").slideToggle(); + } + }); + + //>> Counter Js Start < 1023) { + if (document.querySelectorAll(".image-scale-animation").length > 0) { + + // plugin register করতে হবে একবার শুরুতেই + gsap.registerPlugin(ScrollTrigger); + + var step1 = gsap.timeline({ + scrollTrigger: { + trigger: ".image-scale-animation", + scrub: 4, + start: "top 100%", + end: "bottom 70%", + }, + }); + + step1.from(".image-scale-animation .image-scale-animation-item", { + scale: 0.1, + duration: 2, // অতিরিক্ত বড় duration দরকার নেই + }); + step1.to(".image-scale-animation .image-scale-animation-item", { + scale: 1, + duration: 1.5, + transformOrigin: "center bottom", + }); + } + } + +/* ================================================== + GSAP Image Reveal + ================================================== */ + +/* ================================================== + GSAP Fade Up + ================================================== */ + let fadeArray_items = document.querySelectorAll(".fade-up-anim"); + if (fadeArray_items.length > 0) { + gsap.registerPlugin(ScrollTrigger); + + const fadeArray = gsap.utils.toArray(".fade-up-anim"); + fadeArray.forEach((item) => { + let fade_direction = item.getAttribute("data-direction") || "bottom"; + let fade_offset = parseInt(item.getAttribute("data-offset")) || 50; + let duration_value = parseFloat(item.getAttribute("data-duration")) || 1.15; + let delay_value = parseFloat(item.getAttribute("data-delay")) || 0.15; + let ease_value = item.getAttribute("data-ease") || "power2.out"; + let onscroll_value = item.getAttribute("data-on-scroll") || 1; + + let animation_settings = { + opacity: 0, + ease: ease_value, + duration: duration_value, + delay: delay_value, + }; + + if (fade_direction === "top") animation_settings['y'] = -fade_offset; + if (fade_direction === "left") animation_settings['x'] = -fade_offset; + if (fade_direction === "bottom") animation_settings['y'] = fade_offset; + if (fade_direction === "right") animation_settings['x'] = fade_offset; + + if (onscroll_value == 1) { + animation_settings['scrollTrigger'] = { + trigger: item, + start: 'top 85%', + }; + } + + gsap.from(item, animation_settings); + }); + } + +/* ================================================== + Smooth Scroll (Lenis) + ================================================== */ + // Check if gsap and SplitText exist +if (typeof gsap !== "undefined" && typeof SplitText !== "undefined") { + const splitTextEl = document.querySelector(".split-text-right"); + + if (splitTextEl) { // শুধুমাত্র এলিমেন্ট থাকলে + gsap.registerPlugin(SplitText, ScrollTrigger); + + let split = new SplitText(splitTextEl, { type: "chars,words" }); + + gsap.from(split.chars, { + opacity: 0, + y: 50, + stagger: 0.05, + duration: 1, + ease: "power3.out", + scrollTrigger: { + trigger: splitTextEl, + start: "top 80%", + toggleActions: "play none none reverse" + } + }); + } +} + + + + /* ================================================== + Smooth Scroll + ================================================== */ + const header = document.querySelector('.sticky'); + const headerHeight = header ? header.offsetHeight : 0; + + document.querySelectorAll('a[href^="#"]:not([data-bs-toggle="tab"])').forEach((el) => { + el.addEventListener('click', (e) => { + e.preventDefault(); + const id = el.getAttribute('href')?.slice(1); + if (!id) return; + const target = document.getElementById(id); + if (target) { + const offsetTop = target.offsetTop - headerHeight; + lenis.scrollTo(offsetTop, { duration: 1.2 }); + } + }); + }); + + + /* ================================================== + Mounth Year + ================================================== */ + const monthYear = document.getElementById("month-year"); + const datesContainer = document.getElementById("dates"); + const prevBtn = document.getElementById("prev"); + const nextBtn = document.getElementById("next"); + + let currentDate = new Date(2025, 7); + let selectedDateDiv = null; // + + function renderCalendar(date) { + if (!monthYear || !datesContainer) return; + + const year = date.getFullYear(); + const month = date.getMonth(); + + const monthNames = [ + "January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December" + ]; + monthYear.textContent = `${monthNames[month]} ${year}`; + + datesContainer.innerHTML = ""; + + const firstDay = new Date(year, month, 1).getDay(); + const daysInMonth = new Date(year, month + 1, 0).getDate(); + + let blanks = firstDay === 0 ? 6 : firstDay - 1; + for (let i = 0; i < blanks; i++) { + const emptyDiv = document.createElement("div"); + datesContainer.appendChild(emptyDiv); + } + + for (let d = 1; d <= daysInMonth; d++) { + const dayDiv = document.createElement("div"); + dayDiv.textContent = d; + + // Highlight specific dates (example) + if (year === 2025 && month === 7 && [25,26,27].includes(d)) { + dayDiv.classList.add("highlight"); + } + + // ✅ Click event for selecting date + dayDiv.addEventListener("click", () => { + // Remove previous active + if (selectedDateDiv) { + selectedDateDiv.classList.remove("active-date"); + } + // Add active to current + dayDiv.classList.add("active-date"); + selectedDateDiv = dayDiv; + }); + + datesContainer.appendChild(dayDiv); + } + } + + // Navigation buttons + if (prevBtn) { + prevBtn.addEventListener("click", () => { + currentDate.setMonth(currentDate.getMonth() - 1); + renderCalendar(currentDate); + selectedDateDiv = null; // reset selection on month change + }); + } + + if (nextBtn) { + nextBtn.addEventListener("click", () => { + currentDate.setMonth(currentDate.getMonth() + 1); + renderCalendar(currentDate); + selectedDateDiv = null; // reset selection on month change + }); + } + + // First render + if (monthYear && datesContainer) { + renderCalendar(currentDate); + } + + + }); // End Document Ready Function + + //>> Counterup Start <> Search Start <> MouseCursor Start < 0) { + function itCursor() { + var myCursor = jQuery(".mouseCursor"); + if (myCursor.length) { + if ($("body")) { + const e = document.querySelector(".cursor-inner"), + t = document.querySelector(".cursor-outer"); + let n, + i = 0, + o = !1; + (window.onmousemove = function(s) { + o || + (t.style.transform = + "translate(" + s.clientX + "px, " + s.clientY + "px)"), + (e.style.transform = + "translate(" + s.clientX + "px, " + s.clientY + "px)"), + (n = s.clientY), + (i = s.clientX); + }), + $("body").on( + "mouseenter", + "button, a, .cursor-pointer", + function() { + e.classList.add("cursor-hover"), + t.classList.add("cursor-hover"); + } + ), + $("body").on( + "mouseleave", + "button, a, .cursor-pointer", + function() { + ($(this).is("a", "button") && + $(this).closest(".cursor-pointer").length) || + (e.classList.remove("cursor-hover"), + t.classList.remove("cursor-hover")); + } + ), + (e.style.visibility = "visible"), + (t.style.visibility = "visible"); + } + } + } + itCursor(); + } + + function loader() { + $windowOn.on('load', function() { + // Animate loader off screen + $(".preloader").addClass('loaded'); + $(".preloader").delay(200).fadeOut(); + }); +} + + loader(); + + + })(jQuery); // End jQuery \ No newline at end of file diff --git a/public/assets/js/odometer.min.js b/public/assets/js/odometer.min.js new file mode 100644 index 0000000..fecc2ad --- /dev/null +++ b/public/assets/js/odometer.min.js @@ -0,0 +1,2 @@ +/*! odometer 0.4.8 */ +(function () { var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G = [].slice; q = '', n = '' + q + "", d = '8' + n + "", g = '', c = "(,ddd).dd", h = /^\(?([^)]*)\)?(?:(.)(d+))?$/, i = 30, f = 2e3, a = 20, j = 2, e = .5, k = 1e3 / i, b = 1e3 / a, o = "transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", y = document.createElement("div").style, p = null != y.transition || null != y.webkitTransition || null != y.mozTransition || null != y.oTransition, w = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, l = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, s = function (a) { var b; return b = document.createElement("div"), b.innerHTML = a, b.children[0] }, v = function (a, b) { return a.className = a.className.replace(new RegExp("(^| )" + b.split(" ").join("|") + "( |$)", "gi"), " ") }, r = function (a, b) { return v(a, b), a.className += " " + b }, z = function (a, b) { var c; return null != document.createEvent ? (c = document.createEvent("HTMLEvents"), c.initEvent(b, !0, !0), a.dispatchEvent(c)) : void 0 }, u = function () { var a, b; return null != (a = null != (b = window.performance) && "function" == typeof b.now ? b.now() : void 0) ? a : +new Date }, x = function (a, b) { return null == b && (b = 0), b ? (a *= Math.pow(10, b), a += .5, a = Math.floor(a), a /= Math.pow(10, b)) : Math.round(a) }, A = function (a) { return 0 > a ? Math.ceil(a) : Math.floor(a) }, t = function (a) { return a - x(a) }, C = !1, (B = function () { var a, b, c, d, e; if (!C && null != window.jQuery) { for (C = !0, d = ["html", "text"], e = [], b = 0, c = d.length; c > b; b++)a = d[b], e.push(function (a) { var b; return b = window.jQuery.fn[a], window.jQuery.fn[a] = function (a) { var c; return null == a || null == (null != (c = this[0]) ? c.odometer : void 0) ? b.apply(this, arguments) : this[0].odometer.update(a) } }(a)); return e } })(), setTimeout(B, 0), m = function () { function a(b) { var c, d, e, g, h, i, l, m, n, o, p = this; if (this.options = b, this.el = this.options.el, null != this.el.odometer) return this.el.odometer; this.el.odometer = this, m = a.options; for (d in m) g = m[d], null == this.options[d] && (this.options[d] = g); null == (h = this.options).duration && (h.duration = f), this.MAX_VALUES = this.options.duration / k / j | 0, this.resetFormat(), this.value = this.cleanValue(null != (n = this.options.value) ? n : ""), this.renderInside(), this.render(); try { for (o = ["innerHTML", "innerText", "textContent"], i = 0, l = o.length; l > i; i++)e = o[i], null != this.el[e] && !function (a) { return Object.defineProperty(p.el, a, { get: function () { var b; return "innerHTML" === a ? p.inside.outerHTML : null != (b = p.inside.innerText) ? b : p.inside.textContent }, set: function (a) { return p.update(a) } }) }(e) } catch (q) { c = q, this.watchForMutations() } } return a.prototype.renderInside = function () { return this.inside = document.createElement("div"), this.inside.className = "odometer-inside", this.el.innerHTML = "", this.el.appendChild(this.inside) }, a.prototype.watchForMutations = function () { var a, b = this; if (null != l) try { return null == this.observer && (this.observer = new l(function (a) { var c; return c = b.el.innerText, b.renderInside(), b.render(b.value), b.update(c) })), this.watchMutations = !0, this.startWatchingMutations() } catch (c) { a = c } }, a.prototype.startWatchingMutations = function () { return this.watchMutations ? this.observer.observe(this.el, { childList: !0 }) : void 0 }, a.prototype.stopWatchingMutations = function () { var a; return null != (a = this.observer) ? a.disconnect() : void 0 }, a.prototype.cleanValue = function (a) { var b; return "string" == typeof a && (a = a.replace(null != (b = this.format.radix) ? b : ".", ""), a = a.replace(/[.,]/g, ""), a = a.replace("", "."), a = parseFloat(a, 10) || 0), x(a, this.format.precision) }, a.prototype.bindTransitionEnd = function () { var a, b, c, d, e, f, g = this; if (!this.transitionEndBound) { for (this.transitionEndBound = !0, b = !1, e = o.split(" "), f = [], c = 0, d = e.length; d > c; c++)a = e[c], f.push(this.el.addEventListener(a, function () { return b ? !0 : (b = !0, setTimeout(function () { return g.render(), b = !1, z(g.el, "odometerdone") }, 0), !0) }, !1)); return f } }, a.prototype.resetFormat = function () { var a, b, d, e, f, g, i, j; if (a = null != (i = this.options.format) ? i : c, a || (a = "d"), d = h.exec(a), !d) throw new Error("Odometer: Unparsable digit format"); return j = d.slice(1, 4), g = j[0], f = j[1], b = j[2], e = (null != b ? b.length : void 0) || 0, this.format = { repeating: g, radix: f, precision: e } }, a.prototype.render = function (a) { var b, c, d, e, f, g, h; for (null == a && (a = this.value), this.stopWatchingMutations(), this.resetFormat(), this.inside.innerHTML = "", f = this.options.theme, b = this.el.className.split(" "), e = [], g = 0, h = b.length; h > g; g++)c = b[g], c.length && ((d = /^odometer-theme-(.+)$/.exec(c)) ? f = d[1] : /^odometer(-|$)/.test(c) || e.push(c)); return e.push("odometer"), p || e.push("odometer-no-transitions"), f ? e.push("odometer-theme-" + f) : e.push("odometer-auto-theme"), this.el.className = e.join(" "), this.ribbons = {}, this.formatDigits(a), this.startWatchingMutations() }, a.prototype.formatDigits = function (a) { var b, c, d, e, f, g, h, i, j, k; if (this.digits = [], this.options.formatFunction) for (d = this.options.formatFunction(a), j = d.split("").reverse(), f = 0, h = j.length; h > f; f++)c = j[f], c.match(/0-9/) ? (b = this.renderDigit(), b.querySelector(".odometer-value").innerHTML = c, this.digits.push(b), this.insertDigit(b)) : this.addSpacer(c); else for (e = !this.format.precision || !t(a) || !1, k = a.toString().split("").reverse(), g = 0, i = k.length; i > g; g++)b = k[g], "." === b && (e = !0), this.addDigit(b, e) }, a.prototype.update = function (a) { var b, c = this; return a = this.cleanValue(a), (b = a - this.value) ? (v(this.el, "odometer-animating-up odometer-animating-down odometer-animating"), b > 0 ? r(this.el, "odometer-animating-up") : r(this.el, "odometer-animating-down"), this.stopWatchingMutations(), this.animate(a), this.startWatchingMutations(), setTimeout(function () { return c.el.offsetHeight, r(c.el, "odometer-animating") }, 0), this.value = a) : void 0 }, a.prototype.renderDigit = function () { return s(d) }, a.prototype.insertDigit = function (a, b) { return null != b ? this.inside.insertBefore(a, b) : this.inside.children.length ? this.inside.insertBefore(a, this.inside.children[0]) : this.inside.appendChild(a) }, a.prototype.addSpacer = function (a, b, c) { var d; return d = s(g), d.innerHTML = a, c && r(d, c), this.insertDigit(d, b) }, a.prototype.addDigit = function (a, b) { var c, d, e, f; if (null == b && (b = !0), "-" === a) return this.addSpacer(a, null, "odometer-negation-mark"); if ("." === a) return this.addSpacer(null != (f = this.format.radix) ? f : ".", null, "odometer-radix-mark"); if (b) for (e = !1; ;) { if (!this.format.repeating.length) { if (e) throw new Error("Bad odometer format without digits"); this.resetFormat(), e = !0 } if (c = this.format.repeating[this.format.repeating.length - 1], this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1), "d" === c) break; this.addSpacer(c) } return d = this.renderDigit(), d.querySelector(".odometer-value").innerHTML = a, this.digits.push(d), this.insertDigit(d) }, a.prototype.animate = function (a) { return p && "count" !== this.options.animation ? this.animateSlide(a) : this.animateCount(a) }, a.prototype.animateCount = function (a) { var c, d, e, f, g, h = this; if (d = +a - this.value) return f = e = u(), c = this.value, (g = function () { var i, j, k; return u() - f > h.options.duration ? (h.value = a, h.render(), void z(h.el, "odometerdone")) : (i = u() - e, i > b && (e = u(), k = i / h.options.duration, j = d * k, c += j, h.render(Math.round(c))), null != w ? w(g) : setTimeout(g, b)) })() }, a.prototype.getDigitCount = function () { var a, b, c, d, e, f; for (d = 1 <= arguments.length ? G.call(arguments, 0) : [], a = e = 0, f = d.length; f > e; a = ++e)c = d[a], d[a] = Math.abs(c); return b = Math.max.apply(Math, d), Math.ceil(Math.log(b + 1) / Math.log(10)) }, a.prototype.getFrAuctionalDigitCount = function () { var a, b, c, d, e, f, g; for (e = 1 <= arguments.length ? G.call(arguments, 0) : [], b = /^\-?\d*\.(\d*?)0*$/, a = f = 0, g = e.length; g > f; a = ++f)d = e[a], e[a] = d.toString(), c = b.exec(e[a]), null == c ? e[a] = 0 : e[a] = c[1].length; return Math.max.apply(Math, e) }, a.prototype.resetDigits = function () { return this.digits = [], this.ribbons = [], this.inside.innerHTML = "", this.resetFormat() }, a.prototype.animateSlide = function (a) { var b, c, d, f, g, h, i, j, k, l, m, n, o, p, q, s, t, u, v, w, x, y, z, B, C, D, E; if (s = this.value, j = this.getFrAuctionalDigitCount(s, a), j && (a *= Math.pow(10, j), s *= Math.pow(10, j)), d = a - s) { for (this.bindTransitionEnd(), f = this.getDigitCount(s, a), g = [], b = 0, m = v = 0; f >= 0 ? f > v : v > f; m = f >= 0 ? ++v : --v) { if (t = A(s / Math.pow(10, f - m - 1)), i = A(a / Math.pow(10, f - m - 1)), h = i - t, Math.abs(h) > this.MAX_VALUES) { for (l = [], n = h / (this.MAX_VALUES + this.MAX_VALUES * b * e), c = t; h > 0 && i > c || 0 > h && c > i;)l.push(Math.round(c)), c += n; l[l.length - 1] !== i && l.push(i), b++ } else l = function () { E = []; for (var a = t; i >= t ? i >= a : a >= i; i >= t ? a++ : a--)E.push(a); return E }.apply(this); for (m = w = 0, y = l.length; y > w; m = ++w)k = l[m], l[m] = Math.abs(k % 10); g.push(l) } for (this.resetDigits(), D = g.reverse(), m = x = 0, z = D.length; z > x; m = ++x)for (l = D[m], this.digits[m] || this.addDigit(" ", m >= j), null == (u = this.ribbons)[m] && (u[m] = this.digits[m].querySelector(".odometer-ribbon-inner")), this.ribbons[m].innerHTML = "", 0 > d && (l = l.reverse()), o = C = 0, B = l.length; B > C; o = ++C)k = l[o], q = document.createElement("div"), q.className = "odometer-value", q.innerHTML = k, this.ribbons[m].appendChild(q), o === l.length - 1 && r(q, "odometer-last-value"), 0 === o && r(q, "odometer-first-value"); return 0 > t && this.addDigit("-"), p = this.inside.querySelector(".odometer-radix-mark"), null != p && p.parent.removeChild(p), j ? this.addSpacer(this.format.radix, this.digits[j - 1], "odometer-radix-mark") : void 0 } }, a }(), m.options = null != (E = window.odometerOptions) ? E : {}, setTimeout(function () { var a, b, c, d, e; if (window.odometerOptions) { d = window.odometerOptions, e = []; for (a in d) b = d[a], e.push(null != (c = m.options)[a] ? (c = m.options)[a] : c[a] = b); return e } }, 0), m.init = function () { var a, b, c, d, e, f; if (null != document.querySelectorAll) { for (b = document.querySelectorAll(m.options.selector || ".odometer"), f = [], c = 0, d = b.length; d > c; c++)a = b[c], f.push(a.odometer = new m({ el: a, value: null != (e = a.innerText) ? e : a.textContent })); return f } }, null != (null != (F = document.documentElement) ? F.doScroll : void 0) && null != document.createEventObject ? (D = document.onreadystatechange, document.onreadystatechange = function () { return "complete" === document.readyState && m.options.auto !== !1 && m.init(), null != D ? D.apply(this, arguments) : void 0 }) : document.addEventListener("DOMContentLoaded", function () { return m.options.auto !== !1 ? m.init() : void 0 }, !1), "function" == typeof define && define.amd ? define([], function () { return m }) : "undefined" != typeof exports && null !== exports ? module.exports = m : window.Odometer = m }).call(this); \ No newline at end of file diff --git a/public/assets/js/swiper-bundle.min.js b/public/assets/js/swiper-bundle.min.js new file mode 100644 index 0000000..d792cb5 --- /dev/null +++ b/public/assets/js/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 8.3.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 26, 2022 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}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 a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={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 r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}class n extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function l(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return o(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this},trigger:function(){const e=r();for(var t=arguments.length,s=new Array(t),a=0;at>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(){let e;const t=a();for(let s=0;s=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function g(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;st.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}let b,x,y;function E(){return b||(b=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),b}function C(e){return void 0===e&&(e={}),x||(x=function(e){let{userAgent:t}=void 0===e?{}:e;const s=E(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(p||h||u)&&(l.os="ios",l.ios=!0),l}(e)),x}function T(){return y||(y=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),y}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=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(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};var S={updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{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"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,C=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(v(e.wrapperEl,"--swiper-centered-offset-before",""),v(e.wrapperEl,"--swiper-centered-offset-after",""));const T=a.grid&&a.grid.rows>1&&e.grid;let $;T&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){v(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),v(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.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(p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||d([])).each((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},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,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&en?"next":r=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&vr.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.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,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var z={loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=i.children().length>0?d(i.children()[0].parentNode):i;r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;an.length&&e.params.loopedSlidesLimit&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((e,t)=>{d(e).attr("data-swiper-slide-index",t)}));for(let t=0;t=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}};function L(e){const t=this,s=a(),i=r(),n=t.touchEventsData,{params:l,touches:o,enabled:c}=t;if(!c)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let h=d(p.target);if("wrapper"===l.touchEventsTarget&&!h.closest(t.wrapperEl).length)return;if(n.isTouchEvent="touchstart"===p.type,!n.isTouchEvent&&"which"in p&&3===p.which)return;if(!n.isTouchEvent&&"button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(m,h[0]):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1,"SELECT"===h[0].nodeName&&(n.isTouched=!1)),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function O(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return d(c.target).is(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(hn.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function I(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=u(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&h=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(h-n[m])/f,b=ma.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+b):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+b):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+b):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+b),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function A(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function D(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function G(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;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 r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let N=!1;function B(){}const H=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",A,!0):e[u]("observerUpdate",A,!0)};var X={attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=L.bind(e),e.onTouchMove=O.bind(e),e.onTouchEnd=I.bind(e),s.cssMode&&(e.onScroll=G.bind(e)),e.onClick=D.bind(e),i.touch&&!N&&(t.addEventListener("touchstart",B),N=!0),H(e,"on")},detachEvents:function(){H(this,"off")}};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var R={addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var W={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,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:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopedSlidesLimit:!0,loopFillGroupWithBlank:!1,loopPreventsSlide:!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-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function j(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),g(t,s)):g(t,s)):g(t,s)}}const q={eventsEmitter:$,update:S,translate:M,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),P({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),P({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:k,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=Y(e,i),c=Y(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),g(e.params,o);const m=e.params.enabled;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=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.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:R,images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s1){const e=[];return d(t.el).each((s=>{const a=g({},t,{el:s});e.push(new V(a))})),e}const r=this;r.__swiper__=!0,r.support=E(),r.device=C({userAgent:t.userAgent}),r.browser=T(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:j(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=g({},W,n);return r.params=g({},l,_,t),r.originalParams=g({},r.params),r.passedParams=g({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=d,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:d(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),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:r.params.focusableElements,lastClickTime:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}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 a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,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.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((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.addClass(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.$el.removeClass(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children?s.children(i()):d(s).children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].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){g(_,e)}static get extendedDefaults(){return _}static get defaults(){return W}static installModule(e){V.prototype.__modules__||(V.prototype.__modules__=[]);const t=V.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>V.installModule(e))),V):(V.installModule(e),V)}}function F(e,t,s,i){const r=a();return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function U(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function K(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else a.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function se(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function ae(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t
    `),i.append(r)),r}Object.keys(q).forEach((e=>{Object.keys(q[e]).forEach((t=>{V.prototype[t]=q[e][t]}))})),V.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,t){void 0===t&&(t={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),n.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const re=[function(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?d(a.renderSlide.call(s,e,t)):d(`
    ${e}
    `);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const E=[],C=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(eb)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t=w&&t<=b&&(void 0===c||e?C.push(t):(t>c&&C.push(t),t{s.$wrapperEl.append(n(p[e],e))})),E.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&v(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=o.innerWidth,l=o.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),n("keyPress",i)}}function p(){t.keyboard.enabled||(d(l).on("keydown",c),t.keyboard.enabled=!0)}function u(){t.keyboard.enabled&&(d(l).off("keydown",c),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&p()})),i("destroy",(()=>{t.keyboard.enabled&&u()})),Object.assign(t.keyboard,{enable:p,disable:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let l;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let o,c=u();const h=[];function m(){t.enabled&&(t.mouseEntered=!0)}function f(){t.enabled&&(t.mouseEntered=!1)}function g(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&u()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function v(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(n=d(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!n[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const m=t.rtlTranslate?-1:1,f=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(f.pixelX)>Math.abs(f.pixelY)))return!0;c=-f.pixelX*m}else{if(!(Math.abs(f.pixelY)>Math.abs(f.pixelX)))return!0;c=-f.pixelY}else c=Math.abs(f.pixelX)>Math.abs(f.pixelY)?-f.pixelX*m:-f.pixelY;if(0===c)return!0;r.invert&&(c=-c);let v=t.getTranslate()+c*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:u(),delta:Math.abs(c),direction:Math.sign(c)},a=o&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!d&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(l),l=void 0,h.length>=15&&h.shift();const s=h.length?h[h.length-1]:void 0,a=h[0];if(h.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))h.splice(0);else if(h.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;o=e,h.splice(0),l=p((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}l||(l=p((()=>{o=e,h.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),n===t.minTranslate()||n===t.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(c),direction:Math.sign(c),raw:e};h.length>=2&&h.shift();const a=h.length?h[h.length-1]:void 0;if(h.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&g(s):g(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function w(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=d(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",f),s[e]("wheel",v)}function b(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",v),!0):!t.mousewheel.enabled&&(w("on"),t.mousewheel.enabled=!0,!0)}function x(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,v),!0):!!t.mousewheel.enabled&&(w("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&x(),t.params.mousewheel.enabled&&b()})),a("destroy",(()=>{t.params.cssMode&&b(),t.mousewheel.enabled&&x()})),Object.assign(t.mousewheel,{enable:b,disable:x})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=d(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=F(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",c),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function u(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",c),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?h():(p(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const h=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),u()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),p(),l()},disable:h,update:l,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let p;const u=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(p=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),p>a-1-2*t.loopedSlides&&(p-=a-2*t.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==t.params.paginationType&&(p=u+p)):p=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,u;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=p-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(p-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&c(t,"prev"),a===o&&c(t,"next"))}));else{const e=a.eq(p),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else c(e,"prev"),c(n,"next");else c(e,"prev"),c(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(U(s.currentClass)).text(s.formatFractionCurrent(p+1)),r.find(U(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(U(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,p+1,u)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s`;a.html(r),t.pagination.bullets=a.find(U(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function h(){t.params.pagination=F(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=d(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>d(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",U(e.bulletClass),(function(e){e.preventDefault();let s=d(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function m(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",U(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?f():(h(),u(),p())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&p()})),a("snapIndexChange",(()=>{t.params.loop||p()})),a("slidesLengthChange",(()=>{t.params.loop&&(u(),p())})),a("snapGridLengthChange",(()=>{t.params.loop||(u(),p())})),a("destroy",(()=>{m()})),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!d(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const f=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),m()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),h(),u(),p()},disable:f,render:u,update:p,init:h,destroy:m})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=a();let l,o,c,u,h=!1,m=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let l=o,d=(c-o)*a;s?(d=-d,d>0?(l=o-d,d=0):-d+o>c&&(l=c+d)):d<0?(l=o+d,d=0):d+o>c&&(l=c-d),t.isHorizontal()?(i.transform(`translate3d(${d}px, 0, 0)`),i[0].style.width=`${l}px`):(i.transform(`translate3d(0px, ${d}px, 0)`),i[0].style.height=`${l}px`),n.hide&&(clearTimeout(m),r[0].style.opacity=1,m=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",c=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),o="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${o}px`:s[0].style.height=`${o}px`,a[0].style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function w(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function b(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(w(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==l?l:o/2))/(c-o),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n,$dragEl:o}=a;h=!0,l=e.target===o[0]||e.target===o?w(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.transition(100),o.transition(100),b(e),clearTimeout(f),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),r("scrollbarDragStart",e)}function y(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:i,$dragEl:n}=s;h&&(e.preventDefault?e.preventDefault():e.returnValue=!1,b(e),a.transition(0),i.transition(0),n.transition(0),r("scrollbarDragMove",e))}function E(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n}=a;h&&(h=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),i.transition("")),s.hide&&(clearTimeout(f),f=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:r,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!r.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,x,c),d[u](a.move,y,c),d[u](a.end,E,p)):(d[u](i.start,x,c),n[u](i.move,y,c),n[u](i.end,E,p))}function T(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=F(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=d(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=d(`
    `),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function $(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?S():(T(),v(),g())})),i("update resize observerUpdate lock unlock",(()=>{v()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),i("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{$()}));const S=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),$()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),T(),v(),g()},disable:S,updateSize:v,setTranslate:g,init:T,destroy:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=d(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=d(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c,p=1,u=!1;const m={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function w(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function b(e){const s=t.support,a=t.params.zoom;if(o=!1,c=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;o=!0,m.scaleStart=w(e)}m.$slideEl&&m.$slideEl.length||(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`),0===m.$slideEl.length&&(m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`),m.maxRatio=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==m.$imageWrapEl.length)?(m.$imageEl&&m.$imageEl.transition(0),u=!0):m.$imageEl=void 0}function x(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;c=!0,m.scaleMove=w(e)}m.$imageEl&&0!==m.$imageEl.length?(s.gestures?i.scale=e.scale*p:i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalef.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.yf.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0,f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX,f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY,f.currentXf.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentYf.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=f.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=f.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(f.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(f.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(f.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(f.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=f.touchesCurrent.x,g.prevPositionY=f.touchesCurrent.y,g.prevTime=Date.now(),m.$imageWrapEl.transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}}function C(){const e=t.zoom;m.$slideEl&&t.previousIndex!==t.activeIndex&&(m.$imageEl&&m.$imageEl.transform("translate3d(0,0,0) scale(1)"),m.$imageWrapEl&&m.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,p=1,m.$slideEl=void 0,m.$imageEl=void 0,m.$imageWrapEl=void 0)}function T(e){const s=t.zoom,a=t.params.zoom;if(m.$slideEl||(e&&e.target&&(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`)),m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`)),!m.$imageEl||0===m.$imageEl.length||!m.$imageWrapEl||0===m.$imageWrapEl.length)return;let i,r,l,o,c,u,h,g,v,w,b,x,y,E,C,T,$,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,r="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y),s.scale=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,p=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?($=m.$slideEl[0].offsetWidth,S=m.$slideEl[0].offsetHeight,l=m.$slideEl.offset().left+n.scrollX,o=m.$slideEl.offset().top+n.scrollY,c=l+$/2-i,u=o+S/2-r,v=m.$imageEl[0].offsetWidth,w=m.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),C=-y,T=-E,h=c*s.scale,g=u*s.scale,hC&&(h=C),gT&&(g=T)):(h=0,g=0),m.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${g}px,0)`),m.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function $(){const e=t.zoom,s=t.params.zoom;m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex),m.$imageEl=m.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${s.containerClass}`)),m.$imageEl&&0!==m.$imageEl.length&&m.$imageWrapEl&&0!==m.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),m.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),m.$slideEl.removeClass(`${s.zoomedSlideClass}`),m.$slideEl=void 0)}function S(e){const s=t.zoom;s.scale&&1!==s.scale?$():T(e)}function M(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function P(){return`.${t.params.slideClass}`}function k(e){const{passiveListener:s}=M(),a=P();t.$wrapperEl[e]("gesturestart",a,b,s),t.$wrapperEl[e]("gesturechange",a,x,s),t.$wrapperEl[e]("gestureend",a,y,s)}function z(){l||(l=!0,k("on"))}function L(){l&&(l=!1,k("off"))}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,z,a),t.$wrapperEl.on(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,b,a),t.$wrapperEl.on(t.touchEvents.move,r,x,i),t.$wrapperEl.on(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}function I(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,z,a),t.$wrapperEl.off(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,b,a),t.$wrapperEl.off(t.touchEvents.move,r,x,i),t.$wrapperEl.off(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.$imageEl?m.$imageEl[0]:void 0,s=m.$slideEl?m.$slideEl[0]:void 0;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;m.$imageEl&&0!==m.$imageEl.length&&(f.isTouched||(s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0,f.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=g.x*s,r=f.currentX+i,n=g.y*a,l=f.currentY+n;0!==g.x&&(s=Math.abs((r-f.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-f.currentY)/g.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.$imageWrapEl.transition(o).transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&S(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:O,disable:I,in:T,out:$,toggle:S})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let n=!1,l=!1;function o(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=d(e);n.addClass(a.loadingClass);const l=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");t.loadImage(n[0],c||l,p,u,!1,(()=>{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(l?(n.css("background-image",`url("${l}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){o(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{o(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function c(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,n=s.lazy;let c=s.slidesPerView;function p(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),l||(l=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{o(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){const e=n.loadPrevNextAmount,t=Math.ceil(c),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e0&&o(u(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&o(u(a))}}function p(){const e=r();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?d(t.params.lazy.scrollingElement):d(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,l=a?e.innerHeight:s[0].offsetHeight,o=t.$el.offset(),{rtlTranslate:u}=t;let h=!1;u&&(o.left-=t.$el[0].scrollLeft);const m=[[o.left,o.top],[o.left+t.width,o.top],[o.left,o.top+t.height],[o.left+t.width,o.top+t.height]];for(let e=0;e=0&&t[0]<=i&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};h?(c(),s.off("scroll",p,f)):n||(n=!0,s.on("scroll",p,f))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&c()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!l)&&(t.params.lazy.checkInView?p():c())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?p():c())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&c()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:c,loadInSlide:o})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",m)),p(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},w=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},b=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(d(t.slides),e.itemRoleDescriptionMessage),e.slideRole&&o(d(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=d(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;p(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},x=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let d,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),b(),t.navigation&&t.navigation.$nextEl&&(d=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),d&&d.length&&v(d,r,e.nextSlideMessage),u&&u.length&&v(u,r,e.prevSlideMessage),g()&&t.pagination.$el.on("keydown",U(t.params.pagination.bulletClass),m),t.$el.on("focus",w,!0)};a("beforeInit",(()=>{i=d(``)})),a("afterInit",(()=>{t.params.a11y.enabled&&x()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&b()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(u(s),l(s)):(h(s),n(s))),e&&e.length>0&&(t.isEnd?(u(e),l(e)):(h(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.each((s=>{const a=d(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),p(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",m),s&&s.off("keydown",m),g()&&t.pagination.$el.off("keydown",U(t.params.pagination.bulletClass),m),t.$el.off("focus",w,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides.eq(s);let d=l(o.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e}/${d}`}else n.pathname.includes(e)||(d=`${e}/${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),(n.key||n.value)&&(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),c=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const p=()=>{i("hashChange");const e=o.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},u=()=>{if(l&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&c.history&&c.history.replaceState)c.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),i("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");o.location.hash=s||"",i("hashSet")}};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d(c).off("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&u()})),n("slideChange",(()=>{l&&t.params.cssMode&&u()}))},function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;function l(){if(!s.size)return s.autoplay.running=!1,void(s.autoplay.paused=!1);const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=p((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),n("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),n("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(0,s.params.speed,!0,!0),n("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),n("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&l()}),a)}function o(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,n("autoplayStart"),l(),!0))}function d(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,n("autoplayStop"),!0))}function c(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,h)})):(s.autoplay.paused=!1,l())))}function u(){const e=a();"hidden"===e.visibilityState&&s.autoplay.running&&c(),"visible"===e.visibilityState&&s.autoplay.paused&&(l(),s.autoplay.paused=!1)}function h(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)})),s.autoplay.paused=!1,s.autoplay.running?l():d())}function m(){s.params.autoplay.disableOnInteraction?d():(n("autoplayPause"),c()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)}))}function f(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,n("autoplayResume"),l())}s.autoplay={running:!1,paused:!1},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),r("init",(()=>{if(s.params.autoplay.enabled){o();a().addEventListener("visibilitychange",u),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",m),s.$el.on("mouseleave",f))}})),r("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):d())})),r("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?d():c())})),r("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&l()})),r("destroy",(()=>{s.$el.off("mouseenter",m),s.$el.off("mouseleave",f),s.autoplay.running&&d();a().removeEventListener("visibilitychange",u)})),Object.assign(s.autoplay,{pause:c,run:l,start:o,stop:d})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&d(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.removeClass(r),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e1?a:o:a-ot.previousIndex?"next":"prev"}else i=t.realIndex,r=i>t.previousIndex?"next":"prev";l&&(i+="next"===r?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(i)<0&&(s.params.centeredSlides?i=i>o?i-Math.floor(a/2)+1:i+Math.floor(a/2)-1:i>o&&s.params.slidesPerGroup,s.slideTo(i,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:u()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=u()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||u()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,h=!1;const m=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>m&&(c=t.minTranslate()+m),p=t.minTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(o[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}}),i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=d(`
    `),e.append(a)),0===i.length&&(i=d(`
    `),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};te({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:c}=t,p=t.params.cubeEffect,u=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let m,f=0;p.shadow&&(u?(m=s.find(".swiper-cube-shadow"),0===m.length&&(m=d('
    '),s.append(m)),m.css({height:`${r}px`})):(m=e.find(".swiper-cube-shadow"),0===m.length&&(m=d('
    '),e.append(m))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.transform(v),p.slideShadows&&i(t,d,u)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),p.shadow)if(u)m.transform(`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${p.shadowScale})`);else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;m.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const g=c.isSafari||c.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(d(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=ie(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=ie(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};te({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),ae({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=d(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}}),te({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;te({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=ie(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=se(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}}),te({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l0&&c<1&&(r||t.params.cssMode)&&n-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),E=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=ie(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;se(a,o).transform(E)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return V.use(re),V})); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/public/assets/js/viewport.jquery.js b/public/assets/js/viewport.jquery.js new file mode 100644 index 0000000..05ed13e --- /dev/null +++ b/public/assets/js/viewport.jquery.js @@ -0,0 +1,71 @@ +/* ==================================================== + * jQuery Is In Viewport. + * https://github.com/frontid/jQueryIsInViewport + * Marcelo Iván Tosco (capynet) + * Inspired on https://stackoverflow.com/a/40658647/1413049 + * ==================================================== */ +!function ($) { + 'use strict' + + var Class = function (el, cb) { + this.$el = $(el); + this.cb = cb; + this.watch(); + return this; + }; + + Class.prototype = { + + /** + * Checks if the element is in. + * + * @returns {boolean} + */ + isIn: function isIn() { + var _self = this; + var $win = $(window); + var elementTop = _self.$el.offset().top; + var elementBottom = elementTop + _self.$el.outerHeight(); + var viewportTop = $win.scrollTop(); + var viewportBottom = viewportTop + $win.height(); + return elementBottom > viewportTop && elementTop < viewportBottom; + }, + + /** + * Launch a callback indicating when the element is in and when is out. + */ + watch: function () { + var _self = this; + var _isIn = false; + + $(window).on('resize scroll', function () { + + if (_self.isIn() && _isIn === false) { + _self.cb.call(_self.$el, 'entered'); + _isIn = true; + } + + if (_isIn === true && !_self.isIn()) { + _self.cb.call(_self.$el, 'leaved'); + _isIn = false; + } + + }) + } + + + }; + + // jQuery plugin. + //----------------------------------------------------------- + $.fn.isInViewport = function (cb) { + return this.each(function () { + var $element = $(this); + var data = $element.data('isInViewport'); + if (!data) { + $element.data('isInViewport', (new Class(this, cb))); + } + }) + } + +}(window.jQuery); \ No newline at end of file diff --git a/public/assets/js/wow.min.js b/public/assets/js/wow.min.js new file mode 100644 index 0000000..a123b5e --- /dev/null +++ b/public/assets/js/wow.min.js @@ -0,0 +1,3 @@ +/*! WOW wow.js - v1.3.0 - 2016-10-04 +* https://wowjs.uk +* Copyright (c) 2016 Thomas Grainger; Licensed MIT */!function(a,b){if("function"==typeof define&&define.amd)define(["module","exports"],b);else if("undefined"!=typeof exports)b(module,exports);else{var c={exports:{}};b(c,c.exports),a.WOW=c.exports}}(this,function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function d(a,b){return b.indexOf(a)>=0}function e(a,b){for(var c in b)if(null==a[c]){var d=b[c];a[c]=d}return a}function f(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)}function g(a){var b=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],c=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],d=arguments.length<=3||void 0===arguments[3]?null:arguments[3],e=void 0;return null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e}function h(a,b){null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)&&a["on"+b]()}function i(a,b,c){null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c}function j(a,b,c){null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]}function k(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight}Object.defineProperty(b,"__esModule",{value:!0});var l,m,n=function(){function a(a,b){for(var c=0;c=0){var b=a.target||a.srcElement;b.className=b.className.replace(this.config.animateClass,"").trim()}}},{key:"customStyle",value:function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a}},{key:"vendorSet",value:function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];a[""+c]=d;for(var e=0;e=e&&f>=c}},{key:"disabled",value:function(){return!this.config.mobile&&f(navigator.userAgent)}}]),a}();b["default"]=r,a.exports=b["default"]}); \ No newline at end of file diff --git a/public/assets/scss/_about.scss b/public/assets/scss/_about.scss new file mode 100644 index 0000000..f5745b9 --- /dev/null +++ b/public/assets/scss/_about.scss @@ -0,0 +1,280 @@ +.about-wrapper { + + .about-image { + max-width: 375px; + position: relative; + z-index: 9; + + @include breakpoint (max-xxl) { + max-width: initial; + } + + img { + @include imgw; + border-radius: 16px; + } + + .about-image-2 { + position: absolute; + bottom: -170px; + right: -238px; + + @include breakpoint (max-xxl) { + max-width: 250px; + right: 0; + bottom: 0; + } + } + + .bg-shape { + position: absolute; + z-index: -1; + top: 0; + left: 0; + right: 0; + + @include breakpoint (max-xxl) { + display: none; + } + + img { + width: initial; + height: initial; + } + } + + .plane-shape { + position: absolute; + left: -38px; + bottom: -163px; + z-index: -1; + + @include breakpoint (max-xxl) { + display: none; + } + + img { + width: initial; + height: initial; + } + } + + .top-shape { + position: absolute; + right: -200px; + top: 0; + + @include breakpoint (max-xxl) { + display: none; + } + + img { + width: initial; + height: initial; + } + } + } + + .about-content { + .text { + margin-top: 24px; + padding-left: 40px; + border-left: 3px solid $border-color-2; + margin-bottom: 30px; + + @include breakpoint (max-xxl) { + border-left: none; + padding-left: 0; + } + } + + .about-item { + @include flex; + justify-content: space-between; + border-top: 1px solid rgba(203, 204, 207, 0.24); + padding-top: 24px; + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 30px; + } + + .content { + span { + font-size: 20px; + font-weight: 500; + color: $header-color; + display: inline-block; + margin-bottom: 5px; + + img { + margin-right: 8px; + } + } + } + } + + .list { + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding: 24px 0 32px; + margin-bottom: 48px; + + @include breakpoint (max-xxl) { + margin-bottom: 30px; + padding: 24px 0 30px; + } + + li { + &:not(:last-child) { + margin-bottom: 10px; + } + + @include breakpoint (max-xxl) { + font-size: 14px; + } + + i { + color: $theme-color-2; + margin-right: 8px; + } + } + } + } +} + +.about-section { + position: relative; + z-index: 9; + + .top-shape { + position: absolute; + right: 0; + top: -50px; + z-index: -1; + + @include breakpoint (max-xxl) { + display: none; + } + } +} + +.about-wrapper-3 { + + .about-content { + .text { + margin-top: 20px; + max-width: 616px; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 24px; + margin-bottom: 30px; + } + + .about-list-item { + display: flex; + gap: 32px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 25px; + } + + .loading-box { + height: 256px; + width: 214px; + border-radius: 16px; + position: relative; + text-align: center; + + .loading-boxs { + height: 200px; + width: 200px; + display: flex; + align-items: center; + justify-content: center; + background: #0a4ebd; + border-radius: 16px; + + .circle-bar { + position: relative; + + strong { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 28px; + font-weight: bold; + color: $white; + } + } + } + + h6 { + color: $white; + font-weight: 500; + font-size: 14px; + } + } + + .list-item { + + .list { + margin-bottom: 48px; + + li { + font-size: 18px; + font-weight: 500; + color: $header-color; + font-family: $heading-font; + + @include breakpoint (max-xxl) { + font-size: 16px; + } + + &:not(:last-child) { + margin-bottom: 15px; + } + + i { + margin-right: 8px; + color: $theme-color-2; + } + } + } + } + } + } + + .about-image { + img { + @include imgw; + border-radius: 8px; + } + + &.tp-clip-anim { + width: 100%; + display: grid; + align-items: center; + justify-items: center; + overflow: hidden; + position: relative; + & .tp-anim-img { + opacity: 0; + width: 100%; + height: 100%; + } + + & .mask { + background-size: cover; + background-position: center; + transform: scale(1.005); + } + >* { + grid-area: 1 / 1 / 2 / 2; + width: 100%; + height: 100%; + max-height: 100%; + } + } + } +} \ No newline at end of file diff --git a/public/assets/scss/_animation.scss b/public/assets/scss/_animation.scss new file mode 100644 index 0000000..538c28f --- /dev/null +++ b/public/assets/scss/_animation.scss @@ -0,0 +1,915 @@ + +//>>>>> Video Animation Start <<<<>>>> Video Animation End <<<<>>>> Circle Animation Start <<<<>>>> Circle Animation End <<<<>>>> Preloader Animation Start <<<<>>>> Preloader Animation Start <<<<>>>> Preloader Animation End <<<<* { + grid-area: 1 / 1 / 2 / 2; + width: 100%; + height: 100%; + max-height: 100%; + } + } + } + + .feature-content { + margin-left: 30px; + + @include breakpoint (max-lg) { + margin-left: 0; + } + + .text { + margin-top: 24px; + } + + .feature-count { + @include flex; + gap: 24px; + border-top: 1px solid rgba(203, 204, 207, 0.24); + margin-top: 24px; + padding-top: 24px; + margin-bottom: 48px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + margin-bottom: 30px; + } + + .content { + + .count-image { + img { + @include imgw; + } + } + + h5 { + font-weight: 500; + } + } + + .list { + li { + font-size: 18px; + font-weight: 500; + color: $header-color; + font-family: $heading-font; + + @include breakpoint (max-xxl) { + font-size: 16px; + } + + &:not(:last-child) { + margin-bottom: 15px; + } + + i { + margin-right: 8px; + color: $theme-color-2; + } + } + } + } + } +} + +.choose-us-wrapper-2 { + + .choose-us-image { + margin-right: 40px; + + img { + @include imgw; + } + + &.tp-clip-anim { + width: 100%; + display: grid; + align-items: center; + justify-items: center; + overflow: hidden; + position: relative; + & .tp-anim-img { + opacity: 0; + width: 100%; + height: 100%; + } + + & .mask { + background-size: cover; + background-position: center; + transform: scale(1.005); + } + >* { + grid-area: 1 / 1 / 2 / 2; + width: 100%; + height: 100%; + max-height: 100%; + } + } + } + + .feature-content { + margin-right: 20px; + + @include breakpoint (max-xxl) { + margin-right: 0; + } + + .text { + margin-top: 24px; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 16px; + margin-bottom: 8px; + } + + .choose-us-box { + @include flex; + gap: 16px; + padding: 16px 24px; + border: 1px solid $white; + @include transition; + border-radius: 12px; + margin-top: 24px; + background-color: $white; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + } + + .icon { + width: 80px; + height: 80px; + line-height: 80px; + text-align: center; + border-radius: 100px; + background-color: $bg-color; + } + + .content { + h5 { + margin-bottom: 5px; + } + + p { + max-width: 500px; + } + } + + &:hover { + border: 1px solid $theme-color; + } + } + + .theme-btn { + margin-top: 48px; + } + } +} + +.destination-offer-wrapper-3 { + margin-top: 60px; + + @include breakpoint (max-sm) { + margin-top: 30px; + } + + .destination-offer-item { + border-radius: 16px; + + .choose-us-image { + img { + @include imgw; + border-top-left-radius: 16px; + border-top-right-radius: 16px; + } + } + + .choose-us-content { + padding: 16px 17px 24px; + background-color: $bg-color; + + .icon-item { + @include flex; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + gap: 12px; + padding-bottom: 12px; + margin-bottom: 10px; + + h5 { + a { + background-position: 0 95%; + background-repeat: no-repeat; + background-size: 0% 2px; + display: inline; + + &:hover { + color: $theme-color; + background-size: 100% 2px; + background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%); + } + } + } + } + } + } +} + +.destination-offer-section { + position: relative; + z-index: 9; + + .bg-image { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: -1; + + &::before { + @include before; + background: rgb(4 4 5 / 87%); + } + } +} + +.choose-us-wrapper-3 { + + .choose-us-left-item { + @include flex; + gap: 0; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 30px; + } + + .left-item { + .choose-us-image { + img { + @include breakpoint (max-xxl) { + @include imgw; + } + } + } + + .caller-item { + @include flex; + gap: 12px; + padding: 21px 45px; + background-color: $header-color; + width: 311px; + border-bottom-left-radius: 100px; + margin-top: 30px; + + .icon { + width: 48px; + height: 48px; + line-height: 48px; + border-radius: 100px; + text-align: center; + background-color: $white; + color: $theme-color; + } + + .content { + span { + opacity: 0.8; + color: $white; + } + + h5 { + a { + color: $theme-color; + } + } + } + } + } + + .right-item { + .count-box { + padding: 20px 24px; + background-color: $theme-color-2; + border-top-right-radius: 100px; + @include flex; + gap: 4px; + width: 308px; + margin-bottom: 30px; + margin-left: -24px; + + @include breakpoint (max-xxl) { + margin-left: 0; + } + + h2 { + color: $white; + } + + h5 { + color: $white; + } + } + + .choose-image { + img { + @include breakpoint (max-xxl) { + @include imgw; + } + } + } + } + } + + .choose-us-content { + + .text { + margin-top: 20px; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 24px; + margin-bottom: 24px; + } + + .nav { + display: flex; + gap: 30px; + margin-bottom: 30px; + + li { + font-size: 20px; + font-weight: 500; + + @include breakpoint (max-xl) { + font-size: 16px; + } + + .nav-link{ + color: $header-color; + @include transition; + padding: 16px 32px; + border-radius: 100px; + line-height: 1; + border: 1px solid rgba(203, 204, 207, 0.24); + + &.active { + position: relative; + background-color: $theme-color-2; + color: $white; + } + } + } + } + + .content { + margin-top: 16px; + + .list-item { + @include flex; + gap: 50px; + margin-top: 20px; + margin-bottom: 50px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 10px; + margin-bottom: 30px; + } + + .list { + li { + font-size: 18px; + font-weight: 500; + color: $header-color; + font-family: $heading-font; + + @include breakpoint (max-xxl) { + font-size: 16px; + } + + &:not(:last-child) { + margin-bottom: 10px; + } + + i { + margin-right: 10px; + } + } + } + } + } + } +} + +.intro-image { + margin-top: 30px; + border-radius: 24px; + + img { + @include imgw; + border-radius: 24px; + } + + &.tp-clip-anim { + width: 100%; + display: grid; + align-items: center; + justify-items: center; + overflow: hidden; + position: relative; + & .tp-anim-img { + opacity: 0; + width: 100%; + height: 100%; + } + + & .mask { + background-size: cover; + background-position: center; + transform: scale(1.005); + } + >* { + grid-area: 1 / 1 / 2 / 2; + width: 100%; + height: 100%; + max-height: 100%; + } + } +} + +.appointment-wrapper { + + .appointment-content { + h5 { + margin-top: 80px; + + @include breakpoint (max-xxl) { + margin-top: 30px; + } + } + } + + .calendar { + background: #f9f9f9; + padding: 20px; + border-radius: 15px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + width: 640px; + + @include breakpoint (max-xxl) { + width: initial; + overflow-x: scroll; + } + + .calendar-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 15px; + + h2 { + margin: 0; + font-size: 18px; + font-weight: 600; + } + + button { + background: $theme-color-2; + color: $white; + border: none; + border-radius: 50%; + width: 30px; + height: 30px; + cursor: pointer; + font-size: 16px; + } + } + + .days { + display: grid; + grid-template-columns: repeat(7, 1fr); + text-align: center; + font-weight: 700; + color: $header-color; + margin-bottom: 10px; + } + + .dates { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 5px; + text-align: center; + + div { + width: 70px; + height: 70px; + line-height: 70px; + border-radius: 50%; + background: $white; + font-size: 20px; + font-weight: 700; + + @include breakpoint (max-xxl) { + width: 50px; + height: 50px; + line-height: 50px; + font-size: 16px; + } + } + + .highlight { + background: $theme-color-2 !important; + color: $white; + font-weight: bold; + } + + div.active-date { + background: $theme-color-2; + color: $white; + font-weight: bold; + } + } + } +} + +.cooming-soon-content { + text-align: center; + + h2 { + margin-top: 24px; + margin-bottom: 20px; + } + + p { + max-width: 744px; + margin: 0 auto; + } + + form { + max-width: 664px; + width: 100%; + text-align: center; + margin: 0 auto; + } + + .form-clt { + position: relative; + margin-top: 48px; + + @include breakpoint (max-xxl) { + margin-top: 30px; + } + + input { + width: 100%; + outline: none; + border: none; + background-color: $bg-color; + color: $text-color; + line-height: 1; + padding: 25px 0px 25px 25px; + border-radius: 100px; + max-width: 664px; + + @include breakpoint (max-xxl) { + padding: 20px 0px 20px 10px; + font-size: 14px; + } + + @include breakpoint (max-lg) { + padding: 20px 0px 20px 10px; + font-size: 14px; + } + + @include breakpoint (max-sm) { + font-size: 14px; + } + + &::placeholder { + color: $text-color; + } + } + + .theme-btn { + position: absolute; + top: 4px; + right: 4px; + bottom: 4px; + text-transform: uppercase; + border: 1px solid rgba(203, 204, 207, 0.24); + background-color: $bg-color; + + @include breakpoint (max-xxl){ + right: 0; + top: 0; + bottom: 0; + padding: 2px 4px 2px 12px; + font-size: 14px; + + i { + margin-left: 10px; + } + } + + &:hover { + color: $white; + background-color: $theme-color; + } + } + } + + .social-icon { + @include flex; + gap: 12px; + justify-content: center; + margin-top: 40px; + + @include breakpoint (max-xxl) { + margin-top: 30px; + } + + a { + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + border-radius: 100px; + background-color: $bg-color; + color: $header-color; + display: inline-block; + + &:hover { + background-color: $theme-color; + color: $white; + } + } + } +} \ No newline at end of file diff --git a/public/assets/scss/_footer.scss b/public/assets/scss/_footer.scss new file mode 100644 index 0000000..d73f4a0 --- /dev/null +++ b/public/assets/scss/_footer.scss @@ -0,0 +1,683 @@ + +.footer-wrapper { + + .footer-item { + padding: 100px 0; + position: relative; + text-align: center; + + @include breakpoint (max-lg) { + padding: 80px 0; + } + + h2 { + font-size: 30px; + color: $white; + + @include breakpoint (max-sm) { + font-size: 25px; + } + + a { + color: $white; + } + + &.text { + font-size: 24px; + } + } + + .footer-list-item { + @include flex; + justify-content: space-between; + border-radius: 136px; + background: rgba(255, 255, 255, 0.08); + backdrop-filter: blur(62px); + padding: 20px 24px; + margin-top: 80px; + + @include breakpoint (max-xxl) { + margin-top: 30px; + padding: 20px; + } + + @include breakpoint (max-lg) { + border-radius: 0; + flex-wrap: wrap; + gap: 20px; + } + + .footer-list { + @include flex; + gap: 40px; + + @include breakpoint (max-xxl) { + gap: 20px; + } + + @include breakpoint (max-sm) { + flex-wrap: wrap; + gap: 15px; + } + + li { + font-weight: 500; + font-family: $heading-font; + text-transform: uppercase; + + a { + color: $white; + + &:hover { + color: $theme-color; + } + } + } + } + + .social-icon { + @include flex; + gap: 12px; + + a { + width: 40px; + height: 40px; + line-height: 40px; + text-align: center; + border-radius: 100px; + backdrop-filter: blur(46px); + background-color: $bg-color-2; + color: $white; + display: inline-block; + + &:hover { + background-color: $theme-color; + } + } + } + } + } +} + + +.footer-section { + margin: 0 30px; + border-radius: 32px; + + @include breakpoint (max-sm) { + margin: 0 15px; + } +} + +.footer-bottom { + padding: 24px 0; + text-align: center; + + .footer-wrapper { + @include flex; + justify-content: center; + gap: 100px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + } + + @include breakpoint (max-sm) { + justify-content: start; + } + + p { + color: $header-color; + + span { + color: $theme-color; + text-transform: uppercase; + } + } + + .bottom-list { + @include flex; + gap: 40px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + } + + @include breakpoint (max-sm) { + justify-content: center; + } + + li { + a { + &:hover { + color: $theme-color; + } + } + } + } + } +} + +.footer-widget-wrapper-2 { + padding: 70px 0 90px; + + @include breakpoint (max-lg) { + padding: 50px 0 80px; + } + + .single-footer-widget { + margin-top: 30px; + + .widget-title { + margin-bottom: 24px; + + h3 { + color: $white; + text-transform: uppercase; + } + } + + .footer-content { + p { + max-width: 502px; + color: rgba(255, 255, 255, 0.7); + + @include breakpoint (max-xxl) { + font-size: 14px; + } + + @include breakpoint (max-lg) { + font-size: 16px; + } + } + + .social-icon { + @include flex; + gap: 20px; + margin-top: 50px; + + @include breakpoint (max-xxl) { + margin-top: 30px; + gap: 13px; + } + + @include breakpoint (max-lg) { + gap: 16px; + } + + span { + display: inline-block; + margin-right: 4px; + color: $white; + font-weight: 500; + text-transform: uppercase; + font-family: $heading-font; + + @include breakpoint (max-xxl) { + font-size: 14px; + } + + @include breakpoint (max-lg) { + font-size: 16px; + } + } + + a { + font-size: 20px; + color: $theme-color; + + &:hover { + color: $theme-color-2; + } + } + } + } + + .list { + li { + @include transition; + font-weight: 400; + + &:not(:last-child){ + margin-bottom: 20px; + } + + a { + color: rgba(255, 255, 255, 0.7); + } + + &:hover { + margin-left: 5px; + + a { + color: $theme-color; + } + } + } + } + + .contact-item { + li { + display: flex; + align-items: start; + color: rgba(255, 255, 255, 0.7); + gap: 8px; + + &.style-2 { + @include flex; + } + + &:not(:last-child) { + margin-bottom: 20px; + } + + a { + color: rgba(255, 255, 255, 0.7); + } + + i { + color: $theme-color; + } + } + } + } +} + +.footer-section-2 { + position: relative; + z-index: 9; + + .shape { + position: absolute; + left: 0; + top: 0; + z-index: -1; + } +} + +.footer-newsletter { + @include flex; + justify-content: space-between; + margin-top: 100px; + padding: 32px 48px; + background-color: $theme-color-2; + border-radius: 16px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + padding: 30px; + margin-top: 80px; + } + + .newsletter-content { + h3 { + color: $white; + } + + p { + color: rgba(255, 255, 255, 0.7); + } + } + + form { + max-width: 587px; + width: 100%; + } + + .form-clt { + position: relative; + + .input-icon { + top: 50%; + left: 25px; + transform: translateY(-50%); + position: absolute; + + @include breakpoint (max-sm) { + top: 23%; + } + } + + input { + width: 100%; + outline: none; + border: none; + background-color: $white; + color: $text-color; + line-height: 1; + padding: 25px 0px 25px 60px; + border-radius: 100px; + max-width: 587px; + + @include breakpoint (max-lg) { + padding: 20px 0px 20px 60px; + } + + &::placeholder { + color: $text-color; + } + } + + .theme-btn { + position: absolute; + top: 4px; + right: 4px; + bottom: 4px; + text-transform: uppercase; + border: 1px solid rgba(203, 204, 207, 0.24); + + @include breakpoint (max-xxs){ + position: static; + margin-top: 20px; + color: $white; + } + } + } +} + +.fotter-bootom-2 { + border-top: 1px solid rgba(203, 204, 207, 0.24); + padding: 20px 0; + + .footer-wrapper { + @include flex; + justify-content: center; + gap: 100px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + } + + @include breakpoint (max-sm) { + justify-content: start; + } + + p { + color: $white; + + @include breakpoint (max-sm) { + text-align: center; + } + + + span { + color: $theme-color; + text-transform: uppercase; + } + } + + .bottom-list { + @include flex; + gap: 40px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + } + + @include breakpoint (max-sm) { + justify-content: center; + } + + li { + a { + color: $white; + + &:hover { + color: $theme-color; + } + } + } + } + } +} + + +.footer-widget-wrapper-3 { + padding: 70px 0 100px; + position: relative; + + @include breakpoint (max-xxl) { + padding: 70px 0 100px; + } + + @include breakpoint (max-lg) { + padding: 50px 0 80px; + } + + &::before { + position: absolute; + content: ""; + width: 1px; + height: 424px; + left: 600px; + background-color: rgba(203, 204, 207, 0.24); + top: 0; + bottom: 0; + + @include breakpoint (max-xxl) { + display: none; + } + } + + .single-footer-widget { + margin-top: 30px; + + .widget-title { + margin-bottom: 24px; + + h3 { + color: $white; + text-transform: uppercase; + } + } + + .footer-content { + h3 { + color: $white; + margin-bottom: 10px; + } + + p { + color: $white; + opacity: 0.7; + max-width: 551px; + margin-bottom: 30px; + } + + form { + max-width: 551px; + width: 100%; + } + + .form-clt { + position: relative; + + input { + width: 100%; + outline: none; + border: none; + background-color: $white; + color: $text-color; + line-height: 1; + padding: 25px 0px 25px 25px; + border-radius: 100px; + max-width: 551px; + + @include breakpoint (max-xxl) { + padding: 20px 0px 20px 10px; + font-size: 14px; + } + + @include breakpoint (max-lg) { + padding: 20px 0px 20px 10px; + font-size: 14px; + } + + @include breakpoint (max-sm) { + font-size: 14px; + } + + &::placeholder { + color: $text-color; + } + } + + .theme-btn { + position: absolute; + top: 4px; + right: 4px; + bottom: 4px; + text-transform: uppercase; + border: 1px solid rgba(203, 204, 207, 0.24); + background-color: $bg-color; + + &:hover { + background-color: $theme-color; + color: $white; + } + + @include breakpoint (max-xxl){ + right: 0; + top: 0; + bottom: 0; + padding: 2px 4px 2px 12px; + font-size: 14px; + + i { + margin-left: 10px; + } + } + } + } + + h6 { + color: $white; + margin-top: 15px; + + span { + color: $theme-color; + text-transform: uppercase; + font-size: 18px; + font-weight: 400; + } + } + } + + .contact-content { + p { + color: $white; + opacity: 0.7; + margin-bottom: 24px; + } + + h3 { + color: $white; + } + + .contact-list { + margin-top: 16px; + + li { + @include flex; + gap: 32px; + + a { + color: $white; + opacity: 0.7; + } + } + } + } + + .list { + li { + @include transition; + font-weight: 400; + + &:not(:last-child){ + margin-bottom: 20px; + } + + a { + color: rgba(255, 255, 255, 0.7); + } + + &:hover { + margin-left: 5px; + + a { + color: $theme-color; + } + } + } + } + } +} + +.footer-top-item { + @include flex; + justify-content: space-between; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 30Px; + padding-bottom: 10px; + } + + .footer-logo { + background-color: $theme-color-2; + padding: 18px 30px; + } + + .top-list { + @include flex; + gap: 40px; + + @include breakpoint (max-xxl) { + gap: 20Px; + } + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 15Px; + } + + li { + a { + font-weight: 500; + text-transform: uppercase; + color: $white; + + &:hover { + color: $theme-color; + } + } + } + } + + .social-item { + @include flex; + gap: 12px; + + a { + width: 40px; + height: 40px; + line-height: 40px; + background-color: $theme-color-2; + border-radius: 100px; + color: $white; + text-align: center; + + &:hover { + background-color: $theme-color; + } + } + } +} \ No newline at end of file diff --git a/public/assets/scss/_header.scss b/public/assets/scss/_header.scss new file mode 100644 index 0000000..3dbd67d --- /dev/null +++ b/public/assets/scss/_header.scss @@ -0,0 +1,1264 @@ +.header-top-section { + background-color: $theme-color-2; + position: relative; + z-index: 999; + + @include breakpoint (max-xxl) { + display: none; + } + + &::before { + @include before; + background-color: $theme-color; + left: 0; + right: initial; + width: 337px; + z-index: -1; + } + + .container-fluid { + padding: 0 40px; + + @include breakpoint (max-xxl) { + padding: 0 40px; + } + + @include breakpoint (max-xxl) { + padding: 0 30px; + } + + @include breakpoint (max-sm) { + padding: 0 15px; + } + } +} + +.header-top-wrapper { + @include flex; + justify-content: space-between; + padding: 10px 0; + + .header-left { + + .list { + @include flex; + gap: 60px; + + li { + color: rgba(255, 255, 255, 0.7); + + a { + color: rgba(255, 255, 255, 0.7); + } + + i { + margin-right: 12px; + color: $theme-color; + } + + &.style-2 { + color: $white; + + i { + color: $white; + } + + span { + font-size: 18px; + color: $white; + display: inline-block; + margin-right: 12px; + } + } + } + } + } + + .header-right { + @include flex; + gap: 45px; + + .flag-wrap { + position: relative; + width: 130px; + z-index: 9; + + @include breakpoint (max-xxl) { + display: none; + } + + i { + color: $white; + } + + .nice-select { + background: transparent; + border: none; + text-align: center; + margin: 0 auto; + position: relative; + z-index: 999; + padding: 10px 7px 10px 58px; + + span{ + font-size: 14px; + font-weight: 500; + text-transform: capitalize; + color: $white; + } + + .list { + li { + color: $header-color; + } + } + + &::after { + border-bottom: 2px solid $white; + border-right: 2px solid $white; + height: 8px; + margin-top: -6px; + width: 8px; + right: 3px; + } + } + + .flag { + position: absolute; + top: 10px; + left: 32px; + z-index: 1; + + @include breakpoint(max-md){ + display: none + } + + } + } + + .social-item { + @include flex; + gap: 12px; + + a { + width: 32px; + height: 32px; + line-height: 32px; + background-color: #153888; + backdrop-filter: blur(46px); + border-radius: 100px; + color: $white; + text-align: center; + + &:hover { + background-color: $theme-color; + } + } + } + } +} + +.header-top-section-2 { + position: relative; + background-color: $header-color; + + .container-fluid { + padding: 0 100px; + + @include breakpoint (max-xl4) { + padding: 0 70px; + } + + @include breakpoint (max-xxxl) { + padding: 0 50px; + } + + @include breakpoint (max-xxl) { + padding: 0 30px; + } + + @include breakpoint (max-sm) { + padding: 0 15px; + } + } +} + +.header-top-wrapper-2 { + padding: 10px 0; + @include flex; + justify-content: space-between; + + @include breakpoint (max-xxl) { + display: none; + } + + .header-left { + @include flex; + gap: 32px; + + span { + color: rgba(255, 255, 255, 0.7); + border-radius: 88px; + background: rgba(255, 255, 255, 0.12); + backdrop-filter: blur(58px); + padding: 5px 8px; + line-height: 1; + + a { + color: rgba(255, 255, 255, 0.7); + } + } + } + + .social-item { + @include flex; + gap: 12px; + + a { + width: 40px; + height: 40px; + line-height: 40px; + background-color: #153888; + backdrop-filter: blur(46px); + border-radius: 100px; + color: $white; + text-align: center; + + &:hover { + background-color: $theme-color; + } + } + } +} + +.header-top-section-3 { + background-color: $header-color; + position: relative; + z-index: 999; + + @include breakpoint (max-xxl) { + display: none; + } + + &::before { + @include before; + background-color: $theme-color-2; + left: 0; + right: initial; + width: 337px; + z-index: -1; + + @include breakpoint (max-xxxl) { + width: 300px; + } + } + + .container-fluid { + padding: 0 100px; + + @include breakpoint (max-xl4) { + padding: 0 70px; + } + + @include breakpoint (max-xxxl) { + padding: 0 50px; + } + + @include breakpoint (max-xxl) { + padding: 0 30px; + } + + @include breakpoint (max-sm) { + padding: 0 15px; + } + } +} + +.header-top-wrapper-3 { + @include flex; + justify-content: space-between; + padding: 10px 0; + + .left-item { + margin-left: 280px; + + .social-item { + @include flex; + gap: 12px; + + a { + width: 40px; + height: 40px; + line-height: 40px; + background-color: #153888; + backdrop-filter: blur(46px); + border-radius: 100px; + color: $white; + text-align: center; + + &:hover { + background-color: $theme-color; + } + } + } + } + + .header-right { + + .list { + @include flex; + gap: 60px; + + li { + color: rgba(255, 255, 255, 0.7); + + a { + color: rgba(255, 255, 255, 0.7); + } + + i { + margin-right: 12px; + color: $theme-color; + } + } + } + } +} + +//>>>>> Header Main Start <<<<a { + color: $theme-color !important; + margin-left: 10px; + + &::before { + width: 10px; + } + + &::after { + color: $theme-color; + } + } + >.submenu { + -webkit-transform: translateY(1); + -moz-transform: translateY(1); + -ms-transform: translateY(1); + -o-transform: translateY(1); + transform: translateY(1); + visibility: visible; + opacity: 1; + } + } + } + li.has-dropdown { + >a { + &::after { + position: absolute; + top: 50%; + inset-inline-end: 25px; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + color: $theme-color; + } + } + } + } + + .has-homemenu { + width: 800px; + padding: 30px 30px 10px 30px; + opacity: 0; + left: -250px; + visibility: hidden; + padding: 30px 30px 10px 30px; + background-color: $white; + + .homemenu-items { + @include flex; + gap: 30px; + justify-content: space-between; + + @include breakpoint (max-lg){ + flex-wrap: wrap; + } + + .homemenu { + position: relative; + .homemenu-thumb { + position: relative; + + .demo-button { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + opacity: 0; + visibility: hidden; + @include transition; + margin-top: 20px; + width: 100%; + padding: 0 12px; + + @include breakpoint (max-xxl){ + .theme-btn { + font-size: 14px; + min-width: 140px; + } + } + + .theme-btn { + background-color: $white; + padding-right: 0; + font-size: 16px; + font-weight: 500; + padding: 6px 6px 6px 24px; + + &:hover { + background-color: $theme-color; + color: $white; + } + } + } + + &::before { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(20, 19, 19, 0)), to(#5e5ef6)); + background: linear-gradient(to bottom, rgba(99, 92, 92, 0) 0%, #252527 100%); + background-repeat: no-repeat; + background-size: cover; + background-position: center; + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + overflow: hidden; + opacity: 0; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + content: ""; + } + &:hover{ + + &::before { + visibility: visible; + opacity: 1; + } + + .demo-button { + opacity: 1; + visibility: visible; + margin-top: 0; + } + & .homemenu-btn { + opacity: 1; + visibility: visible; + bottom: 50%; + transform: translateY(50%); + } + } + img { + width: 100%; + } + } + + .homemenu-title { + text-align: center; + margin: 15px auto; + display: inline-block; + font-size: 16px; + font-weight: 600; + color: $header-color; + } + } + } + } + + &:hover { + >a { + color: $theme-color-2; + + &::after { + color: $theme-color; + } + } + >.submenu { + visibility: visible; + opacity: 1; + transform: scaleY(1) translateZ(0px); + } + } + } + } + } + + .header-right { + gap: 30px; + + @include breakpoint (max-xxl){ + gap: 20px; + } + + .search-toggler { + width: 40px; + height: 40px; + line-height: 40px; + text-align: center; + color: $theme-color; + border-radius: 100px; + border: 1px solid $theme-color; + font-size: 16px; + } + + .header-button { + @include breakpoint (max-xxl){ + display: none; + } + .theme-btn { + + &::before { + background-color: $white; + } + + &:hover { + color: $header-color; + } + } + } + + .sidebar__toggle { + cursor: pointer; + font-size: 20px; + color: $header-color; + } + } +} + +.header-1 { + + .container-fluid { + padding: 0 40px; + + @include breakpoint (max-xxl) { + padding: 0 50px; + } + + @include breakpoint (max-xxl) { + padding: 0 30px; + } + + @include breakpoint (max-sm) { + padding: 0 15px; + } + } + + .header-left { + @include flex; + gap: 120px; + + @include breakpoint (max-xxxl) { + gap: 50px; + } + } + + .header-right { + .header-call-item { + @include flex; + gap: 60px; + + .theme-btn { + padding: 4px 4px 4px 24px; + + @include breakpoint (max-xxl) { + display: none; + } + } + } + } + + &.header-2 { + z-index: 9999; + position: relative; + + &::before { + @include before; + background-color: $theme-color; + left: 0; + right: initial; + width: 337px; + z-index: -1; + + @include breakpoint (max-xxxl) { + width: 235px; + } + + @include breakpoint (max-xxl) { + width: 100%; + } + } + + &::after { + background-color: $theme-color; + right: 0; + position: absolute; + content: ""; + top: 0; + bottom: 0; + height: 100%; + width: 420px; + z-index: -1; + + @include breakpoint (max-xxxl) { + width: 350px; + } + + @include breakpoint (max-xxl) { + display: none; + } + } + + .container-fluid { + padding: 0 100px; + + @include breakpoint (max-xl4) { + padding: 0 70px; + } + + @include breakpoint (max-xxxl) { + padding: 0 50px; + } + + @include breakpoint (max-xxl) { + padding: 0 30px; + } + + @include breakpoint (max-sm) { + padding: 0 15px; + } + } + + .header-left { + .logo { + .header-logo { + display: none; + } + } + } + + .header-right { + + .header-call-item { + + .theme-btn { + color: $white; + + @include breakpoint (max-xxl) { + display: none; + } + + i { + background-color: $white; + color: $header-color; + } + } + + .sidebar__toggle { + color: $white; + } + } + } + } + + &.header-3 { + position: relative; + + &::before { + @include before; + background-color: $theme-color-2; + left: 0; + right: initial; + width: 337px; + z-index: -1; + + @include breakpoint (max-xxxl) { + width: 300px; + } + + @include breakpoint (max-xxl) { + display: none; + } + } + + .container-fluid { + padding: 0 100px; + + @include breakpoint (max-xl4) { + padding: 0 70px; + } + + @include breakpoint (max-xxxl) { + padding: 0 50px; + } + + @include breakpoint (max-xxl) { + padding: 0 30px; + } + + @include breakpoint (max-sm) { + padding: 0 15px; + } + } + + .logo { + position: absolute; + left: 100px; + top: -15px; + z-index: 999; + + @include breakpoint (max-xxl){ + display: none; + } + } + + .header-main { + padding-left: 280px; + + @include breakpoint (max-xxl){ + padding-left: 0; + } + + .header-left { + @include breakpoint (max-xxl){ + .logo-2 { + display: block !important; + } + } + } + + .header-right { + + .header-call-item { + .icon-item { + @include flex; + gap: 12px; + + @include breakpoint (max-xxl){ + display: none; + } + + i { + color: $header-color; + font-size: 30px; + } + + .content { + h6 { + margin-bottom: 5px; + } + span { + font-size: 18px; + + a { + color: $header-color; + } + } + } + } + } + } + } + } +} + +//>>>>> Header 01 Start <<<<>>>> Sticky Start <<<<>>>> Offcanvas Start <<<<>>>> Nice Select Css Start <<<<>>>> Nice Select Css End <<<< ul { + padding: 0; + margin: 0; + width: 100%; + list-style-type: none; + display: block !important; + } + + .mean-container a.meanmenu-reveal { + display: none !important; + } + + .mean-container .mean-nav ul li a { + display: block; + width: 100%; + padding: 10px 0; + color: $black; + font-size: 16px; + font-weight: 600; + line-height: 2; + font-weight: 700; + text-transform: capitalize; + border-bottom: 1px solid rgba(0, 0, 0, 0.20) !important; + border: none; + + &:hover { + color: $theme-color-2; + } + } + + + .mean-container .mean-nav ul li .submenu li a { + border-bottom: none !important; + font-size: 14px; + padding: 6px 0; + color: $header-color; + } + + .mean-container .mean-nav ul li a:last-child { + border-bottom: 0; + } + .mean-container .mean-nav ul li a:hover { + color: $theme-color; + } + + .mean-container .mean-nav ul li a.mean-expand { + margin-top: 5px; + padding: 0 !important; + } + + .mean-container .mean-nav ul li > a > i { + display: none; + } + + .mean-container .mean-nav ul li > a.mean-expand i { + display: inline-block; + font-size: 18px; + } + + .mean-container .mean-nav > ul > li:first-child > a { + border-top: 0; + } + + .mean-container .mean-nav ul li a.mean-expand.mean-clicked i { + transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + @include transition; + } + + .mean-container .mean-nav ul li .mega-menu li a { + height: 200px; + width: 100%; + padding: 0; + border-top: 0; + margin-bottom: 20px; + } \ No newline at end of file diff --git a/public/assets/scss/_mixins.scss b/public/assets/scss/_mixins.scss new file mode 100644 index 0000000..5eca375 --- /dev/null +++ b/public/assets/scss/_mixins.scss @@ -0,0 +1,130 @@ +@mixin breakpoint($point) { + @if $point==xsmall { + @media (min-width: 450px) { + @content ; + } + } + @else if $point==max-xxsmall { + @media (max-width:450px) { + @content ; + } + } + @if $point==xxs { + @media (min-width: 470px) { + @content ; + } + } + @else if $point==max-xxs { + @media (max-width:470px) { + @content ; + } + } + @if $point==xs { + @media (min-width: 500px) { + @content ; + } + } + @else if $point==max-xs { + @media (max-width: 500px) { + @content ; + } + } + @if $point==sm { + @media (min-width: 576px) { + @content ; + } + } + @else if $point==max-sm { + @media (max-width: 575px) { + @content ; + } + } + @else if $point==md { + @media (min-width: 768px) { + @content ; + } + } + @else if $point==max-md { + @media (max-width: 767px) { + @content ; + } + } + @else if $point==lg { + @media (min-width: 992px) { + @content ; + } + } + @else if $point==max-lg { + @media (max-width: 991px) { + @content ; + } + } + @else if $point==xl { + @media (min-width: 1200px) { + @content ; + } + } + @else if $point==max-xl { + @media (max-width: 1199px) { + @content ; + } + } + @else if $point==xxl { + @media (min-width: 1400px) { + @content ; + } + } + @else if $point==max-xxl { + @media (max-width: 1399px) { + @content ; + } + } + @else if $point==xxxl { + @media (min-width: 1600px) { + @content ; + } + } + @else if $point==max-xxxl { + @media (max-width: 1600px) { + @content ; + } + } + @else if $point==xl4 { + @media (min-width: 1899px) { + @content ; + } + } + @else if $point==max-xl4 { + @media (max-width: 1899px) { + @content ; + } + } +} + +@mixin before { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + content: ""; +} + + +@mixin flex { + display: flex; + align-items: center; +} +@mixin transition { + transition: all 0.4s ease-in-out; +} + +@mixin imgw { + width: 100%; + height: 100%; +} + + + diff --git a/public/assets/scss/_news.scss b/public/assets/scss/_news.scss new file mode 100644 index 0000000..c8aa08b --- /dev/null +++ b/public/assets/scss/_news.scss @@ -0,0 +1,880 @@ +.news-card-item { + margin-top: 30px; + background-color: $bg-color; + border-radius: 16px; + + .news-image { + position: relative; + border-top-left-radius: 16px; + border-top-right-radius: 16px; + overflow: hidden; + + span { + border-radius: 100px; + background-color: $white; + color: $header-color; + font-size: 14px; + font-weight: 400; + padding: 4px 12px; + position: absolute; + top: 16px; + left: 16px; + z-index: 999; + } + + .news-layer-wrapper { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 100%; + display: flex; + transition: 0.5s; + + .news-layer-image { + width: 25%; + height: 100%; + transition: 0.5s; + background-size: cover; + + &:nth-child(1){ + background-position: 0; + transition-delay: 0; + } + + &:nth-child(2){ + background-position: 33.33%; + transition-delay: 0.1s; + } + + &:nth-child(3){ + background-position: 66.66%; + transition-delay: 0.2s; + } + + &:nth-child(4){ + background-position: 100%; + transition-delay: 0.3s; + } + } + } + + img { + @include imgw; + border-top-left-radius: 16px; + border-top-right-radius: 16px; + transform: scale(1.02); + transition: all 1.5s ease-out; + } + } + + .news-content { + padding: 16px 24px 30px; + + .list { + @include flex; + gap: 24px; + margin-bottom: 10px; + } + + h3 { + a { + background-position: 0 95%; + background-repeat: no-repeat; + background-size: 0% 2px; + display: inline; + + &:hover { + color: $theme-color; + background-size: 100% 2px; + background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%); + } + } + } + + .news-bottom { + @include flex; + justify-content: space-between; + border-top: 1px solid rgba(203, 204, 207, 0.24); + padding-top: 24px; + margin-top: 16px; + + .info-item { + @include flex; + gap: 8px; + } + } + } + + &:hover { + .news-image { + + .news-layer-wrapper { + .news-layer-image { + transform: translateY(-100%); + } + } + + img { + -webkit-transform: scale3d(1.1, 1.1, 1); + transform: scale3d(1.1, 1.1, 1); + } + } + } +} + +.news-main-item { + border-radius: 16px; + background-color: $bg-color; + padding: 30px; + @include flex; + justify-content: space-between; + margin-top: 30px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 30px; + } + + .news-left-content { + h2 { + sup { + font-size: 32px; + top: auto; + + @include breakpoint (max-lg) { + font-size: 30px; + } + + @include breakpoint (max-lg) { + font-size: 25px; + } + } + + span { + font-size: 16px; + font-weight: 400; + } + } + + h3 { + + @include breakpoint (max-xl) { + br { + display: none; + } + } + a { + background-position: 0 95%; + background-repeat: no-repeat; + background-size: 0% 2px; + display: inline; + + &:hover { + color: $theme-color; + background-size: 100% 2px; + background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%); + } + } + } + + .news-post { + @include flex; + justify-content: space-between; + margin-top: 30px; + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 20px; + } + + span { + text-transform: uppercase; + font-weight: 500; + color: $header-color; + } + } + } + + .news-right-content { + @include flex; + gap: 30px; + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 20px; + } + + .news-image { + overflow: hidden; + transition: scale 0.4s ease, transform 0.4s ease; + + @include breakpoint (max-lg) { + flex-basis: 100%; + } + + img { + @include imgw; + border-radius: 16px; + } + } + + .content { + p { + max-width: 388px; + margin-bottom: 30px; + } + + .theme-btn { + padding: 2px 4px 2px 24px; + } + } + } +} + +.news-card-items-3 { + @include flex; + border-radius: 16px; + background-color: $white; + margin-top: 30px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 30px; + padding: 10px; + } + + @include breakpoint (max-lg) { + flex-wrap: initial; + gap: 30px; + padding: 0; + } + + @include breakpoint (max-md) { + flex-wrap: wrap; + gap: 30px; + padding: 10px; + } + + .news-image { + + @include breakpoint (max-xxl) { + flex-basis: 100%; + } + + @include breakpoint (max-lg) { + flex-basis: initial; + } + + @include breakpoint (max-sm) { + flex-basis: 100%; + } + + img { + border-top-left-radius: 16px; + border-bottom-left-radius: 16px; + + @include breakpoint (max-xxl) { + @include imgw; + border-radius: 16px; + } + + @include breakpoint (max-lg) { + width: initial; + height: initial; + border-top-left-radius: 16px; + border-bottom-left-radius: 16px; + } + + @include breakpoint (max-sm) { + @include imgw; + border-radius: 16px; + } + } + } + + .news-content { + padding: 25px 25px 25px 30px; + + @include breakpoint (max-lg) { + padding: 0 25px; + } + + h3 { + a { + background-position: 0 95%; + background-repeat: no-repeat; + background-size: 0% 2px; + display: inline; + + &:hover { + color: $theme-color; + background-size: 100% 2px; + background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%); + } + } + } + + .info-item { + @include flex; + gap: 26px; + margin-top: 15px; + margin-bottom: 25px; + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 10px; + } + + .info-image { + @include flex; + gap: 8px; + + h6 { + font-weight: 500; + text-transform: uppercase; + } + } + } + + .theme-btn { + border: none; + padding: 0; + + &:hover { + background-color: transparent; + color: $theme-color; + + i { + background-color: $header-color; + color: $white; + } + } + } + } +} + +.news-standard-wrapper { + + .news-standard-post { + margin-bottom: 30px; + + .news-image { + img { + @include imgw; + border-radius: 16px; + } + } + + .news-content { + margin-top: 24px; + + .news-list { + @include flex; + gap: 40px; + margin-bottom: 16px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 10px; + } + + li { + i { + margin-right: 8px; + } + } + } + + h3 { + margin-bottom: 10px; + + a { + background-position: 0 95%; + background-repeat: no-repeat; + background-size: 0% 2px; + display: inline; + + &:hover { + color: $theme-color; + background-size: 100% 2px; + background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%); + } + } + } + + p { + margin-bottom: 40px; + + @include breakpoint (max-xxl) { + margin-bottom: 30px; + } + } + + .theme-btn { + padding: 4px 4px 4px 24px; + } + } + } +} + +.main-sideber { + + .news-sideber-box { + padding: 30px; + background-color: $bg-color; + border-radius: 16px; + margin-bottom: 32px; + + .wid-title { + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 16px; + margin-bottom: 24px; + } + + .search-widget { + form { + width: 100%; + position: relative; + + input { + background-color: $white; + font-size: 16px; + font-weight: 400; + padding: 16px 20px; + width: 100%; + border: none; + color: $text-color; + border-radius: 100px; + } + + button { + position: absolute; + right: 3px; + top: 3px; + bottom: 3px; + width: 50px; + height: 50px; + line-height: 50px; + border-radius: 100px; + font-size: 16px; + background-color: $theme-color; + color: $white; + text-align: center; + transition: all .3s ease-in-out; + + &:hover { + background-color: $header-color; + } + } + } + } + + .news-widget-categories { + ul { + li { + @include flex; + justify-content: space-between; + font-size: 16px; + font-weight: 400; + background-color: $white; + @include transition; + border-radius: 100px; + line-height: 1; + padding: 20px; + position: relative; + + @include breakpoint (max-xxl) { + font-size: 14px; + } + + i { + margin-right: 5px; + color: $theme-color-2; + } + + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 0%; + height: 100%; + background: $theme-color; + z-index: 0; + transition: width 0.5s ease; + border-radius: 100px; + } + + a { + color: $header-color; + } + + span { + @include transition; + color: $header-color; + } + + &:not(:last-child){ + margin-bottom: 20px; + } + + &:hover { + &::before { + width: 100%; + } + + i { + color: $white; + } + + a { + color: $white; + position: relative; + z-index: 999; + } + + span { + color: $white; + position: relative; + z-index: 999; + } + } + } + } + } + + .recent-post-area { + .recent-items { + @include flex; + gap: 20px; + + &:not(:last-child){ + margin-bottom: 20px; + } + + .recent-thumb { + img { + border-radius: 8px; + } + } + + .recent-content { + h6 { + margin-bottom: 10px; + line-height: 133%; + font-weight: 500; + font-size: 18px; + + @include breakpoint (max-xxl) { + font-size: 15px; + } + + a { + &:hover { + color: $theme-color; + } + } + } + + ul { + li { + color: $text-color; + } + } + } + } + } + + .tagcloud { + a { + display: inline-block; + padding: 12px 11px; + line-height: 1; + font-size: 16px; + font-weight: 400; + background: $white; + border-radius: 100px; + margin-right: 5px; + text-transform: capitalize; + margin-bottom: 10px; + color: $text-color; + @include transition; + position: relative; + + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 0%; + height: 100%; + background: $theme-color; + border-radius: 100px; + z-index: 0; + transition: width 0.5s ease; + } + + &:last-child { + margin-right: 0; + } + + &:hover { + color: $white; + z-index: 999; + position: relative; + + &::before { + width: 100%; + z-index: -1; + } + } + } + } + } +} + +.news-details-wrapper { + + .news-details-post { + + .news-details-image { + img { + @include imgw; + border-radius: 16px; + } + } + + .details-content { + margin-top: 24px; + + .news-list { + @include flex; + gap: 40px; + margin-bottom: 16px; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 10px; + } + + li { + i { + margin-right: 8px; + } + } + } + + h2 { + font-size: 40px; + margin-bottom: 10px; + + @include breakpoint (max-xxl) { + font-size: 20px; + } + } + + .thumb { + img { + @include imgw; + border-radius: 16px; + } + } + + .sideber { + background-color: $theme-color-2; + padding: 24px 30px; + margin-top: 24px; + margin-bottom: 24px; + border-radius: 8px; + + h5 { + color: $white; + font-weight: 500; + + @include breakpoint (max-xxl) { + font-size: 16px; + } + } + } + + .tag-share-wrap { + + .tagcloud { + + span { + font-size: 20px; + font-weight: 600; + display: inline-block; + margin-right: 8px; + color: $header-color; + font-family: $heading-font; + } + + a { + display: inline-block; + padding: 12px 26px; + line-height: 1; + background: $bg-color; + margin-right: 8px; + text-transform: capitalize; + color: $text-color; + font-weight: 400; + @include transition; + border-radius: 30px; + + @include breakpoint (max-xl){ + padding: 10px 18px; + } + + @include breakpoint (max-xl){ + margin-bottom: 15px;; + } + + &:hover { + background-color: $theme-color; + color: $white; + } + } + } + + .social-share { + + a { + font-size: 16px; + color: $header-color; + display: inline-block; + width: 36px; + height: 36px; + border-radius: 100px; + line-height: 36px; + text-align: center; + background-color: $bg-color; + + &:not(:last-child){ + margin-right: 10px; + } + + &:hover { + color: $white; + background-color: $theme-color; + } + } + } + } + + .comments-area { + margin-top: 40px; + border-top: 1px solid rgba(203, 204, 207, 0.24); + margin-top: 48px; + padding-top: 30px; + margin-bottom: 48px; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + + @include breakpoint (max-xxl) { + margin-bottom: 30px; + } + + .comments-heading { + margin-bottom: 30px; + + @include breakpoint (max-sm){ + margin-bottom: 20px; + } + } + + .news-single-comment { + + @include breakpoint (max-sm){ + flex-wrap: wrap; + gap: 20px; + } + + .image { + img { + border-radius: 12px; + } + } + + .content { + .head { + .con { + h4 { + margin-bottom: 5px; + } + } + + .reply { + font-weight: 500; + font-size: 16px; + color: $theme-color; + padding: 6px 14px; + text-transform: uppercase; + color: $white; + background-color: $header-color; + border-radius: 100px; + + &:hover { + background-color: $theme-color; + } + } + } + } + + &.style-2 { + margin-left: 90px; + + @include breakpoint (max-xxl){ + margin-left: 0; + } + } + } + } + + .form-clt { + position: relative; + + span { + color: $header-color; + font-size: 18px; + font-weight: 500; + font-family: $heading-font; + margin-bottom: 10px; + display: inline-block; + } + + input,textarea { + width: 100%; + border: none; + outline: none; + background: $bg-color; + color: $text-color; + border-radius: 100px; + padding: 18px 20px; + + @include breakpoint (max-md){ + padding: 14px 20px; + } + + @include breakpoint (max-sm){ + padding: 12px 18px; + } + + &::placeholder { + color: $text-color; + } + } + + textarea { + padding-bottom: 100px; + resize: none; + border-radius: 40px; + } + } + + .theme-btn { + width: 100%; + } + } + } +} \ No newline at end of file diff --git a/public/assets/scss/_preloader.scss b/public/assets/scss/_preloader.scss new file mode 100644 index 0000000..cd1350e --- /dev/null +++ b/public/assets/scss/_preloader.scss @@ -0,0 +1,446 @@ +.preloader { + align-items: center; + cursor: default; + display: flex; + height: 100%; + justify-content: center; + position: fixed; + left: 0; + top: 0; + width: 100%; + z-index: 9999999; + + .animation-preloader { + z-index: 1000; + + .spinner { + animation: spinner 1s infinite linear; + border-radius: 50%; + border: 3px solid rgba(0, 0, 0, 0.2); + border-top-color: $theme-color; + height: 9em; + margin: 0 auto 3.5em auto; + width: 9em; + + @media (max-width: 767px) { + width: 7.5em; + height: 7.5em; + margin: 0 auto 1.5em auto; + } + } + + .txt-loading { + font: bold 5em $heading-font, $body-font; + text-align: center; + user-select: none; + + @media (max-width: 767px) { + font-size: 2.5em; + } + + .letters-loading { + color: $theme-color; + position: relative; + + &:nth-child(2):before { + animation-delay: 0.2s; + } + + &:nth-child(3):before { + animation-delay: 0.4s; + } + + &:nth-child(4):before { + animation-delay: 0.6s; + } + + &:nth-child(5):before { + animation-delay: 0.8s; + } + + &:nth-child(6):before { + animation-delay: 1s; + } + + &:nth-child(7):before { + animation-delay: 1.2s; + } + + &:nth-child(8):before { + animation-delay: 1.4s; + } + + &::before { + animation: letters-loading 4s infinite; + color: $header-color; + content: attr(data-text-preloader); + left: 0; + opacity: 0; + font-family: $heading-font; + position: absolute; + top: -3px; + transform: rotateY(-90deg); + } + } + } + } + + p { + font-size: 15px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 8px; + color: $theme-color; + } + + .loader { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + font-size: 0; + z-index: 1; + pointer-events: none; + + .row { + height: 100%; + } + + .loader-section { + padding: 0px; + + .bg { + background-color: $bg-color; + height: 100%; + left: 0; + width: 100%; + transition: all 800ms cubic-bezier(0.77, 0, 0.175, 1); + } + } + } + + &.loaded { + .animation-preloader { + opacity: 0; + transition: 0.3s ease-out; + } + + .loader-section { + .bg { + width: 0; + transition: 0.7s 0.3s allcubic-bezier(0.1, 0.1, 0.1, 1); + } + } + } +} + + + + + + +.back-to-top { + background-color: $theme-color; + width: 50px; + height: 50px; + line-height: 40px; + border-radius: 100px; + color: $white; + font-size: 16px; + position: fixed; + display: inline-block; + z-index: 9999; + right: 30px; + bottom: 30px; + @include transition; + opacity: 0; + visibility: hidden; + transform: translateY(20px); + + @include breakpoint (max-sm) { + display: none; + } + + &:hover { + background-color: $white; + color: $theme-color-2; + } + + &.show { + opacity: 1; + visibility: visible; + transform: translate(0); + } +} + + + +.cursor-outer { + -webkit-margin-start: -12px; + margin-inline-start: -12px; + margin-top: -12px; + width: 30px; + height: 30px; + border: 1px solid $theme-color; + background-color: $theme-color; + -webkit-box-sizing: border-box; + box-sizing: border-box; + z-index: 10000000; + opacity: 0.34; + -webkit-transition: all 0.4s ease-out 0s; + transition: all 0.4s ease-out 0s; +} +.cursor-outer.cursor-hover { + opacity: 0.14; +} +.cursor-outer.cursor-big { + opacity: 0; +} +.mouseCursor { + position: fixed; + top: 0; + inset-inline-start: 0; + inset-inline-end: 0; + bottom: 0; + pointer-events: none; + border-radius: 50%; + -webkit-transform: translateZ(0); + transform: translateZ(0); + visibility: hidden; + text-align: center; +} +.mouseCursor.cursor-big { + width: 20px; + height: 20px; + -webkit-margin-start: -12px; + margin-inline-start: -12px; + margin-top: -12px; +} +.cursor-inner { + -webkit-margin-start: -3px; + margin-inline-start: -3px; + margin-top: -3px; + width: 10px; + height: 10px; + z-index: 10000001; + background-color: $theme-color; + opacity: 1; + -webkit-transition: all 0.24s ease-out 0s; + transition: all 0.24s ease-out 0s; + span { + color: $text-color; + line-height: 60px; + opacity: 0; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 12px; + } +} +.cursor-inner.cursor-big { + span { + opacity: 1; + } +} +.cursor-inner.cursor-hover { + -webkit-margin-start: -10px; + margin-inline-start: -10px; + margin-top: -10px; + width: 30px; + height: 30px; + background-color: $theme-color; + border: 1px solid #686363; + opacity: 0; +} + + + +.search-popup { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: -2; + -webkit-transition: all 1s ease; + -khtml-transition: all 1s ease; + -moz-transition: all 1s ease; + -ms-transition: all 1s ease; + -o-transition: all 1s ease; + transition: all 1s ease; +} + +.search-popup__overlay { + position: fixed; + width: 224vw; + height: 224vw; + top: calc(90px - 112vw); + right: calc(50% - 112vw); + z-index: 3; + display: block; + -webkit-border-radius: 50%; + -khtml-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + -webkit-transform: scale(0); + -khtml-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transition: transform 0.8s ease-in-out; + -khtml-transition: transform 0.8s ease-in-out; + -moz-transition: transform 0.8s ease-in-out; + -ms-transition: transform 0.8s ease-in-out; + -o-transition: transform 0.8s ease-in-out; + transition: transform 0.8s ease-in-out; + transition-delay: 0s; + transition-delay: 0.3s; + -webkit-transition-delay: 0.3s; + background-color: #000000; + opacity: 0.7; + cursor: url(../../assets/img/close.png), auto; +} + +@media (max-width: 767px) { + .search-popup__overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + transform: none; + width: 100%; + height: 100%; + border-radius: 0; + transform: translateY(-110%); + } +} + +.search-popup__content { + position: fixed; + width: 0; + max-width: 560px; + padding: 30px 15px; + left: 50%; + top: 50%; + opacity: 0; + z-index: 3; + -webkit-transform: translate(-50%, -50%); + -khtml-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s; + -khtml-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s; + -moz-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s; + -ms-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s; + -o-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s; + transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s; + transition-delay: 0s, 0.8s, 0s; + transition-delay: 0s, 0.4s, 0s; + transition-delay: 0.2s; + -webkit-transition-delay: 0.2s; +} + +.search-popup__form { + position: relative; +} + +.search-popup__form input[type=search], +.search-popup__form input[type=text] { + width: 100%; + height: 66px; + border: none; + outline: none; + padding-left: 20px; + background-color: $white; + font-size: 16px; + font-weight: 400; + color: $text-color; + transition: all 500ms ease; +} + +.search-popup__form input[type=search]:focus, +.search-popup__form input[type=text]:focus { + color: $header-color; +} + +.search-popup__form .search-btn { + padding: 0; + width: 66px; + height: 66px; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + top: 0; + right: -1px; + border-radius: 0; + font-size: 20px; + color: $white; + background-color: $theme-color; + @include transition; + + &:hover { + background-color: $black; + } +} + +.search-popup__form .eolexi-btn svg { + width: 1em; + height: 1em; + fill: currentColor; +} + +.search-popup.active { + z-index: 9999; +} + +.search-popup.active .search-popup__overlay { + top: auto; + bottom: calc(90px - 112vw); + -webkit-transform: scale(1); + -khtml-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + transition-delay: 0s; + -webkit-transition-delay: 0s; + opacity: 0.7; + -webkit-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1); + -khtml-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1); + -moz-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1); + -ms-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1); + -o-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1); + transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1); +} + +@media (max-width: 767px) { + .search-popup.active .search-popup__overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + transform: none; + width: 100%; + height: 100%; + border-radius: 0; + transform: translateY(0%); + } +} + +.search-popup.active .search-popup__content { + width: 100%; + opacity: 1; + transition-delay: 0.7s; + -webkit-transition-delay: 0.7s; +} + diff --git a/public/assets/scss/_pricing.scss b/public/assets/scss/_pricing.scss new file mode 100644 index 0000000..4b4f4de --- /dev/null +++ b/public/assets/scss/_pricing.scss @@ -0,0 +1,309 @@ +/* Pricing Section */ +.pricing-wrapper-2 { + + .pricing-content { + position: relative; + z-index: 9; + + .pricing-text { + margin-top: 25px; + max-width: 548px; + } + + .nav { + background-color: $white; + border-radius: 24.5px; + padding: 10px 20px; + margin-top: 40px; + border: none; + + @include breakpoint (max-xxl) { + margin-top: 15px; + } + + .nav-tabs { + border-bottom: 0; + display: flex; + } + + .nav-link { + font-size: 16px; + font-weight: 700; + text-transform: uppercase; + border: 0; + border-radius: 0; + padding: 0 40px; + position: relative; + background: transparent; + z-index: 2; + color: $text-color; + margin-bottom: 0; + + &::before { + content: ""; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%) translateX(50%); + background: $theme-color; + width: 43px; + height: 22px; + border-radius: 20px; + } + + &::after { + content: ""; + position: absolute; + right: -18px; + top: 50%; + transform: translateY(-50%); + width: 17px; + height: 17px; + border-radius: 50%; + background: $white; + z-index: 1; + } + + &:first-child { + padding-left: 0; + } + &:last-child { + padding-right: 0; + + &::after, + &::before { + display: none; + } + } + + &.active { + color: $theme-color-2; + + &::after { + right: 0; + } + } + } + } + } + + .pricing-right-items { + display: flex; + align-items: center; + + .pricing-box-items { + max-width: 417px; + width: 100%; + border-radius: 20px; + background: $header-color; + padding: 40px; + + @include breakpoint (max-xxl) { + padding: 30px; + } + + @include breakpoint (max-sm) { + padding: 25px; + } + + .pricing-header { + position: relative; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + padding-bottom: 35px; + position: relative; + z-index: 9; + margin-bottom: 32px; + + .sub-texts { + top: 40px; + right: 0; + position: absolute; + font-size: 24px; + font-weight: 700; + color: $white; + + @include breakpoint (max-sm) { + font-size: 20px; + } + } + + h2 { + font-size: 72px; + font-weight: 700; + line-height: 1; + color: $white; + + @include breakpoint (max-sm) { + font-size: 50px; + } + + sup { + font-size: 32px; + font-weight: 700; + top: -1.5em; + margin-right: -10px; + + @include breakpoint (max-sm) { + top: -0.5em; + } + } + + sub { + font-size: 20px; + font-weight: 600; + text-transform: capitalize; + margin-left: -10px; + } + } + } + + .theme-btn { + background: $theme-color; + color: $white; + border: none; + @include flex; + justify-content: space-between; + + i { + background-color: $white; + color: $header-color; + } + + &:hover { + background-color: $white; + color: $header-color; + + i { + background-color: $theme-color; + color: $white; + } + } + } + + ul { + margin-top: 24px; + + li { + color: $white; + + &:not(:last-child) { + margin-bottom: 15px; + } + + @include breakpoint (max-sm) { + font-size: 14px; + } + + i { + color: $theme-color-2; + margin-right: 8px; + + @include breakpoint (max-sm) { + margin-right: 5px; + } + } + } + } + + &.style-2 { + margin-left: -32%; + z-index: -1; + border-radius: 20px; + background: $white; + + @media (max-width: 767px) { + margin-left: -70%; + } + + .pricing-header { + + .sub-texts { + color: $header-color; + } + } + + .theme-btn { + width: 100%; + background-color: transparent; + border: 1px solid rgba(203, 204, 207, 0.24); + color: $header-color; + + i { + background-color: $theme-color; + color: $white; + } + } + + ul { + li { + color: $text-color; + } + } + } + + &::after { + display: none; + } + } + } +} + + +.pricing-card-items-3 { + border-radius: 16px; + background-color: $white; + backdrop-filter: blur(24px); + padding: 40px 48px; + margin-top: 30px; + @include transition; + + @include breakpoint (max-xl) { + padding: 30px; + } + + .pricing-header { + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 16px; + margin-bottom: 24px; + + h6 { + text-transform: uppercase; + font-weight: 500; + margin-bottom: 10px; + } + + h2 { + color: $theme-color-2; + } + } + + .pricing-list-box { + padding: 24px; + background-color: $bg-color; + margin-bottom: 30px; + border-radius: 16px; + + li { + color: $header-color; + + &:not(:last-child) { + margin-bottom: 15px; + } + + i { + color: $theme-color-2; + margin-right: 12px; + } + } + } + + .theme-btn { + width: 100%; + @include flex; + justify-content: space-between; + } + + &:hover { + transform: translateY(-10px); + } +} \ No newline at end of file diff --git a/public/assets/scss/_section.scss b/public/assets/scss/_section.scss new file mode 100644 index 0000000..7011344 --- /dev/null +++ b/public/assets/scss/_section.scss @@ -0,0 +1,126 @@ + +//>>>>> Section Title Start <<<<>>>> Section Title End <<<<>>>> Basic Css Start <<<<>>>> Basic Css End <<<<* { + grid-area: 1 / 1 / 2 / 2; + width: 100%; + height: 100%; + max-height: 100%; + } + } + } + + .testimonial-content { + margin-left: 50px; + position: relative; + + @include breakpoint (max-xxl) { + margin-left: 0; + } + + .content { + .star { + color: $theme-color; + margin-bottom: 20px; + } + + h3 { + font-size: 28px; + line-height: 143%; + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 40px; + margin-bottom: 30px; + font-weight: 500; + + @include breakpoint (max-xxl) { + font-size: 24px; + } + + @include breakpoint (max-lg) { + font-size: 20px; + } + + @include breakpoint (max-sm) { + font-size: 16px; + } + } + + .info-item { + @include flex; + gap: 20px; + + .icon { + width: 56px; + height: 56px; + line-height: 56px; + text-align: center; + border-radius: 100px; + background-color: $theme-color-2; + color: $white; + font-size: 30px; + } + + .content { + border-left: 1px solid rgba(203, 204, 207, 0.24); + padding-left: 30px; + } + } + } + + .array-buttons-3 { + position: absolute; + right: 0; + bottom: 0; + @include flex; + gap: 24px; + + @include breakpoint (max-sm) { + display: none; + } + + .array-prev { + width: 48px; + height: 48px; + line-height: 48px; + text-align: center; + background-color: $bg-color; + color: $header-color; + @include transition; + z-index: 999; + border-radius: 100px; + transform: rotate(320deg); + + &:hover { + background-color: $theme-color; + color: $white; + } + } + + .array-next { + width: 48px; + height: 48px; + line-height: 48px; + text-align: center; + background-color: $theme-color; + color: $white; + @include transition; + z-index: 999; + border-radius: 100px; + transform: rotate(320deg); + border: 1px solid $theme-color; + + &:hover { + background-color: $bg-color; + color: $header-color; + border: 1px solid $bg-color; + } + } + } + } +} \ No newline at end of file diff --git a/public/assets/scss/_typography.scss b/public/assets/scss/_typography.scss new file mode 100644 index 0000000..df01301 --- /dev/null +++ b/public/assets/scss/_typography.scss @@ -0,0 +1,174 @@ +/* -------------------------------------------- + Template Default Fonts & Fonts Styles + ---------------------------------------------- */ + +@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300..700&display=swap'); + +@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); + +$heading-font: 'Space Grotesk', serif; +$body-font: "Inter", sans-serif; +//font-family: "Font Awesome 6 Free"; +$fa: "Font Awesome 6 Pro"; + +body { + font-family: $body-font; + font-size: 16px; + font-weight: 400; + line-height: 24px; + color: $text-color; + background-color: $white; + padding: 0; + margin: 0; + overflow-x: hidden; + text-transform: capitalize; +} + +ul { + padding: 0; + margin: 0; + list-style: none; +} + +button { + border: none; + background-color: transparent; + padding: 0; +} + +input:focus{ + color: $white; + outline: none; +} + +input{ + color: $white; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: $heading-font; + margin: 0px; + padding: 0; + color: $header-color; + @include transition; + text-transform: capitalize; +} + +h1 { + font-size: 72px; + font-weight: 700; + line-height: 111%; + + @include breakpoint(max-xl4){ + font-size: 70px; + } + + @include breakpoint(max-xxxl){ + font-size: 60px; + } + + @include breakpoint(max-xxl){ + font-size: 55px; + } + + @include breakpoint(max-xl){ + font-size: 40px; + } + + @include breakpoint(max-lg){ + font-size: 40px; + } + + @include breakpoint(max-md){ + font-size: 32px; + } + + @include breakpoint(max-sm){ + font-size: 28px; + } +} + +h2 { + font-size: 48px; + font-weight: 700; + line-height: 117%; + + @include breakpoint(max-xxl){ + font-size: 50px; + } + + @include breakpoint(max-xl){ + font-size: 38px; + } + + @include breakpoint(max-lg){ + font-size: 38px; + } + + @include breakpoint(max-md){ + font-size: 35px; + } + + @include breakpoint(max-sm){ + font-size: 30px; + } + + @include breakpoint(max-xxs){ + font-size: 25px; + } +} + +h3 { + font-size: 24px; + font-weight: 700; + line-height: 133%; + + @include breakpoint(max-xl){ + font-size: 20px; + } +} + +h4 { + font-size: 22px; + font-weight: 700; + line-height: 141%; + + @include breakpoint(max-xl){ + font-size: 20px; + } +} + +h5 { + font-size: 20px; + font-weight: 700; + line-height: 140%; +} + +h6 { + font-size: 16px; + font-weight: 600; +} + +a { + text-decoration: none; + outline: none !important; + cursor: pointer; + color: $header-color; + @include transition; +} + +p { + margin: 0px; + @include transition; +} + +span { + margin: 0px; + // @include transition; +} + diff --git a/public/assets/scss/_variables.scss b/public/assets/scss/_variables.scss new file mode 100644 index 0000000..79dda32 --- /dev/null +++ b/public/assets/scss/_variables.scss @@ -0,0 +1,31 @@ + +:root { + + --body: #fff; + --black: #000; + --white: #fff; + --theme: #E13833; + --theme-2: #0048B4; + --header: #151A26; + --text: #535761; + --text-2: #0B4E3D; + --border: #C9C9C9; + --border-2: #CBCCCF; + --bg: #F8F8F9; + --bg-2: #153888; + --box-shadow: 0px 1px 14px 0px rgba(0, 0, 0, 0.13); +} + +// Theme Color - Defualt Colors +$black: var(--black); +$white: var(--white); +$theme-color: var(--theme); +$theme-color-2: var(--theme-2); +$text-color: var(--text); +$text-color-2: var(--text-2); +$header-color: var(--header); +$border-color: var(--border); +$border-color-2: var(--border-2); +$bg-color: var(--bg); +$bg-color-2: var(--bg-2); +$shadow: var(--pp-box-shadow); \ No newline at end of file diff --git a/public/assets/scss/_visa.scss b/public/assets/scss/_visa.scss new file mode 100644 index 0000000..9113488 --- /dev/null +++ b/public/assets/scss/_visa.scss @@ -0,0 +1,565 @@ +.visa-certification-wrapper { + + .visa-image { + margin-left: -310px; + + @include breakpoint (max-xxl) { + margin-left: 0; + } + + img { + @include imgw; + } + } + + .visa-certification-content { + margin-left: 17px; + + @include breakpoint (max-xxl) { + margin-left: 0; + margin-bottom: 100px; + margin-top: 100px; + } + + @include breakpoint (max-lg) { + margin-bottom: 80px; + margin-top: 0; + } + + .visa-item { + @include flex; + gap: 48px; + margin-top: 90px; + + @include breakpoint (max-xxl) { + margin-top: 30px; + gap: 30px; + } + + @include breakpoint (max-lg) { + flex-wrap: wrap; + gap: 30px; + } + + .nav { + display: grid; + gap: 30px; + + li { + font-size: 20px; + font-weight: 700; + font-family: $heading-font; + + @include breakpoint (max-xxl) { + font-size: 12px; + } + + @include breakpoint (max-lg) { + font-size: 16px; + } + + .nav-link { + color: $header-color; + @include transition; + padding: 16px 40px 16px 16px; + border-radius: 8px; + backdrop-filter: blur(28px); + background-color: $white; + line-height: 1; + + @include breakpoint (max-xxl) { + padding: 10px 10px 10px 10px; + } + + @include breakpoint (max-lg) { + padding: 16px 40px 16px 16px; + } + + i { + width: 24px; + height: 24px; + line-height: 24px; + text-align: center; + background-color: $theme-color; + color: $white; + border-radius: 50px; + font-size: 14px; + transform: rotate(-45deg); + margin-right: 6px; + } + + &.active { + position: relative; + background-color: $theme-color; + color: $white; + border-radius: 100px; + + i { + background-color: $white; + color: $theme-color; + } + } + } + } + } + + .content { + + .icon { + margin-bottom: 16px; + } + + p { + max-width: 479px; + margin-bottom: 40px; + margin-top: 10px; + } + } + } + } +} + +.visa-provide-box { + background-color: $white; + padding: 30px; + border-radius: 16px; + background-color: $white; + margin-top: 30px; + + .visa-top-item { + margin-bottom: 30px; + @include flex; + justify-content: space-between; + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + } + + .visa-left { + @include flex; + gap: 16px; + + p { + color: $theme-color; + } + + h3 { + a { + background-position: 0 95%; + background-repeat: no-repeat; + background-size: 0% 2px; + display: inline; + + &:hover { + color: $theme-color; + background-size: 100% 2px; + background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%); + } + } + } + } + + .theme-btn { + background-color: $bg-color; + + &:hover { + background-color: $theme-color; + color: $white; + } + } + } + + .visa-list-item { + @include flex; + justify-content: space-between; + + + @include breakpoint (max-xxl) { + flex-wrap: wrap; + gap: 20px; + } + + .list { + li { + font-size: 18px; + font-weight: 500; + font-family: $heading-font; + + @include breakpoint (max-xxxl) { + font-size: 16px; + } + + &:not(:last-child) { + margin-bottom: 20px; + } + + i { + width: 22px; + height: 22px; + line-height: 22px; + text-align: center; + border-radius: 50px; + background-color: $text-color; + color: $white; + margin-right: 8px; + font-size: 12px; + transform: rotate(-45deg); + } + } + } + } +} + +.visa-provide-section { + + .visa-slider { + margin-left: -400px; + margin-right: -400px; + + @include breakpoint (max-xxl) { + margin-right: 0; + margin-left: 0; + margin: 0 10px; + } + } +} + + +.visa-bottom { + position: relative; + margin-top: 70px; + + @include breakpoint (max-xxl) { + display: none; + } + + &::before { + background-color: $theme-color-2; + @include before; + width: 410px; + height: 132px; + padding: 16px 16px 16px 294px; + border-radius: 0 100px 100px 0; + + @include breakpoint (max-xxxl) { + display: none; + } + } + + &::after { + background-color: $theme-color-2; + position: absolute; + content: ""; + width: 410px; + height: 132px; + padding: 16px 16px 16px 294px; + border-radius: 100px 0 0 100px; + right: 0; + top: 0; + + @include breakpoint (max-xxxl) { + display: none; + } + } + + .visa-arrow-item { + @include flex; + justify-content: space-between; + + .array-prev { + width: 100px; + height: 100px; + line-height: 100px; + border-radius: 100%; + text-align: center; + background-color: $white; + color: $header-color; + position: relative; + z-index: 9; + margin-top: 16px; + margin-left: -15px; + font-size: 40px; + } + + .array-next { + width: 100px; + height: 100px; + line-height: 100px; + border-radius: 100%; + text-align: center; + background-color: $theme-color; + color: $white; + position: relative; + z-index: 9; + margin-top: 16px; + margin-right: -15px; + font-size: 40px; + } + + .flag-item { + @include flex; + gap: 24px; + + .flag-thumb { + position: relative; + transition: all 0.4s ease-in-out; + width: 120px; + height: 120px; + + img { + width: 100%; + height: 100%; + border-radius: 50%; + } + + &::before { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + content: ""; + background-color: rgba(5, 17, 26, 0.8); + border-radius: 50%; + transition: all 0.4s ease-in-out; + opacity: 0; + visibility: hidden; + } + + &::after { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + content: ""; + border: 5px solid $white; + border-radius: 50%; + transition: all 0.4s ease-in-out; + opacity: 0; + visibility: hidden; + } + + .country-name { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + z-index: 2; + transition: all 0.4s ease-in-out; + opacity: 0; + visibility: hidden; + + h4 { + font-size: 14px; + font-weight: 800; + text-transform: capitalize; + text-align: center; + color: $white; + } + } + + &:hover { + &::before { + opacity: 1; + visibility: visible; + } + + &::after { + opacity: 1; + visibility: visible; + } + + .country-name { + opacity: 1; + visibility: visible; + } + } + } + } + } +} + + +.country-details-wrapper { + + .country-details-post { + + .details-image { + + img { + @include imgw; + border-radius: 24px; + } + } + + .country-details-content { + margin-top: 20px; + + h2 { + margin-bottom: 10px; + } + + h5 { + color: $theme-color-2; + margin-top: 30px; + } + + .tourist-visa-box { + border-radius: 16px; + padding: 30px; + background-color: $bg-color; + margin-top: 30px; + margin-bottom: 24px; + + .tourist-box { + @include flex; + gap: 50px; + + .tourist-content { + h5 { + color: $header-color; + margin-bottom: 5px; + margin-top: 0; + } + } + + &.style-2 { + padding-bottom: 15px; + border-bottom: 1px solid rgba(203, 204, 207, 0.7); + margin-bottom: 15px; + } + } + } + + .text { + font-size: 32px; + } + + .list-item { + margin-top: 20px; + margin-bottom: 30px; + + li { + color: $header-color; + font-size: 18px; + font-weight: 500; + font-family: $heading-font; + + &:not(:last-child) { + margin-bottom: 15px; + } + + span { + font-size: 16px; + font-weight: 400; + color: $text-color; + font-family: $body-font; + } + } + } + + .thumb { + img { + @include imgw; + border-radius: 16px; + } + } + + .visa-list-2 { + @include flex; + gap: 32px; + margin-bottom: 20px; + + li { + font-size: 20px; + font-weight: 500; + color: $header-color; + + i { + color: $theme-color-2; + margin-right: 8px; + } + } + } + } + } + + .country-details-sideber { + + .icon-box-item { + background-color: $bg-color; + border-radius: 8px; + padding: 12px 24px; + @include flex; + justify-content: space-between; + margin-bottom: 8px; + + .left-item { + @include flex; + gap: 16px; + } + + i { + color: $header-color; + } + } + + .visa-contact-box { + border-radius: 24px; + padding: 40px; + margin-top: 30px; + + .content { + h3 { + color: $white; + } + + p { + color: rgba(255, 255, 255, 0.7); + border-bottom: 1px solid rgba(203, 204, 207, 0.24); + padding-bottom: 16px; + margin-bottom: 24px; + } + + .icon-item { + @include flex; + gap: 16px; + margin-bottom: 24px; + + .icon { + width: 48px; + height: 48px; + line-height: 48px; + text-align: center; + border-radius: 100px; + background-color: #183074; + color: $white; + } + + .cont { + span { + color: rgba(255, 255, 255, 0.7); + } + + h6 { + color: $white; + font-size: 18px; + font-weight: 500; + + a { + color: $white; + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/public/assets/scss/main.scss b/public/assets/scss/main.scss new file mode 100644 index 0000000..bc6977e --- /dev/null +++ b/public/assets/scss/main.scss @@ -0,0 +1,102 @@ +/* +Theme Name: Visaway +Author: Gramentheme +Author URI: https://themeforest.net/user/Gramentheme/portfolio +Description: Visaway – Immigration & Visa Consulting HTML Template +Service Html Template +Version: 1.0.0 +*/ + +/*CSS Table Of Content Ends Here*/ + +/* +-------------------------------------------------------------- +[Table of Contents] +-------------------------------------------------------------- +01. Variables & Mixins +02. Typography +03. Buttons +04. About +05. Animation +06. Brand +07. Contact +08. Cta +09. Faq +10. Feature +11. Footer +12. Header +13. Helping +14. Hero +15. Marquee +16. Meanmenu +17. News +18. Preloader +19. Pricing +20. Section +21. Service +22. Testimonial +23. Visa + + +-------------------------------------------------------------- +*/ + +//>> Basic Start <> Mixins <> Variables <> Buttons <> Typography <> Basic End <> Template Section Style Start <> About <> Animation <> Brand <> Contact <> Cta <> Faq <> Feature <> Footer <> Header <> Helping <> Hero <> Marquee <> MeanMenu <> News <> _Preloader <> _Pricing <> Section <> Service <> Testimonial <> Visa <> Template Section Style End < \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3a13f90 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +}