diff --git a/bitmaps_reference/test-pp/games_mobile.png b/bitmaps_reference/test-pp/games_mobile.png index 71920086..b8c816c0 100644 Binary files a/bitmaps_reference/test-pp/games_mobile.png and b/bitmaps_reference/test-pp/games_mobile.png differ diff --git a/bitmaps_reference/test-pp/games_tablet.png b/bitmaps_reference/test-pp/games_tablet.png index dab2d75b..1a0e2ad4 100644 Binary files a/bitmaps_reference/test-pp/games_tablet.png and b/bitmaps_reference/test-pp/games_tablet.png differ diff --git a/source/fonts/alumni-extrabold.woff b/source/fonts/alumni-extrabold.woff new file mode 100644 index 00000000..85993f0e Binary files /dev/null and b/source/fonts/alumni-extrabold.woff differ diff --git a/source/fonts/alumni-extrabold.woff2 b/source/fonts/alumni-extrabold.woff2 new file mode 100644 index 00000000..45369f2d Binary files /dev/null and b/source/fonts/alumni-extrabold.woff2 differ diff --git a/source/fonts/alumni-semibold.woff b/source/fonts/alumni-semibold.woff new file mode 100644 index 00000000..799ac39b Binary files /dev/null and b/source/fonts/alumni-semibold.woff differ diff --git a/source/fonts/alumni-semibold.woff2 b/source/fonts/alumni-semibold.woff2 new file mode 100644 index 00000000..d313bee1 Binary files /dev/null and b/source/fonts/alumni-semibold.woff2 differ diff --git a/source/fonts/robotocondensed-bold.woff b/source/fonts/robotocondensed-bold.woff new file mode 100644 index 00000000..86f38da1 Binary files /dev/null and b/source/fonts/robotocondensed-bold.woff differ diff --git a/source/fonts/robotocondensed-bold.woff2 b/source/fonts/robotocondensed-bold.woff2 new file mode 100644 index 00000000..8586908e Binary files /dev/null and b/source/fonts/robotocondensed-bold.woff2 differ diff --git a/source/fonts/robotocondensed-light.woff b/source/fonts/robotocondensed-light.woff new file mode 100644 index 00000000..5652bd72 Binary files /dev/null and b/source/fonts/robotocondensed-light.woff differ diff --git a/source/fonts/robotocondensed-light.woff2 b/source/fonts/robotocondensed-light.woff2 new file mode 100644 index 00000000..190b450c Binary files /dev/null and b/source/fonts/robotocondensed-light.woff2 differ diff --git a/source/fonts/robotocondensed-regular.woff b/source/fonts/robotocondensed-regular.woff new file mode 100644 index 00000000..dd4ebd45 Binary files /dev/null and b/source/fonts/robotocondensed-regular.woff differ diff --git a/source/fonts/robotocondensed-regular.woff2 b/source/fonts/robotocondensed-regular.woff2 new file mode 100644 index 00000000..8bc49d8e Binary files /dev/null and b/source/fonts/robotocondensed-regular.woff2 differ diff --git a/source/img/about/about-desk.jpg b/source/img/about/about-desk.jpg new file mode 100644 index 00000000..d78191d3 Binary files /dev/null and b/source/img/about/about-desk.jpg differ diff --git a/source/img/about/about-desk.webp b/source/img/about/about-desk.webp new file mode 100644 index 00000000..b0e4088a Binary files /dev/null and b/source/img/about/about-desk.webp differ diff --git a/source/img/about/about-desk@2x.jpg b/source/img/about/about-desk@2x.jpg new file mode 100644 index 00000000..3410b059 Binary files /dev/null and b/source/img/about/about-desk@2x.jpg differ diff --git a/source/img/about/about-desk@2x.webp b/source/img/about/about-desk@2x.webp new file mode 100644 index 00000000..d25e967e Binary files /dev/null and b/source/img/about/about-desk@2x.webp differ diff --git a/source/img/about/about-mob.jpg b/source/img/about/about-mob.jpg new file mode 100644 index 00000000..6a28f952 Binary files /dev/null and b/source/img/about/about-mob.jpg differ diff --git a/source/img/about/about-mob.webp b/source/img/about/about-mob.webp new file mode 100644 index 00000000..9e8af3ab Binary files /dev/null and b/source/img/about/about-mob.webp differ diff --git a/source/img/about/about-mob@2x.jpg b/source/img/about/about-mob@2x.jpg new file mode 100644 index 00000000..34b126ff Binary files /dev/null and b/source/img/about/about-mob@2x.jpg differ diff --git a/source/img/about/about-mob@2x.webp b/source/img/about/about-mob@2x.webp new file mode 100644 index 00000000..d9ec6fa4 Binary files /dev/null and b/source/img/about/about-mob@2x.webp differ diff --git a/source/img/about/about-tab.jpg b/source/img/about/about-tab.jpg new file mode 100644 index 00000000..d42c2922 Binary files /dev/null and b/source/img/about/about-tab.jpg differ diff --git a/source/img/about/about-tab.webp b/source/img/about/about-tab.webp new file mode 100644 index 00000000..099915cf Binary files /dev/null and b/source/img/about/about-tab.webp differ diff --git a/source/img/about/about-tab@2x.jpg b/source/img/about/about-tab@2x.jpg new file mode 100644 index 00000000..9bd7450c Binary files /dev/null and b/source/img/about/about-tab@2x.jpg differ diff --git a/source/img/about/about-tab@2x.webp b/source/img/about/about-tab@2x.webp new file mode 100644 index 00000000..986f5a1f Binary files /dev/null and b/source/img/about/about-tab@2x.webp differ diff --git a/source/img/about/video-desk.jpg b/source/img/about/video-desk.jpg new file mode 100644 index 00000000..90bda1fb Binary files /dev/null and b/source/img/about/video-desk.jpg differ diff --git a/source/img/about/video-desk@2x.jpg b/source/img/about/video-desk@2x.jpg new file mode 100644 index 00000000..10d754ff Binary files /dev/null and b/source/img/about/video-desk@2x.jpg differ diff --git a/source/img/about/video-mob.jpg b/source/img/about/video-mob.jpg new file mode 100644 index 00000000..ba6dc046 Binary files /dev/null and b/source/img/about/video-mob.jpg differ diff --git a/source/img/about/video-mob@2x.jpg b/source/img/about/video-mob@2x.jpg new file mode 100644 index 00000000..5b24de47 Binary files /dev/null and b/source/img/about/video-mob@2x.jpg differ diff --git a/source/img/about/video-tab.jpg b/source/img/about/video-tab.jpg new file mode 100644 index 00000000..82cf2e30 Binary files /dev/null and b/source/img/about/video-tab.jpg differ diff --git a/source/img/about/video-tab@2x.jpg b/source/img/about/video-tab@2x.jpg new file mode 100644 index 00000000..bedb3cd5 Binary files /dev/null and b/source/img/about/video-tab@2x.jpg differ diff --git a/source/img/games/games-desk.jpg b/source/img/games/games-desk.jpg new file mode 100644 index 00000000..c15e193e Binary files /dev/null and b/source/img/games/games-desk.jpg differ diff --git a/source/img/games/games-desk.webp b/source/img/games/games-desk.webp new file mode 100644 index 00000000..ad759775 Binary files /dev/null and b/source/img/games/games-desk.webp differ diff --git a/source/img/games/games-desk@2x.jpg b/source/img/games/games-desk@2x.jpg new file mode 100644 index 00000000..5d67a453 Binary files /dev/null and b/source/img/games/games-desk@2x.jpg differ diff --git a/source/img/games/games-desk@2x.webp b/source/img/games/games-desk@2x.webp new file mode 100644 index 00000000..cb6a6728 Binary files /dev/null and b/source/img/games/games-desk@2x.webp differ diff --git a/source/img/games/games-tab.jpg b/source/img/games/games-tab.jpg new file mode 100644 index 00000000..d87fba10 Binary files /dev/null and b/source/img/games/games-tab.jpg differ diff --git a/source/img/games/games-tab.webp b/source/img/games/games-tab.webp new file mode 100644 index 00000000..d6517cb3 Binary files /dev/null and b/source/img/games/games-tab.webp differ diff --git a/source/img/games/games-tab@2x.jpg b/source/img/games/games-tab@2x.jpg new file mode 100644 index 00000000..6957f546 Binary files /dev/null and b/source/img/games/games-tab@2x.jpg differ diff --git a/source/img/games/games-tab@2x.webp b/source/img/games/games-tab@2x.webp new file mode 100644 index 00000000..3e46125d Binary files /dev/null and b/source/img/games/games-tab@2x.webp differ diff --git a/source/img/games/games.jpg b/source/img/games/games.jpg new file mode 100644 index 00000000..1e0a7b01 Binary files /dev/null and b/source/img/games/games.jpg differ diff --git a/source/img/games/games.webp b/source/img/games/games.webp new file mode 100644 index 00000000..1aeabccb Binary files /dev/null and b/source/img/games/games.webp differ diff --git a/source/img/games/games@2x.jpg b/source/img/games/games@2x.jpg new file mode 100644 index 00000000..4545df03 Binary files /dev/null and b/source/img/games/games@2x.jpg differ diff --git a/source/img/games/games@2x.webp b/source/img/games/games@2x.webp new file mode 100644 index 00000000..120c2978 Binary files /dev/null and b/source/img/games/games@2x.webp differ diff --git a/source/img/hero/hero-desktop.jpg b/source/img/hero/hero-desktop.jpg new file mode 100644 index 00000000..96f40770 Binary files /dev/null and b/source/img/hero/hero-desktop.jpg differ diff --git a/source/img/hero/hero-desktop.webp b/source/img/hero/hero-desktop.webp new file mode 100644 index 00000000..7ef86c9d Binary files /dev/null and b/source/img/hero/hero-desktop.webp differ diff --git a/source/img/hero/hero-desktop@2x.jpg b/source/img/hero/hero-desktop@2x.jpg new file mode 100644 index 00000000..722aa17b Binary files /dev/null and b/source/img/hero/hero-desktop@2x.jpg differ diff --git a/source/img/hero/hero-desktop@2x.webp b/source/img/hero/hero-desktop@2x.webp new file mode 100644 index 00000000..4ff7b6eb Binary files /dev/null and b/source/img/hero/hero-desktop@2x.webp differ diff --git a/source/img/hero/hero-tab.jpg b/source/img/hero/hero-tab.jpg new file mode 100644 index 00000000..c55124b1 Binary files /dev/null and b/source/img/hero/hero-tab.jpg differ diff --git a/source/img/hero/hero-tab.webp b/source/img/hero/hero-tab.webp new file mode 100644 index 00000000..4778dc9f Binary files /dev/null and b/source/img/hero/hero-tab.webp differ diff --git a/source/img/hero/hero-tab@2x.jpg b/source/img/hero/hero-tab@2x.jpg new file mode 100644 index 00000000..1d5c545c Binary files /dev/null and b/source/img/hero/hero-tab@2x.jpg differ diff --git a/source/img/hero/hero-tab@2x.webp b/source/img/hero/hero-tab@2x.webp new file mode 100644 index 00000000..bbb5caa5 Binary files /dev/null and b/source/img/hero/hero-tab@2x.webp differ diff --git a/source/img/juri/alexander.jpg b/source/img/juri/alexander.jpg new file mode 100644 index 00000000..f36895bd Binary files /dev/null and b/source/img/juri/alexander.jpg differ diff --git a/source/img/juri/alexander.webp b/source/img/juri/alexander.webp new file mode 100644 index 00000000..c29b59ef Binary files /dev/null and b/source/img/juri/alexander.webp differ diff --git a/source/img/juri/alexander@2x.jpg b/source/img/juri/alexander@2x.jpg new file mode 100644 index 00000000..2d0ee67b Binary files /dev/null and b/source/img/juri/alexander@2x.jpg differ diff --git a/source/img/juri/alexander@2x.webp b/source/img/juri/alexander@2x.webp new file mode 100644 index 00000000..33ce3c5a Binary files /dev/null and b/source/img/juri/alexander@2x.webp differ diff --git a/source/img/juri/alexei.jpg b/source/img/juri/alexei.jpg new file mode 100644 index 00000000..6a276d78 Binary files /dev/null and b/source/img/juri/alexei.jpg differ diff --git a/source/img/juri/alexei.webp b/source/img/juri/alexei.webp new file mode 100644 index 00000000..64cd7275 Binary files /dev/null and b/source/img/juri/alexei.webp differ diff --git a/source/img/juri/alexei@2x.jpg b/source/img/juri/alexei@2x.jpg new file mode 100644 index 00000000..c0901eb7 Binary files /dev/null and b/source/img/juri/alexei@2x.jpg differ diff --git a/source/img/juri/alexei@2x.webp b/source/img/juri/alexei@2x.webp new file mode 100644 index 00000000..af7d33c3 Binary files /dev/null and b/source/img/juri/alexei@2x.webp differ diff --git a/source/img/juri/anna.jpg b/source/img/juri/anna.jpg new file mode 100644 index 00000000..df4492a0 Binary files /dev/null and b/source/img/juri/anna.jpg differ diff --git a/source/img/juri/anna.webp b/source/img/juri/anna.webp new file mode 100644 index 00000000..6e64f308 Binary files /dev/null and b/source/img/juri/anna.webp differ diff --git a/source/img/juri/anna@2x.jpg b/source/img/juri/anna@2x.jpg new file mode 100644 index 00000000..12f50a6e Binary files /dev/null and b/source/img/juri/anna@2x.jpg differ diff --git a/source/img/juri/anna@2x.webp b/source/img/juri/anna@2x.webp new file mode 100644 index 00000000..1bfae13b Binary files /dev/null and b/source/img/juri/anna@2x.webp differ diff --git a/source/img/juri/maria.jpg b/source/img/juri/maria.jpg new file mode 100644 index 00000000..460db979 Binary files /dev/null and b/source/img/juri/maria.jpg differ diff --git a/source/img/juri/maria.webp b/source/img/juri/maria.webp new file mode 100644 index 00000000..1ad3375a Binary files /dev/null and b/source/img/juri/maria.webp differ diff --git a/source/img/juri/maria@2x.jpg b/source/img/juri/maria@2x.jpg new file mode 100644 index 00000000..ce19ae0c Binary files /dev/null and b/source/img/juri/maria@2x.jpg differ diff --git a/source/img/juri/maria@2x.webp b/source/img/juri/maria@2x.webp new file mode 100644 index 00000000..c194c6e7 Binary files /dev/null and b/source/img/juri/maria@2x.webp differ diff --git a/source/img/offers/offers-desktop.jpg b/source/img/offers/offers-desktop.jpg new file mode 100644 index 00000000..ed672fc2 Binary files /dev/null and b/source/img/offers/offers-desktop.jpg differ diff --git a/source/img/offers/offers-desktop.webp b/source/img/offers/offers-desktop.webp new file mode 100644 index 00000000..01c3d546 Binary files /dev/null and b/source/img/offers/offers-desktop.webp differ diff --git a/source/img/offers/offers-desktop@2x.jpg b/source/img/offers/offers-desktop@2x.jpg new file mode 100644 index 00000000..8316b8ad Binary files /dev/null and b/source/img/offers/offers-desktop@2x.jpg differ diff --git a/source/img/offers/offers-desktop@2x.webp b/source/img/offers/offers-desktop@2x.webp new file mode 100644 index 00000000..7f9b4cab Binary files /dev/null and b/source/img/offers/offers-desktop@2x.webp differ diff --git a/source/img/offers/offers-mob.jpg b/source/img/offers/offers-mob.jpg new file mode 100644 index 00000000..bfa4571d Binary files /dev/null and b/source/img/offers/offers-mob.jpg differ diff --git a/source/img/offers/offers-mob.webp b/source/img/offers/offers-mob.webp new file mode 100644 index 00000000..8b5b44ed Binary files /dev/null and b/source/img/offers/offers-mob.webp differ diff --git a/source/img/offers/offers-mob@2x.jpg b/source/img/offers/offers-mob@2x.jpg new file mode 100644 index 00000000..9e41c11f Binary files /dev/null and b/source/img/offers/offers-mob@2x.jpg differ diff --git a/source/img/offers/offers-mob@2x.webp b/source/img/offers/offers-mob@2x.webp new file mode 100644 index 00000000..9d1e676e Binary files /dev/null and b/source/img/offers/offers-mob@2x.webp differ diff --git a/source/img/offers/offers-tab.jpg b/source/img/offers/offers-tab.jpg new file mode 100644 index 00000000..8c5ad74d Binary files /dev/null and b/source/img/offers/offers-tab.jpg differ diff --git a/source/img/offers/offers-tab.webp b/source/img/offers/offers-tab.webp new file mode 100644 index 00000000..828fae23 Binary files /dev/null and b/source/img/offers/offers-tab.webp differ diff --git a/source/img/offers/offers-tab@2x.jpg b/source/img/offers/offers-tab@2x.jpg new file mode 100644 index 00000000..5543af5c Binary files /dev/null and b/source/img/offers/offers-tab@2x.jpg differ diff --git a/source/img/offers/offers-tab@2x.webp b/source/img/offers/offers-tab@2x.webp new file mode 100644 index 00000000..c156fcb6 Binary files /dev/null and b/source/img/offers/offers-tab@2x.webp differ diff --git a/source/img/price/price-bg.png b/source/img/price/price-bg.png new file mode 100644 index 00000000..3adb9b69 Binary files /dev/null and b/source/img/price/price-bg.png differ diff --git a/source/img/price/price-bg.webp b/source/img/price/price-bg.webp new file mode 100644 index 00000000..8af20aec Binary files /dev/null and b/source/img/price/price-bg.webp differ diff --git a/source/img/price/price-bg@2x.png b/source/img/price/price-bg@2x.png new file mode 100644 index 00000000..31d32345 Binary files /dev/null and b/source/img/price/price-bg@2x.png differ diff --git a/source/img/price/price-bg@2x.webp b/source/img/price/price-bg@2x.webp new file mode 100644 index 00000000..99ebd266 Binary files /dev/null and b/source/img/price/price-bg@2x.webp differ diff --git a/source/img/reviews/reviews-user.png b/source/img/reviews/reviews-user.png new file mode 100644 index 00000000..9d65f65e Binary files /dev/null and b/source/img/reviews/reviews-user.png differ diff --git a/source/img/reviews/reviews-user.webp b/source/img/reviews/reviews-user.webp new file mode 100644 index 00000000..291416ee Binary files /dev/null and b/source/img/reviews/reviews-user.webp differ diff --git a/source/img/reviews/reviews-user@2x.png b/source/img/reviews/reviews-user@2x.png new file mode 100644 index 00000000..ebd6309d Binary files /dev/null and b/source/img/reviews/reviews-user@2x.png differ diff --git a/source/img/reviews/reviews-user@2x.webp b/source/img/reviews/reviews-user@2x.webp new file mode 100644 index 00000000..794eadb3 Binary files /dev/null and b/source/img/reviews/reviews-user@2x.webp differ diff --git a/source/img/sprite/arrow.svg b/source/img/sprite/arrow.svg new file mode 100644 index 00000000..ff5d5ee4 --- /dev/null +++ b/source/img/sprite/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/logo.svg b/source/img/sprite/logo.svg index aee2e13c..f2ead4cf 100644 --- a/source/img/sprite/logo.svg +++ b/source/img/sprite/logo.svg @@ -1,15 +1,10 @@ - - - - - - - - - - - - - - + + + + + + + + + diff --git a/source/img/sprite/minus 2.svg b/source/img/sprite/minus 2.svg new file mode 100644 index 00000000..372cb02b --- /dev/null +++ b/source/img/sprite/minus 2.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/minus-tab.svg b/source/img/sprite/minus-tab.svg new file mode 100644 index 00000000..16b0f055 --- /dev/null +++ b/source/img/sprite/minus-tab.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/minus.svg b/source/img/sprite/minus.svg new file mode 100644 index 00000000..372cb02b --- /dev/null +++ b/source/img/sprite/minus.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/ok.svg b/source/img/sprite/ok.svg new file mode 100644 index 00000000..d32aa14f --- /dev/null +++ b/source/img/sprite/ok.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/plus-white.svg b/source/img/sprite/plus-white.svg new file mode 100644 index 00000000..75dc95b9 --- /dev/null +++ b/source/img/sprite/plus-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/plus.svg b/source/img/sprite/plus.svg new file mode 100644 index 00000000..55e5351e --- /dev/null +++ b/source/img/sprite/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/reddit.svg b/source/img/sprite/reddit.svg new file mode 100644 index 00000000..fd3b3845 --- /dev/null +++ b/source/img/sprite/reddit.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/rub.svg b/source/img/sprite/rub.svg new file mode 100644 index 00000000..49c87754 --- /dev/null +++ b/source/img/sprite/rub.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/source/img/sprite/user.svg "b/source/img/sprite/user\302\240.svg" similarity index 100% rename from source/img/sprite/user.svg rename to "source/img/sprite/user\302\240.svg" diff --git a/source/img/sprite/video-play.svg b/source/img/sprite/video-play.svg new file mode 100644 index 00000000..2a7c9c84 --- /dev/null +++ b/source/img/sprite/video-play.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/img/sprite/vk.svg b/source/img/sprite/vk.svg new file mode 100644 index 00000000..f57681ef --- /dev/null +++ b/source/img/sprite/vk.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/index.html b/source/index.html index efa99257..bbdf208b 100644 --- a/source/index.html +++ b/source/index.html @@ -1,32 +1,871 @@ - - + SUPERGYM + + + + + + + + + + + + + - - - Это спрайт - - - - -
hero
-
about
-
price
-
games
-
juri
-
features
-
offers
-
faq
-
reviews
-
form
-
footer
+

