@itcenteratunihelsinki/huds-lib 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/components/cta-button.js +1 -1
  2. package/components/cta-link.js +1 -1
  3. package/components/hy-accordion-item.js +1 -1
  4. package/components/hy-anchor-link-list.js +1 -1
  5. package/components/hy-breadcrumbs.js +1 -1
  6. package/components/hy-checkbox.js +1 -1
  7. package/components/hy-content-list-item2.js +1 -1
  8. package/components/hy-crisis-banner.js +1 -1
  9. package/components/hy-dropdown.js +1 -1
  10. package/components/hy-event-item.js +1 -1
  11. package/components/hy-events.js +1 -1
  12. package/components/hy-filter-group.js +1 -1
  13. package/components/hy-filter-list-type.js +1 -1
  14. package/components/hy-filter-visibility-tool.js +1 -1
  15. package/components/hy-footer-action.js +1 -1
  16. package/components/hy-footer-base.js +1 -1
  17. package/components/hy-footer-link-item2.js +1 -1
  18. package/components/hy-general-list-item2.js +1 -1
  19. package/components/hy-hero-carousel.js +358 -337
  20. package/components/hy-menu-main-group2.js +1 -1
  21. package/components/hy-opening-hours.js +1 -1
  22. package/components/hy-pager-item.js +1 -1
  23. package/components/hy-person-card.js +1 -1
  24. package/components/hy-search-field2.js +1 -1
  25. package/components/hy-shortcuts.js +1 -1
  26. package/components/hy-site-header.js +2 -2
  27. package/components/hy-tabs2.js +1 -1
  28. package/components/link-box.js +1 -1
  29. package/components/menu-language-item.js +1 -1
  30. package/components/menu-language.js +1 -1
  31. package/components/site-logo.js +1 -1
  32. package/components/site-search.js +1 -1
  33. package/dist/cjs/hy-accordion-container_2.cjs.entry.js +1 -1
  34. package/dist/cjs/hy-anchor-link-list.cjs.entry.js +1 -1
  35. package/dist/cjs/hy-breadcrumbs_15.cjs.entry.js +11 -11
  36. package/dist/cjs/hy-checkbox.cjs.entry.js +1 -1
  37. package/dist/cjs/hy-content-list_2.cjs.entry.js +1 -1
  38. package/dist/cjs/hy-crisis-banner.cjs.entry.js +1 -1
  39. package/dist/cjs/hy-cta-button.cjs.entry.js +1 -1
  40. package/dist/cjs/hy-cta-link.cjs.entry.js +1 -1
  41. package/dist/cjs/hy-dropdown.cjs.entry.js +1 -1
  42. package/dist/cjs/hy-event-item.cjs.entry.js +1 -1
  43. package/dist/cjs/hy-events.cjs.entry.js +1 -1
  44. package/dist/cjs/hy-filter-group_6.cjs.entry.js +3 -3
  45. package/dist/cjs/hy-general-list_2.cjs.entry.js +1 -1
  46. package/dist/cjs/hy-hero-carousel.cjs.entry.js +358 -337
  47. package/dist/cjs/hy-link-box_2.cjs.entry.js +1 -1
  48. package/dist/cjs/hy-menu-main-group.cjs.entry.js +1 -1
  49. package/dist/cjs/hy-opening-hours_2.cjs.entry.js +1 -1
  50. package/dist/cjs/hy-pager_2.cjs.entry.js +1 -1
  51. package/dist/cjs/hy-person-card.cjs.entry.js +1 -1
  52. package/dist/cjs/hy-shortcuts.cjs.entry.js +1 -1
  53. package/dist/cjs/hy-tabs_2.cjs.entry.js +1 -1
  54. package/dist/collection/components/footer/hy-footer-action/hy-footer-action.css +6 -0
  55. package/dist/collection/components/footer/hy-footer-base/hy-footer-base.css +13 -1
  56. package/dist/collection/components/footer/hy-footer-link-item/hy-footer-link-item.css +18 -0
  57. package/dist/collection/components/hy-accordion-item/accordion-item.css +6 -0
  58. package/dist/collection/components/hy-anchor-link-list/hy-anchor-link-list.css +12 -0
  59. package/dist/collection/components/hy-breadcrumbs/hy-breadcrumbs.css +12 -0
  60. package/dist/collection/components/hy-checkbox/hy-checkbox.css +12 -8
  61. package/dist/collection/components/hy-content-lists/hy-content-list-item/hy-content-list-item.css +6 -0
  62. package/dist/collection/components/hy-crisis-banner/hy-crisis-banner.css +2 -2
  63. package/dist/collection/components/hy-cta-button/cta-button.css +63 -15
  64. package/dist/collection/components/hy-cta-link/cta-link.css +8 -2
  65. package/dist/collection/components/hy-dropdown/hy-dropdown.css +1 -1
  66. package/dist/collection/components/hy-event-item/hy-event-item.css +4 -4
  67. package/dist/collection/components/hy-events/hy-events.css +6 -0
  68. package/dist/collection/components/hy-filter-group/hy-filter-group.css +6 -0
  69. package/dist/collection/components/hy-filter-list-type/hy-filter-list-type.css +12 -0
  70. package/dist/collection/components/hy-filter-visibility-tool/hy-filter-visibility-tool.css +8 -4
  71. package/dist/collection/components/hy-general-list-item/hy-general-list-item.css +8 -2
  72. package/dist/collection/components/hy-hero-carousel/hy-hero-carousel.css +3 -22
  73. package/dist/collection/components/hy-hero-carousel/hy-hero-carousel.js +2 -1
  74. package/dist/collection/components/hy-link-box/link-box.css +4 -1
  75. package/dist/collection/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.css +29 -2
  76. package/dist/collection/components/hy-navigation/menu-language/menu-language.css +11 -3
  77. package/dist/collection/components/hy-navigation/menu-language-item/menu-language-item.css +6 -0
  78. package/dist/collection/components/hy-opening-hours/hy-opening-hours.css +9 -2
  79. package/dist/collection/components/hy-pagination/hy-pager-item/hy-pager-item.css +6 -0
  80. package/dist/collection/components/hy-person-card/hy-person-card.css +1 -1
  81. package/dist/collection/components/hy-search-field/hy-search-field.css +12 -6
  82. package/dist/collection/components/hy-shortcuts/hy-shortcuts.css +6 -0
  83. package/dist/collection/components/hy-site-header/site-header.css +24 -4
  84. package/dist/collection/components/hy-site-header/site-header.js +1 -1
  85. package/dist/collection/components/hy-site-header/site-logo/site-logo.css +6 -4
  86. package/dist/collection/components/hy-site-header/site-search/site-search.css +20 -6
  87. package/dist/collection/components/hy-tabs/hy-tabs.css +12 -4
  88. package/dist/esm/hy-accordion-container_2.entry.js +1 -1
  89. package/dist/esm/hy-anchor-link-list.entry.js +1 -1
  90. package/dist/esm/hy-breadcrumbs_15.entry.js +11 -11
  91. package/dist/esm/hy-checkbox.entry.js +1 -1
  92. package/dist/esm/hy-content-list_2.entry.js +1 -1
  93. package/dist/esm/hy-crisis-banner.entry.js +1 -1
  94. package/dist/esm/hy-cta-button.entry.js +1 -1
  95. package/dist/esm/hy-cta-link.entry.js +1 -1
  96. package/dist/esm/hy-dropdown.entry.js +1 -1
  97. package/dist/esm/hy-event-item.entry.js +1 -1
  98. package/dist/esm/hy-events.entry.js +1 -1
  99. package/dist/esm/hy-filter-group_6.entry.js +3 -3
  100. package/dist/esm/hy-general-list_2.entry.js +1 -1
  101. package/dist/esm/hy-hero-carousel.entry.js +358 -337
  102. package/dist/esm/hy-link-box_2.entry.js +1 -1
  103. package/dist/esm/hy-menu-main-group.entry.js +1 -1
  104. package/dist/esm/hy-opening-hours_2.entry.js +1 -1
  105. package/dist/esm/hy-pager_2.entry.js +1 -1
  106. package/dist/esm/hy-person-card.entry.js +1 -1
  107. package/dist/esm/hy-shortcuts.entry.js +1 -1
  108. package/dist/esm/hy-tabs_2.entry.js +1 -1
  109. package/dist/huds-lib/hy-accordion-container_2.entry.js +1 -1
  110. package/dist/huds-lib/hy-anchor-link-list.entry.js +1 -1
  111. package/dist/huds-lib/hy-breadcrumbs_15.entry.js +1 -1
  112. package/dist/huds-lib/hy-checkbox.entry.js +1 -1
  113. package/dist/huds-lib/hy-content-list_2.entry.js +1 -1
  114. package/dist/huds-lib/hy-crisis-banner.entry.js +1 -1
  115. package/dist/huds-lib/hy-cta-button.entry.js +1 -1
  116. package/dist/huds-lib/hy-cta-link.entry.js +1 -1
  117. package/dist/huds-lib/hy-dropdown.entry.js +1 -1
  118. package/dist/huds-lib/hy-event-item.entry.js +1 -1
  119. package/dist/huds-lib/hy-events.entry.js +1 -1
  120. package/dist/huds-lib/hy-filter-group_6.entry.js +1 -1
  121. package/dist/huds-lib/hy-general-list_2.entry.js +1 -1
  122. package/dist/huds-lib/hy-hero-carousel.entry.js +1 -1
  123. package/dist/huds-lib/hy-link-box_2.entry.js +1 -1
  124. package/dist/huds-lib/hy-menu-main-group.entry.js +1 -1
  125. package/dist/huds-lib/hy-opening-hours_2.entry.js +1 -1
  126. package/dist/huds-lib/hy-pager_2.entry.js +1 -1
  127. package/dist/huds-lib/hy-person-card.entry.js +1 -1
  128. package/dist/huds-lib/hy-shortcuts.entry.js +1 -1
  129. package/dist/huds-lib/hy-tabs_2.entry.js +1 -1
  130. package/package.json +3 -3
@@ -7,28 +7,23 @@ const globalScript = require('./globalScript-c309d309.js');
7
7
  const utils = require('./utils-8e26d681.js');
8
8
 
9
9
  /**
10
- * SSR Window 4.0.2
10
+ * SSR Window 5.0.1
11
11
  * Better handling for window object in SSR environment
12
12
  * https://github.com/nolimits4web/ssr-window
13
13
  *
14
- * Copyright 2021, Vladimir Kharlampidi
14
+ * Copyright 2025, Vladimir Kharlampidi
15
15
  *
16
16
  * Licensed under MIT
17
17
  *
18
- * Released on: December 13, 2021
18
+ * Released on: June 27, 2025
19
19
  */
20
20
  /* eslint-disable no-param-reassign */
21
21
  function isObject$1(obj) {
22
22
  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
23
23
  }