Фитнесс глуб Fitness

+
+
+
+ + 8 800 555-55-55 +
+
+ +
+

Тренажёрный зал Групповые занятия Кардио-зона

+
+ +
+ +
+
+
+
+

Немного о нашем клубе

+
+
+

Тренажёрный зал

+

Просторный зал площадью 900 кв/м

+

Supergym – самый большой фитнес центр
за Уралом и идеальное место для укрепления тела и здоровья. Тренажёрный зал оснащён всем необходимым современным оборудованием для всех спортсменов.

+ В зале расположены отдельная зона для Crossfit и кардио-зона с 40 тренажёрами. Также в фитнес центре есть несколько оборудованных залов для различных видов групповых занятий. +
+
+ + + + + + + Фото зала. + +
+ + +
+
+
+
+
+

Абонементы

+ +
+ +
+
+ +
+
+ +
+
+
+

Промо предложение

+
+
+

Super games

+
    +
  • +

    + Дата +

    +

    7

    +

    Марта

    +

    2019

    +
  • +
  • +

    Время

    +

    12:00

    +
  • +
+

Ежегодные соревнования по CrossFit

+ Заполнить заявку +
+
+
+ + + + + + + Промо фото игр. + +
+
+
+

Жюри

+
+
+
    +
  • +
    + + + Анна Павлова. + +

    Анна Павлова

    +
    +

    Анна Павлова

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Алексей Лавров. + +

    Алексей Лавров

    +
    +

    Алексей Лавров

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Александр Пашков. + +

    Александр Пашков

    +
    +

    Александр Пашков

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Мария Кетова. + +

    Мария Кетова

    +
    +

    Мария Кетова

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Анна Павлова. + +

    Анна Павлова

    +
    +

    Анна Павлова

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Алексей Лавров. + +

    Алексей Лавров

    +
    +

    Алексей Лавров

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Александр Пашков. + +

    Александр Пашков

    +
    +

    Александр Пашков

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
  • +
    + + + Мария Кетова. + +

    Мария Кетова

    +
    +

    Мария Кетова

    +

    CrossFit

    +
      +
    • +

      Certified Level 3 Trainer

      +
    • +
    • +

      Победитель чемпионата России по CrossFit

      +
    • +
    • +

      Опыт — 6 лет

      +
    • +
    +
    +
    +
  • +
+
+
+ + +
+
+

Наши преимущества

+
+
+
+
+

900

+ кв/м +
+
+

Площадь

+

Занимайтесь без очередей и толкучки

+
+
+
+
+

70

+ машин +
+
+

Собственная парковка

+

Вы всегда найдёте место для своей машины на нашей парковке

+
+
+
+
+

100

+

Тренажёров

+

Современные тренажёры на все группы мышц

+
+
+
+
+

350

+ мест +
+
+

Комфорт

+

Просторные раздевалки, душевые, фен, Wi-Fi, кулеры

+
+
+
+
+

5+

+ лет +
+
+

Тренерский опыт

+

Добивайтесь своих целей быстрее с профессиональным тренером

+
+
+
+
+
+
+

Акции

+
+
+
+

Год

+ 4999 +

Безлимитный абонемент в тренажёрный зал

+ Подробнее +
+ + + + + + + Спортивная девушка. + +
+
    +
  • +

    Месяц бесплатно

    +

    Приведи друга, получи абонемент
    в подарок

    + Подробнее +
  • +
  • +

    Скидка 20%

    +

    Корпоративный фитнес с командой

    + Подробнее +
  • +
+
+
+
+

Вопросы и ответы

+
+
+ + + + +
+
+
    +
  • + + +
    +

    При первом посещении и покупке абонемента, необходимо заполнить анкету
    и подписать договор.
    При покупке абонемента онлайн, анкета также заполняется онлайн
    и договор придёт вам на почту.

    +
    +
  • +
  • + + +
    +

    На сайте или спросить бумажную копию на ресепшене.

    +
    +
  • +
  • + + +
    +

    Полотенца предоставляются при посещении. Кулер в каждом зале.

    +
    +
  • +
  • + + +
    +

    Подробнее о тренерах нашего клуба вы найдете в разделе жюри.

    +
    +
  • +
+
    +
  • + + +
    +

    При посещении тренажерного зала вам необходимо оплатить занятия с тренером отдельно. В зале всегда присутствует дежурный тренер, которому можно задать вопрос, получить небольшую консультацию по тренажеру или технике выполнения упражнения.

    +
    +
  • +
  • + + +
    +

    Можно. Количество дней зависит от типа карты. Подробнее узнать наличие заморозки на своей карте можно у менеджера продаж.

    +
    +
  • +
  • + + +
    +

    Часы посещения клуба регламинтируется типом карты. Подробнее узнать можно у менеджера продаж.

    +
    +
  • +
  • + + +
    +

    Подробнее узнать можно у менеджера продаж.

    +
    +
  • +
+
    +
  • + + +
    +

    Да. Вы можете обратиться как к своему тренеру, так и к нашему нутрициологу. Специалист уточнит ваши данные, цели и предложит программу питания.

    +
    +
  • +
  • + + +
    +

    Да. Информация по анонсам мероприятий или соревнований вы можете найти на сайте. Следите за новостями.

    +
    +
  • +
  • + + +
    +

    Подробнее узнать можно у менеджера продаж.

    +
    +
  • +
  • + + +
    +

    Подробнее узнать можно у менеджера продаж.

    +
    +
  • +
+
    +
  • + + +
    +

    Для тренировок необходимо иметь предназначенную для этого закрытую спортивную обувь и одежду. Верхняя и нижняя части тела должны быть закрыты (используйте футболки, майки, спортивные брюки, шорты, кроссовки). В целях безопасности, запрещается тренироваться босиком, в пляжных или домашних тапочках и т. п., исключения составляют специальные классы (например, йога, пилатес).

    +
    +
  • +
  • + + +
    +

    Да. Вы можете оставить детей в детской комнате. В силовом зале детям находить запрещено.

    +
    +
  • +
  • + + +
    +

    Не красть полотенца, не бросать их на пол. Остальное вы можете узнать у вашего менеджера.

    +
    +
  • +
  • + + +
    +

    Нет. Однако Вам лучше проконсультироваться с врачом о наличии у Вас противопоказаний.

    +
    +
  • +
+
+
+
+
+

Отзывы

+
+ +
+
+
    +
  • +
    + + + + + Фото отзыва. + +
    +

    Анна Орлова

    +

    «Хожу в Supergym уже больше года. Нравится, что в клубе всегда чисто, тренажёры обновляют, персонал дружелюбный.
    Зал просторный,
    даже в вечернее время
    нет очередей»

    +
    +
    +
  • +
  • +
    + + + + + Фото отзыва. + +
    +

    Анна Орлова

    +

    «Хожу в Supergym уже больше года. Нравится, что в клубе всегда чисто, тренажёры обновляют, персонал дружелюбный.
    Зал просторный,
    даже в вечернее время
    нет очередей»

    +
    +
    +
  • +
+
+
+ + + + +
+
+
+

Блок формы и контактов

+
+

Бесплатное занятие

+
+ Поля ввода + + +
+ +
Сообщение отправлено.
+
+
+

Контакты

+
+
    +
  • +

    Адрес:

    +

    г. Омск, ул. 60 лет Октября, 7

    +
  • +
  • +

    График работы:

    +

    Пн-Вс: с 8:00 до 22:00

    +
  • +