24
- function extend$1(target, src) {
25
- if (target === void 0) {
26
- target = {};
27
- }
28
- if (src === void 0) {
29
- src = {};
30
- }
31
- Object.keys(src).forEach(key => {
24
+ function extend$1(target = {}, src = {}) {
25
+ const noExtend = ['__proto__', 'constructor', 'prototype'];
26
+ Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {
32
27
  if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) {
33
28
  extend$1(target[key], src[key]);
34
29
  }
@@ -150,10 +145,7 @@ function getWindow() {
150
145
  return win;
151
146
  }
152
147
 
153
- function classesToTokens(classes) {
154
- if (classes === void 0) {
155
- classes = '';
156
- }
148
+ function classesToTokens(classes = '') {
157
149
  return classes.trim().split(' ').filter(c => !!c.trim());
158
150
  }
159
151
 
@@ -172,10 +164,7 @@ function deleteProps(obj) {
172
164
  }
173
165
  });
174
166
  }
175
- function nextTick(callback, delay) {
176
- if (delay === void 0) {
177
- delay = 0;
178
- }
167
+ function nextTick(callback, delay = 0) {
179
168
  return setTimeout(callback, delay);
180
169
  }
181
170
  function now() {
@@ -195,10 +184,7 @@ function getComputedStyle$1(el) {
195
184
  }
196
185
  return style;
197
186
  }
198
- function getTranslate(el, axis) {
199
- if (axis === void 0) {
200
- axis = 'x';
201
- }
187
+ function getTranslate(el, axis = 'x') {
202
188
  const window = getWindow();
203
189
  let matrix;
204
190
  let curTransform;
@@ -244,13 +230,12 @@ function isNode(node) {
244
230
  }
245
231
  return node && (node.nodeType === 1 || node.nodeType === 11);
246
232
  }
247
- function extend() {
248
- const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
249
- const noExtend = ['__proto__', 'constructor', 'prototype'];
250
- for (let i = 1; i < arguments.length; i += 1) {
251
- const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
233
+ function extend(...args) {
234
+ const to = Object(args[0]);
235
+ for (let i = 1; i < args.length; i += 1) {
236
+ const nextSource = args[i];
252
237
  if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
253
- const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
238
+ const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype');
254
239
  for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
255
240
  const nextKey = keysArray[nextIndex];
256
241
  const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
@@ -280,12 +265,11 @@ function extend() {
280
265
  function setCSSProperty(el, varName, varValue) {
281
266
  el.style.setProperty(varName, varValue);
282
267
  }
283
- function animateCSSModeScroll(_ref) {
284
- let {
285
- swiper,
286
- targetPosition,
287
- side
288
- } = _ref;
268
+ function animateCSSModeScroll({
269
+ swiper,
270
+ targetPosition,
271
+ side
272
+ }) {
289
273
  const window = getWindow();
290
274
  const startPosition = -swiper.translate;
291
275
  let startTime = null;
@@ -330,12 +314,10 @@ function animateCSSModeScroll(_ref) {
330
314
  function getSlideTransformEl(slideEl) {
331
315
  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
332
316
  }
333
- function elementChildren(element, selector) {
334
- if (selector === void 0) {
335
- selector = '';
336
- }
317
+ function elementChildren(element, selector = '') {
318
+ const window = getWindow();
337
319
  const children = [...element.children];
338
- if (element instanceof HTMLSlotElement) {
320
+ if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {
339
321
  children.push(...element.assignedElements());
340
322
  }
341
323
  if (!selector) {
@@ -343,11 +325,26 @@ function elementChildren(element, selector) {
343
325
  }
344
326
  return children.filter(el => el.matches(selector));
345
327
  }
328
+ function elementIsChildOfSlot(el, slot) {
329
+ // Breadth-first search through all parent's children and assigned elements
330
+ const elementsQueue = [slot];
331
+ while (elementsQueue.length > 0) {
332
+ const elementToCheck = elementsQueue.shift();
333
+ if (el === elementToCheck) {
334
+ return true;
335
+ }
336
+ elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));
337
+ }
338
+ }
346
339
  function elementIsChildOf(el, parent) {
347
- const isChild = parent.contains(el);
348
- if (!isChild && parent instanceof HTMLSlotElement) {
340
+ const window = getWindow();
341
+ let isChild = parent.contains(el);
342
+ if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {
349
343
  const children = [...parent.assignedElements()];
350
- return children.includes(el);
344
+ isChild = children.includes(el);
345
+ if (!isChild) {
346
+ isChild = elementIsChildOfSlot(el, parent);
347
+ }
351
348
  }
352
349
  return isChild;
353
350
  }
@@ -359,10 +356,7 @@ function showWarning(text) {
359
356
  // err
360
357
  }
361
358
  }
362
- function createElement(tag, classes) {
363
- if (classes === void 0) {
364
- classes = [];
365
- }
359
+ function createElement(tag, classes = []) {
366
360
  const el = document.createElement(tag);
367
361
  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));
368
362
  return el;
@@ -439,6 +433,15 @@ function elementOuterSize(el, size, includeMargins) {
439
433
  function makeElementsArray(el) {
440
434
  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
441
435
  }
436
+ function setInnerHTML(el, html = '') {
437
+ if (typeof trustedTypes !== 'undefined') {
438
+ el.innerHTML = trustedTypes.createPolicy('html', {
439
+ createHTML: s => s
440
+ }).createHTML(html);
441
+ } else {
442
+ el.innerHTML = html;
443
+ }
444
+ }
442
445
 
443
446
  let support;
444
447
  function calcSupport() {
@@ -457,10 +460,9 @@ function getSupport() {
457
460
  }
458
461
 
459
462
  let deviceCached;
460
- function calcDevice(_temp) {
461
- let {
462
- userAgent
463
- } = _temp === void 0 ? {} : _temp;
463
+ function calcDevice({
464
+ userAgent
465
+ } = {}) {
464
466
  const support = getSupport();
465
467
  const window = getWindow();
466
468
  const platform = window.navigator.platform;
@@ -472,7 +474,7 @@ function calcDevice(_temp) {
472
474
  const screenWidth = window.screen.width;
473
475
  const screenHeight = window.screen.height;
474
476
  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
475
- let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
477
+ let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/);
476
478
  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
477
479
  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
478
480
  const windows = platform === 'Win32';
@@ -499,10 +501,7 @@ function calcDevice(_temp) {
499
501
  // Export object
500
502
  return device;
501
503
  }
502
- function getDevice(overrides) {
503
- if (overrides === void 0) {
504
- overrides = {};
505
- }
504
+ function getDevice(overrides = {}) {
506
505
  if (!deviceCached) {
507
506
  deviceCached = calcDevice(overrides);
508
507
  }
@@ -542,12 +541,11 @@ function getBrowser() {
542
541
  return browser;
543
542
  }
544
543
 
545
- function Resize(_ref) {
546
- let {
547
- swiper,
548
- on,
549
- emit
550
- } = _ref;
544
+ function Resize({
545
+ swiper,
546
+ on,
547
+ emit
548
+ }) {
551
549
  const window = getWindow();
552
550
  let observer = null;
553
551
  let animationFrame = null;
@@ -566,12 +564,11 @@ function Resize(_ref) {
566
564
  } = swiper;
567
565
  let newWidth = width;
568
566
  let newHeight = height;
569
- entries.forEach(_ref2 => {
570
- let {
571
- contentBoxSize,
572
- contentRect,
573
- target
574
- } = _ref2;
567
+ entries.forEach(({
568
+ contentBoxSize,
569
+ contentRect,
570
+ target
571
+ }) => {
575
572
  if (target && target !== swiper.el) return;
576
573
  newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
577
574
  newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
@@ -611,19 +608,15 @@ function Resize(_ref) {
611
608
  });
612
609
  }
613
610
 
614
- function Observer(_ref) {
615
- let {
616
- swiper,
617
- extendParams,
618
- on,
619
- emit
620
- } = _ref;
611
+ function Observer({
612
+ swiper,
613
+ extendParams,
614
+ on,
615
+ emit
616
+ }) {
621
617
  const observers = [];
622
618
  const window = getWindow();
623
- const attach = function (target, options) {
624
- if (options === void 0) {
625
- options = {};
626
- }
619
+ const attach = (target, options = {}) => {
627
620
  const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
628
621
  const observer = new ObserverFunc(mutations => {
629
622
  // The observerUpdate event should only be triggered
@@ -701,14 +694,11 @@ var eventsEmitter = {
701
694
  const self = this;
702
695
  if (!self.eventsListeners || self.destroyed) return self;
703
696
  if (typeof handler !== 'function') return self;
704
- function onceHandler() {
697
+ function onceHandler(...args) {
705
698
  self.off(events, onceHandler);
706
699
  if (onceHandler.__emitterProxy) {
707
700
  delete onceHandler.__emitterProxy;
708
701
  }
709
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
710
- args[_key] = arguments[_key];
711
- }
712
702
  handler.apply(self, args);
713
703
  }
714
704
  onceHandler.__emitterProxy = handler;
@@ -751,16 +741,13 @@ var eventsEmitter = {
751
741
  });
752
742
  return self;
753
743
  },
754
- emit() {
744
+ emit(...args) {
755
745
  const self = this;
756
746
  if (!self.eventsListeners || self.destroyed) return self;
757
747
  if (!self.eventsListeners) return self;
758
748
  let events;
759
749
  let data;
760
750
  let context;
761
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
762
- args[_key2] = arguments[_key2];
763
- }
764
751
  if (typeof args[0] === 'string' || Array.isArray(args[0])) {
765
752
  events = args[0];
766
753
  data = args.slice(1, args.length);
@@ -828,7 +815,6 @@ function updateSlides() {
828
815
  const {
829
816
  wrapperEl,
830
817
  slidesEl,
831
- size: swiperSize,
832
818
  rtlTranslate: rtl,
833
819
  wrongRTL
834
820
  } = swiper;
@@ -849,6 +835,7 @@ function updateSlides() {
849
835
  }
850
836
  const previousSnapGridLength = swiper.snapGrid.length;
851
837
  const previousSlidesGridLength = swiper.slidesGrid.length;
838
+ const swiperSize = swiper.size - offsetBefore - offsetAfter;
852
839
  let spaceBetween = params.spaceBetween;
853
840
  let slidePosition = -offsetBefore;
854
841
  let prevSlideSize = 0;
@@ -861,7 +848,7 @@ function updateSlides() {
861
848
  } else if (typeof spaceBetween === 'string') {
862
849
  spaceBetween = parseFloat(spaceBetween);
863
850
  }
864
- swiper.virtualSize = -spaceBetween;
851
+ swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;
865
852
 
866
853
  // reset margins
867
854
  slides.forEach(slideEl => {
@@ -879,6 +866,12 @@ function updateSlides() {
879
866
  setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');
880
867
  setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');
881
868
  }
869
+
870
+ // set cssMode offsets
871
+ if (params.cssMode) {
872
+ setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`);
873
+ setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`);
874
+ }
882
875
  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
883
876
  if (gridEnabled) {
884
877
  swiper.grid.initSlides(slides);
@@ -893,16 +886,25 @@ function updateSlides() {
893
886
  }).length > 0;
894
887
  for (let i = 0; i < slidesLength; i += 1) {
895
888
  slideSize = 0;
896
- let slide;
897
- if (slides[i]) slide = slides[i];
898
- if (gridEnabled) {
899
- swiper.grid.updateSlide(i, slide, slides);
889
+ const slide = slides[i];
890
+ if (slide) {
891
+ if (gridEnabled) {
892
+ swiper.grid.updateSlide(i, slide, slides);
893
+ }
894
+ if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
900
895
  }
901
- if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
902
896
 
903
- if (params.slidesPerView === 'auto') {
897
+ if (isVirtual && params.slidesPerView === 'auto') {
898
+ if (params.virtual.slidesPerViewAutoSlideSize) {
899
+ slideSize = params.virtual.slidesPerViewAutoSlideSize;
900
+ }
901
+ if (slideSize && slide) {
902
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
903
+ slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
904
+ }
905
+ } else if (params.slidesPerView === 'auto') {
904
906
  if (shouldResetSlideSize) {
905
- slides[i].style[swiper.getDirectionLabel('width')] = ``;
907
+ slide.style[swiper.getDirectionLabel('width')] = ``;
906
908
  }
907
909
  const slideStyles = getComputedStyle(slide);
908
910
  const currentTransform = slide.style.transform;
@@ -943,12 +945,12 @@ function updateSlides() {
943
945
  } else {
944
946
  slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
945
947
  if (params.roundLengths) slideSize = Math.floor(slideSize);
946
- if (slides[i]) {
947
- slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
948
+ if (slide) {
949
+ slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
948
950
  }
949
951
  }
950
- if (slides[i]) {
951
- slides[i].swiperSlideSize = slideSize;
952
+ if (slide) {
953
+ slide.swiperSlideSize = slideSize;
952
954
  }
953
955
  slidesSizesGrid.push(slideSize);
954
956
  if (params.centeredSlides) {
@@ -982,17 +984,52 @@ function updateSlides() {
982
984
 
983
985
  // Remove last grid elements depending on width
984
986
  if (!params.centeredSlides) {
987
+ // Check if snapToSlideEdge should be applied
988
+ const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0;
989
+ const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView);
990
+
991
+ // Calculate the last allowed snap index when snapToSlideEdge is enabled
992
+ // This ensures minimum slides are visible at the end
993
+ let lastAllowedSnapIndex = snapGrid.length;
994
+ if (shouldSnapToSlideEdge) {
995
+ let minVisibleSlides;
996
+ if (params.slidesPerView === 'auto') {
997
+ // For 'auto' mode, calculate how many slides fit based on actual sizes
998
+ minVisibleSlides = 1;
999
+ let accumulatedSize = 0;
1000
+ for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) {
1001
+ accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0);
1002
+ if (accumulatedSize <= swiperSize) {
1003
+ minVisibleSlides = slidesSizesGrid.length - i;
1004
+ } else {
1005
+ break;
1006
+ }
1007
+ }
1008
+ } else {
1009
+ minVisibleSlides = Math.floor(params.slidesPerView);
1010
+ }
1011
+ lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0);
1012
+ }
985
1013
  const newSlidesGrid = [];
986
1014
  for (let i = 0; i < snapGrid.length; i += 1) {
987
1015
  let slidesGridItem = snapGrid[i];
988
1016
  if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
989
- if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1017
+ if (shouldSnapToSlideEdge) {
1018
+ // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex
1019
+ if (i <= lastAllowedSnapIndex) {
1020
+ newSlidesGrid.push(slidesGridItem);
1021
+ }
1022
+ } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1023
+ // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area
990
1024
  newSlidesGrid.push(slidesGridItem);
991
1025
  }
992
1026
  }
993
1027
  snapGrid = newSlidesGrid;
994
1028
  if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
995
- snapGrid.push(swiper.virtualSize - swiperSize);
1029
+ // Only add edge-aligned snap if snapToSlideEdge is not enabled
1030
+ if (!shouldSnapToSlideEdge) {
1031
+ snapGrid.push(swiper.virtualSize - swiperSize);
1032
+ }
996
1033
  }
997
1034
  }
998
1035
  if (isVirtual && params.loop) {
@@ -1044,9 +1081,8 @@ function updateSlides() {
1044
1081
  allSlidesSize += slideSizeValue + (spaceBetween || 0);
1045
1082
  });
1046
1083
  allSlidesSize -= spaceBetween;
1047
- const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
1048
- if (allSlidesSize + offsetSize < swiperSize) {
1049
- const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
1084
+ if (allSlidesSize < swiperSize) {
1085
+ const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
1050
1086
  snapGrid.forEach((snap, snapIndex) => {
1051
1087
  snapGrid[snapIndex] = snap - allSlidesOffset;
1052
1088
  });
@@ -1157,10 +1193,7 @@ const toggleSlideClasses$1 = (slideEl, condition, className) => {
1157
1193
  slideEl.classList.remove(className);
1158
1194
  }
1159
1195
  };
1160
- function updateSlidesProgress(translate) {
1161
- if (translate === void 0) {
1162
- translate = this && this.translate || 0;
1163
- }
1196
+ function updateSlidesProgress(translate = this && this.translate || 0) {
1164
1197
  const swiper = this;
1165
1198
  const params = swiper.params;
1166
1199
  const {
@@ -1300,9 +1333,9 @@ function updateSlidesClasses() {
1300
1333
  }
1301
1334
  } else {
1302
1335
  if (gridEnabled) {
1303
- activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];
1304
- nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];
1305
- prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];
1336
+ activeSlide = slides.find(slideEl => slideEl.column === activeIndex);
1337
+ nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);
1338
+ prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);
1306
1339
  } else {
1307
1340
  activeSlide = slides[activeIndex];
1308
1341
  }
@@ -1344,12 +1377,13 @@ const processLazyPreloader = (swiper, imageEl) => {
1344
1377
  requestAnimationFrame(() => {
1345
1378
  if (slideEl.shadowRoot) {
1346
1379
  lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
1347
- if (lazyEl) lazyEl.remove();
1380
+ if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();
1348
1381
  }
1349
1382
  });
1350
1383
  }
1351
1384
  }
1352
- if (lazyEl) lazyEl.remove();
1385
+ // Skip removal if managed by React/Vue component
1386
+ if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();
1353
1387
  }
1354
1388
  };
1355
1389
  const unlazy = (swiper, index) => {
@@ -1464,10 +1498,14 @@ function updateActiveIndex(newActiveIndex) {
1464
1498
 
1465
1499
  // Get real index
1466
1500
  let realIndex;
1467
- if (swiper.virtual && params.virtual.enabled && params.loop) {
1468
- realIndex = getVirtualRealIndex(activeIndex);
1501
+ if (swiper.virtual && params.virtual.enabled) {
1502
+ if (params.loop) {
1503
+ realIndex = getVirtualRealIndex(activeIndex);
1504
+ } else {
1505
+ realIndex = activeIndex;
1506
+ }
1469
1507
  } else if (gridEnabled) {
1470
- const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];
1508
+ const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);
1471
1509
  let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
1472
1510
  if (Number.isNaN(activeSlideIndex)) {
1473
1511
  activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
@@ -1555,10 +1593,7 @@ var update = {
1555
1593
  updateClickedSlide
1556
1594
  };
1557
1595
 
1558
- function getSwiperTranslate(axis) {
1559
- if (axis === void 0) {
1560
- axis = this.isHorizontal() ? 'x' : 'y';
1561
- }
1596
+ function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
1562
1597
  const swiper = this;
1563
1598
  const {
1564
1599
  params,
@@ -1633,19 +1668,7 @@ function maxTranslate() {
1633
1668
  return -this.snapGrid[this.snapGrid.length - 1];
1634
1669
  }
1635
1670
 
1636
- function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
1637
- if (translate === void 0) {
1638
- translate = 0;
1639
- }
1640
- if (speed === void 0) {
1641
- speed = this.params.speed;
1642
- }
1643
- if (runCallbacks === void 0) {
1644
- runCallbacks = true;
1645
- }
1646
- if (translateBounds === void 0) {
1647
- translateBounds = true;
1648
- }
1671
+ function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1649
1672
  const swiper = this;
1650
1673
  const {
1651
1674
  params,
@@ -1733,13 +1756,12 @@ function setTransition(duration, byController) {
1733
1756
  swiper.emit('setTransition', duration, byController);
1734
1757
  }
1735
1758
 
1736
- function transitionEmit(_ref) {
1737
- let {
1738
- swiper,
1739
- runCallbacks,
1740
- direction,
1741
- step
1742
- } = _ref;
1759
+ function transitionEmit({
1760
+ swiper,
1761
+ runCallbacks,
1762
+ direction,
1763
+ step
1764
+ }) {
1743
1765
  const {
1744
1766
  activeIndex,
1745
1767
  previousIndex
@@ -1749,11 +1771,9 @@ function transitionEmit(_ref) {
1749
1771
  if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
1750
1772
  }
1751
1773
  swiper.emit(`transition${step}`);
1752
- if (runCallbacks && activeIndex !== previousIndex) {
1753
- if (dir === 'reset') {
1754
- swiper.emit(`slideResetTransition${step}`);
1755
- return;
1756
- }
1774
+ if (runCallbacks && dir === 'reset') {
1775
+ swiper.emit(`slideResetTransition${step}`);
1776
+ } else if (runCallbacks && activeIndex !== previousIndex) {
1757
1777
  swiper.emit(`slideChangeTransition${step}`);
1758
1778
  if (dir === 'next') {
1759
1779
  swiper.emit(`slideNextTransition${step}`);
@@ -1763,10 +1783,7 @@ function transitionEmit(_ref) {
1763
1783
  }
1764
1784
  }
1765
1785
 
1766
- function transitionStart(runCallbacks, direction) {
1767
- if (runCallbacks === void 0) {
1768
- runCallbacks = true;
1769
- }
1786
+ function transitionStart(runCallbacks = true, direction) {
1770
1787
  const swiper = this;
1771
1788
  const {
1772
1789
  params
@@ -1783,10 +1800,7 @@ function transitionStart(runCallbacks, direction) {
1783
1800
  });
1784
1801
  }
1785
1802
 
1786
- function transitionEnd(runCallbacks, direction) {
1787
- if (runCallbacks === void 0) {
1788
- runCallbacks = true;
1789
- }
1803
+ function transitionEnd(runCallbacks = true, direction) {
1790
1804
  const swiper = this;
1791
1805
  const {
1792
1806
  params
@@ -1808,13 +1822,7 @@ var transition = {
1808
1822
  transitionEnd
1809
1823
  };
1810
1824
 
1811
- function slideTo(index, speed, runCallbacks, internal, initial) {
1812
- if (index === void 0) {
1813
- index = 0;
1814
- }
1815
- if (runCallbacks === void 0) {
1816
- runCallbacks = true;
1817
- }
1825
+ function slideTo(index = 0, speed, runCallbacks = true, internal, initial) {
1818
1826
  if (typeof index === 'string') {
1819
1827
  index = parseInt(index, 10);
1820
1828
  }
@@ -1936,6 +1944,11 @@ function slideTo(index, speed, runCallbacks, internal, initial) {
1936
1944
  }
1937
1945
  return true;
1938
1946
  }
1947
+ const browser = getBrowser();
1948
+ const isSafari = browser.isSafari;
1949
+ if (isVirtual && !initial && isSafari && swiper.isElement) {
1950
+ swiper.virtual.update(false, false, slideIndex);
1951
+ }
1939
1952
  swiper.setTransition(speed);
1940
1953
  swiper.setTranslate(translate);
1941
1954
  swiper.updateActiveIndex(slideIndex);
@@ -1961,13 +1974,7 @@ function slideTo(index, speed, runCallbacks, internal, initial) {
1961
1974
  return true;
1962
1975
  }
1963
1976
 
1964
- function slideToLoop(index, speed, runCallbacks, internal) {
1965
- if (index === void 0) {
1966
- index = 0;
1967
- }
1968
- if (runCallbacks === void 0) {
1969
- runCallbacks = true;
1970
- }
1977
+ function slideToLoop(index = 0, speed, runCallbacks = true, internal) {
1971
1978
  if (typeof index === 'string') {
1972
1979
  const indexAsNumber = parseInt(index, 10);
1973
1980
  index = indexAsNumber;
@@ -1987,32 +1994,35 @@ function slideToLoop(index, speed, runCallbacks, internal) {
1987
1994
  let targetSlideIndex;
1988
1995
  if (gridEnabled) {
1989
1996
  const slideIndex = newIndex * swiper.params.grid.rows;
1990
- targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
1997
+ targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
1991
1998
  } else {
1992
1999
  targetSlideIndex = swiper.getSlideIndexByData(newIndex);
1993
2000
  }
1994
2001
  const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
1995
2002
  const {
1996
- centeredSlides
2003
+ centeredSlides,
2004
+ slidesOffsetBefore,
2005
+ slidesOffsetAfter
1997
2006
  } = swiper.params;
2007
+ const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;
1998
2008
  let slidesPerView = swiper.params.slidesPerView;
1999
2009
  if (slidesPerView === 'auto') {
2000
2010
  slidesPerView = swiper.slidesPerViewDynamic();
2001
2011
  } else {
2002
2012
  slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
2003
- if (centeredSlides && slidesPerView % 2 === 0) {
2013
+ if (bothDirections && slidesPerView % 2 === 0) {
2004
2014
  slidesPerView = slidesPerView + 1;
2005
2015
  }
2006
2016
  }
2007
2017
  let needLoopFix = cols - targetSlideIndex < slidesPerView;
2008
- if (centeredSlides) {
2018
+ if (bothDirections) {
2009
2019
  needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
2010
2020
  }
2011
- if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
2021
+ if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
2012
2022
  needLoopFix = false;
2013
2023
  }
2014
2024
  if (needLoopFix) {
2015
- const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
2025
+ const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
2016
2026
  swiper.loopFix({
2017
2027
  direction,
2018
2028
  slideTo: true,
@@ -2022,7 +2032,7 @@ function slideToLoop(index, speed, runCallbacks, internal) {
2022
2032
  }
2023
2033
  if (gridEnabled) {
2024
2034
  const slideIndex = newIndex * swiper.params.grid.rows;
2025
- newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
2035
+ newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
2026
2036
  } else {
2027
2037
  newIndex = swiper.getSlideIndexByData(newIndex);
2028
2038
  }
@@ -2035,10 +2045,7 @@ function slideToLoop(index, speed, runCallbacks, internal) {
2035
2045
  }
2036
2046
 
2037
2047
  /* eslint no-unused-vars: "off" */
2038
- function slideNext(speed, runCallbacks, internal) {
2039
- if (runCallbacks === void 0) {
2040
- runCallbacks = true;
2041
- }
2048
+ function slideNext(speed, runCallbacks = true, internal) {
2042
2049
  const swiper = this;
2043
2050
  const {
2044
2051
  enabled,
@@ -2076,10 +2083,7 @@ function slideNext(speed, runCallbacks, internal) {
2076
2083
  }
2077
2084
 
2078
2085
  /* eslint no-unused-vars: "off" */
2079
- function slidePrev(speed, runCallbacks, internal) {
2080
- if (runCallbacks === void 0) {
2081
- runCallbacks = true;
2082
- }
2086
+ function slidePrev(speed, runCallbacks = true, internal) {
2083
2087
  const swiper = this;
2084
2088
  const {
2085
2089
  params,
@@ -2109,8 +2113,9 @@ function slidePrev(speed, runCallbacks, internal) {
2109
2113
  }
2110
2114
  const normalizedTranslate = normalize(translate);
2111
2115
  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
2116
+ const isFreeMode = params.freeMode && params.freeMode.enabled;
2112
2117
  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2113
- if (typeof prevSnap === 'undefined' && params.cssMode) {
2118
+ if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {
2114
2119
  let prevSnapIndex;
2115
2120
  snapGrid.forEach((snap, snapIndex) => {
2116
2121
  if (normalizedTranslate >= snap) {
@@ -2119,7 +2124,7 @@ function slidePrev(speed, runCallbacks, internal) {
2119
2124
  }
2120
2125
  });
2121
2126
  if (typeof prevSnapIndex !== 'undefined') {
2122
- prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2127
+ prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2123
2128
  }
2124
2129
  }
2125
2130
  let prevIndex = 0;
@@ -2144,10 +2149,7 @@ function slidePrev(speed, runCallbacks, internal) {
2144
2149
  }
2145
2150
 
2146
2151
  /* eslint no-unused-vars: "off" */
2147
- function slideReset(speed, runCallbacks, internal) {
2148
- if (runCallbacks === void 0) {
2149
- runCallbacks = true;
2150
- }
2152
+ function slideReset(speed, runCallbacks = true, internal) {
2151
2153
  const swiper = this;
2152
2154
  if (swiper.destroyed) return;
2153
2155
  if (typeof speed === 'undefined') {
@@ -2157,13 +2159,7 @@ function slideReset(speed, runCallbacks, internal) {
2157
2159
  }
2158
2160
 
2159
2161
  /* eslint no-unused-vars: "off" */
2160
- function slideToClosest(speed, runCallbacks, internal, threshold) {
2161
- if (runCallbacks === void 0) {
2162
- runCallbacks = true;
2163
- }
2164
- if (threshold === void 0) {
2165
- threshold = 0.5;
2166
- }
2162
+ function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {
2167
2163
  const swiper = this;
2168
2164
  if (swiper.destroyed) return;
2169
2165
  if (typeof speed === 'undefined') {
@@ -2203,23 +2199,16 @@ function slideToClickedSlide() {
2203
2199
  slidesEl
2204
2200
  } = swiper;
2205
2201
  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2206
- let slideToIndex = swiper.clickedIndex;
2202
+ let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);
2207
2203
  let realIndex;
2208
2204
  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
2205
+ const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
2209
2206
  if (params.loop) {
2210
2207
  if (swiper.animating) return;
2211
2208
  realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
2212
2209
  if (params.centeredSlides) {
2213
- if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
2214
- swiper.loopFix();
2215
- slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
2216
- nextTick(() => {
2217
- swiper.slideTo(slideToIndex);
2218
- });
2219
- } else {
2220
- swiper.slideTo(slideToIndex);
2221
- }
2222
- } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2210
+ swiper.slideToLoop(realIndex);
2211
+ } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {
2223
2212
  swiper.loopFix();
2224
2213
  slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
2225
2214
  nextTick(() => {
@@ -2243,7 +2232,7 @@ var slide = {
2243
2232
  slideToClickedSlide
2244
2233
  };
2245
2234
 
2246
- function loopCreate(slideRealIndex) {
2235
+ function loopCreate(slideRealIndex, initial) {
2247
2236
  const swiper = this;
2248
2237
  const {
2249
2238
  params,
@@ -2256,7 +2245,20 @@ function loopCreate(slideRealIndex) {
2256
2245
  el.setAttribute('data-swiper-slide-index', index);
2257
2246
  });
2258
2247
  };
2248
+ const clearBlankSlides = () => {
2249
+ const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);
2250
+ slides.forEach(el => {
2251
+ el.remove();
2252
+ });
2253
+ if (slides.length > 0) {
2254
+ swiper.recalcSlides();
2255
+ swiper.updateSlides();
2256
+ }
2257
+ };
2259
2258
  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
2259
+ if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {
2260
+ clearBlankSlides();
2261
+ }
2260
2262
  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
2261
2263
  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
2262
2264
  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
@@ -2289,22 +2291,24 @@ function loopCreate(slideRealIndex) {
2289
2291
  } else {
2290
2292
  initSlides();
2291
2293
  }
2294
+ const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;
2292
2295
  swiper.loopFix({
2293
2296
  slideRealIndex,
2294
- direction: params.centeredSlides ? undefined : 'next'
2297
+ direction: bothDirections ? undefined : 'next',
2298
+ initial
2295
2299
  });
2296
2300
  }
2297
2301
 
2298
- function loopFix(_temp) {
2299
- let {
2300
- slideRealIndex,
2301
- slideTo = true,
2302
- direction,
2303
- setTranslate,
2304
- activeSlideIndex,
2305
- byController,
2306
- byMousewheel
2307
- } = _temp === void 0 ? {} : _temp;
2302
+ function loopFix({
2303
+ slideRealIndex,
2304
+ slideTo = true,
2305
+ direction,
2306
+ setTranslate,
2307
+ activeSlideIndex,
2308
+ initial,
2309
+ byController,
2310
+ byMousewheel
2311
+ } = {}) {
2308
2312
  const swiper = this;
2309
2313
  if (!swiper.params.loop) return;
2310
2314
  swiper.emit('beforeLoopFix');
@@ -2316,15 +2320,19 @@ function loopFix(_temp) {
2316
2320
  params
2317
2321
  } = swiper;
2318
2322
  const {
2319
- centeredSlides
2323
+ centeredSlides,
2324
+ slidesOffsetBefore,
2325
+ slidesOffsetAfter,
2326
+ initialSlide
2320
2327
  } = params;
2328
+ const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;
2321
2329
  swiper.allowSlidePrev = true;
2322
2330
  swiper.allowSlideNext = true;
2323
2331
  if (swiper.virtual && params.virtual.enabled) {
2324
2332
  if (slideTo) {
2325
- if (!params.centeredSlides && swiper.snapIndex === 0) {
2333
+ if (!bothDirections && swiper.snapIndex === 0) {
2326
2334
  swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
2327
- } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
2335
+ } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {
2328
2336
  swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
2329
2337
  } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
2330
2338
  swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
@@ -2340,28 +2348,30 @@ function loopFix(_temp) {
2340
2348
  slidesPerView = swiper.slidesPerViewDynamic();
2341
2349
  } else {
2342
2350
  slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
2343
- if (centeredSlides && slidesPerView % 2 === 0) {
2351
+ if (bothDirections && slidesPerView % 2 === 0) {
2344
2352
  slidesPerView = slidesPerView + 1;
2345
2353
  }
2346
2354
  }
2347
2355
  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
2348
- let loopedSlides = slidesPerGroup;
2356
+ let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;
2349
2357
  if (loopedSlides % slidesPerGroup !== 0) {
2350
2358
  loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
2351
2359
  }
2352
2360
  loopedSlides += params.loopAdditionalSlides;
2353
2361
  swiper.loopedSlides = loopedSlides;
2354
2362
  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
2355
- if (slides.length < slidesPerView + loopedSlides) {
2356
- showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');
2363
+ if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
2364
+ showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');
2357
2365
  } else if (gridEnabled && params.grid.fill === 'row') {
2358
2366
  showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');
2359
2367
  }
2360
2368
  const prependSlidesIndexes = [];
2361
2369
  const appendSlidesIndexes = [];
2362
- let activeIndex = swiper.activeIndex;
2370
+ const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
2371
+ const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;
2372
+ let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
2363
2373
  if (typeof activeSlideIndex === 'undefined') {
2364
- activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
2374
+ activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));
2365
2375
  } else {
2366
2376
  activeIndex = activeSlideIndex;
2367
2377
  }
@@ -2369,9 +2379,8 @@ function loopFix(_temp) {
2369
2379
  const isPrev = direction === 'prev' || !direction;
2370
2380
  let slidesPrepended = 0;
2371
2381
  let slidesAppended = 0;
2372
- const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
2373
2382
  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
2374
- const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
2383
+ const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
2375
2384
  // prepend last slides before start
2376
2385
  if (activeColIndexWithShift < loopedSlides) {
2377
2386
  slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
@@ -2391,6 +2400,9 @@ function loopFix(_temp) {
2391
2400
  }
2392
2401
  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
2393
2402
  slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
2403
+ if (isInitialOverflow) {
2404
+ slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
2405
+ }
2394
2406
  for (let i = 0; i < slidesAppended; i += 1) {
2395
2407
  const index = i - Math.floor(i / cols) * cols;
2396
2408
  if (gridEnabled) {
@@ -2406,6 +2418,14 @@ function loopFix(_temp) {
2406
2418
  requestAnimationFrame(() => {
2407
2419
  swiper.__preventObserver__ = false;
2408
2420
  });
2421
+ if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
2422
+ if (appendSlidesIndexes.includes(activeSlideIndex)) {
2423
+ appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
2424
+ }
2425
+ if (prependSlidesIndexes.includes(activeSlideIndex)) {
2426
+ prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
2427
+ }
2428
+ }
2409
2429
  if (isPrev) {
2410
2430
  prependSlidesIndexes.forEach(index => {
2411
2431
  slides[index].swiperLoopMoveDOM = true;
@@ -2506,7 +2526,7 @@ function loopDestroy() {
2506
2526
  params,
2507
2527
  slidesEl
2508
2528
  } = swiper;
2509
- if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
2529
+ if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
2510
2530
  swiper.recalcSlides();
2511
2531
  const newSlidesOrder = [];
2512
2532
  swiper.slides.forEach(slideEl => {
@@ -2567,10 +2587,7 @@ var grabCursor = {
2567
2587
  };
2568
2588
 
2569
2589
  // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
2570
- function closestElement(selector, base) {
2571
- if (base === void 0) {
2572
- base = this;
2573
- }
2590
+ function closestElement(selector, base = this) {
2574
2591
  function __closestFrom(el) {
2575
2592
  if (!el || el === getDocument() || el === getWindow()) return null;
2576
2593
  if (el.assignedSlot) el = el.assignedSlot;
@@ -2687,7 +2704,7 @@ function onTouchStart(event) {
2687
2704
  data.isTouched = false;
2688
2705
  }
2689
2706
  }
2690
- if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {
2707
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
2691
2708
  document.activeElement.blur();
2692
2709
  }
2693
2710
  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
@@ -2721,7 +2738,7 @@ function onTouchMove(event) {
2721
2738
  }
2722
2739
  let targetTouch;
2723
2740
  if (e.type === 'touchmove') {
2724
- targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
2741
+ targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
2725
2742
  if (!targetTouch || targetTouch.identifier !== data.touchId) return;
2726
2743
  } else {
2727
2744
  targetTouch = e;
@@ -2762,10 +2779,15 @@ function onTouchMove(event) {
2762
2779
  data.isMoved = false;
2763
2780
  return;
2764
2781
  }
2765
- } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
2782
+ } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
2783
+ return;
2784
+ } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
2766
2785
  return;
2767
2786
  }
2768
2787
  }
2788
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
2789
+ document.activeElement.blur();
2790
+ }
2769
2791
  if (document.activeElement) {
2770
2792
  if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
2771
2793
  data.isMoved = true;
@@ -2861,7 +2883,7 @@ function onTouchMove(event) {
2861
2883
  }
2862
2884
  let loopFixed;
2863
2885
  new Date().getTime();
2864
- if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
2886
+ if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
2865
2887
  Object.assign(touches, {
2866
2888
  startX: pageX,
2867
2889
  startY: pageY,
@@ -2969,7 +2991,7 @@ function onTouchEnd(event) {
2969
2991
  if (e.pointerId !== data.pointerId) return;
2970
2992
  targetTouch = e;
2971
2993
  } else {
2972
- targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
2994
+ targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
2973
2995
  if (!targetTouch || targetTouch.identifier !== data.touchId) return;
2974
2996
  }
2975
2997
  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
@@ -3146,7 +3168,8 @@ function onResize() {
3146
3168
  swiper.updateSlidesClasses();
3147
3169
  const isVirtualLoop = isVirtual && params.loop;
3148
3170
  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
3149
- swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3171
+ const slides = isVirtual ? swiper.virtual.slides : swiper.slides;
3172
+ swiper.slideTo(slides.length - 1, 0, false, true);
3150
3173
  } else {
3151
3174
  if (swiper.params.loop && !isVirtual) {
3152
3175
  swiper.slideToLoop(swiper.realIndex, 0, false, true);
@@ -3343,9 +3366,12 @@ function setBreakpoint() {
3343
3366
  } = swiper;
3344
3367
  const breakpoints = params.breakpoints;
3345
3368
  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
3369
+ const document = getDocument();
3346
3370
 
3347
- // Get breakpoint for window width and update parameters
3348
- const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
3371
+ // Get breakpoint for window/container width and update parameters
3372
+ const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';
3373
+ const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);
3374
+ const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);
3349
3375
  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
3350
3376
  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
3351
3377
  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
@@ -3418,10 +3444,7 @@ function setBreakpoint() {
3418
3444
  swiper.emit('breakpoint', breakpointParams);
3419
3445
  }
3420
3446
 
3421
- function getBreakpoint(breakpoints, base, containerEl) {
3422
- if (base === void 0) {
3423
- base = 'window';
3424
- }
3447
+ function getBreakpoint(breakpoints, base = 'window', containerEl) {
3425
3448
  if (!breakpoints || base === 'container' && !containerEl) return undefined;
3426
3449
  let breakpoint = false;
3427
3450
  const window = getWindow();
@@ -3616,6 +3639,7 @@ var defaults = {
3616
3639
  // in px
3617
3640
  normalizeSlideIndex: true,
3618
3641
  centerInsufficientSlides: false,
3642
+ snapToSlideEdge: false,
3619
3643
  // Disable swiper and hide navigation when container not overflow
3620
3644
  watchOverflow: true,
3621
3645
  // Round length
@@ -3686,10 +3710,7 @@ var defaults = {
3686
3710
  };
3687
3711
 
3688
3712
  function moduleExtendParams(params, allModulesParams) {
3689
- return function extendParams(obj) {
3690
- if (obj === void 0) {
3691
- obj = {};
3692
- }
3713
+ return function extendParams(obj = {}) {
3693
3714
  const moduleParamName = Object.keys(obj)[0];
3694
3715
  const moduleParams = obj[moduleParamName];
3695
3716
  if (typeof moduleParams !== 'object' || moduleParams === null) {
@@ -3737,12 +3758,9 @@ const prototypes = {
3737
3758
  };
3738
3759
  const extendedDefaults = {};
3739
3760
  class Swiper {
3740
- constructor() {
3761
+ constructor(...args) {
3741
3762
  let el;
3742
3763
  let params;
3743
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3744
- args[_key] = arguments[_key];
3745
- }
3746
3764
  if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
3747
3765
  params = args[0];
3748
3766
  } else {
@@ -3776,7 +3794,11 @@ class Swiper {
3776
3794
  swiper.eventsAnyListeners = [];
3777
3795
  swiper.modules = [...swiper.__modules__];
3778
3796
  if (params.modules && Array.isArray(params.modules)) {
3779
- swiper.modules.push(...params.modules);
3797
+ params.modules.forEach(mod => {
3798
+ if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) {
3799
+ swiper.modules.push(mod);
3800
+ }
3801
+ });
3780
3802
  }
3781
3803
  const allModulesParams = {};
3782
3804
  swiper.modules.forEach(mod => {
@@ -3921,7 +3943,17 @@ class Swiper {
3921
3943
  return elementIndex(slideEl) - firstSlideIndex;
3922
3944
  }
3923
3945
  getSlideIndexByData(index) {
3924
- return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
3946
+ return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));
3947
+ }
3948
+ getSlideIndexWhenGrid(index) {
3949
+ if (this.grid && this.params.grid && this.params.grid.rows > 1) {
3950
+ if (this.params.grid.fill === 'column') {
3951
+ index = Math.floor(index / this.params.grid.rows);
3952
+ } else if (this.params.grid.fill === 'row') {
3953
+ index = index % Math.ceil(this.slides.length / this.params.grid.rows);
3954
+ }
3955
+ }
3956
+ return index;
3925
3957
  }
3926
3958
  recalcSlides() {
3927
3959
  const swiper = this;
@@ -3988,13 +4020,7 @@ class Swiper {
3988
4020
  });
3989
4021
  swiper.emit('_slideClasses', updates);
3990
4022
  }
3991
- slidesPerViewDynamic(view, exact) {
3992
- if (view === void 0) {
3993
- view = 'current';
3994
- }
3995
- if (exact === void 0) {
3996
- exact = false;
3997
- }
4023
+ slidesPerViewDynamic(view = 'current', exact = false) {
3998
4024
  const swiper = this;
3999
4025
  const {
4000
4026
  params,
@@ -4093,10 +4119,7 @@ class Swiper {
4093
4119
  }
4094
4120
  swiper.emit('update');
4095
4121
  }
4096
- changeDirection(newDirection, needUpdate) {
4097
- if (needUpdate === void 0) {
4098
- needUpdate = true;
4099
- }
4122
+ changeDirection(newDirection, needUpdate = true) {
4100
4123
  const swiper = this;
4101
4124
  const currentDirection = swiper.params.direction;
4102
4125
  if (!newDirection) {
@@ -4222,7 +4245,7 @@ class Swiper {
4222
4245
 
4223
4246
  // Create loop
4224
4247
  if (swiper.params.loop) {
4225
- swiper.loopCreate();
4248
+ swiper.loopCreate(undefined, true);
4226
4249
  }
4227
4250
 
4228
4251
  // Attach events
@@ -4251,13 +4274,7 @@ class Swiper {
4251
4274
  swiper.emit('afterInit');
4252
4275
  return swiper;
4253
4276
  }
4254
- destroy(deleteInstance, cleanStyles) {
4255
- if (deleteInstance === void 0) {
4256
- deleteInstance = true;
4257
- }
4258
- if (cleanStyles === void 0) {
4259
- cleanStyles = true;
4260
- }
4277
+ destroy(deleteInstance = true, cleanStyles = true) {
4261
4278
  const swiper = this;
4262
4279
  const {
4263
4280
  params,
@@ -4363,17 +4380,18 @@ function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
4363
4380
  return params;
4364
4381
  }
4365
4382
 
4366
- function Navigation(_ref) {
4367
- let {
4368
- swiper,
4369
- extendParams,
4370
- on,
4371
- emit
4372
- } = _ref;
4383
+ const arrowSvg = `<svg class="swiper-navigation-icon" width="11" height="20" viewBox="0 0 11 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z" fill="currentColor"/></svg>`;
4384
+ function Navigation({
4385
+ swiper,
4386
+ extendParams,
4387
+ on,
4388
+ emit
4389
+ }) {
4373
4390
  extendParams({
4374
4391
  navigation: {
4375
4392
  nextEl: null,
4376
4393
  prevEl: null,
4394
+ addIcons: true,
4377
4395
  hideOnClick: false,
4378
4396
  disabledClass: 'swiper-button-disabled',
4379
4397
  hiddenClass: 'swiper-button-hidden',
@@ -4383,12 +4401,13 @@ function Navigation(_ref) {
4383
4401
  });
4384
4402
  swiper.navigation = {
4385
4403
  nextEl: null,
4386
- prevEl: null
4404
+ prevEl: null,
4405
+ arrowSvg
4387
4406
  };
4388
4407
  function getEl(el) {
4389
4408
  let res;
4390
4409
  if (el && typeof el === 'string' && swiper.isElement) {
4391
- res = swiper.el.querySelector(el);
4410
+ res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
4392
4411
  if (res) return res;
4393
4412
  }
4394
4413
  if (el) {
@@ -4459,6 +4478,12 @@ function Navigation(_ref) {
4459
4478
  prevEl = makeElementsArray(prevEl);
4460
4479
  const initButton = (el, dir) => {
4461
4480
  if (el) {
4481
+ if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {
4482
+ const tempEl = document.createElement('div');
4483
+ setInnerHTML(tempEl, arrowSvg);
4484
+ el.appendChild(tempEl.querySelector('svg'));
4485
+ tempEl.remove();
4486
+ }
4462
4487
  el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
4463
4488
  }
4464
4489
  if (!swiper.enabled && el) {
@@ -4559,21 +4584,18 @@ function Navigation(_ref) {
4559
4584
  });
4560
4585
  }
4561
4586
 
4562
- function classesToSelector(classes) {
4563
- if (classes === void 0) {
4564
- classes = '';
4565
- }
4566
- return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
4587
+ function classesToSelector(classes = '') {
4588
+ // Escape all CSS selector special characters
4589
+ return `.${classes.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g, '\\$1') // eslint-disable-line
4567
4590
  .replace(/ /g, '.')}`;
4568
4591
  }
4569
4592
 
4570
- function Pagination(_ref) {
4571
- let {
4572
- swiper,
4573
- extendParams,
4574
- on,
4575
- emit
4576
- } = _ref;
4593
+ function Pagination({
4594
+ swiper,
4595
+ extendParams,
4596
+ on,
4597
+ emit
4598
+ }) {
4577
4599
  const pfx = 'swiper-pagination';
4578
4600
  extendParams({
4579
4601
  pagination: {
@@ -4791,7 +4813,7 @@ function Pagination(_ref) {
4791
4813
  });
4792
4814
  }
4793
4815
  if (params.type === 'custom' && params.renderCustom) {
4794
- subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
4816
+ setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total));
4795
4817
  if (subElIndex === 0) emit('paginationRender', subEl);
4796
4818
  } else {
4797
4819
  if (subElIndex === 0) emit('paginationRender', subEl);
@@ -4841,7 +4863,7 @@ function Pagination(_ref) {
4841
4863
  swiper.pagination.bullets = [];
4842
4864
  el.forEach(subEl => {
4843
4865
  if (params.type !== 'custom') {
4844
- subEl.innerHTML = paginationHTML || '';
4866
+ setInnerHTML(subEl, paginationHTML || '');
4845
4867
  }
4846
4868
  if (params.type === 'bullets') {
4847
4869
  swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
@@ -4872,10 +4894,10 @@ function Pagination(_ref) {
4872
4894
  el = [...swiper.el.querySelectorAll(params.el)];
4873
4895
  // check if it belongs to another nested Swiper
4874
4896
  if (el.length > 1) {
4875
- el = el.filter(subEl => {
4897
+ el = el.find(subEl => {
4876
4898
  if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;
4877
4899
  return true;
4878
- })[0];
4900
+ });
4879
4901
  }
4880
4902
  }
4881
4903
  if (Array.isArray(el) && el.length === 1) el = el[0];
@@ -5022,12 +5044,11 @@ function Pagination(_ref) {
5022
5044
  });
5023
5045
  }
5024
5046
 
5025
- function A11y(_ref) {
5026
- let {
5027
- swiper,
5028
- extendParams,
5029
- on
5030
- } = _ref;
5047
+ function A11y({
5048
+ swiper,
5049
+ extendParams,
5050
+ on
5051
+ }) {
5031
5052
  extendParams({
5032
5053
  a11y: {
5033
5054
  enabled: true,
@@ -5044,7 +5065,8 @@ function A11y(_ref) {
5044
5065
  itemRoleDescriptionMessage: null,
5045
5066
  slideRole: 'group',
5046
5067
  id: null,
5047
- scrollOnFocus: true
5068
+ scrollOnFocus: true,
5069
+ wrapperLiveRegion: true
5048
5070
  }
5049
5071
  });
5050
5072
  swiper.a11y = {
@@ -5057,13 +5079,9 @@ function A11y(_ref) {
5057
5079
  function notify(message) {
5058
5080
  const notification = liveRegion;
5059
5081
  if (notification.length === 0) return;
5060
- notification.innerHTML = '';
5061
- notification.innerHTML = message;
5082
+ setInnerHTML(notification, message);
5062
5083
  }
5063
- function getRandomNumber(size) {
5064
- if (size === void 0) {
5065
- size = 16;
5066
- }
5084
+ function getRandomNumber(size = 16) {
5067
5085
  const randomChar = () => Math.round(16 * Math.random()).toString(16);
5068
5086
  return 'x'.repeat(size).replace(/x/g, randomChar);
5069
5087
  }
@@ -5245,7 +5263,8 @@ function A11y(_ref) {
5245
5263
  const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
5246
5264
  if (!slideEl || !swiper.slides.includes(slideEl)) return;
5247
5265
  focusTargetSlideEl = slideEl;
5248
- const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
5266
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5267
+ const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex;
5249
5268
  const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
5250
5269
  if (isActive || isVisible) return;
5251
5270
  if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
@@ -5257,9 +5276,11 @@ function A11y(_ref) {
5257
5276
  requestAnimationFrame(() => {
5258
5277
  if (preventFocusHandler) return;
5259
5278
  if (swiper.params.loop) {
5260
- swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
5279
+ swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0);
5280
+ } else if (isVirtual) {
5281
+ swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0);
5261
5282
  } else {
5262
- swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
5283
+ swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0);
5263
5284
  }
5264
5285
  preventFocusHandler = false;
5265
5286
  });
@@ -5300,9 +5321,11 @@ function A11y(_ref) {
5300
5321
  // Wrapper
5301
5322
  const wrapperEl = swiper.wrapperEl;
5302
5323
  const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
5303
- const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
5304
5324
  addElId(wrapperEl, wrapperId);
5305
- addElLive(wrapperEl, live);
5325
+ if (params.wrapperLiveRegion) {
5326
+ const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
5327
+ addElLive(wrapperEl, live);
5328
+ }
5306
5329
 
5307
5330
  // Slide
5308
5331
  initSlides();
@@ -5333,7 +5356,6 @@ function A11y(_ref) {
5333
5356
  const document = getDocument();
5334
5357
  document.addEventListener('visibilitychange', onVisibilityChange);
5335
5358
  swiper.el.addEventListener('focus', handleFocus, true);
5336
- swiper.el.addEventListener('focus', handleFocus, true);
5337
5359
  swiper.el.addEventListener('pointerdown', handlePointerDown, true);
5338
5360
  swiper.el.addEventListener('pointerup', handlePointerUp, true);
5339
5361
  };
@@ -5417,7 +5439,7 @@ function effectInit(params) {
5417
5439
  Object.assign(swiper.params, overwriteParamsResult);
5418
5440
  Object.assign(swiper.originalParams, overwriteParamsResult);
5419
5441
  });
5420
- on('setTranslate', () => {
5442
+ on('setTranslate _virtualUpdated', () => {
5421
5443
  if (swiper.params.effect !== effect) return;
5422
5444
  setTranslate();
5423
5445
  });
@@ -5461,20 +5483,19 @@ function effectTarget(effectParams, slideEl) {
5461
5483
  return transformEl;
5462
5484
  }
5463
5485
 
5464
- function effectVirtualTransitionEnd(_ref) {
5465
- let {
5466
- swiper,
5467
- duration,
5468
- transformElements,
5469
- allSlides
5470
- } = _ref;
5486
+ function effectVirtualTransitionEnd({
5487
+ swiper,
5488
+ duration,
5489
+ transformElements,
5490
+ allSlides
5491
+ }) {
5471
5492
  const {
5472
5493
  activeIndex
5473
5494
  } = swiper;
5474
5495
  const getSlide = el => {
5475
5496
  if (!el.parentElement) {
5476
5497
  // assume shadow root
5477
- const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];
5498
+ const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);
5478
5499
  return slide;
5479
5500
  }
5480
5501
  return el.parentElement;
@@ -5506,12 +5527,11 @@ function effectVirtualTransitionEnd(_ref) {
5506
5527
  }
5507
5528
  }
5508
5529
 
5509
- function EffectFade(_ref) {
5510
- let {
5511
- swiper,
5512
- extendParams,
5513
- on
5514
- } = _ref;
5530
+ function EffectFade({
5531
+ swiper,
5532
+ extendParams,
5533
+ on
5534
+ }) {
5515
5535
  extendParams({
5516
5536
  fadeEffect: {
5517
5537
  crossFade: false
@@ -5566,7 +5586,7 @@ function EffectFade(_ref) {
5566
5586
  });
5567
5587
  }
5568
5588
 
5569
- const hyHeroCarouselCss = "@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:var(--brand-main)}.swiper,swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform;-webkit-transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0px, 0, 0);transform:translate3d(0px, 0, 0)}.swiper-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-slide,swiper-slide{-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height, -webkit-transform;transition-property:height, -webkit-transform;transition-property:transform, height;transition-property:transform, height, -webkit-transform}.swiper-backface-hidden .swiper-slide{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0, 0, 0, 0.15)}.swiper-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));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:-webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));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:-webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));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:-webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:\"\";-ms-flex-negative:0;flex-shrink:0;-webkit-box-ordinal-group:10000;-ms-flex-order:9999;order:9999}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;transform-origin:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,swiper-container:not(.swiper-watch-progress) .swiper-lazy-preloader{-webkit-animation:swiper-preloader-spin 1s infinite linear;animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@-webkit-keyframes swiper-preloader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swiper-preloader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:\"\";position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset, 50%);width:calc(var(--swiper-navigation-size) / 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size) / 2));z-index:10;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--swiper-navigation-color, var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:0.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none !important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none !important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset, 10px);right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:\"prev\"}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset, 10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:\"next\"}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:0.3s opacity;transition:0.3s opacity;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none !important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom, 8px);top:var(--swiper-pagination-top, auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transform:scale(0.33);transform:scale(0.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{-webkit-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{-webkit-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{-webkit-transform:scale(0.66);transform:scale(0.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{-webkit-transform:scale(0.33);transform:scale(0.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{-webkit-transform:scale(0.66);transform:scale(0.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{-webkit-transform:scale(0.33);transform:scale(0.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius, 50%);background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, 0.2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none !important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right, 8px);left:var(--swiper-pagination-left, auto);top:50%;-webkit-transform:translate3d(0px, -50%, 0);transform:translate3d(0px, -50%, 0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;-webkit-transition:0.2s top, 0.2s -webkit-transform;transition:0.2s top, 0.2s -webkit-transform;transition:0.2s transform, 0.2s top;transition:0.2s transform, 0.2s top, 0.2s -webkit-transform}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:0.2s left, 0.2s -webkit-transform;transition:0.2s left, 0.2s -webkit-transform;transition:0.2s transform, 0.2s left;transition:0.2s transform, 0.2s left, 0.2s -webkit-transform}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,:host(.swiper-horizontal.swiper-rtl) .swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:0.2s right, 0.2s -webkit-transform;transition:0.2s right, 0.2s -webkit-transform;transition:0.2s transform, 0.2s right;transition:0.2s transform, 0.2s right, 0.2s -webkit-transform}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color, inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{-webkit-transform-origin:right top;transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size, 4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size, 4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius, 10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none !important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset, 1%);bottom:var(--swiper-scrollbar-bottom, 4px);top:var(--swiper-scrollbar-top, auto);z-index:50;height:var(--swiper-scrollbar-size, 4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left, auto);right:var(--swiper-scrollbar-right, 4px);top:var(--swiper-scrollbar-sides-offset, 1%);z-index:50;width:var(--swiper-scrollbar-size, 4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));border-radius:var(--swiper-scrollbar-border-radius, 10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move;-ms-touch-action:none;touch-action:none}.swiper .swiper-notification,swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;-webkit-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{-webkit-transform-origin:100% 0;transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:0.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:\"\";background:var(--grayscale-black);position:absolute;left:0;top:0;bottom:0;right:0;-webkit-filter:blur(50px);filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;-webkit-transition-property:opacity, height, -webkit-transform;transition-property:opacity, height, -webkit-transform;transition-property:transform, opacity, height;transition-property:transform, opacity, height, -webkit-transform}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}*{-webkit-box-sizing:border-box;box-sizing:border-box}.swiper-slide{display:grid;height:auto;align-self:stretch}.hero-carousel-container{border-bottom:1px solid var(--grayscale-medium-dark);margin:1.5rem 0;--button-size:35px;--button-offset:0px}@media (min-width: 60rem){.hero-carousel-container{border:none;margin:1.5rem 0 0 0}.hero-carousel-container .swiper{padding:0 10px}}.hero-carousel-container .swiper-button-prev,.hero-carousel-container .swiper-button-next{-webkit-box-align:center;-ms-flex-align:center;align-items:center;aspect-ratio:1;background-color:none;border:none;-webkit-box-shadow:none;box-shadow:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:var(--button-size);z-index:9}@media (min-width: 60rem){.hero-carousel-container .swiper-button-prev,.hero-carousel-container .swiper-button-next{background-color:var(--brand-main-light);width:40px}.hero-carousel-container .swiper-button-prev:hover,.hero-carousel-container .swiper-button-next:hover{background-color:var(--brand-main-active)}}.hero-carousel-container .swiper-button-prev::after,.hero-carousel-container .swiper-button-next::after{display:none}.swiper .hero-carousel-container .swiper-button-prev-fade .swiper-slide-prev,.swiper .hero-carousel-container .swiper-button-prev-fade .swiper-slide-next,.swiper .hero-carousel-container .swiper-button-next-fade .swiper-slide-prev,.swiper .hero-carousel-container .swiper-button-next-fade .swiper-slide-next{z-index:-1}@media (min-width: 60rem){.hero-carousel-container .swiper-button-next{bottom:50%;position:absolute;right:var(--button-offset);-webkit-transform:translateY(-50%);transform:translateY(-50%)}}@media (min-width: 60rem){.hero-carousel-container .swiper-button-prev{bottom:50%;left:var(--button-offset);position:absolute;-webkit-transform:translateY(-50%);transform:translateY(-50%)}}.hero-carousel-container .arrow svg{display:none}@media (min-width: 60rem){.hero-carousel-container .arrow svg{display:block}}.hero-carousel-container .caret svg{display:block}@media (min-width: 60rem){.hero-carousel-container .caret svg{display:none}}.hero-carousel-container svg{fill:var(--grayscale-medium-dark);height:16px;width:16px}@media (min-width: 60rem){.hero-carousel-container svg{fill:var(--grayscale-white)}}.hero-carousel--controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:30px 0;padding:0 1rem;position:relative;width:100%}@media (min-width: 60rem){.hero-carousel--controls{display:block;margin:0;padding:0;position:initial;width:auto}}.hero-carousel--pagination--mobile{bottom:auto !important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px;left:auto !important;position:relative;top:auto !important;width:100px !important}@media (min-width: 60rem){.hero-carousel--pagination--mobile{display:none}}.hero-carousel--controls__buttons{position:relative;margin-right:-15px;width:100px}@media (min-width: 60rem){.hero-carousel--controls__buttons{margin:0;position:initial;width:auto}}.hero-carousel--pagination__bullet{background-color:var(--grayscale-medium);content:\"\";display:block;height:12px;width:12px}.hero-carousel--pagination__bullet--active{background-color:var(--brand-main-active)}.hero-carousel--item__pagination ul{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;list-style-type:none;margin:24px 0 0 0;padding:0;gap:1rem}@media (min-width: 60rem){.hero-carousel--item__pagination ul{display:-webkit-box;display:-ms-flexbox;display:flex}}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button button{font-size:1.125rem;line-height:24px;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;background:none;border:none;-webkit-box-shadow:none;box-shadow:none;color:var(--grayscale-white);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--main-font-family);font-style:normal;font-weight:700;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-hyphens:auto;hyphens:auto;letter-spacing:-0.36px;opacity:0.8;text-align:left}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button button:is(:hover,:focus){cursor:pointer;opacity:1}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button button .hero-carousel--item__pagination__button__theme{font-size:0.875rem;line-height:18px;font-family:var(--main-font-family);font-weight:600;letter-spacing:-0.5px;text-transform:uppercase;text-align:left;margin-bottom:0.4rem}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button.is-current button{opacity:1}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button.is-current button:after{border-bottom:4px solid var(--grayscale-white, #FFF);content:\"\";display:block;margin-top:0.45rem;width:33.3333333333%}.hero-carousel--item{display:grid;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto;align-self:stretch}@media (min-width: 60rem){.hero-carousel--item{display:grid;grid-template-columns:1fr 1fr}}.hero-carousel--item__content{background-color:var(--brand-main);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:1rem 0.95rem}@media (min-width: 48rem){.hero-carousel--item__content{padding:clamp(15px, 8%, 62px) clamp(24px, 10%, 52px) clamp(15px, 8%, 55px) clamp(24px, 10%, 52px)}}@media (min-width: 1601px){.hero-carousel--item__content{padding:clamp(15px, 10%, 72px) clamp(24px, 15%, 102px) clamp(15px, 10%, 65px) clamp(24px, 15%, 102px)}}.hero-carousel--item__content hy-cta-button{margin-bottom:30px}@media (min-width: 48rem){.hero-carousel--item__content hy-cta-button{margin-bottom:48px}}@media (min-width: 75.0625rem){.hero-carousel--item__content hy-cta-button{margin-bottom:60px}}.hero-carousel--item__title{color:var(--ds-palette-white);font-family:var(--ds-fontFamily-heading);font-size:var(--ds-fontSize-40);font-weight:var(--ds-fontWeight-bold);letter-spacing:-1.2px;font-stretch:var(--ds-fontWidth-normal);line-height:48px;text-transform:uppercase;text-wrap:balance;margin:1rem 0;}@media (min-width: 60rem){.hero-carousel--item__title{font-size:var(--ds-fontSize-56);letter-spacing:var(--ds-letterSpacing-tight);line-height:64px;font-stretch:var(--ds-fontWidth-condense)}}.hero-carousel--item__desc{color:var(--ds-palette-black-95);font-family:var(--ds-fontFamily-body);font-size:var(--ds-fontSize-20);font-weight:var(--ds-fontWeight-regular);letter-spacing:var(--ds-letterSpacing-wide);line-height:var(--ds-lineHeight-large);-ms-hyphens:auto;hyphens:auto;text-wrap:pretty;-webkit-box-orient:vertical;-webkit-line-clamp:5;color:var(--grayscale-white);display:-webkit-box;font-style:normal;line-clamp:3;margin-bottom:2rem;overflow:hidden;text-overflow:ellipsis;text-wrap:pretty}@media (min-width: 60rem){.hero-carousel--item__desc{font-size:var(--ds-fontSize-22)}}@media (min-width: 60rem){.hero-carousel--item__desc{margin-bottom:2.5rem}}.hero-carousel--item__image{--swiper-preloader-color:var(--brand-main-light);position:relative;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}@media (min-width: 60rem){.hero-carousel--item__image{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:10px 0}}.hero-carousel--item__image .hy-image__image{display:block;height:100%;min-height:205px;width:100%}.hero-carousel--item__image img{-o-object-fit:cover;object-fit:cover}";
5589
+ const hyHeroCarouselCss = ":root{--swiper-theme-color:var(--brand-main)}.swiper,swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform;-webkit-transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0px, 0, 0);transform:translate3d(0px, 0, 0)}.swiper-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-slide,swiper-slide{-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height, -webkit-transform;transition-property:height, -webkit-transform;transition-property:transform, height;transition-property:transform, height, -webkit-transform}.swiper-backface-hidden .swiper-slide{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0, 0, 0, 0.15)}.swiper-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));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:-webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));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:-webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));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:-webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:\"\";-ms-flex-negative:0;flex-shrink:0;-webkit-box-ordinal-group:10000;-ms-flex-order:9999;order:9999}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;transform-origin:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,swiper-container:not(.swiper-watch-progress) .swiper-lazy-preloader{-webkit-animation:swiper-preloader-spin 1s infinite linear;animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@-webkit-keyframes swiper-preloader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swiper-preloader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:\"\";position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset, 50%);width:calc(var(--swiper-navigation-size) / 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size) / 2));z-index:10;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--swiper-navigation-color, var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:0.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none !important}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset, 10px);right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:\"prev\"}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset, 10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:\"next\"}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:0.3s opacity;transition:0.3s opacity;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none !important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom, 8px);top:var(--swiper-pagination-top, auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transform:scale(0.33);transform:scale(0.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{-webkit-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{-webkit-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{-webkit-transform:scale(0.66);transform:scale(0.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{-webkit-transform:scale(0.33);transform:scale(0.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{-webkit-transform:scale(0.66);transform:scale(0.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{-webkit-transform:scale(0.33);transform:scale(0.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius, 50%);background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, 0.2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none !important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right, 8px);left:var(--swiper-pagination-left, auto);top:50%;-webkit-transform:translate3d(0px, -50%, 0);transform:translate3d(0px, -50%, 0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;-webkit-transition:0.2s top, 0.2s -webkit-transform;transition:0.2s top, 0.2s -webkit-transform;transition:0.2s transform, 0.2s top;transition:0.2s transform, 0.2s top, 0.2s -webkit-transform}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:0.2s left, 0.2s -webkit-transform;transition:0.2s left, 0.2s -webkit-transform;transition:0.2s transform, 0.2s left;transition:0.2s transform, 0.2s left, 0.2s -webkit-transform}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,:host(.swiper-horizontal.swiper-rtl) .swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:0.2s right, 0.2s -webkit-transform;transition:0.2s right, 0.2s -webkit-transform;transition:0.2s transform, 0.2s right;transition:0.2s transform, 0.2s right, 0.2s -webkit-transform}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color, inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{-webkit-transform-origin:right top;transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size, 4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size, 4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius, 10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none !important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset, 1%);bottom:var(--swiper-scrollbar-bottom, 4px);top:var(--swiper-scrollbar-top, auto);z-index:50;height:var(--swiper-scrollbar-size, 4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left, auto);right:var(--swiper-scrollbar-right, 4px);top:var(--swiper-scrollbar-sides-offset, 1%);z-index:50;width:var(--swiper-scrollbar-size, 4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));border-radius:var(--swiper-scrollbar-border-radius, 10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move;-ms-touch-action:none;touch-action:none}.swiper .swiper-notification,swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;-webkit-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{-webkit-transform-origin:100% 0;transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:0.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:\"\";background:var(--grayscale-black);position:absolute;left:0;top:0;bottom:0;right:0;-webkit-filter:blur(50px);filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;-webkit-transition-property:opacity, height, -webkit-transform;transition-property:opacity, height, -webkit-transform;transition-property:transform, opacity, height;transition-property:transform, opacity, height, -webkit-transform}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}*{-webkit-box-sizing:border-box;box-sizing:border-box}.swiper-slide{display:grid;height:auto;align-self:stretch}.hero-carousel-container{border-bottom:1px solid var(--grayscale-medium-dark);margin:1.5rem 0;--button-size:35px;--button-offset:0px}@media (min-width: 60rem){.hero-carousel-container{border:none;margin:1.5rem 0 0 0}.hero-carousel-container .swiper{padding:0 10px}}.hero-carousel-container .swiper-button-prev,.hero-carousel-container .swiper-button-next{-webkit-box-align:center;-ms-flex-align:center;align-items:center;aspect-ratio:1;background-color:none;border:none;-webkit-box-shadow:none;box-shadow:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:var(--button-size);z-index:9}@media (min-width: 60rem){.hero-carousel-container .swiper-button-prev,.hero-carousel-container .swiper-button-next{background-color:var(--brand-main-light);width:40px}.hero-carousel-container .swiper-button-prev:hover,.hero-carousel-container .swiper-button-next:hover{background-color:var(--brand-main-active)}}.hero-carousel-container .swiper-button-prev::after,.hero-carousel-container .swiper-button-next::after{display:none}.swiper .hero-carousel-container .swiper-button-prev-fade .swiper-slide-prev,.swiper .hero-carousel-container .swiper-button-prev-fade .swiper-slide-next,.swiper .hero-carousel-container .swiper-button-next-fade .swiper-slide-prev,.swiper .hero-carousel-container .swiper-button-next-fade .swiper-slide-next{z-index:-1}@media (min-width: 60rem){.hero-carousel-container .swiper-button-next{bottom:50%;position:absolute;right:var(--button-offset);-webkit-transform:translateY(-50%);transform:translateY(-50%)}}@media (min-width: 60rem){.hero-carousel-container .swiper-button-prev{bottom:50%;left:var(--button-offset);position:absolute;-webkit-transform:translateY(-50%);transform:translateY(-50%)}}.hero-carousel-container .arrow svg{display:none}@media (min-width: 60rem){.hero-carousel-container .arrow svg{display:block}}.hero-carousel-container .caret svg{display:block}@media (min-width: 60rem){.hero-carousel-container .caret svg{display:none}}.hero-carousel-container svg{fill:var(--grayscale-medium-dark);height:16px;width:16px}@media (min-width: 60rem){.hero-carousel-container svg{fill:var(--grayscale-white)}}.hero-carousel--controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:30px 0;padding:0 1rem;position:relative;width:100%}@media (min-width: 60rem){.hero-carousel--controls{display:block;margin:0;padding:0;position:initial;width:auto}}.hero-carousel--pagination--mobile{bottom:auto !important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px;left:auto !important;position:relative;top:auto !important;width:100px !important}@media (min-width: 60rem){.hero-carousel--pagination--mobile{display:none}}.hero-carousel--controls__buttons{position:relative;margin-right:-15px;width:100px}@media (min-width: 60rem){.hero-carousel--controls__buttons{margin:0;position:initial;width:auto}}.hero-carousel--pagination__bullet{background-color:var(--grayscale-medium);content:\"\";display:block;height:12px;width:12px}.hero-carousel--pagination__bullet--active{background-color:var(--brand-main-active)}.hero-carousel--item__pagination ul{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;list-style-type:none;margin:24px 0 0 0;padding:0;gap:1rem}@media (min-width: 60rem){.hero-carousel--item__pagination ul{display:-webkit-box;display:-ms-flexbox;display:flex}}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button button{font-size:1.125rem;line-height:24px;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;background:none;border:none;-webkit-box-shadow:none;box-shadow:none;color:var(--grayscale-white);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--main-font-family);font-style:normal;font-weight:700;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-hyphens:auto;hyphens:auto;letter-spacing:-0.36px;opacity:0.8;text-align:left}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button button:is(:hover,:focus-visible){cursor:pointer;opacity:1}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button button .hero-carousel--item__pagination__button__theme{font-size:0.875rem;line-height:18px;font-family:var(--main-font-family);font-weight:600;letter-spacing:-0.5px;text-transform:uppercase;text-align:left;margin-bottom:0.4rem}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button.is-current button{opacity:1}.hero-carousel--item__pagination ul li.hero-carousel--item__pagination__button.is-current button:after{border-bottom:4px solid var(--grayscale-white, #FFF);content:\"\";display:block;margin-top:0.45rem;width:33.3333333333%}.hero-carousel--item{display:grid;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto;align-self:stretch}@media (min-width: 60rem){.hero-carousel--item{display:grid;grid-template-columns:1fr 1fr}}.hero-carousel--item__content{background-color:var(--brand-main);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:1rem 0.95rem}@media (min-width: 48rem){.hero-carousel--item__content{padding:clamp(15px, 8%, 62px) clamp(24px, 10%, 52px) clamp(15px, 8%, 55px) clamp(24px, 10%, 52px)}}@media (min-width: 1601px){.hero-carousel--item__content{padding:clamp(15px, 10%, 72px) clamp(24px, 15%, 102px) clamp(15px, 10%, 65px) clamp(24px, 15%, 102px)}}.hero-carousel--item__content hy-cta-button{margin-bottom:30px}@media (min-width: 48rem){.hero-carousel--item__content hy-cta-button{margin-bottom:48px}}@media (min-width: 75.0625rem){.hero-carousel--item__content hy-cta-button{margin-bottom:60px}}.hero-carousel--item__title{color:var(--ds-palette-white);font-family:var(--ds-fontFamily-heading);font-size:var(--ds-fontSize-40);font-weight:var(--ds-fontWeight-bold);letter-spacing:-1.2px;font-stretch:var(--ds-fontWidth-normal);line-height:48px;text-transform:uppercase;text-wrap:balance;margin:1rem 0;}@media (min-width: 60rem){.hero-carousel--item__title{font-size:var(--ds-fontSize-56);letter-spacing:var(--ds-letterSpacing-tight);line-height:64px;font-stretch:var(--ds-fontWidth-condense)}}.hero-carousel--item__desc{color:var(--ds-palette-black-95);font-family:var(--ds-fontFamily-body);font-size:var(--ds-fontSize-20);font-weight:var(--ds-fontWeight-regular);letter-spacing:var(--ds-letterSpacing-wide);line-height:var(--ds-lineHeight-large);-ms-hyphens:auto;hyphens:auto;text-wrap:pretty;-webkit-box-orient:vertical;-webkit-line-clamp:5;color:var(--grayscale-white);display:-webkit-box;font-style:normal;line-clamp:3;margin-bottom:2rem;overflow:hidden;text-overflow:ellipsis;text-wrap:pretty}@media (min-width: 60rem){.hero-carousel--item__desc{font-size:var(--ds-fontSize-22)}}@media (min-width: 60rem){.hero-carousel--item__desc{margin-bottom:2.5rem}}.hero-carousel--item__image{--swiper-preloader-color:var(--brand-main-light);position:relative;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}@media (min-width: 60rem){.hero-carousel--item__image{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:10px 0}}.hero-carousel--item__image .hy-image__image{display:block;height:100%;min-height:205px;width:100%}.hero-carousel--item__image img{-o-object-fit:cover;object-fit:cover}";
5570
5590
  const HyHeroCarouselStyle0 = hyHeroCarouselCss;
5571
5591
 
5572
5592
  const HyHeroCarousel = class {
@@ -5597,6 +5617,7 @@ const HyHeroCarousel = class {
5597
5617
  navigation: {
5598
5618
  nextEl: ".swiper-button-next",
5599
5619
  prevEl: ".swiper-button-prev",
5620
+ addIcons: false,
5600
5621
  },
5601
5622
  pagination: {
5602
5623
  el: ".swiper-pagination",
@@ -5623,7 +5644,7 @@ const HyHeroCarousel = class {
5623
5644
  }
5624
5645
  render() {
5625
5646
  const carouselContentClasses = ["hero-carousel--item__content", this.itemCount > 1 ? "has-pagination" : ""].join(" ");
5626
- return (index.h("div", { key: '9d96a22771922ed3b7df014f05beaa96ff027288', class: "hero-carousel-container" }, index.h("div", { key: '4143fde98f6b15317ae8c7b4450b517cfe1c45d2', class: "swiper" }, index.h("div", { key: '2043f7e03ce07bea346d8bcbf89f65929f51f858', class: "swiper-wrapper" }, this._data["items"] &&
5647
+ return (index.h("div", { key: '6edb4f0431901d93792c815d98c3d1b0530b028d', class: "hero-carousel-container" }, index.h("div", { key: '56818055b029489cd68ec5bd242c7fa0f6cbda65', class: "swiper" }, index.h("div", { key: '10e2871e58c3eac5fe6a5793d435a0ebe126bb25', class: "swiper-wrapper" }, this._data["items"] &&
5627
5648
  this._data["items"].map((i, index$1) => {
5628
5649
  const currentIndex = index$1;
5629
5650
  const srcSet = JSON.parse(i.image_sources);