+ +
+
+
+
+ - diff --git a/source/js/main.js b/source/js/main.js index 70fde252..59e695be 100644 --- a/source/js/main.js +++ b/source/js/main.js @@ -1,4 +1,12 @@ -// https://swiperjs.com/get-started#installation -// import Swiper from "swiper"; -// import {Navigation, Pagination} from "swiper/modules"; -// import 'swiper/css'; +import initJuriSlider from './modules/juri-slider.js'; +import initReviewsSlider from './modules/reviews-slider.js'; +import initTabs from './modules/tabs.js'; +import initFormContacts from './modules/form-contacts.js'; +import initPlayer from './modules/player.js'; + +initJuriSlider(); +initReviewsSlider(); +initTabs('.price--contaner', 'tab-item-btn', 'price__pane', 'tab-item-btn--active', 'pane--active'); +initTabs('.faq__container', 'faq-tab__btn', 'faq-content__pane', 'faq-tab-btn--active', 'faq-pane--show'); +initFormContacts(); +initPlayer(); diff --git a/source/js/modules/form-contacts.js b/source/js/modules/form-contacts.js new file mode 100644 index 00000000..d4442531 --- /dev/null +++ b/source/js/modules/form-contacts.js @@ -0,0 +1,79 @@ +export default () => { + const inputNameSelector = '.input-name'; + const inputPhoneSelector = '.input-phone'; + const inputNameErrorSelector = '.input-name + .input-error'; + const inputPhoneErrorSelector = '.input-phone + .input-error'; + const inputErrorClass = 'form-input--error'; + const successMessageSelector = '.success-message'; + const successMessageHiddenClass = 'success-message--hidden'; + const successMessageTimeout = 2000; + const nameRegex = /^[a-zA-Za-яёА-ЯË\s]+$/; + const phoneRegex = /^[0-9-+()\s]+$/; + + const form = window + .document + .querySelector('.form-contacts__sections-list'); + + if (form) { + const inputName = form.querySelector(inputNameSelector); + const inputPhone = form.querySelector(inputPhoneSelector); + const inputNameError = form.querySelector(inputNameErrorSelector); + const inputPhoneError = form.querySelector(inputPhoneErrorSelector); + const successMessage = form.querySelector(successMessageSelector); + + form.addEventListener('submit', (event) => { + event.preventDefault(); + + // Валидация + const name = inputName.value.trim(); + const phone = inputPhone.value.trim(); + inputName.classList.remove(inputErrorClass); + inputPhone.classList.remove(inputErrorClass); + inputNameError.innerHTML = ''; + inputPhoneError.innerHTML = ''; + let valid = true; + + if (! name) { + inputName.classList.add(inputErrorClass); + inputNameError.innerHTML = 'Заполните имя'; + valid = false; + } else if (! nameRegex.test(name)) { + inputName.classList.add(inputErrorClass); + inputNameError.innerHTML = 'Введите правильное имя'; + valid = false; + } + + if (! phone) { + inputPhone.classList.add(inputErrorClass); + inputPhoneError.innerHTML = 'Заполните телефон'; + valid = false; + } else if (! phoneRegex.test(phone)) { + inputPhone.classList.add(inputErrorClass); + inputPhoneError.innerHTML = 'Введите правильный телефон'; + valid = false; + } + + if(! valid) { + return; + } + + // Отправка формы + const formData = new FormData(); + formData.append('name', name); + formData.append('phone', phone); + fetch(form.getAttribute('action'), { + method: form.getAttribute('method'), + body: formData, + }); + + // Очистка полей + inputName.value = ''; + inputPhone.value = ''; + + successMessage.classList.remove(successMessageHiddenClass); + setTimeout(() => { + successMessage.classList.add(successMessageHiddenClass); + }, successMessageTimeout); + }); + } +}; diff --git a/source/js/modules/juri-slider.js b/source/js/modules/juri-slider.js new file mode 100644 index 00000000..f8e11007 --- /dev/null +++ b/source/js/modules/juri-slider.js @@ -0,0 +1,27 @@ +import Swiper from 'swiper'; +import {Navigation} from 'swiper/modules'; + +document.documentElement.classList.remove('juri-slider-disabled'); + +export default () => { + new Swiper('.juri-list .swiper', { + slidesPerView: 1, + spaceBetween: 40, + breakpoints: { + 768: { + slidesPerView: 2, + allowTouchMove: false, + }, + 1366: { + slidesPerView: 4, + allowTouchMove: false, + } + }, + modules: [ Navigation ], + navigation: { + nextEl: '.juri-btn--right', + prevEl: '.juri-btn--left', + }, + loop: true, + }); +}; diff --git a/source/js/modules/player.js b/source/js/modules/player.js new file mode 100644 index 00000000..cae3f649 --- /dev/null +++ b/source/js/modules/player.js @@ -0,0 +1,16 @@ +export default () => { + const playButtonSelector = '.btn-play'; + const playButtonHiddenClass = 'btn-play--hidden'; + const playerSelector = '.video-iframe'; + const playerHiddenClass = 'video-iframe--hidden'; + + const playButton = window.document.querySelector(playButtonSelector); + const player = window.document.querySelector(playerSelector); + + if (playButton && player) { + playButton.addEventListener('click', () => { + playButton.classList.add(playButtonHiddenClass); + player.classList.remove(playerHiddenClass); + }); + } +}; diff --git a/source/js/modules/reviews-slider.js b/source/js/modules/reviews-slider.js new file mode 100644 index 00000000..d09f7b76 --- /dev/null +++ b/source/js/modules/reviews-slider.js @@ -0,0 +1,24 @@ +import Swiper from 'swiper'; +import {Navigation} from 'swiper/modules'; + +document.documentElement.classList.remove('reviews-slider-disabled'); + +export default () => { + new Swiper('.reviews-slyder .swiper', { + slidesPerView: 1, + spaceBetween: 20, + breakpoints: { + 768: { + allowTouchMove: false, + }, + 1366: { + allowTouchMove: false, + } + }, + modules: [ Navigation ], + navigation: { + nextEl: '.reviews-btn--right', + prevEl: '.reviews-btn--left', + }, + }); +}; diff --git a/source/js/modules/tabs.js b/source/js/modules/tabs.js new file mode 100644 index 00000000..4381219a --- /dev/null +++ b/source/js/modules/tabs.js @@ -0,0 +1,30 @@ +export default (tabsContainer, buttonsClass = 'tabs-btn', contentsClass = 'tabs-content', activeButtonClass = 'tabs-btn-active', activeContentClass = 'tabs-content-active') => { + const buttons = window + .document + .querySelector(tabsContainer) + ?.querySelectorAll(`.${buttonsClass}`) ?? []; + + const contents = window + .document + .querySelector(tabsContainer) + ?.querySelectorAll(`.${contentsClass}`) ?? []; + + buttons.forEach((clickButton) => { + clickButton.addEventListener('click', () => { + const tabId = clickButton.getAttribute('data-tab-id'); + + buttons.forEach((button) => { + button.classList.remove(activeButtonClass); + }); + clickButton.classList.add(activeButtonClass); + + contents.forEach((content) => { + if (tabId === content.getAttribute('data-tab-id')) { + content.classList.add(activeContentClass); + } else { + content.classList.remove(activeContentClass); + } + }); + }); + }); +}; diff --git a/source/js/vendor/swiper.js b/source/js/vendor/swiper.js new file mode 100644 index 00000000..3eda8701 --- /dev/null +++ b/source/js/vendor/swiper.js @@ -0,0 +1,13 @@ +/** + * Swiper 10.3.1 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: September 28, 2023 + */ + +var Swiper=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}function n(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function l(){return Date.now()}function o(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(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 d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=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()}function m(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:[t]),s}function g(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function v(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function w(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function b(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function y(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function E(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let x,S,T;function M(){return x||(x=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),x}function C(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=M(),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_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="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&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),S}function P(){return T||(T=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,a]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&a<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),T}var L={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}};const z=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},A=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},$=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&A(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&A(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?T=parseFloat(T.replace("%",""))/100*n:"string"==typeof T&&(T=parseFloat(T)),e.virtualSize=-T,u.forEach((e=>{l?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),a.centeredSlides&&a.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const L=a.grid&&a.grid.rows>1&&e.grid;let z;L&&e.grid.initSlides(m);const A="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(d&&a.loop){const t=w[0]+T;if(a.slidesPerGroup>1){const s=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/a.slidesPerGroup),i=t*a.slidesPerGroup;for(let e=0;e!(a.cssMode&&!a.loop)||t!==u.length-1)).forEach((e=>{e.style[s]=`${T}px`}))}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;w.forEach((t=>{e+=t+(T||0)})),e-=T;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+y:e))}if(a.centerInsufficientSlides){let e=0;if(w.forEach((t=>{e+=t+(T||0)})),e-=T,e{f[s]=e-t})),g.forEach(((e,s)=>{g[s]=e+t}))}}if(Object.assign(e,{slides:u,snapGrid:f,slidesGrid:g,slidesSizesGrid:w}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-w[w.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(m!==c&&e.emit("slidesLengthChange"),f.length!==x&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),g.length!==S&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(d||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.el.classList.contains(t);m<=a.maxBackfaceHiddenSlides?s||e.el.classList.add(t):s&&e.el.classList.remove(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[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(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.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a{e.classList.remove(s.slideVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),a[e].classList.add(s.slideVisibleClass)),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e=>h(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=n(`[data-swiper-slide-index="${t}"]`)}else l=n(`[data-swiper-slide-index="${i}"]`);else l=t[i];if(l){l.classList.add(s.slideActiveClass);let e=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(l,`.${s.slideClass}, swiper-slide`)[0];s.loop&&!e&&(e=t[0]),e&&e.classList.add(s.slideNextClass);let a=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(l,`.${s.slideClass}, swiper-slide`)[0];s.loop&&0===!a&&(a=t[t.length-1]),a&&a.classList.add(s.slidePrevClass)}e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r)return o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")),void(t.params.loop&&t.virtual&&t.params.virtual.enabled&&(t.realIndex=c(d)));let p;p=t.virtual&&i.virtual.enabled&&i.loop?c(d):t.slides[d]?parseInt(t.slides[d].getAttribute("data-swiper-slide-index")||d,10):d,Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:p,previousIndex:r,activeIndex:d}),t.initialized&&$(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==p&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(m?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return u({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(w),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.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",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){e=parseInt(e,10)}const i=this;let r=e;return i.params.loop&&(i.virtual&&i.params.virtual.enabled?r+=i.virtual.slidesBefore:r=i.getSlideIndexByData(r)),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,{enabled:i,params:r,animating:n}=a;if(!i)return a;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o)return a;const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,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 i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,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,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const l=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(h(s,`${l}[data-swiper-slide-index="${i}"]`)[0]),n((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(h(s,`${l}[data-swiper-slide-index="${i}"]`)[0]),n((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var G={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;h(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})),t.loopFix({slideRealIndex:e,direction:s.centeredSlides?void 0:"next"})},loopFix:function(e){let{slideRealIndex:t,slideTo:s=!0,direction:a,setTranslate:i,activeSlideIndex:r,byController:n,byMousewheel:l}=void 0===e?{}:e;const o=this;if(!o.params.loop)return;o.emit("beforeLoopFix");const{slides:d,allowSlidePrev:c,allowSlideNext:p,slidesEl:u,params:m}=o;if(o.allowSlidePrev=!0,o.allowSlideNext=!0,o.virtual&&m.virtual.enabled)return s&&(m.centeredSlides||0!==o.snapIndex?m.centeredSlides&&o.snapIndexe.classList.contains(m.slideActiveClass)))[0]):w=r;const b="next"===a||!a,y="prev"===a||!a;let E=0,x=0;if(ro.slides.length-2*f){x=Math.max(r-(o.slides.length-2*f),m.slidesPerGroup);for(let e=0;e{o.slides[e].swiperLoopMoveDOM=!0,u.prepend(o.slides[e]),o.slides[e].swiperLoopMoveDOM=!1})),b&&v.forEach((e=>{o.slides[e].swiperLoopMoveDOM=!0,u.append(o.slides[e]),o.slides[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView&&o.updateSlides(),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(g.length>0&&y)if(void 0===t){const e=o.slidesGrid[w],t=o.slidesGrid[w+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(w+E,0,!1,!0),i&&(o.touches[o.isHorizontal()?"startX":"startY"]+=t,o.touchEventsData.currentTranslate=o.translate))}else i&&(o.slideToLoop(t,0,!1,!0),o.touchEventsData.currentTranslate=o.translate);else if(v.length>0&&b)if(void 0===t){const e=o.slidesGrid[w],t=o.slidesGrid[w-x]-e;l?o.setTranslate(o.translate-t):(o.slideTo(w-x,0,!1,!0),i&&(o.touches[o.isHorizontal()?"startX":"startY"]+=t,o.touchEventsData.currentTranslate=o.translate))}else o.slideToLoop(t,0,!1,!0);if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function H(e){const t=this,s=a(),i=r(),n=t.touchEventsData;n.evCache.push(e);const{params:o,touches:d,enabled:c}=t;if(!c)return;if(!o.simulateTouch&&"mouse"===e.pointerType)return;if(t.animating&&o.preventInteractionOnTransition)return;!t.animating&&o.cssMode&&o.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let u=p.target;if("wrapper"===o.touchEventsTarget&&!t.wrapperEl.contains(u))return;if("which"in p&&3===p.which)return;if("button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;const m=!!o.noSwipingClass&&""!==o.noSwipingClass,h=e.composedPath?e.composedPath():e.path;m&&p.target&&p.target.shadowRoot&&h&&(u=h[0]);const f=o.noSwipingSelector?o.noSwipingSelector:`.${o.noSwipingClass}`,g=!(!p.target||!p.target.shadowRoot);if(o.noSwiping&&(g?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)}(f,u):u.closest(f)))return void(t.allowClick=!0);if(o.swipeHandler&&!u.closest(o.swipeHandler))return;d.currentX=p.pageX,d.currentY=p.pageY;const v=d.currentX,w=d.currentY,b=o.edgeSwipeDetection||o.iOSEdgeSwipeDetection,y=o.edgeSwipeThreshold||o.iOSEdgeSwipeThreshold;if(b&&(v<=y||v>=i.innerWidth-y)){if("prevent"!==b)return;e.preventDefault()}Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=w,n.touchStartTime=l(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,o.threshold>0&&(n.allowThresholdMove=!1);let E=!0;u.matches(n.focusableElements)&&(E=!1,"SELECT"===u.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==u&&s.activeElement.blur();const x=E&&t.allowTouchMove&&o.touchStartPreventDefault;!o.touchStartForcePreventDefault&&!x||u.isContentEditable||p.preventDefault(),o.freeMode&&o.freeMode.enabled&&t.freeMode&&t.animating&&!o.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function X(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:o,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));const p=i.evCache.findIndex((e=>e.pointerId===c.pointerId));p>=0&&(i.evCache[p]=c);const u=i.evCache.length>1?i.evCache[0]:c,m=u.pageX,h=u.pageY;if(c.preventedByNestedSwiper)return n.startX=m,void(n.startY=h);if(!s.allowTouchMove)return c.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:m,startY:h,prevX:s.touches.currentX,prevY:s.touches.currentY,currentX:m,currentY:h}),i.touchStartTime=l()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(hn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(mn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(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=m,n.currentY=h;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||s.zoom&&s.params.zoom&&s.params.zoom.enabled&&i.evCache.length>1)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let v=s.isHorizontal()?f:g,w=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(v=Math.abs(v)*(o?1:-1),w=Math.abs(w)*(o?1:-1)),n.diff=v,v*=r.touchRatio,o&&(v=-v,w=-w);const b=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=w>0?"prev":"next";const y=s.params.loop&&!r.cssMode,E="next"===s.swipeDirection&&s.allowSlideNext||"prev"===s.swipeDirection&&s.allowSlidePrev;if(!i.isMoved){if(y&&E&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}let x;i.isMoved&&b!==s.touchesDirection&&y&&E&&Math.abs(v)>=1&&(s.loopFix({direction:s.swipeDirection,setTranslate:!0}),x=!0),s.emit("sliderMove",c),i.isMoved=!0,i.currentTranslate=v+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),v>0?(y&&E&&!x&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.size/2:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**T))):v<0&&(y&&E&&!x&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.size/2:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),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()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function Y(e){const t=this,s=t.touchEventsData,a=s.evCache.findIndex((t=>t.pointerId===e.pointerId));if(a>=0&&s.evCache.splice(a,1),["pointercancel","pointerout","pointerleave","contextmenu"].includes(e.type)){if(!(["pointercancel","contextmenu"].includes(e.type)&&(t.browser.isSafari||t.browser.isWebView)))return}const{params:i,touches:r,rtlTranslate:o,slidesGrid:d,enabled:c}=t;if(!c)return;if(!i.simulateTouch&&"mouse"===e.pointerType)return;let p=e;if(p.originalEvent&&(p=p.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",p),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&i.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);i.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=l(),m=u-s.touchStartTime;if(t.allowClick){const e=p.path||p.composedPath&&p.composedPath();t.updateClickedSlide(e&&e[0]||p.target,e),t.emit("tap click",p),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",p)}if(s.lastClickTime=l(),n((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===r.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=i.followFinger?o?t.translate:-t.translate:-s.currentTranslate,i.cssMode)return;if(i.freeMode&&i.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let f=0,g=t.slidesSizesGrid[0];for(let e=0;e=d[e]&&h=d[e]&&(f=e,g=d[d.length-1]-d[d.length-2])}let v=null,w=null;i.rewind&&(t.isBeginning?w=i.virtual&&i.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const b=(h-d[f])/g,y=fi.longSwipesMs){if(!i.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(b>=i.longSwipesRatio?t.slideTo(i.rewind&&t.isEnd?v:f+y):t.slideTo(f)),"prev"===t.swipeDirection&&(b>1-i.longSwipesRatio?t.slideTo(f+y):null!==w&&b<0&&Math.abs(b)>i.longSwipesRatio?t.slideTo(w):t.slideTo(f))}else{if(!i.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(p.target===t.navigation.nextEl||p.target===t.navigation.prevEl)?p.target===t.navigation.nextEl?t.slideTo(f+y):t.slideTo(f):("next"===t.swipeDirection&&t.slideTo(null!==v?v:f+y),"prev"===t.swipeDirection&&t.slideTo(null!==w?w:f))}}function N(){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,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function B(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function R(){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)}function q(e){const t=this;z(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}let V=!1;function F(){}const _=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),r[d]("load",e.onLoad,{capture:!0})};const j=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopedSlides:null,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function U(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const K={eventsEmitter:L,update:I,translate:k,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),O({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),O({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:D,loop:G,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,t=a(),{params:s}=e;e.onTouchStart=H.bind(e),e.onTouchMove=X.bind(e),e.onTouchEnd=Y.bind(e),s.cssMode&&(e.onScroll=R.bind(e)),e.onClick=B.bind(e),e.onLoad=q.bind(e),V||(t.addEventListener("touchstart",F),V=!0),_(e,"on")},detachEvents:function(){_(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=j(e,a),d=j(e,l),p=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const u=l.direction&&l.direction!==a.direction,m=a.loop&&(l.slidesPerView!==a.slidesPerView||u),h=a.loop;u&&s&&e.changeDirection(),c(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!f?e.disable():!p&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},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:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=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,{"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(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},Z={};class Q{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=c({},t,{el:s});e.push(new Q(a))})),e}const l=this;l.__swiper__=!0,l.support=M(),l.device=C({userAgent:t.userAgent}),l.browser=P(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:U(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},W,o);return l.params=c({},d,Z,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,evCache:[]},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=w(h(t,`.${s.slideClass}, swiper-slide`)[0]);return w(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const 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.forEach((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("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?a[l].swiperSlideSize:0;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]{t.complete&&z(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=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.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return h(s,a())[0]})();return!i&&t.params.createElements&&(i=f("div",t.params.wrapperClass),s.append(i),h(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?z(t,e):e.addEventListener("load",(e=>{z(t,e.target)}))})),$(t),t.initialized=!0,$(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params: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.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(Z,e)}static get extendedDefaults(){return Z}static get defaults(){return W}static installModule(e){Q.prototype.__modules__||(Q.prototype.__modules__=[]);const t=Q.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Q.installModule(e))),Q):(Q.installModule(e),Q)}}function J(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=h(e.el,`.${a[i]}`)[0];r||(r=f("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ee(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function te(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("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[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.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.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function le(e,t){const s=m(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function oe(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{y(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function de(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=m(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=f("div",a.split(" ")),i.append(r)),r}Object.keys(K).forEach((e=>{Object.keys(K[e]).forEach((t=>{Q.prototype[t]=K[e][t]}))})),Q.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,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=b(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ce=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?f("swiper-slide"):f("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:c,to:p,slides:u,slidesGrid:m,offset:f}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(w=Math.floor(t/2)+a+o,b=Math.floor(t/2)+a+l):(w=t+(a-1)+o,b=(r?t:a)+l);let y=g-b,E=g+w;r||(y=Math.max(y,0),E=Math.min(E,u.length-1));let x=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,i||(x+=s.slidesGrid[0])):r&&g{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:y,to:E,slides:function(){const e=[];for(let t=y;t<=E;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=c;e<=p;e+=1)if(eE){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=E){const s=C(t);void 0===p||e?M.push(s):(t>p&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));h(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&p(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.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!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.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===b(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=g(a);s&&(d.left-=a.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||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const o=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=l();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&l()-p<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)),p=(new o.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const p=o&&o.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=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(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*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:l(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(l=t.minTranslate()),l<=t.maxTranslate()&&(l=t.maxTranslate()),t.setTransition(0),t.setTranslate(l),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=n((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=n((()=>{c=e,u.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(),r.releaseOnEdges&&(l===t.minTranslate()||l===t.maxTranslate()))return!0}}else{const s={time:l(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(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 v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;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,prevEl:null};const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const a=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(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=J(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),a=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=r(s),a=r(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?c:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?c:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}a("init",(()=>{!1===t.params.navigation.enabled?m():(p(),o())})),a("toEdge fromEdge lock unlock",(()=>{o()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),t.enabled?o():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:n}=t.navigation;a=r(a),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!a.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),o()},disable:m,update:o,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,bullets:[]};let l=0;const o=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function p(e){const s=e.target.closest(ee(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=w(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;const e=t.realIndex,s=t.getSlideIndexByData(a),i=t.getSlideIndexByData(t.realIndex),r=a=>{const i=t.activeIndex;t.loopFix({direction:a,activeSlideIndex:s,slideTo:!1});i===t.activeIndex&&t.slideToLoop(e,0,!1,!0)};if(s>t.slides.length-t.loopedSlides)r(s>i?"next":"prev");else if(t.params.centeredSlides){const e="auto"===t.params.slidesPerView?t.slidesPerViewDynamic():Math.ceil(parseFloat(t.params.slidesPerView,10));s1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=E(i[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),d=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(d+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)i.forEach((e=>{const i=w(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&c(e,"prev"),i===d&&c(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[d];for(let e=o;e<=d;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(e,"prev"),c(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ee(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ee(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/m;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ee(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,m),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length;let a=t.pagination.el;a=o(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ee(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function h(){t.params.pagination=J(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>b(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),a("snapIndexChange",(()=>{u()})),a("snapGridLengthChange",(()=>{m(),u()})),a("destroy",(()=>{f()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{u()})),a("click",((e,s)=>{const a=s.target,r=o(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(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[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const l=a();let o,d,c,p,u=!1,m=null,h=null;function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=d,o=(c-d)*n;s?(o=-o,o>0?(l=d-o,o=0):-o+d>c&&(l=c+o)):o<0?(l=d+o,o=0):o+d>c&&(l=c-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(m),i.style.opacity=1,m=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function w(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?a.offsetWidth:a.offsetHeight,p=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),d="auto"===t.params.scrollbar.dragSize?c*p:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${d}px`:s.style.height=`${d}px`,a.style.display=p>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function b(e){return t.isHorizontal()?e.clientX:e.clientY}function y(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(b(e)-g(i)[t.isHorizontal()?"left":"top"]-(null!==o?o:d/2))/(c-d),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 E(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;u=!0,o=e.target===l?b(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",y(e),clearTimeout(h),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function x(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;u&&(e.preventDefault?e.preventDefault():e.returnValue=!1,y(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function S(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:l}=a;u&&(u=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(h),h=n((()=>{l.style.opacity=0,l.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function T(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},o=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),l[d]("pointermove",x,n),l[d]("pointerup",S,o)}function M(){const{scrollbar:e,el:s}=t;t.params.scrollbar=J(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;"string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el?i||(i=a.el):i=l.querySelectorAll(a.el),t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(`.${t.params.scrollbar.dragClass}`),r||(r=f("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&T("on"),i&&i.classList[t.enabled?"remove":"add"](t.params.scrollbar.lockClass)}function C(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&T("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},i("init",(()=>{!1===t.params.scrollbar.enabled?P():(M(),w(),v())})),i("update resize observerUpdate lock unlock",(()=>{w()})),i("setTranslate",(()=>{v()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{C()}));const P=()=>{t.el.classList.add(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.el&&t.scrollbar.el.classList.add(t.params.scrollbar.scrollbarDisabledClass),C()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.el&&t.scrollbar.el.classList.remove(t.params.scrollbar.scrollbarDisabledClass),M(),w(),v()},disable:P,updateSize:w,setTranslate:v,init:M,destroy:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=h(e,i);t.isElement&&o.push(...h(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(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,d,c=1,p=!1;const u=[],m={originX:0,originY:0,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:{}},v={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let w=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function E(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!E(e))return;const s=t.params.zoom;if(l=!1,d=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?b(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function S(e){if(!E(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(d=!0,m.scaleMove=y(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&d&&(l=!1,d=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!E(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!f.isTouched||!m.slideEl)return;f.isMoved||(f.width=m.imageEl.offsetWidth,f.height=m.imageEl.offsetHeight,f.startX=o(m.imageWrapEl,"x")||0,f.startY=o(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=f.width*s.scale,i=f.height*s.scale;if(a0?u[0].pageX:e.pageX,f.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(f.touchesCurrent.x-f.touchesStart.x),Math.abs(f.touchesCurrent.y-f.touchesStart.y))>5&&(t.allowClick=!1),!f.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.xf.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;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX+r*(f.width-2*n),f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY+r*(f.height-2*l),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),v.prevPositionX||(v.prevPositionX=f.touchesCurrent.x),v.prevPositionY||(v.prevPositionY=f.touchesCurrent.y),v.prevTime||(v.prevTime=Date.now()),v.x=(f.touchesCurrent.x-v.prevPositionX)/(Date.now()-v.prevTime)/2,v.y=(f.touchesCurrent.y-v.prevPositionY)/(Date.now()-v.prevTime)/2,Math.abs(f.touchesCurrent.x-v.prevPositionX)<2&&(v.x=0),Math.abs(f.touchesCurrent.y-v.prevPositionY)<2&&(v.y=0),v.prevPositionX=f.touchesCurrent.x,v.prevPositionY=f.touchesCurrent.y,v.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=h(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?b(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,v,w,y,E,x,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y);const z="number"==typeof e?e:null;1===c&&z&&(i=void 0,r=void 0),s.scale=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,c=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===c&&z?(u=0,v=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=g(m.slideEl).left+n.scrollX,o=g(m.slideEl).top+n.scrollY,d=l+P/2-i,p=o+L/2-r,w=m.imageEl.offsetWidth,y=m.imageEl.offsetHeight,E=w*s.scale,x=y*s.scale,S=Math.min(P/2-E/2,0),T=Math.min(L/2-x/2,0),M=-S,C=-T,u=d*s.scale,v=p*s.scale,uM&&(u=M),vC&&(v=C)),z&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${v}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=h(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?b(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function z(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function A(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function $(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=A();t.wrapperEl.addEventListener("pointerdown",x,s),t.wrapperEl.addEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,a)}function I(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=A();t.wrapperEl.removeEventListener("pointerdown",x,s),t.wrapperEl.removeEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,a)}Object.defineProperty(t.zoom,"scale",{get:()=>w,set(e){if(w!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}w=e}}),a("init",(()=>{t.params.zoom.enabled&&$()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(f.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0;const a=u.length>0?u[0]:e;f.touchesStart.x=a.pageX,f.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)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=v.x*s,r=f.currentX+i,n=v.y*a,l=f.currentY+n;0!==v.x&&(s=Math.abs((r-f.currentX)/v.x)),0!==v.y&&(a=Math.abs((l-f.currentY)/v.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.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.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&&z(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:$,disable:I,in:P,out:L,toggle:z})},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",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=a=>{t.controller.control=a.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else 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.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&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){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){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()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),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()})),y(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r(Array.isArray(e)?e:[e]).filter((e=>!!e));function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;t.pagination&&t.pagination.el&&(a===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(ee(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&a===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&a===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.matches(ee(t.params.pagination.bulletClass))&&a.click())}function g(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function v(){return g()&&t.params.pagination.clickable}const b=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),p(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},y=()=>{t.a11y.clicked=!0},E=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},x=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);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||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;p(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},T=()=>{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.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};if(u=n(u),m=n(m),u&&u.forEach((t=>b(t,r,e.nextSlideMessage))),m&&m.forEach((t=>b(t,r,e.prevSlideMessage))),v()){(Array.isArray(t.pagination.el)?t.pagination.el:[t.pagination.el]).forEach((e=>{e.addEventListener("keydown",h)}))}t.el.addEventListener("focus",x,!0),t.el.addEventListener("pointerdown",y,!0),t.el.addEventListener("pointerup",E,!0)};a("beforeInit",(()=>{i=f("span",t.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&T()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),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&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;g()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),p(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,w(s)+1)))),s.matches(ee(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),v()&&(Array.isArray(t.pagination.el)?t.pagination.el:[t.pagination.el]).forEach((e=>{e.removeEventListener("keydown",h)}));t.el.removeEventListener("focus",x,!0),t.el.removeEventListener("pointerdown",y,!0),t.el.removeEventListener("pointerup",E,!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[s];let d=l(o.getAttribute("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?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${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)):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(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(h(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(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,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g=o&&o.autoplay?o.autoplay.delay:3e3,v=o&&o.autoplay?o.autoplay.delay:3e3,w=(new Date).getTime;function b(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",b),M())}const y=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(v=d,c=!1);const e=i.autoplay.paused?d:w+v-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/g),s=requestAnimationFrame((()=>{y()}))},E=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),y();let a=void 0===e?i.params.autoplay.delay:e;g=i.params.autoplay.delay,v=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,g=r,v=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(w=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},x=()=>{i.autoplay.running=!0,E(),l("autoplayStart")},S=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},T=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",b):M()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-w),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},M=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(w=(new Date).getTime(),f?(f=!1,E(d)):E(),i.autoplay.paused=!1,l("autoplayResume"))},C=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,T(!0)),"visible"===e.visibilityState&&M()},P=e=>{"mouse"===e.pointerType&&(f=!0,i.animating||i.autoplay.paused||T(!0))},L=e=>{"mouse"===e.pointerType&&i.autoplay.paused&&M()};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",P),i.el.addEventListener("pointerleave",L)),a().addEventListener("visibilitychange",C),w=(new Date).getTime(),x())})),n("destroy",(()=>{i.el.removeEventListener("pointerenter",P),i.el.removeEventListener("pointerleave",L),a().removeEventListener("visibilitychange",C),i.autoplay.running&&S()})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?T(!0,!0):S())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?S():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,T(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&M(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:x,stop:S,pause:T,resume:M})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(d(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function c(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),c(!0);else if(a){const s=i=>{e.swiper=i.detail[0],a.removeEventListener("init",s),o(),c(!0),e.swiper.update(),t.update()};a.addEventListener("init",s)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),c(!0)})),i("slideChange update resize observerUpdate",(()=>{c()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:c})},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(){if(t.params.cssMode)return;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(){if(t.params.cssMode)return;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:l()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:o,snapGrid:d,touchEventsData:c}=t,p=l()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||l()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;o&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=o?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((o?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),y(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,y(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid;a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},updateSlide:(e,i,n,l)=>{const{slidesPerGroup:d}=r.params,c=o(),{rows:p,fill:u}=r.params.grid;let m,h,f;if("row"===u&&d>1){const s=Math.floor(e/(d*p)),a=e-p*d*s,r=0===s?d:Math.min(Math.ceil((n-s*p*d)/p),d);f=Math.floor(a/r),h=a-f*r+s*d,m=h+f*t/p,i.style.order=m}else"column"===u?(h=Math.floor(e/p),f=e-h*p,(h>a||h===a&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style[l("margin-top")]=0!==f?c&&`${c}px`:""},updateWrapperSize:(e,s,a)=>{const{centeredSlides:i,roundLengths:n}=r.params,l=o(),{rows:d}=r.params.grid;if(r.virtualSize=(e+l)*t,r.virtualSize=Math.ceil(r.virtualSize/d)-l,r.wrapperEl.style[a("width")]=`${r.virtualSize+l}px`,i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),oe({swiper:t,duration:e,transformElements: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.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=f("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=f("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};ne({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;c.shadow&&(p?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=f("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=f("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*s+90*d,l&&(h=90*-s-90*d)),t.style.transform=v,c.slideShadows&&i(t,d,p)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(p)m.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(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}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=de("flip",e,t.isHorizontal()?"left":"top")),i||(i=de("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};ne({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),oe({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},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}}),ne({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&&(s.style.opacity=-p>0?-p:0)}}},setTransition:e=>{t.slides.map((e=>m(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{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`;ne({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.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,t)=>{m[t]=f.rotate[t]*Math.abs(d*n)})),a.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[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,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=de("creative",a)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=le(0,a);E.style.transform=y,E.style.opacity=b,f.origin&&(E.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),oe({swiper:t,duration:e,transformElements: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,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ne({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=de("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;le(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),oe({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return Q.use(ce),Q}(); diff --git a/source/public/favicon-2.svg b/source/public/favicon-2.svg new file mode 100644 index 00000000..acd4874d --- /dev/null +++ b/source/public/favicon-2.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/source/public/favicon.ico b/source/public/favicon.ico index c91ede97..9ed66b4b 100644 Binary files a/source/public/favicon.ico and b/source/public/favicon.ico differ diff --git a/source/public/favicon.png b/source/public/favicon.png new file mode 100644 index 00000000..6f2c8f67 Binary files /dev/null and b/source/public/favicon.png differ diff --git a/source/public/favicon.webp b/source/public/favicon.webp new file mode 100644 index 00000000..bf695d98 Binary files /dev/null and b/source/public/favicon.webp differ diff --git a/source/sass/blocks/body.scss b/source/sass/blocks/body.scss new file mode 100644 index 00000000..64a9099b --- /dev/null +++ b/source/sass/blocks/body.scss @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 300; + font-size: 14px; + line-height: 22px; + display: flex; + flex-direction: column; + min-height: 100%; + min-width: 320px; + color: #102654; + background-color: #ffffff; +} diff --git a/source/sass/blocks/fonts.scss b/source/sass/blocks/fonts.scss new file mode 100644 index 00000000..c94028ff --- /dev/null +++ b/source/sass/blocks/fonts.scss @@ -0,0 +1,49 @@ +@font-face { + font-family: "Roboto Condensed"; + src: + url("../fonts/robotocondensed-light.woff2") format("woff2"), + url("../fonts/robotocondensed-light.woff") format("woff"); + font-weight: 300; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Roboto Condensed"; + src: + url("../fonts/robotocondensed-regular.woff2") format("woff2"), + url("../fonts/robotocondensed-regular.woff") format("woff"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Roboto Condensed"; + src: + url("../fonts/robotocondensed-bold.woff2") format("woff2"), + url("../fonts/robotocondensed-bold.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Alumni Sans"; + src: + url("../fonts/alumni-semibold.woff2") format("woff2"), + url("../fonts/alumni-semibold.woff") format("woff"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Alumni Sans"; + src: + url("../fonts/alumni-extrabold.woff2") format("woff2"), + url("../fonts/alumni-extrabold.woff") format("woff"); + font-weight: 800; + font-style: normal; + font-display: swap; +} diff --git a/source/sass/blocks/img.scss b/source/sass/blocks/img.scss new file mode 100644 index 00000000..3d61893b --- /dev/null +++ b/source/sass/blocks/img.scss @@ -0,0 +1,5 @@ +img { + max-width: 100%; + height: auto; + object-fit: contain; +} diff --git a/source/sass/blocks/no-js.scss b/source/sass/blocks/no-js.scss new file mode 100644 index 00000000..cc105bfc --- /dev/null +++ b/source/sass/blocks/no-js.scss @@ -0,0 +1,36 @@ +.juri-slider-disabled .swiper { + display: block; + overflow: visible; +} + +.juri-slider-disabled .swiper-wrapper { + display: flex; + flex-direction: column; + gap: 40px; + margin: 0; + padding: 0; + list-style-type: none; +} + +.juri-slider-disabled .swiper-slide { + width: 260px; +} + +.juri-slider-disabled .juri-btn { + display: none; +} + +@media (min-width: $tablet-width) { + .juri-slider-disabled .swiper-wrapper { + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + width: 560px; + } +} + +@media (min-width: $desktop-width) { + .juri-slider-disabled .swiper-wrapper { + width: 1160px; + } +} diff --git a/source/sass/blocks/variables.scss b/source/sass/blocks/variables.scss new file mode 100644 index 00000000..97749655 --- /dev/null +++ b/source/sass/blocks/variables.scss @@ -0,0 +1,3 @@ +$mobile-width: 320px; +$tablet-width: 768px; +$desktop-width: 1366px; diff --git a/source/sass/blocks/visually-hidden.scss b/source/sass/blocks/visually-hidden.scss new file mode 100644 index 00000000..432a938c --- /dev/null +++ b/source/sass/blocks/visually-hidden.scss @@ -0,0 +1,10 @@ +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + border: 0; + clip: rect(0 0 0 0); + overflow: hidden; +} diff --git a/source/sass/footer/footer-container/footer-container.scss b/source/sass/footer/footer-container/footer-container.scss new file mode 100644 index 00000000..d6a37ecb --- /dev/null +++ b/source/sass/footer/footer-container/footer-container.scss @@ -0,0 +1,20 @@ +.footer-container { + margin: 0 auto; + display: flex; + flex-direction: column; + width: 290px; +} + +@media (min-width: $tablet-width) { + .footer-container { + flex-direction: row; + justify-content: space-between; + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .footer-container { + width: 1160px; + } +} diff --git a/source/sass/footer/footer-container/footer-logo/footer-logo.scss b/source/sass/footer/footer-container/footer-logo/footer-logo.scss new file mode 100644 index 00000000..1fd8ffea --- /dev/null +++ b/source/sass/footer/footer-container/footer-logo/footer-logo.scss @@ -0,0 +1,19 @@ +.footer-logo { + margin: 0 0 30px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .footer-logo { + margin: 0; + width: 110px; + height: 22px; + } +} + +@media (min-width: $desktop-width) { + .footer-logo { + width: 130px; + height: 26px; + } +} diff --git a/source/sass/footer/footer-container/nav-list/nav-item.scss b/source/sass/footer/footer-container/nav-list/nav-item.scss new file mode 100644 index 00000000..0f9f7b0f --- /dev/null +++ b/source/sass/footer/footer-container/nav-list/nav-item.scss @@ -0,0 +1,9 @@ +.nav-item { + margin: 0 15px 0 0; +} + +@media (min-width: $tablet-width) { + .nav-item { + margin: 0; + } +} diff --git a/source/sass/footer/footer-container/nav-list/nav-link.scss b/source/sass/footer/footer-container/nav-list/nav-link.scss new file mode 100644 index 00000000..cdc86249 --- /dev/null +++ b/source/sass/footer/footer-container/nav-list/nav-link.scss @@ -0,0 +1,49 @@ +.nav-link { + display: block; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 20px; + padding: 0; + color: #ffffff; + outline: none; + text-decoration: none; + + &:hover { + margin-bottom: -6px; + padding-bottom: 5px; + border-bottom: #ffffff 1px solid; + } + + &:focus { + margin: -6px -11px; + padding: 5px 10px; + border: #ffffff 1px solid; + } + + &:active { + margin: 0; + border: none; + padding: 0; + } + + &:disabled { + opacity: 40%; + } + + &--disabled { + opacity: 40%; + } +} + +@media (min-width: $tablet-width) { + .nav-link { + line-height: 22px; + } +} + +@media (min-width: $desktop-width) { + .nav-link { + line-height: 20px; + } +} diff --git a/source/sass/footer/footer-container/nav-list/nav-list.scss b/source/sass/footer/footer-container/nav-list/nav-list.scss new file mode 100644 index 00000000..014ef165 --- /dev/null +++ b/source/sass/footer/footer-container/nav-list/nav-list.scss @@ -0,0 +1,25 @@ +.nav-list { + margin: 0 0 30px; + display: flex; + flex-wrap: wrap; + gap: 20px; + width: 290px; + padding: 0; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .nav-list { + margin: 0; + justify-content: space-between; + gap: 0; + width: 392px; + } +} + +@media (min-width: $desktop-width) { + .nav-list { + margin: 0.5px 0 -0.5px; + width: 599px; + } +} diff --git a/source/sass/footer/footer-container/social-list/social-img.scss b/source/sass/footer/footer-container/social-list/social-img.scss new file mode 100644 index 00000000..c29f3dcf --- /dev/null +++ b/source/sass/footer/footer-container/social-list/social-img.scss @@ -0,0 +1,19 @@ +@media (min-width: $desktop-width) { + .social-img--vk { + margin: 6.5px 6px; + width: 13px; + height: 13px; + } + + .social-img--ok { + margin: 4px 0 0 8px; + width: 10px; + height: 17px; + } + + .social-img--reddit { + margin: 5px; + width: 15px; + height: 15px; + } +} diff --git a/source/sass/footer/footer-container/social-list/social-item.scss b/source/sass/footer/footer-container/social-list/social-item.scss new file mode 100644 index 00000000..c22a6064 --- /dev/null +++ b/source/sass/footer/footer-container/social-list/social-item.scss @@ -0,0 +1,6 @@ +.social-item { + margin: 0; + padding: 0; + width: 25px; + height: 25px; +} diff --git a/source/sass/footer/footer-container/social-list/social-link.scss b/source/sass/footer/footer-container/social-list/social-link.scss new file mode 100644 index 00000000..629cf270 --- /dev/null +++ b/source/sass/footer/footer-container/social-list/social-link.scss @@ -0,0 +1,47 @@ +.social-link { + display: flex; + align-items: center; + justify-content: center; + width: 25px; + height: 25px; + padding: 0; + border-radius: 50%; + background-color: #ffffff; + text-decoration: none; + outline: none; + fill: #030a1a; + + &:hover { + background-color: #74819c; + fill: #ffffff; + } + + &:focus { + background-color: #103aae; + fill: #ffffff; + } + + &:active { + background-color: #102654; + fill: #ffffff; + } + + &:disabled { + background-color: rgba(255, 255, 255, 30%); + fill: #030a1a; + } + + &--disabled { + background-color: rgba(255, 255, 255, 30%); + fill: #030a1a; + } +} + + +@media (min-width: $desktop-width) { + .social-link { + display: block; + align-items: baseline; + justify-content: start; + } +} diff --git a/source/sass/footer/footer-container/social-list/social-list.scss b/source/sass/footer/footer-container/social-list/social-list.scss new file mode 100644 index 00000000..f79d78cf --- /dev/null +++ b/source/sass/footer/footer-container/social-list/social-list.scss @@ -0,0 +1,21 @@ +.social-list { + margin: 0; + display: flex; + justify-content: space-between; + flex-wrap: wrap; + width: 115px; + padding: 0; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .social-list { + width: 105px; + } +} + +@media (min-width: $desktop-width) { + .social-list { + width: 95px; + } +} diff --git a/source/sass/footer/footer.scss b/source/sass/footer/footer.scss new file mode 100644 index 00000000..973edf27 --- /dev/null +++ b/source/sass/footer/footer.scss @@ -0,0 +1,18 @@ +.footer { + margin: 0; + padding: 40px 0; + color: #ffffff; + background-color: #030a1a; +} + +@media (min-width: $tablet-width) { + .footer { + padding: 45px 0; + } +} + +@media (min-width: $desktop-width) { + .footer { + padding: 41px 0; + } +} diff --git a/source/sass/header/btn-container/btn-container.scss b/source/sass/header/btn-container/btn-container.scss new file mode 100644 index 00000000..9622fe81 --- /dev/null +++ b/source/sass/header/btn-container/btn-container.scss @@ -0,0 +1,10 @@ + +.btn-container { + padding: 0 15px; +} + +@media (min-width: $tablet-width) { + .btn-container { + padding: 0; + } +} diff --git a/source/sass/header/btn-container/hero-btn.scss b/source/sass/header/btn-container/hero-btn.scss new file mode 100644 index 00000000..4feeb01a --- /dev/null +++ b/source/sass/header/btn-container/hero-btn.scss @@ -0,0 +1,67 @@ +.hero-btn { + display: block; + padding: 22px 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 12px; + line-height: 12px; + width: 286px; + color: #ffffff; + background: transparent; + border: #ffffff 2px solid; + outline: none; + text-align: center; + text-decoration: none; + text-transform: uppercase; + + + &:hover { + background-color: #ffffff; + color: #103aae; + } + + &:focus { + background: rgb(255, 255, 255, 0.2); + border-color: #000000; + color: #103aae; + } + + &:active { + background: #ffffff; + background-color: #ffffff; + color: #102654; + } + + &:disabled { + background: transparent; + border-color: #ffffff; + color: #ffffff; + opacity: 50%; + } + + &--disabled { + background: transparent; + border-color: #ffffff; + color: #ffffff; + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .hero-btn { + position: absolute; + bottom: 138px; + left: 184px; + width: 181px; + padding: 20px 0; + } +} + +@media (min-width: $desktop-width) { + .hero-btn { + bottom: 180px; + left: 365px; + width: 266px; + padding: 25px 0; + } +} diff --git a/source/sass/header/hero-banner/banner-info/banner-info.scss b/source/sass/header/hero-banner/banner-info/banner-info.scss new file mode 100644 index 00000000..c0a96942 --- /dev/null +++ b/source/sass/header/hero-banner/banner-info/banner-info.scss @@ -0,0 +1,20 @@ +.banner-info { + width: 156px; +} + +@media (min-width: $tablet-width) { + .banner-info { + margin: 32px 5px 0 -4px; + grid-column: 2; + grid-row: 1; + width: 185px; + align-content: start; + } +} + +@media (min-width: $desktop-width) { + .banner-info { + margin: 52px 56px 0 -56px; + width: 270px; + } +} diff --git a/source/sass/header/hero-banner/banner-info/info-city.scss b/source/sass/header/hero-banner/banner-info/info-city.scss new file mode 100644 index 00000000..c4534cc1 --- /dev/null +++ b/source/sass/header/hero-banner/banner-info/info-city.scss @@ -0,0 +1,26 @@ +.info-city { + margin: 0 0 14px; + padding: 0; + text-align: end; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + color: #ffffff; +} + +@media (min-width: $tablet-width) { + .info-city { + margin-bottom: 10px; + font-size: 42px; + line-height: 42px; + } +} + +@media (min-width: $desktop-width) { + .info-city { + margin-bottom: 40px; + font-size: 54px; + line-height: 54px; + } +} diff --git a/source/sass/header/hero-banner/banner-info/info-title.scss b/source/sass/header/hero-banner/banner-info/info-title.scss new file mode 100644 index 00000000..eb65158e --- /dev/null +++ b/source/sass/header/hero-banner/banner-info/info-title.scss @@ -0,0 +1,28 @@ +.info-title { + margin: 0; + padding: 0; + text-align: end; + font-family: "Alumni Sans", sans-serif; + font-weight: 800; + font-size: 62px; + line-height: 62px; + color: #ffffff; + letter-spacing: 1px; + text-transform: uppercase; +} + +@media (min-width: $tablet-width) { + .info-title { + font-size: 72px; + line-height: 85px; + letter-spacing: 2px; + } +} + +@media (min-width: $desktop-width) { + .info-title { + font-size: 92px; + line-height: 110px; + letter-spacing: 4px; + } +} diff --git a/source/sass/header/hero-banner/hero-banner.scss b/source/sass/header/hero-banner/hero-banner.scss new file mode 100644 index 00000000..b4f41c23 --- /dev/null +++ b/source/sass/header/hero-banner/hero-banner.scss @@ -0,0 +1,26 @@ +.hero-banner { + padding: 48px 15px; + display: flex; + flex-direction: row-reverse; + justify-content: space-between; +} + +@media (min-width: $tablet-width) { + .hero-banner { + padding: 0 45px; + display: grid; + grid-template-columns: 113px 185px 324px; + column-gap: 26px; + justify-content: end; + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .hero-banner { + padding: 30px 175px 0 250px; + grid-template-columns: 115px 270px 500px; + width: 941px; + gap: 0; + } +} diff --git a/source/sass/header/hero-banner/hero-text/hero-text.scss b/source/sass/header/hero-banner/hero-text/hero-text.scss new file mode 100644 index 00000000..5da6a842 --- /dev/null +++ b/source/sass/header/hero-banner/hero-text/hero-text.scss @@ -0,0 +1,14 @@ +.hero-text { + margin: 0; + padding: 0; + text-align: right; + font-weight: 400; + line-height: 20px; + color: #ffffff; +} + +@media (min-width: $tablet-width) { + .hero-text { + line-height: 22px; + } +} diff --git a/source/sass/header/hero-banner/hero-text/info-text.scss b/source/sass/header/hero-banner/hero-text/info-text.scss new file mode 100644 index 00000000..1a94bfa5 --- /dev/null +++ b/source/sass/header/hero-banner/hero-text/info-text.scss @@ -0,0 +1,19 @@ +.info-text { + margin: 110px 0 0; + width: 113px; +} + +@media (min-width: $tablet-width) { + .info-text { + margin: 162px 0 0 -4px; + grid-column: 1; + grid-row: 1; + align-content: start; + } +} + +@media (min-width: $desktop-width) { + .info-text { + margin: 229px 23px 0 -23px; + } +} diff --git a/source/sass/header/hero-banner/picture/banner-picture.scss b/source/sass/header/hero-banner/picture/banner-picture.scss new file mode 100644 index 00000000..df4c393e --- /dev/null +++ b/source/sass/header/hero-banner/picture/banner-picture.scss @@ -0,0 +1,15 @@ +.banner-picture { + display: none; +} + +@media (min-width: $tablet-width) { + .banner-picture { + display: block; + grid-column: 3; + grid-row: 1; + } + + .banner-picture__img { + background-color: #1c3374; + } +} diff --git a/source/sass/header/hero-contact/hero-contact.scss b/source/sass/header/hero-contact/hero-contact.scss new file mode 100644 index 00000000..f61f5cb0 --- /dev/null +++ b/source/sass/header/hero-contact/hero-contact.scss @@ -0,0 +1,17 @@ +.hero-contact { + padding: 16px 15px; + display: flex; + justify-content: space-between; +} + +@media (min-width: $tablet-width) { + .hero-contact { + padding: 30px 45px; + } +} + +@media (min-width: $desktop-width) { + .hero-contact { + padding: 30px 103px; + } +} diff --git a/source/sass/header/hero-contact/hero-logo.scss b/source/sass/header/hero-contact/hero-logo.scss new file mode 100644 index 00000000..0c3c0b8a --- /dev/null +++ b/source/sass/header/hero-contact/hero-logo.scss @@ -0,0 +1,15 @@ +@media (min-width: $tablet-width) { + .hero-logo { + margin-top: 1px; + width: 110px; + height: 22px; + } +} + +@media (min-width: $desktop-width) { + .hero-logo { + margin: 0; + width: 130px; + height: 26px; + } +} diff --git a/source/sass/header/hero-contact/hero-tel.scss b/source/sass/header/hero-contact/hero-tel.scss new file mode 100644 index 00000000..19041c72 --- /dev/null +++ b/source/sass/header/hero-contact/hero-tel.scss @@ -0,0 +1,49 @@ +.hero-tel { + margin: -1px 0 1px 1px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 22px; + line-height: 22px; + color: #ffffff; + outline: none; + text-decoration: none; + + &:hover { + color: #1c3374; + opacity: 50; + } + + &:focus { + color: #1c3374; + } + + &:active { + margin-bottom: -7px; + color: #102654; + padding-bottom: 6px; + border-bottom: #102654 1px solid; + } + + &:disabled { + opacity: 50%; + } + + &--disabled { + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .hero-tel { + margin: 0; + font-size: 24px; + line-height: 24px; + } +} + +@media (min-width: $desktop-width) { + .hero-tel { + font-size: 26px; + line-height: 26px; + } +} diff --git a/source/sass/header/hero-container.scss b/source/sass/header/hero-container.scss new file mode 100644 index 00000000..174f82f3 --- /dev/null +++ b/source/sass/header/hero-container.scss @@ -0,0 +1,22 @@ + +.hero-container { + width: $mobile-width; + margin: 0 auto; + padding-bottom: 32px; +} + +@media (min-width: $tablet-width) { + .hero-container { + position: relative; + width: $tablet-width; + padding-bottom: 100px; + } +} + +@media (min-width: $desktop-width) { + .hero-container { + position: relative; + width: $desktop-width; + padding-bottom: 120px; + } +} diff --git a/source/sass/header/hero.scss b/source/sass/header/hero.scss new file mode 100644 index 00000000..577063b8 --- /dev/null +++ b/source/sass/header/hero.scss @@ -0,0 +1,3 @@ +.hero { + background: linear-gradient(to right, #003d85 35%, #b80027); +} diff --git a/source/sass/main/about/about-container.scss b/source/sass/main/about/about-container.scss new file mode 100644 index 00000000..b8dd8620 --- /dev/null +++ b/source/sass/main/about/about-container.scss @@ -0,0 +1,7 @@ +@media (min-width: $desktop-width) { + .about-container { + display: flex; + justify-content: space-between; + padding: 120px 103px 125px; + } +} diff --git a/source/sass/main/about/about.scss b/source/sass/main/about/about.scss new file mode 100644 index 00000000..cbde1c4d --- /dev/null +++ b/source/sass/main/about/about.scss @@ -0,0 +1,22 @@ +.about { + margin: 0 auto; + width: $mobile-width; + padding-bottom: 40px; + background-color: #ffffff; +} + +@media (min-width: $tablet-width) { + .about { + margin: 0 auto; + width: $tablet-width; + padding-bottom: 35px; + } +} + +@media (min-width: $desktop-width) { + .about { + margin: 0 auto; + width: $desktop-width; + padding: 0; + } +} diff --git a/source/sass/main/about/picture-container/about-img.scss b/source/sass/main/about/picture-container/about-img.scss new file mode 100644 index 00000000..bb365a2f --- /dev/null +++ b/source/sass/main/about/picture-container/about-img.scss @@ -0,0 +1,11 @@ +.about-img { + display: block; + margin-bottom: 36px; + background-color: #f8f9fc; +} + +@media (min-width: $tablet-width) { + .about-img { + margin-bottom: 0; + } +} diff --git a/source/sass/main/about/picture-container/picture-container.scss b/source/sass/main/about/picture-container/picture-container.scss new file mode 100644 index 00000000..fa9a7f48 --- /dev/null +++ b/source/sass/main/about/picture-container/picture-container.scss @@ -0,0 +1,18 @@ +.picture-container { + margin: 0 0 36px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .picture-container { + position: relative; + margin: 0; + padding: 0 45px 85px; + } +} + +@media (min-width: $desktop-width) { + .picture-container { + padding: 0 0 115px 100px; + } +} diff --git a/source/sass/main/about/picture-container/video/btn-play/btn-play.scss b/source/sass/main/about/picture-container/video/btn-play/btn-play.scss new file mode 100644 index 00000000..db9f80d2 --- /dev/null +++ b/source/sass/main/about/picture-container/video/btn-play/btn-play.scss @@ -0,0 +1,91 @@ +.btn-play { + z-index: 1; + position: relative; + margin: 0; + padding: 0; + width: 72px; + height: 72px; + border: rgba(237, 2, 51, 20%) 2px solid; + border-radius: 50%; + background-color: transparent; + cursor: pointer; + + &::before { + top: 8px; + left: 8px; + z-index: 0; + position: absolute; + content: ""; + width: 52px; + height: 52px; + border-radius: 50%; + background: linear-gradient(to right, #ed0233 35%, #003eb7); + } + + &:hover { + border-color: rgba(16, 38, 84, 60%); + + svg { + fill: rgba(16, 38, 84, 60%); + } + + &::before { + background: #ffffff; + } + } + + &:focus { + border-color: transparent; + + svg { + fill: #102654; + } + + &::before { + background: #c8c9cc; + } + } + + &:active { + border-color: #102654; + + svg { + fill: #102654; + } + + &::before { + background: #ffffff; + } + } + + &:disabled { + border-color: #102654; + opacity: 60%; + + svg { + fill: #102654; + } + + &::before { + background: #ffffff; + } + } +} + +.btn-play--hidden { + display: none; +} + +@media (min-width: $desktop-width) { + .btn-play { + width: 100px; + height: 100px; + + &::before { + top: 12px; + left: 12px; + width: 72px; + height: 72px; + } + } +} diff --git a/source/sass/main/about/picture-container/video/btn-play/play-img.scss b/source/sass/main/about/picture-container/video/btn-play/play-img.scss new file mode 100644 index 00000000..a1b5d46b --- /dev/null +++ b/source/sass/main/about/picture-container/video/btn-play/play-img.scss @@ -0,0 +1,18 @@ +.play-img { + top: 30px; + left: 29px; + bottom: 30px; + position: absolute; + z-index: 2; + fill: #ffffff; +} + +@media (min-width: $desktop-width) { + .play-img { + top: 41px; + left: 40px; + bottom: 30px; + width: 17px; + height: 17px; + } +} diff --git a/source/sass/main/about/picture-container/video/video-iframe.scss b/source/sass/main/about/picture-container/video/video-iframe.scss new file mode 100644 index 00000000..896e078a --- /dev/null +++ b/source/sass/main/about/picture-container/video/video-iframe.scss @@ -0,0 +1,11 @@ +.video-iframe { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + border: none; + + &--hidden { + display: none; + } +} diff --git a/source/sass/main/about/picture-container/video/video.scss b/source/sass/main/about/picture-container/video/video.scss new file mode 100644 index 00000000..2021c179 --- /dev/null +++ b/source/sass/main/about/picture-container/video/video.scss @@ -0,0 +1,46 @@ +.video { + display: flex; + align-items: center; + justify-content: center; + margin: 0; + padding: 0; + width: 320px; + height: 170px; + background: url("../img/about/video-mob.jpg") no-repeat; + background-size: cover; + + @media (resolution >= 2dppx) { + background-image: url("../img/about/video-mob@2x.jpg"); + } +} + +@media (min-width: $tablet-width) { + .video { + bottom: 0; + left: 249px; + position: absolute; + width: 270px; + height: 170px; + background: url("../img/about/video-tab.jpg") no-repeat; + background-size: cover; + + @media (resolution >= 2dppx) { + background-image: url("../img/about/video-tab@2x.jpg"); + } + } +} + +@media (min-width: $desktop-width) { + .video { + left: 0; + bottom: 0; + width: 360px; + height: 230px; + background: url("../img/about/video-desk.jpg") no-repeat; + background-size: cover; + + @media (resolution >= 2dppx) { + background-image: url("../img/about/video-desk@2x.jpg"); + } + } +} diff --git a/source/sass/main/about/title-text/about-info.scss b/source/sass/main/about/title-text/about-info.scss new file mode 100644 index 00000000..977b208e --- /dev/null +++ b/source/sass/main/about/title-text/about-info.scss @@ -0,0 +1,23 @@ +.about-info { + margin: 0 0 36px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 18px; + line-height: 20px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .about-info { + margin-bottom: 35px; + font-size: 20px; + } +} + +@media (min-width: $desktop-width) { + .about-info { + margin-bottom: 95px; + font-size: 22px; + line-height: 22px; + } +} diff --git a/source/sass/main/about/title-text/about-title.scss b/source/sass/main/about/title-text/about-title.scss new file mode 100644 index 00000000..ec3a777d --- /dev/null +++ b/source/sass/main/about/title-text/about-title.scss @@ -0,0 +1,25 @@ +.about-title { + margin: 0 0 12px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .about-title { + margin-left: -1px; + margin-bottom: 20px; + font-size: 42px; + line-height: 42px; + } +} + +@media (min-width: $desktop-width) { + .about-title { + margin-bottom: 25px; + font-size: 54px; + line-height: 54px; + } +} diff --git a/source/sass/main/about/title-text/title-text.scss b/source/sass/main/about/title-text/title-text.scss new file mode 100644 index 00000000..105e8547 --- /dev/null +++ b/source/sass/main/about/title-text/title-text.scss @@ -0,0 +1,53 @@ +.title-text { + margin: 0 auto; + padding: 40px 15px 36px; +} + +.title-text span { + margin: 0; + padding: 0; + display: none; +} + +.title-text p { + margin: 0; + padding: 0; +} + +@media (min-width: $tablet-width) { + .title-text { + width: 480px; + padding: 61px 45px 36px; + text-align: center; + } + + .title-text p { + font-size: 16px; + line-height: 24px; + } + + .title-text br { + display: none; + } +} + +@media (min-width: $desktop-width) { + .title-text { + margin: 0; + width: 355px; + padding: 0; + text-align: start; + } + + .title-text p { + width: 350px; + } + + .title-text span { + margin-top: 9px; + display: block; + font-size: 16px; + line-height: 24px; + width: 330px; + } +} diff --git a/source/sass/main/faq/faq-container/faq-container.scss b/source/sass/main/faq/faq-container/faq-container.scss new file mode 100644 index 00000000..3b5355c0 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-container.scss @@ -0,0 +1,20 @@ +.faq-container { + margin: 0 auto; + display: flex; + flex-direction: column; + width: 290px; +} + +@media (min-width: $tablet-width) { + .faq-container { + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .faq-container { + flex-direction: row; + justify-content: space-between; + width: 1160px; + } +} diff --git a/source/sass/main/faq/faq-container/faq-content/faq-content.scss b/source/sass/main/faq/faq-container/faq-content/faq-content.scss new file mode 100644 index 00000000..fc3513a9 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-content/faq-content.scss @@ -0,0 +1,16 @@ +.faq-content { + margin: 0; + width: 290px; +} + +@media (min-width: $tablet-width) { + .faq-content { + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .faq-content { + width: 860px; + } +} diff --git a/source/sass/main/faq/faq-container/faq-content/faq-pane.scss b/source/sass/main/faq/faq-container/faq-content/faq-pane.scss new file mode 100644 index 00000000..d5f9ec56 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-content/faq-pane.scss @@ -0,0 +1,24 @@ +.faq-pane { + display: none; + margin: 0; + padding: 0; + list-style-type: none; +} + +.faq-pane--show { + border-top: #74819c 1px solid; + display: block; +} + + +@media (min-width: $tablet-width) { + .faq-pane li:last-child label { + padding: 23px 100px 23px 0; + } +} + +@media (min-width: $desktop-width) { + .faq-pane li:last-child label { + padding: 31px 100px 31px 0; + } +} diff --git a/source/sass/main/faq/faq-container/faq-content/pane-item/pane-input.scss b/source/sass/main/faq/faq-container/faq-content/pane-item/pane-input.scss new file mode 100644 index 00000000..657a1c22 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-content/pane-item/pane-input.scss @@ -0,0 +1,43 @@ +.pane-input { + position: absolute; + width: 0; + height: 0; + appearance: none; +} + +.pane-input:checked ~ .pane-text { + max-height: 500px; + transition: max-height 0.2s ease-in; +} + +.pane-input:checked ~ label::before { + margin-left: 10px; + width: 30px; + height: 30px; + border: none; + background: url("../img/sprite/minus.svg") no-repeat; + background-size: 14px 2px; + background-position: right 50% top 50%; + background-color: #1c3374; +} + +@media (min-width: $tablet-width) { + .pane-input:checked ~ label { + padding-bottom: 18px; + } + + .pane-input:checked ~ label::before { + width: 40px; + height: 40px; + background: url("../img/sprite/minus-tab.svg") no-repeat; + background-size: 20px 2px; + background-position: right 50% top 50%; + background-color: #1c3374; + } +} + +@media (min-width: $desktop-width) { + .pane-input:checked ~ label { + padding-bottom: 30px; + } +} diff --git a/source/sass/main/faq/faq-container/faq-content/pane-item/pane-item.scss b/source/sass/main/faq/faq-container/faq-content/pane-item/pane-item.scss new file mode 100644 index 00000000..2efb762c --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-content/pane-item/pane-item.scss @@ -0,0 +1,136 @@ +.pane-item { + border-bottom: #74819c 1px solid; +} + +.pane-item label { + margin: 0; + position: relative; + display: block; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 20px; + line-height: 20px; + padding: 20px 0; + background-color: transparent; + cursor: pointer; + + &::before { + position: absolute; + top: 50%; + right: 0; + transform: translate(0, -50%); + content: ""; + width: 28px; + height: 28px; + border-radius: 50%; + border: #1c3374 1px solid; + background: url("../img/sprite/plus.svg") no-repeat; + background-size: 14px 14px; + background-position: right 50% top 50%; + background-color: transparent; + } +} + +.pane-item label:hover { + &::before { + background: url("../img/sprite/plus-white.svg") no-repeat; + background-size: 14px 14px; + background-position: right 50% top 50%; + background-color: #1c3374; + } +} + +.pane-item label:focus { + &::before { + background: url("../img/sprite/plus-white.svg") no-repeat; + background-size: 14px 14px; + background-position: right 50% top 50%; + background-color: #74819c; + } +} + +.pane-item label:disabled { + &::before { + background: url("../img/sprite/plus.svg") no-repeat; + background-size: 14px 14px; + background-position: right 50% top 50%; + background-color: transparent; + opacity: 30%; + } +} + +.pane-item--mod label { + padding-right: 52px; + width: 238px; +} + +.pane-item--mod .pane-text p { + width: 268px; +} + +@media (min-width: $tablet-width) { + .pane-item label { + font-size: 22px; + line-height: 22px; + padding: 32px 0; + + &::before { + width: 38px; + height: 38px; + background-size: 20px 20px; + background-position: right 50% top 50%; + } + } + + .pane-item label:hover { + &::before { + background: url("../img/sprite/plus-white.svg") no-repeat; + background-size: 20px 20px; + background-position: right 50% top 50%; + background-color: #1c3374; + } + } + + .pane-item label:focus { + &::before { + background: url("../img/sprite/plus-white.svg") no-repeat; + background-size: 20px 20px; + background-position: right 50% top 50%; + background-color: #74819c; + } + } + + .pane-item--mod label { + padding-right: 100px; + width: 578px; + } + + .pane-item--mod .pane-text p { + width: 527px; + } + + .pane-item .faq-br-one { + display: none; + } +} + +@media (min-width: $desktop-width) { + .pane-item label { + font-size: 24px; + line-height: 24px; + padding: 31px 0 30px; + } + + .pane-item--mod label { + padding-right: 100px; + width: 760px; + } + + .pane-item--mod .pane-text p { + width: 660px; + } + + .pane-item .faq-br-two { + display: none; + } +} diff --git a/source/sass/main/faq/faq-container/faq-content/pane-item/pane-text.scss b/source/sass/main/faq/faq-container/faq-content/pane-item/pane-text.scss new file mode 100644 index 00000000..fa719f74 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-content/pane-item/pane-text.scss @@ -0,0 +1,42 @@ +.pane-text { + max-height: 0; + overflow: hidden; +} + +.pane-text p { + margin: 0; + font-size: 16px; + line-height: 20px; + padding: 0 0 20px; + width: 238px; +} + +.pane-text .faq-br-four { + display: none; +} + +@media (min-width: $tablet-width) { + .pane-text p { + margin-top: 0; + font-size: 18px; + line-height: 24px; + padding: 0 0 24px; + width: 521px; + } + + .pane-text .faq-br-three { + display: none; + } +} + +@media (min-width: $desktop-width) { + .pane-text p { + margin-top: 1px; + padding: 0 0 22px; + width: 608px; + } + + .pane-text .faq-br-four { + display: block; + } +} diff --git a/source/sass/main/faq/faq-container/faq-tab/faq-tab-btn.scss b/source/sass/main/faq/faq-container/faq-tab/faq-tab-btn.scss new file mode 100644 index 00000000..2fdc8767 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-tab/faq-tab-btn.scss @@ -0,0 +1,57 @@ +.faq-tab-btn { + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 16px; + line-height: 16px; + padding: 14px 0; + width: 140px; + min-height: 46px; + color: #102654; + background-color: transparent; + border: rgba(16, 38, 84, 20%) 1px solid; + outline: none; + cursor: pointer; + + &:hover { + border-color: #102654; + } + + &:focus { + background-color: #ffffff; + border-color: #102654; + } + + &:active { + color: #ffffff; + border: none; + background: linear-gradient(95deg, #ed0233 15%, #003eb7 85%); + } + + &:disabled { + border-color: #102654; + opacity: 20%; + } +} + +.faq-tab-btn--active { + color: #ffffff; + border: none; + background: linear-gradient(95deg, #ed0233 15%, #003eb7 85%); +} + +@media (min-width: $tablet-width) { + .faq-tab-btn { + font-size: 18px; + line-height: 18px; + padding: 16px 0 18px; + min-height: 54px; + width: 162px; + } +} + +@media (min-width: $desktop-width) { + .faq-tab-btn { + padding: 19px 0 15px; + width: 260px; + } +} diff --git a/source/sass/main/faq/faq-container/faq-tab/faq-tab.scss b/source/sass/main/faq/faq-container/faq-tab/faq-tab.scss new file mode 100644 index 00000000..0bec2e59 --- /dev/null +++ b/source/sass/main/faq/faq-container/faq-tab/faq-tab.scss @@ -0,0 +1,23 @@ +.faq-tab { + margin: 0 auto 35px; + display: flex; + flex-wrap: wrap; + gap: 10px; + width: 100%; +} + +@media (min-width: $tablet-width) { + .faq-tab { + margin-bottom: 45px; + gap: 10px; + } +} + +@media (min-width: $desktop-width) { + .faq-tab { + margin: 0; + flex-direction: column; + gap: 10px; + width: 260px; + } +} diff --git a/source/sass/main/faq/faq-title.scss b/source/sass/main/faq/faq-title.scss new file mode 100644 index 00000000..edaaa519 --- /dev/null +++ b/source/sass/main/faq/faq-title.scss @@ -0,0 +1,25 @@ +.faq-title { + margin: 0 0 35px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .faq-title { + margin-bottom: 45px; + font-size: 42px; + line-height: 42px; + } +} + +@media (min-width: $desktop-width) { + .faq-title { + margin: 0 auto 50px; + font-size: 54px; + line-height: 54px; + width: 1160px; + } +} diff --git a/source/sass/main/faq/faq.scss b/source/sass/main/faq/faq.scss new file mode 100644 index 00000000..c2cc9af8 --- /dev/null +++ b/source/sass/main/faq/faq.scss @@ -0,0 +1,22 @@ +.faq { + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: center; + padding: 70px 0; + width: 100%; + background-color: #f8f9fc; +} + +@media (min-width: $tablet-width) { + .faq { + padding: 61px 0 59px; + } +} + +@media (min-width: $desktop-width) { + .faq { + align-items: start; + padding: 100px 0; + } +} diff --git a/source/sass/main/features/features-block.scss b/source/sass/main/features/features-block.scss new file mode 100644 index 00000000..9e01bc49 --- /dev/null +++ b/source/sass/main/features/features-block.scss @@ -0,0 +1,80 @@ +.features-block { + margin: 0 0 40px; + font-weight: 700; + text-align: center; + color: #ffffff; + padding: 30px 0 40px; + width: 100%; + background-color: #1c3374; +} + +.features-block h3 { + margin: 0 0 5px; + font-size: 64px; + line-height: 64px; + padding: 0; +} + +.features-block h4 { + margin: 0 0 20px; + font-size: 22px; + line-height: 22px; + padding: 0; +} + +.features-block p { + margin: 0 auto; + font-weight: 300; + line-height: 22px; + padding: 0; + width: 170px; +} + +@media (min-width: $tablet-width) { + .features-block { + padding: 35px 0; + width: 320px; + } + + .features-block h3 { + margin: 0 0 25px; + font-size: 70px; + line-height: 70px; + } + + .features-block h4 { + margin: 0 0 25px; + font-size: 24px; + line-height: 24px; + } + + .features-block p { + font-size: 16px; + line-height: 24px; + width: 170px; + } +} + +@media (min-width: $desktop-width) { + .features-block { + position: absolute; + top: 0; + margin: 0; + padding: 58px 0; + width: 360px; + } + + .features-block h3 { + margin: 0 0 10px; + } + + .features-block h4 { + margin: 0 0 30px; + font-size: 26px; + line-height: 26px; + } + + .features-block p { + width: 280px; + } +} diff --git a/source/sass/main/features/features-container.scss b/source/sass/main/features/features-container.scss new file mode 100644 index 00000000..e541b60f --- /dev/null +++ b/source/sass/main/features/features-container.scss @@ -0,0 +1,22 @@ +.features-container { + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: center; + width: 100%; +} + +@media (min-width: $tablet-width) { + .features-container { + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .features-container { + position: relative; + margin: 0 auto; + min-height: 300px; + width: 1160px; + } +} diff --git a/source/sass/main/features/features-list/features-item-number.scss b/source/sass/main/features/features-list/features-item-number.scss new file mode 100644 index 00000000..1d2e74fb --- /dev/null +++ b/source/sass/main/features/features-list/features-item-number.scss @@ -0,0 +1,52 @@ +.features-item-number { + margin: 0 0 10px; +} + +.features-item-number p { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 64px; + line-height: 64px; + padding: 0; + background-image: linear-gradient(135deg, #d10a42 25%, #0041ca 50%); + background-clip: text; + color: transparent; +} + +.features-item-number span { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 20px; + padding: 0; + color: #2e35ac; +} + +@media (min-width: $tablet-width) { + .features-item-number { + margin: 0; + } + + .features-item-number p { + margin-right: 15px; + font-size: 70px; + line-height: 70px; + } + + .features-item-number--mod { + margin-top: 1px; + margin-right: 0; + } + + .features-item-number span { + line-height: 22px; + } +} + +@media (min-width: $desktop-width) { + .features-item-number p { + margin-right: 0; + } +} diff --git a/source/sass/main/features/features-list/features-item-text.scss b/source/sass/main/features/features-list/features-item-text.scss new file mode 100644 index 00000000..50936de2 --- /dev/null +++ b/source/sass/main/features/features-list/features-item-text.scss @@ -0,0 +1,64 @@ +.features-item-text h3 { + margin: 0 0 12px; + font-weight: 400; + font-size: 18px; + line-height: 20px; + padding: 0; +} + +.features-item-text p { + margin: 0 auto; + font-weight: 300; + line-height: 22px; + width: 230px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .features-item-text { + width: 238px; + } + + .features-item-text h3 { + font-size: 20px; + } + + .features-item-text p { + margin: 0; + font-size: 16px; + line-height: 24px; + width: 236px; + } + + .features-item-text--mod p { + width: 185px; + } + + .features-item-text--margin { + width: 240px; + } +} + +@media (min-width: $desktop-width) { + .features-item-text { + width: 210px; + } + + .features-item-text h3 { + margin: 0 0 8px; + font-size: 22px; + line-height: 22px; + } + + .features-item-text p { + width: 187px; + } + + .features-item-text--margin p { + width: 210px; + } + + .features-item-text--text p { + width: 189px; + } +} diff --git a/source/sass/main/features/features-list/features-item.scss b/source/sass/main/features/features-list/features-item.scss new file mode 100644 index 00000000..8beb210d --- /dev/null +++ b/source/sass/main/features/features-list/features-item.scss @@ -0,0 +1,24 @@ +.features-item { + display: flex; + flex-direction: column; + margin-bottom: 35px; +} + +.features-item:last-child { + margin-bottom: 0; +} + +@media (min-width: $tablet-width) { + .features-item { + margin: 0; + flex-direction: row; + justify-content: space-between; + width: 324px; + } +} + +@media (min-width: $desktop-width) { + .features-item { + width: 360px; + } +} diff --git a/source/sass/main/features/features-list/features-list.scss b/source/sass/main/features/features-list/features-list.scss new file mode 100644 index 00000000..2d2a5453 --- /dev/null +++ b/source/sass/main/features/features-list/features-list.scss @@ -0,0 +1,64 @@ +.features-list { + margin: 0 auto 40px; + display: flex; + flex-direction: column; + width: 290px; + padding: 0 15px; + text-align: center; +} + +@media (min-width: $tablet-width) { + .features-list { + margin-bottom: 39px; + flex-direction: row; + justify-content: space-between; + width: 678px; + padding: 0; + text-align: start; + + &--mod { + margin: 0; + } + } +} + +@media (min-width: $desktop-width) { + .features-list { + position: relative; + margin: 0 auto; + width: 1160px; + padding: 0 0 49px; + + &::before { + position: absolute; + bottom: 0; + left: 0; + content: ""; + opacity: 20%; + width: 360px; + border-bottom: #d10a42 2px solid; + } + + &::after { + position: absolute; + bottom: 0; + right: 0; + content: ""; + opacity: 20%; + width: 360px; + border-bottom: #d10a42 2px solid; + } + } + + .features-list--mod { + padding: 38px 0 0; + + &::before { + display: none; + } + + &::after { + display: none; + } + } +} diff --git a/source/sass/main/features/features-title.scss b/source/sass/main/features/features-title.scss new file mode 100644 index 00000000..3470c352 --- /dev/null +++ b/source/sass/main/features/features-title.scss @@ -0,0 +1,23 @@ +.features-title { + margin: 0 0 40px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; +} + +@media (min-width: $tablet-width) { + .features-title { + margin: 0 0 50px; + font-size: 42px; + line-height: 42px; + } +} + +@media (min-width: $desktop-width) { + .features-title { + margin: 0 0 50px; + font-size: 54px; + line-height: 54px; + } +} diff --git a/source/sass/main/features/features.scss b/source/sass/main/features/features.scss new file mode 100644 index 00000000..c1b6a8d1 --- /dev/null +++ b/source/sass/main/features/features.scss @@ -0,0 +1,19 @@ +.features { + display: flex; + flex-direction: column; + align-items: center; + padding: 40px 0 0; + background-color: #f8f9fc; +} + +@media (min-width: $tablet-width) { + .features { + padding: 61px 0 60px; + } +} + +@media (min-width: $desktop-width) { + .features { + padding: 101px 0; + } +} diff --git a/source/sass/main/form/form-contacts.scss b/source/sass/main/form/form-contacts.scss new file mode 100644 index 00000000..8daa3a64 --- /dev/null +++ b/source/sass/main/form/form-contacts.scss @@ -0,0 +1,22 @@ +.form-contacts { + margin: 0; + display: flex; + flex-direction: column; + align-items: center; + width: 100%; +} + +@media (min-width: $tablet-width) { + .form-contacts { + margin: 0.5px 0 -0.5px; + } +} + +@media (min-width: $desktop-width) { + .form-contacts { + margin: 0 auto; + justify-content: center; + flex-direction: row; + border-top: #74819c 1px solid; + } +} diff --git a/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item-text.scss b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item-text.scss new file mode 100644 index 00000000..be1661ce --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item-text.scss @@ -0,0 +1,34 @@ +.contact-item-text { + margin: 0; + line-height: 20px; + padding: 0; + color: #102654; + outline: none; + text-decoration: none; +} + +.contact-item-text--mod { + &:hover { + color: #1c3374; + opacity: 50; + } + + &:focus { + color: #1c3374; + } + + &:active { + color: #102654; + text-decoration: underline; + } + + &:disabled { + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .contact-item-text { + line-height: 22px; + } +} diff --git a/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item-title.scss b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item-title.scss new file mode 100644 index 00000000..5a11801b --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item-title.scss @@ -0,0 +1,21 @@ +.contact-item-title { + margin: 0 0 12px; + font-weight: 400; + font-size: 20px; + line-height: 20px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .contact-item-title { + margin-bottom: 6px; + font-size: 24px; + line-height: 24px; + } +} + +@media (min-width: $desktop-width) { + .contact-item-title { + font-weight: 400; + } +} diff --git a/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item.scss b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item.scss new file mode 100644 index 00000000..e8162f89 --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-item.scss @@ -0,0 +1,21 @@ +.contact-item { + margin: 0; + display: flex; + flex-direction: column; + padding: 0; + width: 170px; + min-height: 52px; +} + +@media (min-width: $tablet-width) { + .contact-item { + width: 190px; + min-height: 51px; + } +} + +@media (min-width: $desktop-width) { + .contact-item { + width: 178px; + } +} diff --git a/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-list.scss b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-list.scss new file mode 100644 index 00000000..fff5004e --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts-container/contact-list/contact-list.scss @@ -0,0 +1,25 @@ +.contact-list { + margin: 0 0 28px; + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 28px; + padding: 0; + min-height: 132px; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .contact-list { + margin: 0; + min-height: 118px; + gap: 0; + width: 190px; + } +} + +@media (min-width: $desktop-width) { + .contact-list { + width: 178px; + } +} diff --git a/source/sass/main/form/form/contacts/contacts-container/contacts-container.scss b/source/sass/main/form/form/contacts/contacts-container/contacts-container.scss new file mode 100644 index 00000000..859d0db3 --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts-container/contacts-container.scss @@ -0,0 +1,35 @@ +.contacts-container { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + display: flex; + flex-direction: column; + flex-wrap: wrap; + width: 290px; +} + +@media (min-width: $tablet-width) { + .contacts-container { + position: relative; + flex-direction: row; + justify-content: space-between; + width: 440px; + + &::before { + position: absolute; + content: ""; + top: 0; + left: 50%; + transform: translate(-50%, 0); + height: 100%; + width: 1px; + background-color: #74819c; + } + } +} + +@media (min-width: $desktop-width) { + .contacts-container { + width: 476.5px; + } +} diff --git a/source/sass/main/form/form/contacts/contacts-title.scss b/source/sass/main/form/form/contacts/contacts-title.scss new file mode 100644 index 00000000..084ac895 --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts-title.scss @@ -0,0 +1,27 @@ +.contacts-title { + margin: 0 0 37px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; + width: 290px; +} + +@media (min-width: $tablet-width) { + .contacts-title { + margin-bottom: 36px; + font-size: 54px; + line-height: 54px; + width: 440px; + text-align: center; + } +} + +@media (min-width: $desktop-width) { + .contacts-title { + margin-bottom: 35px; + width: 477px; + text-align: start; + } +} diff --git a/source/sass/main/form/form/contacts/contacts.scss b/source/sass/main/form/form/contacts/contacts.scss new file mode 100644 index 00000000..5f02713a --- /dev/null +++ b/source/sass/main/form/form/contacts/contacts.scss @@ -0,0 +1,24 @@ +.contacts { + margin: 0; + display: flex; + flex-direction: column; + padding: 37px 0 12px; +} + +@media (min-width: $tablet-width) { + .contacts { + margin: 0; + display: flex; + flex-direction: column; + padding: 60px 0; + } +} + +@media (min-width: $desktop-width) { + .contacts { + margin: 0; + display: flex; + flex-direction: column; + padding: 61px 103px 71px; + } +} diff --git a/source/sass/main/form/form/form-application/application-input.scss b/source/sass/main/form/form/form-application/application-input.scss new file mode 100644 index 00000000..ae58e749 --- /dev/null +++ b/source/sass/main/form/form/form-application/application-input.scss @@ -0,0 +1,18 @@ +.application-input { + margin: 0; + position: relative; + width: 290px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .application-input { + width: 205px; + } +} + +@media (min-width: $desktop-width) { + .application-input { + width: 223px; + } +} diff --git a/source/sass/main/form/form/form-application/form-application.scss b/source/sass/main/form/form/form-application/form-application.scss new file mode 100644 index 00000000..f6110033 --- /dev/null +++ b/source/sass/main/form/form/form-application/form-application.scss @@ -0,0 +1,25 @@ +.form-application { + margin: 0 auto 36px; + display: flex; + flex-direction: column; + gap: 36px; + padding: 0; + width: 290px; + border: none; +} + +@media (min-width: $tablet-width) { + .form-application { + gap: 0; + flex-direction: row; + justify-content: space-between; + width: 440px; + } +} + +@media (min-width: $desktop-width) { + .form-application { + margin-bottom: 35.5px; + width: 477px; + } +} diff --git a/source/sass/main/form/form/form-application/form-input.scss b/source/sass/main/form/form/form-application/form-input.scss new file mode 100644 index 00000000..cb88c611 --- /dev/null +++ b/source/sass/main/form/form/form-application/form-input.scss @@ -0,0 +1,68 @@ +.form-input { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 300; + font-size: 14px; + line-height: 22px; + width: 281px; + padding: 0 0 3px; + color: #ffffff; + border-top: transparent 1px solid; + border-left: none; + border-right: transparent 1px solid; + border-bottom: #74819c 1px solid; + background-color: transparent; + outline: none; + + &::placeholder { + color: #ffffff; + opacity: 30%; + } + + &:hover { + border-bottom: #ffffff 1px solid; + } + + &:focus { + width: 282px; + padding: 0 3px 3px; + border: 1px solid #ffffff; + } + + &:focus::placeholder { + color: transparent; + } + + &:disabled { + color: #ffffff; + border-bottom: #ffffff 1px solid; + opacity: 20%; + } +} + +.form-input--error { + border-bottom: #ff121f 1px solid; +} + +@media (min-width: $tablet-width) { + .form-input { + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + padding: 0 0 3px; + width: 204px; + + &:focus { + width: 197px; + } + } +} + +@media (min-width: $desktop-width) { + .form-input { + width: 222px; + + &:focus { + width: 215px; + } + } +} diff --git a/source/sass/main/form/form/form-application/input-error.scss b/source/sass/main/form/form/form-application/input-error.scss new file mode 100644 index 00000000..e359c1dd --- /dev/null +++ b/source/sass/main/form/form/form-application/input-error.scss @@ -0,0 +1,10 @@ +.input-error { + position: absolute; + left: 0; + top: 26px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 22px; + color: #ff121f; +} diff --git a/source/sass/main/form/form/form-btn.scss b/source/sass/main/form/form/form-btn.scss new file mode 100644 index 00000000..b4c793ad --- /dev/null +++ b/source/sass/main/form/form/form-btn.scss @@ -0,0 +1,49 @@ +.form-btn { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 12px; + line-height: 12px; + padding: 22px 0; + width: 290px; + color: #ffffff; + text-transform: uppercase; + border: #ffffff 2px solid; + background-color: transparent; + cursor: pointer; + + &:hover { + color: #103aae; + border-color: #ffffff; + background-color: #ffffff; + } + + &:focus { + color: #103aae; + border-color: #000000; + background-color: rgba(255, 255, 255, 80%); + } + + &:active { + color: #102654; + border-color: #ffffff; + background-color: #ffffff; + } + + &:disabled { + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .form-btn { + width: 440px; + padding: 26px 0 24px; + } +} + +@media (min-width: $desktop-width) { + .form-btn { + width: 477px; + } +} diff --git a/source/sass/main/form/form/form-title.scss b/source/sass/main/form/form/form-title.scss new file mode 100644 index 00000000..9af8153e --- /dev/null +++ b/source/sass/main/form/form/form-title.scss @@ -0,0 +1,28 @@ +.form-title { + margin: 0 auto 36px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; + width: 290px; + text-align: start; +} + +@media (min-width: $tablet-width) { + .form-title { + margin-bottom: 35px; + font-size: 54px; + line-height: 54px; + width: 440px; + text-align: center; + } +} + +@media (min-width: $desktop-width) { + .form-title { + margin-bottom: 35.5px; + width: 477px; + text-align: start; + } +} diff --git a/source/sass/main/form/form/form.scss b/source/sass/main/form/form/form.scss new file mode 100644 index 00000000..1e3d7f0c --- /dev/null +++ b/source/sass/main/form/form/form.scss @@ -0,0 +1,27 @@ +.form { + margin: 0; + display: flex; + flex-direction: column; + align-items: center; + padding: 70px 0 48px; + width: 100%; + color: #ffffff; + background-color: #102654; +} + +.success-message--hidden { + visibility: hidden; +} + +@media (min-width: $tablet-width) { + .form { + padding: 60px 0 37.5px; + } +} + +@media (min-width: $desktop-width) { + .form { + padding: 60px 103px 39px; + width: 477px; + } +} diff --git a/source/sass/main/games/games-container/games-container.scss b/source/sass/main/games/games-container/games-container.scss new file mode 100644 index 00000000..ef76f6a5 --- /dev/null +++ b/source/sass/main/games/games-container/games-container.scss @@ -0,0 +1,20 @@ +.games-container { + margin: 0; + padding: 40px 40px 42px; + color: #ffffff; + background-color: #ed0233; +} + +@media (min-width: $tablet-width) { + .games-container { + width: 220px; + padding: 40px; + } +} + +@media (min-width: $desktop-width) { + .games-container { + width: 340px; + padding: 60px 80px 98px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-btn.scss b/source/sass/main/games/games-container/games-info/games-btn.scss new file mode 100644 index 00000000..588e8b50 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-btn.scss @@ -0,0 +1,60 @@ +.games-btn { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 3; + grid-row-end: 3; + margin: 2px 0 -2px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 12px; + line-height: 12px; + display: block; + padding: 22px 0; + width: 206px; + color: #ffffff; + border: #ffffff 2px solid; + outline: none; + text-align: center; + text-decoration: none; + text-transform: uppercase; + + &:hover { + color: #103aae; + border-color: #ffffff; + background-color: #ffffff; + } + + &:focus { + color: #103aae; + border-color: #000000; + background-color: rgba(255, 255, 255, 80%); + } + + &:active { + color: #102654; + border-color: #ffffff; + background-color: #ffffff; + } + + &:disabled { + opacity: 50%; + } + + &--disabled { + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .games-btn { + margin: 0; + padding: 25px 0 19px; + width: 216px; + } +} + +@media (min-width: $desktop-width) { + .games-btn { + width: 336px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-info-text.scss b/source/sass/main/games/games-container/games-info/games-info-text.scss new file mode 100644 index 00000000..910883b0 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-info-text.scss @@ -0,0 +1,25 @@ +.games-info-text { + margin: 0; + font-size: 16px; + line-height: 20px; + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 2; + grid-row-end: 3; + padding: 0; + width: 185px; +} + +@media (min-width: $tablet-width) { + .games-info-text { + font-size: 18px; + line-height: 24px; + width: 210px; + } +} + +@media (min-width: $desktop-width) { + .games-info-text { + width: 100%; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-info.scss b/source/sass/main/games/games-container/games-info/games-info.scss new file mode 100644 index 00000000..c418de27 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-info.scss @@ -0,0 +1,22 @@ +.games-info { + display: grid; + column-gap: 37px; + row-gap: 15px; + grid-template-rows: 108px 40px 60px; +} + +@media (min-width: $tablet-width) { + .games-info { + grid-template-rows: 134px 48px 66px; + column-gap: 20px; + row-gap: 10px; + } +} + +@media (min-width: $desktop-width) { + .games-info { + grid-template-rows: 192px 24px 66px; + column-gap: 77px; + row-gap: 30px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-month.scss b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-month.scss new file mode 100644 index 00000000..f482b5b8 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-month.scss @@ -0,0 +1,20 @@ +.games-item-month { + margin: -1px 0 1px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 12px; + line-height: 12px; + grid-column-start: 2; + grid-column-end: 4; + grid-row-start: 2; + grid-row-end: 2; + padding: 0; +} + +@media (min-width: $tablet-width) { + .games-item-month { + margin: 1px 0 -1px; + font-size: 14px; + line-height: 22px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-number.scss b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-number.scss new file mode 100644 index 00000000..a4b765ae --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-number.scss @@ -0,0 +1,30 @@ +.games-item-number { + margin: -1px 0 1px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 24px; + line-height: 24px; + grid-column-start: 1; + grid-column-end: 2; + grid-row-start: 2; + grid-row-end: 3; + padding: 0; +} + +@media (min-width: $tablet-width) { + .games-item-number { + margin: 10px 0 -10px; + + &--mod { + margin: 0; + } + } +} + +@media (min-width: $desktop-width) { + .games-item-number { + margin: 2px 0 -2px; + font-size: 40px; + line-height: 40px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-text.scss b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-text.scss new file mode 100644 index 00000000..6b94ab57 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-text.scss @@ -0,0 +1,4 @@ +.games-item-text { + margin: 0; + padding: 0; +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-year.scss b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-year.scss new file mode 100644 index 00000000..0f626564 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item-year.scss @@ -0,0 +1,20 @@ +.games-item-year { + margin: -4px 0 4px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 12px; + line-height: 100%; + grid-column-start: 2; + grid-column-end: 4; + grid-row-start: 3; + grid-row-end: 3; + padding: 0; +} + +@media (min-width: $tablet-width) { + .games-item-year { + margin: -1px 0 1px; + font-size: 14px; + line-height: 22px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-item/games-item.scss b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item.scss new file mode 100644 index 00000000..e8c416ea --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-item/games-item.scss @@ -0,0 +1,27 @@ +.games-item { + display: grid; + row-gap: 3px; + grid-template-rows: 23px 12px 12px; + + &--mod { + grid-template-rows: 24px 24px; + } +} + +@media (min-width: $tablet-width) { + .games-item { + row-gap: 2px; + column-gap: 5px; + grid-template-columns: 13px 22px; + grid-template-rows: 26px 22px 22px; + } +} + +@media (min-width: $desktop-width) { + .games-item { + row-gap: 6px; + column-gap: 5px; + grid-template-columns: 21px 37px; + grid-template-rows: 30px 22px 22px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-item/games-text.scss b/source/sass/main/games/games-container/games-info/games-list/games-item/games-text.scss new file mode 100644 index 00000000..390f7753 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-item/games-text.scss @@ -0,0 +1,23 @@ +.games-text { + margin: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 300; + font-size: 16px; + line-height: 20px; + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 1; + grid-row-end: 2; + width: 56px; + padding: 0; + border-bottom: #ffffff 1px solid; +} + +@media (min-width: $tablet-width) { + .games-text { + font-size: 18px; + line-height: 24px; + padding-bottom: 2px; + width: 100px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-list/games-list.scss b/source/sass/main/games/games-container/games-info/games-list/games-list.scss new file mode 100644 index 00000000..efe4d5fb --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-list/games-list.scss @@ -0,0 +1,26 @@ +.games-list { + margin: 0; + display: flex; + flex-direction: column; + grid-column-start: 2; + grid-column-end: 3; + grid-row-start: 1; + grid-row-end: 2; + width: 56px; + padding: 0; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .games-list { + gap: 9px; + width: 100px; + } +} + +@media (min-width: $desktop-width) { + .games-list { + gap: 20px; + width: 95px; + } +} diff --git a/source/sass/main/games/games-container/games-info/games-title.scss b/source/sass/main/games/games-container/games-info/games-title.scss new file mode 100644 index 00000000..322e6506 --- /dev/null +++ b/source/sass/main/games/games-container/games-info/games-title.scss @@ -0,0 +1,28 @@ +.games-title { + margin: 0; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 48px; + line-height: 54px; + grid-column-start: 1; + grid-column-end: 2; + grid-row-start: 1; + grid-row-end: 2; + padding: 0; + width: 117px; + text-transform: uppercase; +} + +@media (min-width: $tablet-width) { + .games-title { + width: 100px; + } +} + +@media (min-width: $desktop-width) { + .games-title { + font-size: 82px; + line-height: 96px; + width: 168px; + } +} diff --git a/source/sass/main/games/games-picture/games-picture.scss b/source/sass/main/games/games-picture/games-picture.scss new file mode 100644 index 00000000..d92c8006 --- /dev/null +++ b/source/sass/main/games/games-picture/games-picture.scss @@ -0,0 +1,4 @@ +.games-picture img { + display: block; + background-color: #1c3374; +} diff --git a/source/sass/main/games/games.scss b/source/sass/main/games/games.scss new file mode 100644 index 00000000..9ff05eb3 --- /dev/null +++ b/source/sass/main/games/games.scss @@ -0,0 +1,22 @@ +.games { + margin: 0 auto; + display: flex; + flex-direction: column; + width: 290px; + padding: 25px 15px; +} + +@media (min-width: $tablet-width) { + .games { + flex-direction: row; + width: 678px; + padding: 60.5px 45px 59.5px; + } +} + +@media (min-width: $desktop-width) { + .games { + width: 1160px; + padding: 101px 103px 100px; + } +} diff --git a/source/sass/main/juri/juri-btn.scss b/source/sass/main/juri/juri-btn.scss new file mode 100644 index 00000000..1f34de58 --- /dev/null +++ b/source/sass/main/juri/juri-btn.scss @@ -0,0 +1,63 @@ +.juri-btn { + margin: 0; + position: absolute; + display: none; + padding: 0; + width: 50px; + height: 50px; + border: none; + border-radius: 50%; + background-color: transparent; + stroke: #102654; + cursor: pointer; + + &:hover { + border: #102654 1px solid; + } + + &:focus { + background-color: #e8e8e8; + border: #102654 1px solid; + } + + &:active { + background-color: #102654; + border: #102654 1px solid; + stroke: #ffffff; + } + + &:disabled { + opacity: 30%; + } +} + +@media (min-width: $tablet-width) { + .juri-btn { + display: flex; + align-items: center; + justify-content: center; + + &--left { + top: 50%; + left: 32px; + } + + &--right { + top: 50%; + right: 32px; + transform: rotate(180deg); + } + } +} + +@media (min-width: $desktop-width) { + .juri-btn { + &--left { + left: 31px; + } + + &--right { + right: 31px; + } + } +} diff --git a/source/sass/main/juri/juri-list/juri-hover/juri-hover-direction.scss b/source/sass/main/juri/juri-list/juri-hover/juri-hover-direction.scss new file mode 100644 index 00000000..4344e040 --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-hover/juri-hover-direction.scss @@ -0,0 +1,8 @@ +.juri-hover-direction { + margin: 0 0 10px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 300; + font-size: 16px; + line-height: 24px; + padding: 0; +} diff --git a/source/sass/main/juri/juri-list/juri-hover/juri-hover-list/juri-hover-list.scss b/source/sass/main/juri/juri-list/juri-hover/juri-hover-list/juri-hover-list.scss new file mode 100644 index 00000000..3d76d7ef --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-hover/juri-hover-list/juri-hover-list.scss @@ -0,0 +1,9 @@ +.juri-hover-list { + margin: 0; + display: flex; + flex-direction: column; + gap: 12px; + padding-left: 16px; + text-align: start; + list-style-type: disc; +} diff --git a/source/sass/main/juri/juri-list/juri-hover/juri-hover-list/juri-progress-item.scss b/source/sass/main/juri/juri-list/juri-hover/juri-hover-list/juri-progress-item.scss new file mode 100644 index 00000000..6b3a3ea1 --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-hover/juri-hover-list/juri-progress-item.scss @@ -0,0 +1,8 @@ +.juri-progress-item { + line-height: 22px; +} + +.juri-progress-item__info { + margin: 0; + padding: 0; +} diff --git a/source/sass/main/juri/juri-list/juri-hover/juri-hover-name.scss b/source/sass/main/juri/juri-list/juri-hover/juri-hover-name.scss new file mode 100644 index 00000000..382791c9 --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-hover/juri-hover-name.scss @@ -0,0 +1,6 @@ +.juri-hover-name { + margin: 0 0 10px; + font-size: 22px; + line-height: 22px; + padding: 0; +} diff --git a/source/sass/main/juri/juri-list/juri-hover/juri-hover.scss b/source/sass/main/juri/juri-list/juri-hover/juri-hover.scss new file mode 100644 index 00000000..32628a7f --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-hover/juri-hover.scss @@ -0,0 +1,11 @@ +.juri-hover { + display: none; + position: absolute; + top: 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + text-align: center; + padding: 61px 40px; + color: #ffffff; + background: rgba(16, 38, 84, 89%); +} diff --git a/source/sass/main/juri/juri-list/juri-item-name.scss b/source/sass/main/juri/juri-list/juri-item-name.scss new file mode 100644 index 00000000..6ec037f0 --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-item-name.scss @@ -0,0 +1,9 @@ +.juri-item-name { + margin: -47px 0 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 22px; + line-height: 22px; + color: #ffffff; + padding: 0; +} diff --git a/source/sass/main/juri/juri-list/juri-item.scss b/source/sass/main/juri/juri-list/juri-item.scss new file mode 100644 index 00000000..676b419c --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-item.scss @@ -0,0 +1,25 @@ +.juri-item { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + gap: 0; + min-height: 300px; + + &:hover { + .juri-hover { + display: block; + } + } + + &:focus { + .juri-hover { + display: block; + } + } +} + +.juri-item__img { + display: block; + background-color: #74819c; +} diff --git a/source/sass/main/juri/juri-list/juri-list.scss b/source/sass/main/juri/juri-list/juri-list.scss new file mode 100644 index 00000000..0b0c6151 --- /dev/null +++ b/source/sass/main/juri/juri-list/juri-list.scss @@ -0,0 +1,15 @@ +.juri-list { + width: 260px; +} + +@media (min-width: $tablet-width) { + .juri-list { + width: 560px; + } +} + +@media (min-width: $desktop-width) { + .juri-list { + width: 1160px; + } +} diff --git a/source/sass/main/juri/juri-title.scss b/source/sass/main/juri/juri-title.scss new file mode 100644 index 00000000..29be84bf --- /dev/null +++ b/source/sass/main/juri/juri-title.scss @@ -0,0 +1,16 @@ +.juri-title { + margin: 0 0 20px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .juri-title { + margin: 0 0 46px; + font-size: 54px; + line-height: 54px; + } +} diff --git a/source/sass/main/juri/juri.scss b/source/sass/main/juri/juri.scss new file mode 100644 index 00000000..c512f0b7 --- /dev/null +++ b/source/sass/main/juri/juri.scss @@ -0,0 +1,25 @@ +.juri { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + margin: 0; + padding: 40px 30px; +} + +.juri .swiper-wrapper { + padding: 0; + margin: 0; +} + +@media (min-width: $tablet-width) { + .juri { + padding: 30px 45px 60px; + } +} + +@media (min-width: $desktop-width) { + .juri { + padding: 100px 48px; + } +} diff --git a/source/sass/main/offers/offers-container/offers-container.scss b/source/sass/main/offers/offers-container/offers-container.scss new file mode 100644 index 00000000..f594927a --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-container.scss @@ -0,0 +1,23 @@ +.offers-container { + margin: 0 auto; + display: flex; + flex-direction: column; + text-align: center; + width: 100%; +} + +@media (min-width: $tablet-width) { + .offers-container { + align-items: center; + text-align: start; + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .offers-container { + flex-direction: row; + align-items: end; + width: 1160px; + } +} diff --git a/source/sass/main/offers/offers-container/offers-limited/offer-red/offer-red-btn.scss b/source/sass/main/offers/offers-container/offers-limited/offer-red/offer-red-btn.scss new file mode 100644 index 00000000..4a68da1f --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-limited/offer-red/offer-red-btn.scss @@ -0,0 +1,44 @@ +.offer-red-btn { + color: #ffffff; + font-size: 14px; + line-height: 14px; + padding-bottom: 3px; + border-bottom: #ffffff 1px solid; + outline: none; + text-align: center; + text-decoration: none; + text-transform: uppercase; + + &:hover { + opacity: 80%; + } + + &:focus { + margin: -11px 0 11px; + padding: 10px; + border: #ffffff 1px solid; + } + + &:active { + color: #ffffff; + border-bottom: #ffffff 1px solid; + } + + &:disabled { + opacity: 50%; + } + + &--disabled { + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .offer-red-btn { + padding-bottom: 4px; + + &:focus { + margin: -11px 0 11px -11px; + } + } +} diff --git a/source/sass/main/offers/offers-container/offers-limited/offer-red/offer-red.scss b/source/sass/main/offers/offers-container/offers-limited/offer-red/offer-red.scss new file mode 100644 index 00000000..45630e9d --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-limited/offer-red/offer-red.scss @@ -0,0 +1,76 @@ +.offer-red { + width: 100%; + font-weight: 700; + color: #ffffff; + background-color: #ed0233; + padding: 30px 0 31px; +} + +.offer-red h3 { + margin: 0 auto 9px; + font-size: 22px; + line-height: 22px; + padding: 0; +} + +.offer-red span { + margin: 0; + font-size: 64px; + line-height: 64px; + padding: 0; +} + +.offer-red p { + margin: 27px auto 26px; + font-weight: 300; + font-size: 16px; + line-height: 20px; + width: 170px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .offer-red { + width: 228px; + padding: 40px 25px 43px; + text-align: start; + } + + .offer-red h3 { + margin: 0 0 19px; + font-size: 24px; + line-height: 24px; + } + + .offer-red span { + font-size: 70px; + line-height: 70px; + } + + .offer-red p { + margin: 40px 0 156px; + font-size: 18px; + line-height: 24px; + width: 190px; + } +} + +@media (min-width: $desktop-width) { + .offer-red { + width: 190px; + padding: 40px 45px 42px; + } + + .offer-red h3 { + margin-top: 1px; + font-size: 26px; + line-height: 26px; + margin-bottom: 20px; + } + + .offer-red p { + margin-bottom: 151px; + font-size: 18px; + line-height: 24px; + } +} diff --git a/source/sass/main/offers/offers-container/offers-limited/offers-limited-img.scss b/source/sass/main/offers/offers-container/offers-limited/offers-limited-img.scss new file mode 100644 index 00000000..ce95bbe3 --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-limited/offers-limited-img.scss @@ -0,0 +1,4 @@ +.offers-limited-img { + display: block; + background-color: #103aae; +} diff --git a/source/sass/main/offers/offers-container/offers-limited/offers-limited.scss b/source/sass/main/offers/offers-container/offers-limited/offers-limited.scss new file mode 100644 index 00000000..e73d3037 --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-limited/offers-limited.scss @@ -0,0 +1,20 @@ +.offers-limited { + margin: 0 0 40px; + display: flex; + flex-direction: column; + align-items: center; +} + +@media (min-width: $tablet-width) { + .offers-limited { + margin-bottom: 35px; + flex-direction: row; + } +} + +@media (min-width: $desktop-width) { + .offers-limited { + height: 100%; + margin-bottom: 0; + } +} diff --git a/source/sass/main/offers/offers-container/offers-list/offers-button.scss b/source/sass/main/offers/offers-container/offers-list/offers-button.scss new file mode 100644 index 00000000..60fd2556 --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-list/offers-button.scss @@ -0,0 +1,60 @@ +.offers-button { + margin: 0 auto 20px; + display: block; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 14px; + line-height: 14px; + padding-bottom: 5px; + width: 73px; + color: #1c3374; + text-align: center; + text-decoration: none; + text-transform: uppercase; + border-bottom: #1c3374 1px solid; + outline: none; + + &:hover { + opacity: 80%; + } + + &:focus { + margin: -11px auto 15px; + padding: 10px; + border: #1c3374 1px solid; + } + + &:active { + color: #1c3374; + border-bottom: #1c3374 1px solid; + } + + &:disabled { + opacity: 50%; + } + + &--disabled { + opacity: 50%; + } +} + +@media (min-width: $tablet-width) { + .offers-button { + margin: 0 20px; + text-align: start; + + &:focus { + margin: -11px 0 15px 9px; + padding: 10px; + border: #1c3374 1px solid; + } + } +} + +@media (min-width: $desktop-width) { + .offers-list { + flex-direction: column; + gap: 30px; + width: 560px; + } +} diff --git a/source/sass/main/offers/offers-container/offers-list/offers-item.scss b/source/sass/main/offers/offers-container/offers-list/offers-item.scss new file mode 100644 index 00000000..98fa568d --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-list/offers-item.scss @@ -0,0 +1,61 @@ +.offers-item { + width: 276px; + color: #1c3374; + border: double 7px transparent; + background-image: linear-gradient(#ffffff, #ffffff), radial-gradient(circle at 0% 0%, #d10a42, #00359f); + background-origin: border-box; + background-clip: content-box, border-box; + text-align: center; +} + +.offers-item h3 { + margin: 20px 0; + font-weight: 700; + font-size: 22px; + line-height: 22px; + padding: 0; +} + +.offers-item p { + margin: 0 0 20px; + font-weight: 300; + line-height: 22px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .offers-item { + width: 310px; + min-height: 174px; + text-align: start; + } + + .offers-item h3 { + margin: 20px 20px 9px; + font-size: 26px; + line-height: 26px; + } + + .offers-item p { + margin: 0 20px 31px; + font-size: 16px; + line-height: 24px; + min-height: 48px; + } +} + +@media (min-width: $desktop-width) { + .offers-item { + width: 546px; + min-height: 160px; + } + + .offers-item br { + display: none; + } + + .offers-item p { + min-height: 24px; + margin-bottom: 40px; + } +} diff --git a/source/sass/main/offers/offers-container/offers-list/offers-list.scss b/source/sass/main/offers/offers-container/offers-list/offers-list.scss new file mode 100644 index 00000000..f986ed6f --- /dev/null +++ b/source/sass/main/offers/offers-container/offers-list/offers-list.scss @@ -0,0 +1,26 @@ +.offers-list { + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; + padding: 0; + width: 290px; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .offers-list { + flex-direction: row; + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .offers-list { + margin: 0 0 0 40px; + flex-direction: column; + gap: 30px; + width: 560px; + } +} diff --git a/source/sass/main/offers/offers-title.scss b/source/sass/main/offers/offers-title.scss new file mode 100644 index 00000000..ebb092f3 --- /dev/null +++ b/source/sass/main/offers/offers-title.scss @@ -0,0 +1,24 @@ +.offers-title { + margin: 0 auto 40px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .offers-title { + margin-bottom: 35px; + font-size: 42px; + line-height: 42px; + } +} + +@media (min-width: $desktop-width) { + .offers-title { + margin-bottom: 70px; + font-size: 54px; + line-height: 54px; + } +} diff --git a/source/sass/main/offers/offers.scss b/source/sass/main/offers/offers.scss new file mode 100644 index 00000000..4265babc --- /dev/null +++ b/source/sass/main/offers/offers.scss @@ -0,0 +1,19 @@ +.offers { + margin: 0; + display: flex; + flex-direction: column; + align-items: center; + padding: 40px 0; +} + +@media (min-width: $tablet-width) { + .offers { + padding: 60.5px 45px 59.5px; + } +} + +@media (min-width: $desktop-width) { + .offers { + padding: 100px 103px; + } +} diff --git a/source/sass/main/price/price-title.scss b/source/sass/main/price/price-title.scss new file mode 100644 index 00000000..ce1f4e2f --- /dev/null +++ b/source/sass/main/price/price-title.scss @@ -0,0 +1,24 @@ +.price-title { + margin: 0 0 28px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .price-title { + margin: 0 0 33px; + font-size: 42px; + line-height: 42px; + } +} + +@media (min-width: $desktop-width) { + .price-title { + margin: 0 0 20px; + font-size: 54px; + line-height: 54px; + } +} diff --git a/source/sass/main/price/price.scss b/source/sass/main/price/price.scss new file mode 100644 index 00000000..91ac7afa --- /dev/null +++ b/source/sass/main/price/price.scss @@ -0,0 +1,30 @@ +.price { + margin: 0; + display: flex; + flex-direction: column; + align-items: center; + padding: 40px 15px; + background-color: #f8f9fc; +} + +@media (min-width: $tablet-width) { + .price { + padding: 62px 94px 60px; + background: url("../img/price/price-bg.png") no-repeat; + background-size: 330px 383px; + background-position: right 0 bottom 0; + background-color: #f8f9fc; + + @media (resolution >= 2dppx) { + background-image: url("../img/price/price-bg@2x.png"); + } + } +} + +@media (min-width: $desktop-width) { + .price { + padding: 100px 103px; + background-size: 380px 433px; + background-position: right -77px bottom 0; + } +} diff --git a/source/sass/main/price/tab-content/pane.scss b/source/sass/main/price/tab-content/pane.scss new file mode 100644 index 00000000..8ad5600c --- /dev/null +++ b/source/sass/main/price/tab-content/pane.scss @@ -0,0 +1,7 @@ +.pane { + display: none; + + &--active { + display: block; + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-btn.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-btn.scss new file mode 100644 index 00000000..942e774e --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-btn.scss @@ -0,0 +1,66 @@ +.month-item-btn { + display: block; + padding: 25px 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 12px; + line-height: 12px; + width: 206px; + height: 66px; + color: #102654; + border: #102654 2px solid; + box-sizing: border-box; + outline: none; + text-align: center; + text-decoration: none; + text-transform: uppercase; + + &:hover { + padding: 27px 0; + color: #ffffff; + background: linear-gradient(135deg, #ed0233 10%, #003eb7); + border: none; + } + + &:focus { + color: #ffffff; + background: linear-gradient(135deg, rgba(237, 2, 51, 80%) 10%, rgba(0, 62, 183, 80%)); + border-color: #000000; + } + + &:active { + padding: 27px 0; + color: rgba(255, 255, 255, 70%); + background: linear-gradient(135deg, #ed0233 10%, #003eb7); + border: none; + } + + &:disabled { + opacity: 30%; + } + + &--disabled { + opacity: 30%; + } +} + +@media (min-width: $tablet-width) { + .month-item-btn { + padding: 24px 0 26px; + width: 250px; + + &:hover { + padding: 26px 0 28px; + } + + &:active { + padding: 26px 0 28px; + } + } +} + +@media (min-width: $desktop-width) { + .month-item-btn { + width: 230px; + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-container.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-container.scss new file mode 100644 index 00000000..5edb1a1f --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-container.scss @@ -0,0 +1,21 @@ +.month-item-container { + margin: 0 0 18px; + display: flex; + justify-content: center; + align-items: flex-end; + height: 120px; + width: 206px; +} + +@media (min-width: $tablet-width) { + .month-item-container { + margin: 0 0 23px; + height: 150px; + } +} + +@media (min-width: $desktop-width) { + .month-item-container { + margin: 0 0 17px; + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-price.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-price.scss new file mode 100644 index 00000000..4fc8acc2 --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/month-item-price.scss @@ -0,0 +1,48 @@ +.month-item-price { + position: relative; + z-index: 2; + margin: 0 10px 0 0; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 48px; + line-height: 150%; + color: #103aae; + padding: 0; + + &::before { + position: absolute; + left: -14px; + bottom: 0; + z-index: -1; + content: attr(data-parent); + color: #e8e8e8; + font-size: 80px; + line-height: 150%; + } +} + +.month-item-price--mod { + &::before { + left: -25px; + z-index: -1; + } +} + +@media (min-width: $tablet-width) { + .month-item-price { + margin: 0 14px 0 0; + font-size: 60px; + + &::before { + left: -18px; + font-size: 100px; + line-height: 150%; + } + } + + .month-item-price--mod { + &::before { + left: -30px; + } + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item-container/pane-rub.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/pane-rub.scss new file mode 100644 index 00000000..e1a7f646 --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item-container/pane-rub.scss @@ -0,0 +1,12 @@ +.pane-rub { + margin-bottom: 19px; + z-index: 2; +} + +@media (min-width: $tablet-width) { + .pane-rub { + margin-bottom: 24px; + width: 30px; + height: 42px; + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item-text.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item-text.scss new file mode 100644 index 00000000..fafa5197 --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item-text.scss @@ -0,0 +1,18 @@ +.month-item-text { + margin: 0 0 18px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .month-item-text { + margin: 0 0 22px; + font-size: 16px; + line-height: 24px; + } +} + +@media (min-width: $desktop-width) { + .month-item-text { + margin: 0 0 17px; + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item-title.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item-title.scss new file mode 100644 index 00000000..b5d10c17 --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item-title.scss @@ -0,0 +1,24 @@ +.month-item-title { + margin: 0 0 18px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 700; + font-size: 22px; + line-height: 22px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .month-item-title { + margin: 0 0 22px; + font-size: 24px; + line-height: 24px; + } +} + +@media (min-width: $desktop-width) { + .month-item-title { + margin: 0 0 17px; + font-size: 26px; + line-height: 26px; + } +} diff --git a/source/sass/main/price/tab-content/price-month/month-item/month-item.scss b/source/sass/main/price/tab-content/price-month/month-item/month-item.scss new file mode 100644 index 00000000..fe2c0961 --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/month-item/month-item.scss @@ -0,0 +1,54 @@ +.month-item { + position: relative; + background-color: #ffffff; + padding: 7px; + z-index: 1; + + &::before { + display: none; + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; + pointer-events: none; + background: linear-gradient(135deg, #d10a42, #00359f); /* Полупрозрачный градиент */ + } +} + +.month-item:has(.month-item-btn:hover) { + &::before { + display: block; + } +} + +.month-item:has(.month-item-btn:focus) { + &::before { + display: block; + } +} + +.month-item__inner { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background-color: #ffffff; + width: 206px; + padding: 43px 35px; +} + +@media (min-width: $tablet-width) { + .month-item__inner { + width: 250px; + padding: 58px; + } +} + +@media (min-width: $desktop-width) { + .month-item__inner { + width: 230px; + } +} diff --git a/source/sass/main/price/tab-content/price-month/price-month.scss b/source/sass/main/price/tab-content/price-month/price-month.scss new file mode 100644 index 00000000..3fcfda67 --- /dev/null +++ b/source/sass/main/price/tab-content/price-month/price-month.scss @@ -0,0 +1,21 @@ +.price-month { + margin: 0; + display: flex; + flex-direction: column; + gap: 35px; + padding: 0; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .price-month { + gap: 39px; + } +} + +@media (min-width: $desktop-width) { + .price-month { + flex-direction: row; + gap: 40px; + } +} diff --git a/source/sass/main/price/tab-list/tab-item-btn.scss b/source/sass/main/price/tab-list/tab-item-btn.scss new file mode 100644 index 00000000..0d5956a4 --- /dev/null +++ b/source/sass/main/price/tab-list/tab-item-btn.scss @@ -0,0 +1,54 @@ +.tab-item-btn { + margin: 2px 0 -2px; + font-family: "Roboto Condensed", sans-serif; + font-weight: 400; + font-size: 16px; + line-height: 16px; + background-color: transparent; + color: #102654; + border: none; + border-bottom: transparent 2px solid; + padding: 4px 0; + opacity: 20%; + + &:hover { + opacity: 100%; + color: rgba(16, 38, 84, 70%); + border-color: #787878; + } + + &:focus { + opacity: 100%; + border-color: #102654; + } + + &:active { + opacity: 100%; + border-color: #d10a42; + } + + &:disabled { + opacity: 30%; + border-color: #102654; + } + + &--active { + opacity: 100%; + border-color: #d10a42; + } +} + +@media (min-width: $tablet-width) { + .tab-item-btn { + font-size: 18px; + line-height: 18px; + padding: 0 0 6px; + } +} + +@media (min-width: $desktop-width) { + .tab-item-btn { + font-size: 20px; + line-height: 20px; + } +} diff --git a/source/sass/main/price/tab-list/tab-list.scss b/source/sass/main/price/tab-list/tab-list.scss new file mode 100644 index 00000000..c4259c93 --- /dev/null +++ b/source/sass/main/price/tab-list/tab-list.scss @@ -0,0 +1,24 @@ +.tab-list { + margin: 0 0 30px; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + padding: 0; + width: 290px; + border-bottom: rgba(120, 120, 120, 20%) 2px solid; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .tab-list { + margin: 0 0 45px; + width: 310px; + } +} + +@media (min-width: $desktop-width) { + .tab-list { + margin: 0 0 41px; + width: 350px; + } +} diff --git a/source/sass/main/reviews/reviews-btn/reviews-btn.scss b/source/sass/main/reviews/reviews-btn/reviews-btn.scss new file mode 100644 index 00000000..955bc833 --- /dev/null +++ b/source/sass/main/reviews/reviews-btn/reviews-btn.scss @@ -0,0 +1,62 @@ +.reviews-btn { + margin: 0; + position: absolute; + display: none; + padding: 0; + width: 50px; + height: 50px; + border: none; + border-radius: 50%; + background-color: transparent; + stroke: #102654; + + &:hover { + border: #102654 1px solid; + } + + &:focus { + background-color: #e8e8e8; + border: #102654 1px solid; + } + + &:active { + background-color: #102654; + border: #102654 1px solid; + stroke: #ffffff; + } + + &:disabled { + opacity: 30%; + } +} + +@media (min-width: $tablet-width) { + .reviews-btn { + display: flex; + align-items: center; + justify-content: center; + + &--left { + top: 45%; + left: -17px; + } + + &--right { + top: 45%; + right: -17px; + transform: rotate(180deg); + } + } +} + +@media (min-width: $desktop-width) { + .reviews-btn { + &--left { + left: -18px; + } + + &--right { + right: -18px; + } + } +} diff --git a/source/sass/main/reviews/reviews-list/reviews-item-img.scss b/source/sass/main/reviews/reviews-list/reviews-item-img.scss new file mode 100644 index 00000000..b4c93d40 --- /dev/null +++ b/source/sass/main/reviews/reviews-list/reviews-item-img.scss @@ -0,0 +1,11 @@ +.reviews-item-img { + margin: 0 0 10px; + display: block; + background-color: transparent; +} + +@media (min-width: $tablet-width) { + .reviews-item-img { + margin: 0; + } +} diff --git a/source/sass/main/reviews/reviews-list/reviews-item.scss b/source/sass/main/reviews/reviews-list/reviews-item.scss new file mode 100644 index 00000000..84400f61 --- /dev/null +++ b/source/sass/main/reviews/reviews-list/reviews-item.scss @@ -0,0 +1,29 @@ +.reviews-item { + margin: 0; + display: flex; + flex-direction: column; + align-items: center; + padding: 30px 25px; + width: 190px; + color: #ffffff; + text-align: center; + background-color: #1c3374; +} + + +@media (min-width: $tablet-width) { + .reviews-item { + flex-direction: row; + align-items: start; + text-align: start; + justify-content: space-between; + padding: 40px 30px; + width: 440px; + } +} + +@media (min-width: $desktop-width) { + .reviews-item { + padding: 60px; + } +} diff --git a/source/sass/main/reviews/reviews-list/reviews-list.scss b/source/sass/main/reviews/reviews-list/reviews-list.scss new file mode 100644 index 00000000..ed911622 --- /dev/null +++ b/source/sass/main/reviews/reviews-list/reviews-list.scss @@ -0,0 +1,22 @@ +.reviews-list { + margin: 0; + display: flex; + flex-wrap: wrap; + gap: 40px; + padding: 0; + width: 240px; + list-style-type: none; +} + +@media (min-width: $tablet-width) { + .reviews-list { + width: 500px; + padding: 0; + } +} + +@media (min-width: $desktop-width) { + .reviews-list { + width: 560px; + } +} diff --git a/source/sass/main/reviews/reviews-list/reviews-text/reviews-text.scss b/source/sass/main/reviews/reviews-list/reviews-text/reviews-text.scss new file mode 100644 index 00000000..4b6879e2 --- /dev/null +++ b/source/sass/main/reviews/reviews-list/reviews-text/reviews-text.scss @@ -0,0 +1,70 @@ +.reviews-text { + width: 190px; +} + +.reviews-text .br-one { + display: none; +} + +.reviews-text .br-three { + display: none; +} + +.reviews-text h3 { + margin: 0 0 16px; + font-weight: 400; + font-size: 18px; + line-height: 20px; + padding: 0; +} + +.reviews-text p { + margin: 0; + line-height: 22px; + padding: 0; +} + +@media (min-width: $tablet-width) { + .reviews-text { + width: 320px; + } + + .reviews-text .br-one { + display: block; + } + + .reviews-text h3 { + margin: 0 0 20px; + font-size: 22px; + line-height: 22px; + } + + .reviews-text p { + margin: -1px 0 1px; + font-size: 16px; + line-height: 24px; + } +} + +@media (min-width: $desktop-width) { + .reviews-text { + width: 330px; + } + + .reviews-text .br-one { + display: none; + } + + .reviews-text .br-two { + display: none; + } + + .reviews-text .br-three { + display: block; + } + + .reviews-text p { + margin: 0; + width: 328px; + } +} diff --git a/source/sass/main/reviews/reviews-slyder.scss b/source/sass/main/reviews/reviews-slyder.scss new file mode 100644 index 00000000..ab75cf29 --- /dev/null +++ b/source/sass/main/reviews/reviews-slyder.scss @@ -0,0 +1,19 @@ +.reviews-slyder { + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: center; +} + +@media (min-width: $tablet-width) { + .reviews-slyder { + position: relative; + width: 678px; + } +} + +@media (min-width: $desktop-width) { + .reviews-slyder { + width: 768px; + } +} diff --git a/source/sass/main/reviews/reviews-title.scss b/source/sass/main/reviews/reviews-title.scss new file mode 100644 index 00000000..5f50917e --- /dev/null +++ b/source/sass/main/reviews/reviews-title.scss @@ -0,0 +1,26 @@ +.reviews-title { + margin: 0 auto 40px; + font-family: "Alumni Sans", sans-serif; + font-weight: 600; + font-size: 32px; + line-height: 32px; + color: #102654; + padding: 0; +} + +@media (min-width: $tablet-width) { + .reviews-title { + margin: -1px auto 39px; + margin-bottom: 35px; + font-size: 54px; + line-height: 54px; + } +} + +@media (min-width: $desktop-width) { + .reviews-title { + margin: -1px auto 40px; + margin-top: 0; + margin-bottom: 75px; + } +} diff --git a/source/sass/main/reviews/reviews.scss b/source/sass/main/reviews/reviews.scss new file mode 100644 index 00000000..4616fe80 --- /dev/null +++ b/source/sass/main/reviews/reviews.scss @@ -0,0 +1,23 @@ +.reviews { + margin: 0 auto; + display: flex; + flex-direction: column; + padding: 40px; +} + +.reviews .swiper-wrapper { + padding: 0; + margin: 0; +} + +@media (min-width: $tablet-width) { + .reviews { + padding: 62px 45px 58px; + } +} + +@media (min-width: $desktop-width) { + .reviews { + padding: 100px 0; + } +} diff --git a/source/sass/style.scss b/source/sass/style.scss index 96467369..da19a9dc 100644 --- a/source/sass/style.scss +++ b/source/sass/style.scss @@ -1,4 +1,131 @@ -// Vendor -// --------------------------------- - @import "vendor/normalize"; +@import "blocks/variables"; +@import "blocks/body"; +@import "blocks/fonts"; +@import "blocks/no-js"; +@import "blocks/visually-hidden"; +@import "blocks/img"; +@import "header/hero"; +@import "header/hero-container"; +@import "header/hero-contact/hero-contact"; +@import "header/hero-contact/hero-logo"; +@import "header/hero-contact/hero-tel"; +@import "header/hero-banner/hero-banner"; +@import "header/hero-banner/banner-info/banner-info"; +@import "header/hero-banner/banner-info/info-city"; +@import "header/hero-banner/banner-info/info-title"; +@import "header/hero-banner/hero-text/info-text"; +@import "header/hero-banner/hero-text/hero-text"; +@import "header/hero-banner/picture/banner-picture"; +@import "header/btn-container/btn-container"; +@import "header/btn-container/hero-btn"; +@import "main/about/about"; +@import "main/about/about-container"; +@import "main/about/title-text/title-text"; +@import "main/about/title-text/about-title"; +@import "main/about/title-text/about-info"; +@import "main/about/picture-container/picture-container"; +@import "main/about/picture-container/about-img"; +@import "main/about/picture-container/video/video"; +@import "main/about/picture-container/video/video-iframe"; +@import "main/about/picture-container/video/btn-play/btn-play"; +@import "main/about/picture-container/video/btn-play/play-img"; +@import "main/price/price"; +@import "main/price/price-title"; +@import "main/price/tab-list/tab-list"; +@import "main/price/tab-list/tab-item-btn"; +@import "main/price/tab-content/pane"; +@import "main/price/tab-content/price-month/price-month"; +@import "main/price/tab-content/price-month/month-item/month-item"; +@import "main/price/tab-content/price-month/month-item/month-item-title"; +@import "main/price/tab-content/price-month/month-item/month-item-text"; +@import "main/price/tab-content/price-month/month-item/month-item-container/month-item-container"; +@import "main/price/tab-content/price-month/month-item/month-item-container/month-item-price"; +@import "main/price/tab-content/price-month/month-item/month-item-container/pane-rub"; +@import "main/price/tab-content/price-month/month-item/month-item-container/month-item-btn"; +@import "main/games/games"; +@import "main/games/games-container/games-container"; +@import "main/games/games-container/games-info/games-info"; +@import "main/games/games-container/games-info/games-title"; +@import "main/games/games-container/games-info/games-info-text"; +@import "main/games/games-container/games-info/games-btn"; +@import "main/games/games-container/games-info/games-list/games-list"; +@import "main/games/games-container/games-info/games-list/games-item/games-item"; +@import "main/games/games-container/games-info/games-list/games-item/games-text"; +@import "main/games/games-container/games-info/games-list/games-item/games-item-text"; +@import "main/games/games-container/games-info/games-list/games-item/games-item-number"; +@import "main/games/games-container/games-info/games-list/games-item/games-item-month"; +@import "main/games/games-container/games-info/games-list/games-item/games-item-year"; +@import "main/games/games-picture/games-picture"; +@import "main/juri/juri"; +@import "main/juri/juri-title"; +@import "main/juri/juri-btn"; +@import "main/juri/juri-list/juri-list"; +@import "main/juri/juri-list/juri-item"; +@import "main/juri/juri-list/juri-item-name"; +@import "main/juri/juri-list/juri-hover/juri-hover"; +@import "main/juri/juri-list/juri-hover/juri-hover-name"; +@import "main/juri/juri-list/juri-hover/juri-hover-list/juri-hover-list"; +@import "main/juri/juri-list/juri-hover/juri-hover-direction"; +@import "main/juri/juri-list/juri-hover/juri-hover-list/juri-progress-item"; +@import "swiper/css"; +@import "main/features/features"; +@import "main/features/features-container"; +@import "main/features/features-title"; +@import "main/features/features-list/features-list"; +@import "main/features/features-list/features-item"; +@import "main/features/features-list/features-item-number"; +@import "main/features/features-list/features-item-text"; +@import "main/features/features-block"; +@import "main/offers/offers"; +@import "main/offers/offers-title"; +@import "main/offers/offers-container/offers-container"; +@import "main/offers/offers-container/offers-limited/offers-limited"; +@import "main/offers/offers-container/offers-limited/offer-red/offer-red"; +@import "main/offers/offers-container/offers-limited/offer-red/offer-red-btn"; +@import "main/offers/offers-container/offers-limited/offers-limited-img"; +@import "main/offers/offers-container/offers-list/offers-list"; +@import "main/offers/offers-container/offers-list/offers-item"; +@import "main/offers/offers-container/offers-list/offers-button"; +@import "main/faq/faq"; +@import "main/faq/faq-title"; +@import "main/faq/faq-container/faq-container"; +@import "main/faq/faq-container/faq-tab/faq-tab"; +@import "main/faq/faq-container/faq-tab/faq-tab-btn"; +@import "main/faq/faq-container/faq-content/faq-content"; +@import "main/faq/faq-container/faq-content/faq-pane"; +@import "main/faq/faq-container/faq-content/pane-item/pane-item"; +@import "main/faq/faq-container/faq-content/pane-item/pane-input"; +@import "main/faq/faq-container/faq-content/pane-item/pane-text"; +@import "main/reviews/reviews"; +@import "main/reviews/reviews-title"; +@import "main/reviews/reviews-slyder"; +@import "main/reviews/reviews-list/reviews-list"; +@import "main/reviews/reviews-list/reviews-item"; +@import "main/reviews/reviews-list/reviews-item-img"; +@import "main/reviews/reviews-list/reviews-text/reviews-text"; +@import "main/reviews/reviews-btn/reviews-btn"; +@import "main/form/form-contacts"; +@import "main/form/form/form"; +@import "main/form/form/form-title"; +@import "main/form/form/form-btn"; +@import "main/form/form/form-application/form-application"; +@import "main/form/form/form-application/application-input"; +@import "main/form/form/form-application/input-error"; +@import "main/form/form/form-application/form-input"; +@import "main/form/form/contacts/contacts"; +@import "main/form/form/contacts/contacts-title"; +@import "main/form/form/contacts/contacts-container/contacts-container"; +@import "main/form/form/contacts/contacts-container/contact-list/contact-list"; +@import "main/form/form/contacts/contacts-container/contact-list/contact-item"; +@import "main/form/form/contacts/contacts-container/contact-list/contact-item-title"; +@import "main/form/form/contacts/contacts-container/contact-list/contact-item-text"; +@import "footer/footer"; +@import "footer/footer-container/footer-container"; +@import "footer/footer-container/footer-logo/footer-logo"; +@import "footer/footer-container/nav-list/nav-list"; +@import "footer/footer-container/nav-list/nav-item"; +@import "footer/footer-container/nav-list/nav-link"; +@import "footer/footer-container/social-list/social-list"; +@import "footer/footer-container/social-list/social-link"; +@import "footer/footer-container/social-list/social-img"; diff --git a/source/sass/vendor/swiper.css b/source/sass/vendor/swiper.css new file mode 100644 index 00000000..66564653 --- /dev/null +++ b/source/sass/vendor/swiper.css @@ -0,0 +1,253 @@ +/** + * Swiper 10.3.1 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: September 28, 2023 + */ + +/* FONT_START */ +@font-face { + font-family: "swiper-icons"; + src: url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA"); + font-weight: 400; + font-style: normal; +} + +:root { + --swiper-theme-color: #007aff; +} + +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} + +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: clip; + list-style: none; + padding: 0; + z-index: 1; + display: block; +} + +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} + +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} + +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0, 0, 0); +} + +.swiper-horizontal { + touch-action: pan-y; +} + +.swiper-vertical { + touch-action: pan-x; +} + +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} + +.swiper-slide-invisible-blank { + visibility: hidden; +} + +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} + +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} + +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} + +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} + +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} + +.swiper-3d { + perspective: 1200px; +} + +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} + +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + -ms-overflow-style: none; +} + +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} + +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} + +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} + +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} + +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} + +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} + +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ""; + flex-shrink: 0; + order: 9999; +} + +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} + +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} + +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} + +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} + +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} + +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} + +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} + +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} + +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} + +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} + +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} + +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #ffffff; +} + +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000000; +} + +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +}