@itcenteratunihelsinki/huds-lib 0.11.0 → 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 (135) 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-person-profile.js +4 -4
  25. package/components/hy-search-field2.js +1 -1
  26. package/components/hy-shortcuts.js +1 -1
  27. package/components/hy-site-header.js +2 -2
  28. package/components/hy-tabs2.js +1 -1
  29. package/components/link-box.js +1 -1
  30. package/components/menu-language-item.js +1 -1
  31. package/components/menu-language.js +1 -1
  32. package/components/site-logo.js +1 -1
  33. package/components/site-search.js +1 -1
  34. package/dist/cjs/hy-accordion-container_2.cjs.entry.js +1 -1
  35. package/dist/cjs/hy-anchor-link-list.cjs.entry.js +1 -1
  36. package/dist/cjs/hy-breadcrumbs_15.cjs.entry.js +11 -11
  37. package/dist/cjs/hy-checkbox.cjs.entry.js +1 -1
  38. package/dist/cjs/hy-content-list_2.cjs.entry.js +1 -1
  39. package/dist/cjs/hy-crisis-banner.cjs.entry.js +1 -1
  40. package/dist/cjs/hy-cta-button.cjs.entry.js +1 -1
  41. package/dist/cjs/hy-cta-link.cjs.entry.js +1 -1
  42. package/dist/cjs/hy-dropdown.cjs.entry.js +1 -1
  43. package/dist/cjs/hy-event-item.cjs.entry.js +1 -1
  44. package/dist/cjs/hy-events.cjs.entry.js +1 -1
  45. package/dist/cjs/hy-filter-group_6.cjs.entry.js +3 -3
  46. package/dist/cjs/hy-general-list_2.cjs.entry.js +1 -1
  47. package/dist/cjs/hy-hero-carousel.cjs.entry.js +358 -337
  48. package/dist/cjs/hy-link-box_2.cjs.entry.js +1 -1
  49. package/dist/cjs/hy-menu-main-group.cjs.entry.js +1 -1
  50. package/dist/cjs/hy-opening-hours_2.cjs.entry.js +1 -1
  51. package/dist/cjs/hy-pager_2.cjs.entry.js +1 -1
  52. package/dist/cjs/hy-person-card.cjs.entry.js +1 -1
  53. package/dist/cjs/hy-person-profile.cjs.entry.js +4 -4
  54. package/dist/cjs/hy-shortcuts.cjs.entry.js +1 -1
  55. package/dist/cjs/hy-tabs_2.cjs.entry.js +1 -1
  56. package/dist/collection/components/footer/hy-footer-action/hy-footer-action.css +6 -0
  57. package/dist/collection/components/footer/hy-footer-base/hy-footer-base.css +13 -1
  58. package/dist/collection/components/footer/hy-footer-link-item/hy-footer-link-item.css +18 -0
  59. package/dist/collection/components/hy-accordion-item/accordion-item.css +6 -0
  60. package/dist/collection/components/hy-anchor-link-list/hy-anchor-link-list.css +12 -0
  61. package/dist/collection/components/hy-breadcrumbs/hy-breadcrumbs.css +12 -0
  62. package/dist/collection/components/hy-checkbox/hy-checkbox.css +12 -8
  63. package/dist/collection/components/hy-content-lists/hy-content-list-item/hy-content-list-item.css +6 -0
  64. package/dist/collection/components/hy-crisis-banner/hy-crisis-banner.css +2 -2
  65. package/dist/collection/components/hy-cta-button/cta-button.css +63 -15
  66. package/dist/collection/components/hy-cta-link/cta-link.css +8 -2
  67. package/dist/collection/components/hy-dropdown/hy-dropdown.css +1 -1
  68. package/dist/collection/components/hy-event-item/hy-event-item.css +4 -4
  69. package/dist/collection/components/hy-events/hy-events.css +6 -0
  70. package/dist/collection/components/hy-filter-group/hy-filter-group.css +6 -0
  71. package/dist/collection/components/hy-filter-list-type/hy-filter-list-type.css +12 -0
  72. package/dist/collection/components/hy-filter-visibility-tool/hy-filter-visibility-tool.css +8 -4
  73. package/dist/collection/components/hy-general-list-item/hy-general-list-item.css +8 -2
  74. package/dist/collection/components/hy-hero-carousel/hy-hero-carousel.css +3 -22
  75. package/dist/collection/components/hy-hero-carousel/hy-hero-carousel.js +2 -1
  76. package/dist/collection/components/hy-link-box/link-box.css +4 -1
  77. package/dist/collection/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.css +29 -2
  78. package/dist/collection/components/hy-navigation/menu-language/menu-language.css +11 -3
  79. package/dist/collection/components/hy-navigation/menu-language-item/menu-language-item.css +6 -0
  80. package/dist/collection/components/hy-opening-hours/hy-opening-hours.css +9 -2
  81. package/dist/collection/components/hy-pagination/hy-pager-item/hy-pager-item.css +6 -0
  82. package/dist/collection/components/hy-person-card/hy-person-card.css +1 -1
  83. package/dist/collection/components/hy-person-profile/person-profile.js +4 -4
  84. package/dist/collection/components/hy-search-field/hy-search-field.css +12 -6
  85. package/dist/collection/components/hy-shortcuts/hy-shortcuts.css +6 -0
  86. package/dist/collection/components/hy-site-header/site-header.css +24 -4
  87. package/dist/collection/components/hy-site-header/site-header.js +1 -1
  88. package/dist/collection/components/hy-site-header/site-logo/site-logo.css +6 -4
  89. package/dist/collection/components/hy-site-header/site-search/site-search.css +20 -6
  90. package/dist/collection/components/hy-tabs/hy-tabs.css +12 -4
  91. package/dist/esm/hy-accordion-container_2.entry.js +1 -1
  92. package/dist/esm/hy-anchor-link-list.entry.js +1 -1
  93. package/dist/esm/hy-breadcrumbs_15.entry.js +11 -11
  94. package/dist/esm/hy-checkbox.entry.js +1 -1
  95. package/dist/esm/hy-content-list_2.entry.js +1 -1
  96. package/dist/esm/hy-crisis-banner.entry.js +1 -1
  97. package/dist/esm/hy-cta-button.entry.js +1 -1
  98. package/dist/esm/hy-cta-link.entry.js +1 -1
  99. package/dist/esm/hy-dropdown.entry.js +1 -1
  100. package/dist/esm/hy-event-item.entry.js +1 -1
  101. package/dist/esm/hy-events.entry.js +1 -1
  102. package/dist/esm/hy-filter-group_6.entry.js +3 -3
  103. package/dist/esm/hy-general-list_2.entry.js +1 -1
  104. package/dist/esm/hy-hero-carousel.entry.js +358 -337
  105. package/dist/esm/hy-link-box_2.entry.js +1 -1
  106. package/dist/esm/hy-menu-main-group.entry.js +1 -1
  107. package/dist/esm/hy-opening-hours_2.entry.js +1 -1
  108. package/dist/esm/hy-pager_2.entry.js +1 -1
  109. package/dist/esm/hy-person-card.entry.js +1 -1
  110. package/dist/esm/hy-person-profile.entry.js +4 -4
  111. package/dist/esm/hy-shortcuts.entry.js +1 -1
  112. package/dist/esm/hy-tabs_2.entry.js +1 -1
  113. package/dist/huds-lib/hy-accordion-container_2.entry.js +1 -1
  114. package/dist/huds-lib/hy-anchor-link-list.entry.js +1 -1
  115. package/dist/huds-lib/hy-breadcrumbs_15.entry.js +1 -1
  116. package/dist/huds-lib/hy-checkbox.entry.js +1 -1
  117. package/dist/huds-lib/hy-content-list_2.entry.js +1 -1
  118. package/dist/huds-lib/hy-crisis-banner.entry.js +1 -1
  119. package/dist/huds-lib/hy-cta-button.entry.js +1 -1
  120. package/dist/huds-lib/hy-cta-link.entry.js +1 -1
  121. package/dist/huds-lib/hy-dropdown.entry.js +1 -1
  122. package/dist/huds-lib/hy-event-item.entry.js +1 -1
  123. package/dist/huds-lib/hy-events.entry.js +1 -1
  124. package/dist/huds-lib/hy-filter-group_6.entry.js +1 -1
  125. package/dist/huds-lib/hy-general-list_2.entry.js +1 -1
  126. package/dist/huds-lib/hy-hero-carousel.entry.js +1 -1
  127. package/dist/huds-lib/hy-link-box_2.entry.js +1 -1
  128. package/dist/huds-lib/hy-menu-main-group.entry.js +1 -1
  129. package/dist/huds-lib/hy-opening-hours_2.entry.js +1 -1
  130. package/dist/huds-lib/hy-pager_2.entry.js +1 -1
  131. package/dist/huds-lib/hy-person-card.entry.js +1 -1
  132. package/dist/huds-lib/hy-person-profile.entry.js +1 -1
  133. package/dist/huds-lib/hy-shortcuts.entry.js +1 -1
  134. package/dist/huds-lib/hy-tabs_2.entry.js +1 -1
  135. package/package.json +3 -3
@@ -3,28 +3,23 @@ import { j as jsonParserWorker } from './globalScript-3f479486.js';
3
3
  import { d as CtaLinkButtonVariants } from './utils-1e7f5184.js';
4
4
 
5
5
  /**
6
- * SSR Window 4.0.2
6
+ * SSR Window 5.0.1
7
7
  * Better handling for window object in SSR environment
8
8
  * https://github.com/nolimits4web/ssr-window
9
9
  *
10
- * Copyright 2021, Vladimir Kharlampidi
10
+ * Copyright 2025, Vladimir Kharlampidi
11
11
  *
12
12
  * Licensed under MIT
13
13
  *
14
- * Released on: December 13, 2021
14
+ * Released on: June 27, 2025
15
15
  */
16
16
  /* eslint-disable no-param-reassign */
17
17
  function isObject$1(obj) {
18
18
  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
19
19
  }
20
- function extend$1(target, src) {
21
- if (target === void 0) {
22
- target = {};
23
- }
24
- if (src === void 0) {
25
- src = {};
26
- }
27
- Object.keys(src).forEach(key => {
20
+ function extend$1(target = {}, src = {}) {
21
+ const noExtend = ['__proto__', 'constructor', 'prototype'];
22
+ Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {
28
23
  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) {
29
24
  extend$1(target[key], src[key]);
30
25
  }
@@ -146,10 +141,7 @@ function getWindow() {
146
141
  return win;
147
142
  }
148
143
 
149
- function classesToTokens(classes) {
150
- if (classes === void 0) {
151
- classes = '';
152
- }
144
+ function classesToTokens(classes = '') {
153
145
  return classes.trim().split(' ').filter(c => !!c.trim());
154
146
  }
155
147
 
@@ -168,10 +160,7 @@ function deleteProps(obj) {
168
160
  }
169
161
  });
170
162
  }
171
- function nextTick(callback, delay) {
172
- if (delay === void 0) {
173
- delay = 0;
174
- }
163
+ function nextTick(callback, delay = 0) {
175
164
  return setTimeout(callback, delay);
176
165
  }
177
166
  function now() {
@@ -191,10 +180,7 @@ function getComputedStyle$1(el) {
191
180
  }
192
181
  return style;
193
182
  }
194
- function getTranslate(el, axis) {
195
- if (axis === void 0) {
196
- axis = 'x';
197
- }
183
+ function getTranslate(el, axis = 'x') {
198
184
  const window = getWindow();
199
185
  let matrix;
200
186
  let curTransform;
@@ -240,13 +226,12 @@ function isNode(node) {
240
226
  }
241
227
  return node && (node.nodeType === 1 || node.nodeType === 11);
242
228
  }
243
- function extend() {
244
- const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
245
- const noExtend = ['__proto__', 'constructor', 'prototype'];
246
- for (let i = 1; i < arguments.length; i += 1) {
247
- const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
229
+ function extend(...args) {
230
+ const to = Object(args[0]);
231
+ for (let i = 1; i < args.length; i += 1) {
232
+ const nextSource = args[i];
248
233
  if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
249
- const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
234
+ const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype');
250
235
  for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
251
236
  const nextKey = keysArray[nextIndex];
252
237
  const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
@@ -276,12 +261,11 @@ function extend() {
276
261
  function setCSSProperty(el, varName, varValue) {
277
262
  el.style.setProperty(varName, varValue);
278
263
  }
279
- function animateCSSModeScroll(_ref) {
280
- let {
281
- swiper,
282
- targetPosition,
283
- side
284
- } = _ref;
264
+ function animateCSSModeScroll({
265
+ swiper,
266
+ targetPosition,
267
+ side
268
+ }) {
285
269
  const window = getWindow();
286
270
  const startPosition = -swiper.translate;
287
271
  let startTime = null;
@@ -326,12 +310,10 @@ function animateCSSModeScroll(_ref) {
326
310
  function getSlideTransformEl(slideEl) {
327
311
  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
328
312
  }
329
- function elementChildren(element, selector) {
330
- if (selector === void 0) {
331
- selector = '';
332
- }
313
+ function elementChildren(element, selector = '') {
314
+ const window = getWindow();
333
315
  const children = [...element.children];
334
- if (element instanceof HTMLSlotElement) {
316
+ if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {
335
317
  children.push(...element.assignedElements());
336
318
  }
337
319
  if (!selector) {
@@ -339,11 +321,26 @@ function elementChildren(element, selector) {
339
321
  }
340
322
  return children.filter(el => el.matches(selector));
341
323
  }
324
+ function elementIsChildOfSlot(el, slot) {
325
+ // Breadth-first search through all parent's children and assigned elements
326
+ const elementsQueue = [slot];
327
+ while (elementsQueue.length > 0) {
328
+ const elementToCheck = elementsQueue.shift();
329
+ if (el === elementToCheck) {
330
+ return true;
331
+ }
332
+ elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));
333
+ }
334
+ }
342
335
  function elementIsChildOf(el, parent) {
343
- const isChild = parent.contains(el);
344
- if (!isChild && parent instanceof HTMLSlotElement) {
336
+ const window = getWindow();
337
+ let isChild = parent.contains(el);
338
+ if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {
345
339
  const children = [...parent.assignedElements()];
346
- return children.includes(el);
340
+ isChild = children.includes(el);
341
+ if (!isChild) {
342
+ isChild = elementIsChildOfSlot(el, parent);
343
+ }
347
344
  }
348
345
  return isChild;
349
346
  }
@@ -355,10 +352,7 @@ function showWarning(text) {
355
352
  // err
356
353
  }
357
354
  }
358
- function createElement(tag, classes) {
359
- if (classes === void 0) {
360
- classes = [];
361
- }
355
+ function createElement(tag, classes = []) {
362
356
  const el = document.createElement(tag);
363
357
  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));
364
358
  return el;
@@ -435,6 +429,15 @@ function elementOuterSize(el, size, includeMargins) {
435
429
  function makeElementsArray(el) {
436
430
  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
437
431
  }
432
+ function setInnerHTML(el, html = '') {
433
+ if (typeof trustedTypes !== 'undefined') {
434
+ el.innerHTML = trustedTypes.createPolicy('html', {
435
+ createHTML: s => s
436
+ }).createHTML(html);
437
+ } else {
438
+ el.innerHTML = html;
439
+ }
440
+ }
438
441
 
439
442
  let support;
440
443
  function calcSupport() {
@@ -453,10 +456,9 @@ function getSupport() {
453
456
  }
454
457
 
455
458
  let deviceCached;
456
- function calcDevice(_temp) {
457
- let {
458
- userAgent
459
- } = _temp === void 0 ? {} : _temp;
459
+ function calcDevice({
460
+ userAgent
461
+ } = {}) {
460
462
  const support = getSupport();
461
463
  const window = getWindow();
462
464
  const platform = window.navigator.platform;
@@ -468,7 +470,7 @@ function calcDevice(_temp) {
468
470
  const screenWidth = window.screen.width;
469
471
  const screenHeight = window.screen.height;
470
472
  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
471
- let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
473
+ let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/);
472
474
  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
473
475
  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
474
476
  const windows = platform === 'Win32';
@@ -495,10 +497,7 @@ function calcDevice(_temp) {
495
497
  // Export object
496
498
  return device;
497
499
  }
498
- function getDevice(overrides) {
499
- if (overrides === void 0) {
500
- overrides = {};
501
- }
500
+ function getDevice(overrides = {}) {
502
501
  if (!deviceCached) {
503
502
  deviceCached = calcDevice(overrides);
504
503
  }
@@ -538,12 +537,11 @@ function getBrowser() {
538
537
  return browser;
539
538
  }
540
539
 
541
- function Resize(_ref) {
542
- let {
543
- swiper,
544
- on,
545
- emit
546
- } = _ref;
540
+ function Resize({
541
+ swiper,
542
+ on,
543
+ emit
544
+ }) {
547
545
  const window = getWindow();
548
546
  let observer = null;
549
547
  let animationFrame = null;
@@ -562,12 +560,11 @@ function Resize(_ref) {
562
560
  } = swiper;
563
561
  let newWidth = width;
564
562
  let newHeight = height;
565
- entries.forEach(_ref2 => {
566
- let {
567
- contentBoxSize,
568
- contentRect,
569
- target
570
- } = _ref2;
563
+ entries.forEach(({
564
+ contentBoxSize,
565
+ contentRect,
566
+ target
567
+ }) => {
571
568
  if (target && target !== swiper.el) return;
572
569
  newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
573
570
  newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
@@ -607,19 +604,15 @@ function Resize(_ref) {
607
604
  });
608
605
  }
609
606
 
610
- function Observer(_ref) {
611
- let {
612
- swiper,
613
- extendParams,
614
- on,
615
- emit
616
- } = _ref;
607
+ function Observer({
608
+ swiper,
609
+ extendParams,
610
+ on,
611
+ emit
612
+ }) {
617
613
  const observers = [];
618
614
  const window = getWindow();
619
- const attach = function (target, options) {
620
- if (options === void 0) {
621
- options = {};
622
- }
615
+ const attach = (target, options = {}) => {
623
616
  const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
624
617
  const observer = new ObserverFunc(mutations => {
625
618
  // The observerUpdate event should only be triggered
@@ -697,14 +690,11 @@ var eventsEmitter = {
697
690
  const self = this;
698
691
  if (!self.eventsListeners || self.destroyed) return self;
699
692
  if (typeof handler !== 'function') return self;
700
- function onceHandler() {
693
+ function onceHandler(...args) {
701
694
  self.off(events, onceHandler);
702
695
  if (onceHandler.__emitterProxy) {
703
696
  delete onceHandler.__emitterProxy;
704
697
  }
705
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
706
- args[_key] = arguments[_key];
707
- }
708
698
  handler.apply(self, args);
709
699
  }
710
700
  onceHandler.__emitterProxy = handler;
@@ -747,16 +737,13 @@ var eventsEmitter = {
747
737
  });
748
738
  return self;
749
739
  },
750
- emit() {
740
+ emit(...args) {
751
741
  const self = this;
752
742
  if (!self.eventsListeners || self.destroyed) return self;
753
743
  if (!self.eventsListeners) return self;
754
744
  let events;
755
745
  let data;
756
746
  let context;
757
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
758
- args[_key2] = arguments[_key2];
759
- }
760
747
  if (typeof args[0] === 'string' || Array.isArray(args[0])) {
761
748
  events = args[0];
762
749
  data = args.slice(1, args.length);
@@ -824,7 +811,6 @@ function updateSlides() {
824
811
  const {
825
812
  wrapperEl,
826
813
  slidesEl,
827
- size: swiperSize,
828
814
  rtlTranslate: rtl,
829
815
  wrongRTL
830
816
  } = swiper;
@@ -845,6 +831,7 @@ function updateSlides() {
845
831
  }
846
832
  const previousSnapGridLength = swiper.snapGrid.length;
847
833
  const previousSlidesGridLength = swiper.slidesGrid.length;
834
+ const swiperSize = swiper.size - offsetBefore - offsetAfter;
848
835
  let spaceBetween = params.spaceBetween;
849
836
  let slidePosition = -offsetBefore;
850
837
  let prevSlideSize = 0;
@@ -857,7 +844,7 @@ function updateSlides() {
857
844
  } else if (typeof spaceBetween === 'string') {
858
845
  spaceBetween = parseFloat(spaceBetween);
859
846
  }
860
- swiper.virtualSize = -spaceBetween;
847
+ swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;
861
848
 
862
849
  // reset margins
863
850
  slides.forEach(slideEl => {
@@ -875,6 +862,12 @@ function updateSlides() {
875
862
  setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');
876
863
  setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');
877
864
  }
865
+
866
+ // set cssMode offsets
867
+ if (params.cssMode) {
868
+ setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`);
869
+ setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`);
870
+ }
878
871
  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
879
872
  if (gridEnabled) {
880
873
  swiper.grid.initSlides(slides);
@@ -889,16 +882,25 @@ function updateSlides() {
889
882
  }).length > 0;
890
883
  for (let i = 0; i < slidesLength; i += 1) {
891
884
  slideSize = 0;
892
- let slide;
893
- if (slides[i]) slide = slides[i];
894
- if (gridEnabled) {
895
- swiper.grid.updateSlide(i, slide, slides);
885
+ const slide = slides[i];
886
+ if (slide) {
887
+ if (gridEnabled) {
888
+ swiper.grid.updateSlide(i, slide, slides);
889
+ }
890
+ if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
896
891
  }
897
- if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
898
892
 
899
- if (params.slidesPerView === 'auto') {
893
+ if (isVirtual && params.slidesPerView === 'auto') {
894
+ if (params.virtual.slidesPerViewAutoSlideSize) {
895
+ slideSize = params.virtual.slidesPerViewAutoSlideSize;
896
+ }
897
+ if (slideSize && slide) {
898
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
899
+ slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
900
+ }
901
+ } else if (params.slidesPerView === 'auto') {
900
902
  if (shouldResetSlideSize) {
901
- slides[i].style[swiper.getDirectionLabel('width')] = ``;
903
+ slide.style[swiper.getDirectionLabel('width')] = ``;
902
904
  }
903
905
  const slideStyles = getComputedStyle(slide);
904
906
  const currentTransform = slide.style.transform;
@@ -939,12 +941,12 @@ function updateSlides() {
939
941
  } else {
940
942
  slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
941
943
  if (params.roundLengths) slideSize = Math.floor(slideSize);
942
- if (slides[i]) {
943
- slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
944
+ if (slide) {
945
+ slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
944
946
  }
945
947
  }
946
- if (slides[i]) {
947
- slides[i].swiperSlideSize = slideSize;
948
+ if (slide) {
949
+ slide.swiperSlideSize = slideSize;
948
950
  }
949
951
  slidesSizesGrid.push(slideSize);
950
952
  if (params.centeredSlides) {
@@ -978,17 +980,52 @@ function updateSlides() {
978
980
 
979
981
  // Remove last grid elements depending on width
980
982
  if (!params.centeredSlides) {
983
+ // Check if snapToSlideEdge should be applied
984
+ const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0;
985
+ const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView);
986
+
987
+ // Calculate the last allowed snap index when snapToSlideEdge is enabled
988
+ // This ensures minimum slides are visible at the end
989
+ let lastAllowedSnapIndex = snapGrid.length;
990
+ if (shouldSnapToSlideEdge) {
991
+ let minVisibleSlides;
992
+ if (params.slidesPerView === 'auto') {
993
+ // For 'auto' mode, calculate how many slides fit based on actual sizes
994
+ minVisibleSlides = 1;
995
+ let accumulatedSize = 0;
996
+ for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) {
997
+ accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0);
998
+ if (accumulatedSize <= swiperSize) {
999
+ minVisibleSlides = slidesSizesGrid.length - i;
1000
+ } else {
1001
+ break;
1002
+ }
1003
+ }
1004
+ } else {
1005
+ minVisibleSlides = Math.floor(params.slidesPerView);
1006
+ }
1007
+ lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0);
1008
+ }
981
1009
  const newSlidesGrid = [];
982
1010
  for (let i = 0; i < snapGrid.length; i += 1) {
983
1011
  let slidesGridItem = snapGrid[i];
984
1012
  if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
985
- if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1013
+ if (shouldSnapToSlideEdge) {
1014
+ // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex
1015
+ if (i <= lastAllowedSnapIndex) {
1016
+ newSlidesGrid.push(slidesGridItem);
1017
+ }
1018
+ } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1019
+ // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area
986
1020
  newSlidesGrid.push(slidesGridItem);
987
1021
  }
988
1022
  }
989
1023
  snapGrid = newSlidesGrid;
990
1024
  if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
991
- snapGrid.push(swiper.virtualSize - swiperSize);
1025
+ // Only add edge-aligned snap if snapToSlideEdge is not enabled
1026
+ if (!shouldSnapToSlideEdge) {
1027
+ snapGrid.push(swiper.virtualSize - swiperSize);
1028
+ }
992
1029
  }
993
1030
  }
994
1031
  if (isVirtual && params.loop) {
@@ -1040,9 +1077,8 @@ function updateSlides() {
1040
1077
  allSlidesSize += slideSizeValue + (spaceBetween || 0);
1041
1078
  });
1042
1079
  allSlidesSize -= spaceBetween;
1043
- const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
1044
- if (allSlidesSize + offsetSize < swiperSize) {
1045
- const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
1080
+ if (allSlidesSize < swiperSize) {
1081
+ const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
1046
1082
  snapGrid.forEach((snap, snapIndex) => {
1047
1083
  snapGrid[snapIndex] = snap - allSlidesOffset;
1048
1084
  });
@@ -1153,10 +1189,7 @@ const toggleSlideClasses$1 = (slideEl, condition, className) => {
1153
1189
  slideEl.classList.remove(className);
1154
1190
  }
1155
1191
  };
1156
- function updateSlidesProgress(translate) {
1157
- if (translate === void 0) {
1158
- translate = this && this.translate || 0;
1159
- }
1192
+ function updateSlidesProgress(translate = this && this.translate || 0) {
1160
1193
  const swiper = this;
1161
1194
  const params = swiper.params;
1162
1195
  const {
@@ -1296,9 +1329,9 @@ function updateSlidesClasses() {
1296
1329
  }
1297
1330
  } else {
1298
1331
  if (gridEnabled) {
1299
- activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];
1300
- nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];
1301
- prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];
1332
+ activeSlide = slides.find(slideEl => slideEl.column === activeIndex);
1333
+ nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);
1334
+ prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);
1302
1335
  } else {
1303
1336
  activeSlide = slides[activeIndex];
1304
1337
  }
@@ -1340,12 +1373,13 @@ const processLazyPreloader = (swiper, imageEl) => {
1340
1373
  requestAnimationFrame(() => {
1341
1374
  if (slideEl.shadowRoot) {
1342
1375
  lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
1343
- if (lazyEl) lazyEl.remove();
1376
+ if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();
1344
1377
  }
1345
1378
  });
1346
1379
  }
1347
1380
  }
1348
- if (lazyEl) lazyEl.remove();
1381
+ // Skip removal if managed by React/Vue component
1382
+ if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();
1349
1383
  }
1350
1384
  };
1351
1385
  const unlazy = (swiper, index) => {
@@ -1460,10 +1494,14 @@ function updateActiveIndex(newActiveIndex) {
1460
1494
 
1461
1495
  // Get real index
1462
1496
  let realIndex;
1463
- if (swiper.virtual && params.virtual.enabled && params.loop) {
1464
- realIndex = getVirtualRealIndex(activeIndex);
1497
+ if (swiper.virtual && params.virtual.enabled) {
1498
+ if (params.loop) {
1499
+ realIndex = getVirtualRealIndex(activeIndex);
1500
+ } else {
1501
+ realIndex = activeIndex;
1502
+ }
1465
1503
  } else if (gridEnabled) {
1466
- const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];
1504
+ const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);
1467
1505
  let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
1468
1506
  if (Number.isNaN(activeSlideIndex)) {
1469
1507
  activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
@@ -1551,10 +1589,7 @@ var update = {
1551
1589
  updateClickedSlide
1552
1590
  };
1553
1591
 
1554
- function getSwiperTranslate(axis) {
1555
- if (axis === void 0) {
1556
- axis = this.isHorizontal() ? 'x' : 'y';
1557
- }
1592
+ function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
1558
1593
  const swiper = this;
1559
1594
  const {
1560
1595
  params,
@@ -1629,19 +1664,7 @@ function maxTranslate() {
1629
1664
  return -this.snapGrid[this.snapGrid.length - 1];
1630
1665
  }
1631
1666
 
1632
- function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
1633
- if (translate === void 0) {
1634
- translate = 0;
1635
- }
1636
- if (speed === void 0) {
1637
- speed = this.params.speed;
1638
- }
1639
- if (runCallbacks === void 0) {
1640
- runCallbacks = true;
1641
- }
1642
- if (translateBounds === void 0) {
1643
- translateBounds = true;
1644
- }
1667
+ function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1645
1668
  const swiper = this;
1646
1669
  const {
1647
1670
  params,
@@ -1729,13 +1752,12 @@ function setTransition(duration, byController) {
1729
1752
  swiper.emit('setTransition', duration, byController);
1730
1753
  }
1731
1754
 
1732
- function transitionEmit(_ref) {
1733
- let {
1734
- swiper,
1735
- runCallbacks,
1736
- direction,
1737
- step
1738
- } = _ref;
1755
+ function transitionEmit({
1756
+ swiper,
1757
+ runCallbacks,
1758
+ direction,
1759
+ step
1760
+ }) {
1739
1761
  const {
1740
1762
  activeIndex,
1741
1763
  previousIndex
@@ -1745,11 +1767,9 @@ function transitionEmit(_ref) {
1745
1767
  if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
1746
1768
  }
1747
1769
  swiper.emit(`transition${step}`);
1748
- if (runCallbacks && activeIndex !== previousIndex) {
1749
- if (dir === 'reset') {
1750
- swiper.emit(`slideResetTransition${step}`);
1751
- return;
1752
- }
1770
+ if (runCallbacks && dir === 'reset') {
1771
+ swiper.emit(`slideResetTransition${step}`);
1772
+ } else if (runCallbacks && activeIndex !== previousIndex) {
1753
1773
  swiper.emit(`slideChangeTransition${step}`);
1754
1774
  if (dir === 'next') {
1755
1775
  swiper.emit(`slideNextTransition${step}`);
@@ -1759,10 +1779,7 @@ function transitionEmit(_ref) {
1759
1779
  }
1760
1780
  }
1761
1781
 
1762
- function transitionStart(runCallbacks, direction) {
1763
- if (runCallbacks === void 0) {
1764
- runCallbacks = true;
1765
- }
1782
+ function transitionStart(runCallbacks = true, direction) {
1766
1783
  const swiper = this;
1767
1784
  const {
1768
1785
  params
@@ -1779,10 +1796,7 @@ function transitionStart(runCallbacks, direction) {
1779
1796
  });
1780
1797
  }
1781
1798
 
1782
- function transitionEnd(runCallbacks, direction) {
1783
- if (runCallbacks === void 0) {
1784
- runCallbacks = true;
1785
- }
1799
+ function transitionEnd(runCallbacks = true, direction) {
1786
1800
  const swiper = this;
1787
1801
  const {
1788
1802
  params
@@ -1804,13 +1818,7 @@ var transition = {
1804
1818
  transitionEnd
1805
1819
  };
1806
1820
 
1807
- function slideTo(index, speed, runCallbacks, internal, initial) {
1808
- if (index === void 0) {
1809
- index = 0;
1810
- }
1811
- if (runCallbacks === void 0) {
1812
- runCallbacks = true;
1813
- }
1821
+ function slideTo(index = 0, speed, runCallbacks = true, internal, initial) {
1814
1822
  if (typeof index === 'string') {
1815
1823
  index = parseInt(index, 10);
1816
1824
  }
@@ -1932,6 +1940,11 @@ function slideTo(index, speed, runCallbacks, internal, initial) {
1932
1940
  }
1933
1941
  return true;
1934
1942
  }
1943
+ const browser = getBrowser();
1944
+ const isSafari = browser.isSafari;
1945
+ if (isVirtual && !initial && isSafari && swiper.isElement) {
1946
+ swiper.virtual.update(false, false, slideIndex);
1947
+ }
1935
1948
  swiper.setTransition(speed);
1936
1949
  swiper.setTranslate(translate);
1937
1950
  swiper.updateActiveIndex(slideIndex);
@@ -1957,13 +1970,7 @@ function slideTo(index, speed, runCallbacks, internal, initial) {
1957
1970
  return true;
1958
1971
  }
1959
1972
 
1960
- function slideToLoop(index, speed, runCallbacks, internal) {
1961
- if (index === void 0) {
1962
- index = 0;
1963
- }
1964
- if (runCallbacks === void 0) {
1965
- runCallbacks = true;
1966
- }
1973
+ function slideToLoop(index = 0, speed, runCallbacks = true, internal) {
1967
1974
  if (typeof index === 'string') {
1968
1975
  const indexAsNumber = parseInt(index, 10);
1969
1976
  index = indexAsNumber;
@@ -1983,32 +1990,35 @@ function slideToLoop(index, speed, runCallbacks, internal) {
1983
1990
  let targetSlideIndex;
1984
1991
  if (gridEnabled) {
1985
1992
  const slideIndex = newIndex * swiper.params.grid.rows;
1986
- targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
1993
+ targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
1987
1994
  } else {
1988
1995
  targetSlideIndex = swiper.getSlideIndexByData(newIndex);
1989
1996
  }
1990
1997
  const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
1991
1998
  const {
1992
- centeredSlides
1999
+ centeredSlides,
2000
+ slidesOffsetBefore,
2001
+ slidesOffsetAfter
1993
2002
  } = swiper.params;
2003
+ const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;
1994
2004
  let slidesPerView = swiper.params.slidesPerView;
1995
2005
  if (slidesPerView === 'auto') {
1996
2006
  slidesPerView = swiper.slidesPerViewDynamic();
1997
2007
  } else {
1998
2008
  slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
1999
- if (centeredSlides && slidesPerView % 2 === 0) {
2009
+ if (bothDirections && slidesPerView % 2 === 0) {
2000
2010
  slidesPerView = slidesPerView + 1;
2001
2011
  }
2002
2012
  }
2003
2013
  let needLoopFix = cols - targetSlideIndex < slidesPerView;
2004
- if (centeredSlides) {
2014
+ if (bothDirections) {
2005
2015
  needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
2006
2016
  }
2007
- if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
2017
+ if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
2008
2018
  needLoopFix = false;
2009
2019
  }
2010
2020
  if (needLoopFix) {
2011
- const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
2021
+ const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
2012
2022
  swiper.loopFix({
2013
2023
  direction,
2014
2024
  slideTo: true,
@@ -2018,7 +2028,7 @@ function slideToLoop(index, speed, runCallbacks, internal) {
2018
2028
  }
2019
2029
  if (gridEnabled) {
2020
2030
  const slideIndex = newIndex * swiper.params.grid.rows;
2021
- newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
2031
+ newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
2022
2032
  } else {
2023
2033
  newIndex = swiper.getSlideIndexByData(newIndex);
2024
2034
  }
@@ -2031,10 +2041,7 @@ function slideToLoop(index, speed, runCallbacks, internal) {
2031
2041
  }
2032
2042
 
2033
2043
  /* eslint no-unused-vars: "off" */
2034
- function slideNext(speed, runCallbacks, internal) {
2035
- if (runCallbacks === void 0) {
2036
- runCallbacks = true;
2037
- }
2044
+ function slideNext(speed, runCallbacks = true, internal) {
2038
2045
  const swiper = this;
2039
2046
  const {
2040
2047
  enabled,
@@ -2072,10 +2079,7 @@ function slideNext(speed, runCallbacks, internal) {
2072
2079
  }
2073
2080
 
2074
2081
  /* eslint no-unused-vars: "off" */
2075
- function slidePrev(speed, runCallbacks, internal) {
2076
- if (runCallbacks === void 0) {
2077
- runCallbacks = true;
2078
- }
2082
+ function slidePrev(speed, runCallbacks = true, internal) {
2079
2083
  const swiper = this;
2080
2084
  const {
2081
2085
  params,
@@ -2105,8 +2109,9 @@ function slidePrev(speed, runCallbacks, internal) {
2105
2109
  }
2106
2110
  const normalizedTranslate = normalize(translate);
2107
2111
  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
2112
+ const isFreeMode = params.freeMode && params.freeMode.enabled;
2108
2113
  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2109
- if (typeof prevSnap === 'undefined' && params.cssMode) {
2114
+ if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {
2110
2115
  let prevSnapIndex;
2111
2116
  snapGrid.forEach((snap, snapIndex) => {
2112
2117
  if (normalizedTranslate >= snap) {
@@ -2115,7 +2120,7 @@ function slidePrev(speed, runCallbacks, internal) {
2115
2120
  }
2116
2121
  });
2117
2122
  if (typeof prevSnapIndex !== 'undefined') {
2118
- prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2123
+ prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2119
2124
  }
2120
2125
  }
2121
2126
  let prevIndex = 0;
@@ -2140,10 +2145,7 @@ function slidePrev(speed, runCallbacks, internal) {
2140
2145
  }
2141
2146
 
2142
2147
  /* eslint no-unused-vars: "off" */
2143
- function slideReset(speed, runCallbacks, internal) {
2144
- if (runCallbacks === void 0) {
2145
- runCallbacks = true;
2146
- }
2148
+ function slideReset(speed, runCallbacks = true, internal) {
2147
2149
  const swiper = this;
2148
2150
  if (swiper.destroyed) return;
2149
2151
  if (typeof speed === 'undefined') {
@@ -2153,13 +2155,7 @@ function slideReset(speed, runCallbacks, internal) {
2153
2155
  }
2154
2156
 
2155
2157
  /* eslint no-unused-vars: "off" */
2156
- function slideToClosest(speed, runCallbacks, internal, threshold) {
2157
- if (runCallbacks === void 0) {
2158
- runCallbacks = true;
2159
- }
2160
- if (threshold === void 0) {
2161
- threshold = 0.5;
2162
- }
2158
+ function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {
2163
2159
  const swiper = this;
2164
2160
  if (swiper.destroyed) return;
2165
2161
  if (typeof speed === 'undefined') {
@@ -2199,23 +2195,16 @@ function slideToClickedSlide() {
2199
2195
  slidesEl
2200
2196
  } = swiper;
2201
2197
  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2202
- let slideToIndex = swiper.clickedIndex;
2198
+ let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);
2203
2199
  let realIndex;
2204
2200
  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
2201
+ const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
2205
2202
  if (params.loop) {
2206
2203
  if (swiper.animating) return;
2207
2204
  realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
2208
2205
  if (params.centeredSlides) {
2209
- if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
2210
- swiper.loopFix();
2211
- slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
2212
- nextTick(() => {
2213
- swiper.slideTo(slideToIndex);
2214
- });
2215
- } else {
2216
- swiper.slideTo(slideToIndex);
2217
- }
2218
- } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2206
+ swiper.slideToLoop(realIndex);
2207
+ } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {
2219
2208
  swiper.loopFix();
2220
2209
  slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
2221
2210
  nextTick(() => {
@@ -2239,7 +2228,7 @@ var slide = {
2239
2228
  slideToClickedSlide
2240
2229
  };
2241
2230
 
2242
- function loopCreate(slideRealIndex) {
2231
+ function loopCreate(slideRealIndex, initial) {
2243
2232
  const swiper = this;
2244
2233
  const {
2245
2234
  params,
@@ -2252,7 +2241,20 @@ function loopCreate(slideRealIndex) {
2252
2241
  el.setAttribute('data-swiper-slide-index', index);
2253
2242
  });
2254
2243
  };
2244
+ const clearBlankSlides = () => {
2245
+ const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);
2246
+ slides.forEach(el => {
2247
+ el.remove();
2248
+ });
2249
+ if (slides.length > 0) {
2250
+ swiper.recalcSlides();
2251
+ swiper.updateSlides();
2252
+ }
2253
+ };
2255
2254
  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
2255
+ if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {
2256
+ clearBlankSlides();
2257
+ }
2256
2258
  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
2257
2259
  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
2258
2260
  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
@@ -2285,22 +2287,24 @@ function loopCreate(slideRealIndex) {
2285
2287
  } else {
2286
2288
  initSlides();
2287
2289
  }
2290
+ const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;
2288
2291
  swiper.loopFix({
2289
2292
  slideRealIndex,
2290
- direction: params.centeredSlides ? undefined : 'next'
2293
+ direction: bothDirections ? undefined : 'next',
2294
+ initial
2291
2295
  });
2292
2296
  }
2293
2297
 
2294
- function loopFix(_temp) {
2295
- let {
2296
- slideRealIndex,
2297
- slideTo = true,
2298
- direction,
2299
- setTranslate,
2300
- activeSlideIndex,
2301
- byController,
2302
- byMousewheel
2303
- } = _temp === void 0 ? {} : _temp;
2298
+ function loopFix({
2299
+ slideRealIndex,
2300
+ slideTo = true,
2301
+ direction,
2302
+ setTranslate,
2303
+ activeSlideIndex,
2304
+ initial,
2305
+ byController,
2306
+ byMousewheel
2307
+ } = {}) {
2304
2308
  const swiper = this;
2305
2309
  if (!swiper.params.loop) return;
2306
2310
  swiper.emit('beforeLoopFix');
@@ -2312,15 +2316,19 @@ function loopFix(_temp) {
2312
2316
  params
2313
2317
  } = swiper;
2314
2318
  const {
2315
- centeredSlides
2319
+ centeredSlides,
2320
+ slidesOffsetBefore,
2321
+ slidesOffsetAfter,
2322
+ initialSlide
2316
2323
  } = params;
2324
+ const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;
2317
2325
  swiper.allowSlidePrev = true;
2318
2326
  swiper.allowSlideNext = true;
2319
2327
  if (swiper.virtual && params.virtual.enabled) {
2320
2328
  if (slideTo) {
2321
- if (!params.centeredSlides && swiper.snapIndex === 0) {
2329
+ if (!bothDirections && swiper.snapIndex === 0) {
2322
2330
  swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
2323
- } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
2331
+ } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {
2324
2332
  swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
2325
2333
  } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
2326
2334
  swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
@@ -2336,28 +2344,30 @@ function loopFix(_temp) {
2336
2344
  slidesPerView = swiper.slidesPerViewDynamic();
2337
2345
  } else {
2338
2346
  slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
2339
- if (centeredSlides && slidesPerView % 2 === 0) {
2347
+ if (bothDirections && slidesPerView % 2 === 0) {
2340
2348
  slidesPerView = slidesPerView + 1;
2341
2349
  }
2342
2350
  }
2343
2351
  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
2344
- let loopedSlides = slidesPerGroup;
2352
+ let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;
2345
2353
  if (loopedSlides % slidesPerGroup !== 0) {
2346
2354
  loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
2347
2355
  }
2348
2356
  loopedSlides += params.loopAdditionalSlides;
2349
2357
  swiper.loopedSlides = loopedSlides;
2350
2358
  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
2351
- if (slides.length < slidesPerView + loopedSlides) {
2352
- 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');
2359
+ if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
2360
+ 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');
2353
2361
  } else if (gridEnabled && params.grid.fill === 'row') {
2354
2362
  showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');
2355
2363
  }
2356
2364
  const prependSlidesIndexes = [];
2357
2365
  const appendSlidesIndexes = [];
2358
- let activeIndex = swiper.activeIndex;
2366
+ const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
2367
+ const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;
2368
+ let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
2359
2369
  if (typeof activeSlideIndex === 'undefined') {
2360
- activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
2370
+ activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));
2361
2371
  } else {
2362
2372
  activeIndex = activeSlideIndex;
2363
2373
  }
@@ -2365,9 +2375,8 @@ function loopFix(_temp) {
2365
2375
  const isPrev = direction === 'prev' || !direction;
2366
2376
  let slidesPrepended = 0;
2367
2377
  let slidesAppended = 0;
2368
- const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
2369
2378
  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
2370
- const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
2379
+ const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
2371
2380
  // prepend last slides before start
2372
2381
  if (activeColIndexWithShift < loopedSlides) {
2373
2382
  slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
@@ -2387,6 +2396,9 @@ function loopFix(_temp) {
2387
2396
  }
2388
2397
  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
2389
2398
  slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
2399
+ if (isInitialOverflow) {
2400
+ slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
2401
+ }
2390
2402
  for (let i = 0; i < slidesAppended; i += 1) {
2391
2403
  const index = i - Math.floor(i / cols) * cols;
2392
2404
  if (gridEnabled) {
@@ -2402,6 +2414,14 @@ function loopFix(_temp) {
2402
2414
  requestAnimationFrame(() => {
2403
2415
  swiper.__preventObserver__ = false;
2404
2416
  });
2417
+ if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
2418
+ if (appendSlidesIndexes.includes(activeSlideIndex)) {
2419
+ appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
2420
+ }
2421
+ if (prependSlidesIndexes.includes(activeSlideIndex)) {
2422
+ prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
2423
+ }
2424
+ }
2405
2425
  if (isPrev) {
2406
2426
  prependSlidesIndexes.forEach(index => {
2407
2427
  slides[index].swiperLoopMoveDOM = true;
@@ -2502,7 +2522,7 @@ function loopDestroy() {
2502
2522
  params,
2503
2523
  slidesEl
2504
2524
  } = swiper;
2505
- if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
2525
+ if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
2506
2526
  swiper.recalcSlides();
2507
2527
  const newSlidesOrder = [];
2508
2528
  swiper.slides.forEach(slideEl => {
@@ -2563,10 +2583,7 @@ var grabCursor = {
2563
2583
  };
2564
2584
 
2565
2585
  // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
2566
- function closestElement(selector, base) {
2567
- if (base === void 0) {
2568
- base = this;
2569
- }
2586
+ function closestElement(selector, base = this) {
2570
2587
  function __closestFrom(el) {
2571
2588
  if (!el || el === getDocument() || el === getWindow()) return null;
2572
2589
  if (el.assignedSlot) el = el.assignedSlot;
@@ -2683,7 +2700,7 @@ function onTouchStart(event) {
2683
2700
  data.isTouched = false;
2684
2701
  }
2685
2702
  }
2686
- if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {
2703
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
2687
2704
  document.activeElement.blur();
2688
2705
  }
2689
2706
  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
@@ -2717,7 +2734,7 @@ function onTouchMove(event) {
2717
2734
  }
2718
2735
  let targetTouch;
2719
2736
  if (e.type === 'touchmove') {
2720
- targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
2737
+ targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
2721
2738
  if (!targetTouch || targetTouch.identifier !== data.touchId) return;
2722
2739
  } else {
2723
2740
  targetTouch = e;
@@ -2758,10 +2775,15 @@ function onTouchMove(event) {
2758
2775
  data.isMoved = false;
2759
2776
  return;
2760
2777
  }
2761
- } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
2778
+ } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
2779
+ return;
2780
+ } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
2762
2781
  return;
2763
2782
  }
2764
2783
  }
2784
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
2785
+ document.activeElement.blur();
2786
+ }
2765
2787
  if (document.activeElement) {
2766
2788
  if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
2767
2789
  data.isMoved = true;
@@ -2857,7 +2879,7 @@ function onTouchMove(event) {
2857
2879
  }
2858
2880
  let loopFixed;
2859
2881
  new Date().getTime();
2860
- if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
2882
+ if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
2861
2883
  Object.assign(touches, {
2862
2884
  startX: pageX,
2863
2885
  startY: pageY,
@@ -2965,7 +2987,7 @@ function onTouchEnd(event) {
2965
2987
  if (e.pointerId !== data.pointerId) return;
2966
2988
  targetTouch = e;
2967
2989
  } else {
2968
- targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
2990
+ targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
2969
2991
  if (!targetTouch || targetTouch.identifier !== data.touchId) return;
2970
2992
  }
2971
2993
  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
@@ -3142,7 +3164,8 @@ function onResize() {
3142
3164
  swiper.updateSlidesClasses();
3143
3165
  const isVirtualLoop = isVirtual && params.loop;
3144
3166
  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
3145
- swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3167
+ const slides = isVirtual ? swiper.virtual.slides : swiper.slides;
3168
+ swiper.slideTo(slides.length - 1, 0, false, true);
3146
3169
  } else {
3147
3170
  if (swiper.params.loop && !isVirtual) {
3148
3171
  swiper.slideToLoop(swiper.realIndex, 0, false, true);
@@ -3339,9 +3362,12 @@ function setBreakpoint() {
3339
3362
  } = swiper;
3340
3363
  const breakpoints = params.breakpoints;
3341
3364
  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
3365
+ const document = getDocument();
3342
3366
 
3343
- // Get breakpoint for window width and update parameters
3344
- const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
3367
+ // Get breakpoint for window/container width and update parameters
3368
+ const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';
3369
+ const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);
3370
+ const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);
3345
3371
  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
3346
3372
  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
3347
3373
  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
@@ -3414,10 +3440,7 @@ function setBreakpoint() {
3414
3440
  swiper.emit('breakpoint', breakpointParams);
3415
3441
  }
3416
3442
 
3417
- function getBreakpoint(breakpoints, base, containerEl) {
3418
- if (base === void 0) {
3419
- base = 'window';
3420
- }
3443
+ function getBreakpoint(breakpoints, base = 'window', containerEl) {
3421
3444
  if (!breakpoints || base === 'container' && !containerEl) return undefined;
3422
3445
  let breakpoint = false;
3423
3446
  const window = getWindow();
@@ -3612,6 +3635,7 @@ var defaults = {
3612
3635
  // in px
3613
3636
  normalizeSlideIndex: true,
3614
3637
  centerInsufficientSlides: false,
3638
+ snapToSlideEdge: false,
3615
3639
  // Disable swiper and hide navigation when container not overflow
3616
3640
  watchOverflow: true,
3617
3641
  // Round length
@@ -3682,10 +3706,7 @@ var defaults = {
3682
3706
  };
3683
3707
 
3684
3708
  function moduleExtendParams(params, allModulesParams) {
3685
- return function extendParams(obj) {
3686
- if (obj === void 0) {
3687
- obj = {};
3688
- }
3709
+ return function extendParams(obj = {}) {
3689
3710
  const moduleParamName = Object.keys(obj)[0];
3690
3711
  const moduleParams = obj[moduleParamName];
3691
3712
  if (typeof moduleParams !== 'object' || moduleParams === null) {
@@ -3733,12 +3754,9 @@ const prototypes = {
3733
3754
  };
3734
3755
  const extendedDefaults = {};
3735
3756
  class Swiper {
3736
- constructor() {
3757
+ constructor(...args) {
3737
3758
  let el;
3738
3759
  let params;
3739
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3740
- args[_key] = arguments[_key];
3741
- }
3742
3760
  if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
3743
3761
  params = args[0];
3744
3762
  } else {
@@ -3772,7 +3790,11 @@ class Swiper {
3772
3790
  swiper.eventsAnyListeners = [];
3773
3791
  swiper.modules = [...swiper.__modules__];
3774
3792
  if (params.modules && Array.isArray(params.modules)) {
3775
- swiper.modules.push(...params.modules);
3793
+ params.modules.forEach(mod => {
3794
+ if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) {
3795
+ swiper.modules.push(mod);
3796
+ }
3797
+ });
3776
3798
  }
3777
3799
  const allModulesParams = {};
3778
3800
  swiper.modules.forEach(mod => {
@@ -3917,7 +3939,17 @@ class Swiper {
3917
3939
  return elementIndex(slideEl) - firstSlideIndex;
3918
3940
  }
3919
3941
  getSlideIndexByData(index) {
3920
- return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
3942
+ return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));
3943
+ }
3944
+ getSlideIndexWhenGrid(index) {
3945
+ if (this.grid && this.params.grid && this.params.grid.rows > 1) {
3946
+ if (this.params.grid.fill === 'column') {
3947
+ index = Math.floor(index / this.params.grid.rows);
3948
+ } else if (this.params.grid.fill === 'row') {
3949
+ index = index % Math.ceil(this.slides.length / this.params.grid.rows);
3950
+ }
3951
+ }
3952
+ return index;
3921
3953
  }
3922
3954
  recalcSlides() {
3923
3955
  const swiper = this;
@@ -3984,13 +4016,7 @@ class Swiper {
3984
4016
  });
3985
4017
  swiper.emit('_slideClasses', updates);
3986
4018
  }
3987
- slidesPerViewDynamic(view, exact) {
3988
- if (view === void 0) {
3989
- view = 'current';
3990
- }
3991
- if (exact === void 0) {
3992
- exact = false;
3993
- }
4019
+ slidesPerViewDynamic(view = 'current', exact = false) {
3994
4020
  const swiper = this;
3995
4021
  const {
3996
4022
  params,
@@ -4089,10 +4115,7 @@ class Swiper {
4089
4115
  }
4090
4116
  swiper.emit('update');
4091
4117
  }
4092
- changeDirection(newDirection, needUpdate) {
4093
- if (needUpdate === void 0) {
4094
- needUpdate = true;
4095
- }
4118
+ changeDirection(newDirection, needUpdate = true) {
4096
4119
  const swiper = this;
4097
4120
  const currentDirection = swiper.params.direction;
4098
4121
  if (!newDirection) {
@@ -4218,7 +4241,7 @@ class Swiper {
4218
4241
 
4219
4242
  // Create loop
4220
4243
  if (swiper.params.loop) {
4221
- swiper.loopCreate();
4244
+ swiper.loopCreate(undefined, true);
4222
4245
  }
4223
4246
 
4224
4247
  // Attach events
@@ -4247,13 +4270,7 @@ class Swiper {
4247
4270
  swiper.emit('afterInit');
4248
4271
  return swiper;
4249
4272
  }
4250
- destroy(deleteInstance, cleanStyles) {
4251
- if (deleteInstance === void 0) {
4252
- deleteInstance = true;
4253
- }
4254
- if (cleanStyles === void 0) {
4255
- cleanStyles = true;
4256
- }
4273
+ destroy(deleteInstance = true, cleanStyles = true) {
4257
4274
  const swiper = this;
4258
4275
  const {
4259
4276
  params,
@@ -4359,17 +4376,18 @@ function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
4359
4376
  return params;
4360
4377
  }
4361
4378
 
4362
- function Navigation(_ref) {
4363
- let {
4364
- swiper,
4365
- extendParams,
4366
- on,
4367
- emit
4368
- } = _ref;
4379
+ 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>`;
4380
+ function Navigation({
4381
+ swiper,
4382
+ extendParams,
4383
+ on,
4384
+ emit
4385
+ }) {
4369
4386
  extendParams({
4370
4387
  navigation: {
4371
4388
  nextEl: null,
4372
4389
  prevEl: null,
4390
+ addIcons: true,
4373
4391
  hideOnClick: false,
4374
4392
  disabledClass: 'swiper-button-disabled',
4375
4393
  hiddenClass: 'swiper-button-hidden',
@@ -4379,12 +4397,13 @@ function Navigation(_ref) {
4379
4397
  });
4380
4398
  swiper.navigation = {
4381
4399
  nextEl: null,
4382
- prevEl: null
4400
+ prevEl: null,
4401
+ arrowSvg
4383
4402
  };
4384
4403
  function getEl(el) {
4385
4404
  let res;
4386
4405
  if (el && typeof el === 'string' && swiper.isElement) {
4387
- res = swiper.el.querySelector(el);
4406
+ res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
4388
4407
  if (res) return res;
4389
4408
  }
4390
4409
  if (el) {
@@ -4455,6 +4474,12 @@ function Navigation(_ref) {
4455
4474
  prevEl = makeElementsArray(prevEl);
4456
4475
  const initButton = (el, dir) => {
4457
4476
  if (el) {
4477
+ if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {
4478
+ const tempEl = document.createElement('div');
4479
+ setInnerHTML(tempEl, arrowSvg);
4480
+ el.appendChild(tempEl.querySelector('svg'));
4481
+ tempEl.remove();
4482
+ }
4458
4483
  el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
4459
4484
  }
4460
4485
  if (!swiper.enabled && el) {
@@ -4555,21 +4580,18 @@ function Navigation(_ref) {
4555
4580
  });
4556
4581
  }
4557
4582
 
4558
- function classesToSelector(classes) {
4559
- if (classes === void 0) {
4560
- classes = '';
4561
- }
4562
- return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
4583
+ function classesToSelector(classes = '') {
4584
+ // Escape all CSS selector special characters
4585
+ return `.${classes.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g, '\\$1') // eslint-disable-line
4563
4586
  .replace(/ /g, '.')}`;
4564
4587
  }
4565
4588
 
4566
- function Pagination(_ref) {
4567
- let {
4568
- swiper,
4569
- extendParams,
4570
- on,
4571
- emit
4572
- } = _ref;
4589
+ function Pagination({
4590
+ swiper,
4591
+ extendParams,
4592
+ on,
4593
+ emit
4594
+ }) {
4573
4595
  const pfx = 'swiper-pagination';
4574
4596
  extendParams({
4575
4597
  pagination: {
@@ -4787,7 +4809,7 @@ function Pagination(_ref) {
4787
4809
  });
4788
4810
  }
4789
4811
  if (params.type === 'custom' && params.renderCustom) {
4790
- subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
4812
+ setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total));
4791
4813
  if (subElIndex === 0) emit('paginationRender', subEl);
4792
4814
  } else {
4793
4815
  if (subElIndex === 0) emit('paginationRender', subEl);
@@ -4837,7 +4859,7 @@ function Pagination(_ref) {
4837
4859
  swiper.pagination.bullets = [];
4838
4860
  el.forEach(subEl => {
4839
4861
  if (params.type !== 'custom') {
4840
- subEl.innerHTML = paginationHTML || '';
4862
+ setInnerHTML(subEl, paginationHTML || '');
4841
4863
  }
4842
4864
  if (params.type === 'bullets') {
4843
4865
  swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
@@ -4868,10 +4890,10 @@ function Pagination(_ref) {
4868
4890
  el = [...swiper.el.querySelectorAll(params.el)];
4869
4891
  // check if it belongs to another nested Swiper
4870
4892
  if (el.length > 1) {
4871
- el = el.filter(subEl => {
4893
+ el = el.find(subEl => {
4872
4894
  if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;
4873
4895
  return true;
4874
- })[0];
4896
+ });
4875
4897
  }
4876
4898
  }
4877
4899
  if (Array.isArray(el) && el.length === 1) el = el[0];
@@ -5018,12 +5040,11 @@ function Pagination(_ref) {
5018
5040
  });
5019
5041
  }
5020
5042
 
5021
- function A11y(_ref) {
5022
- let {
5023
- swiper,
5024
- extendParams,
5025
- on
5026
- } = _ref;
5043
+ function A11y({
5044
+ swiper,
5045
+ extendParams,
5046
+ on
5047
+ }) {
5027
5048
  extendParams({
5028
5049
  a11y: {
5029
5050
  enabled: true,
@@ -5040,7 +5061,8 @@ function A11y(_ref) {
5040
5061
  itemRoleDescriptionMessage: null,
5041
5062
  slideRole: 'group',
5042
5063
  id: null,
5043
- scrollOnFocus: true
5064
+ scrollOnFocus: true,
5065
+ wrapperLiveRegion: true
5044
5066
  }
5045
5067
  });
5046
5068
  swiper.a11y = {
@@ -5053,13 +5075,9 @@ function A11y(_ref) {
5053
5075
  function notify(message) {
5054
5076
  const notification = liveRegion;
5055
5077
  if (notification.length === 0) return;
5056
- notification.innerHTML = '';
5057
- notification.innerHTML = message;
5078
+ setInnerHTML(notification, message);
5058
5079
  }
5059
- function getRandomNumber(size) {
5060
- if (size === void 0) {
5061
- size = 16;
5062
- }
5080
+ function getRandomNumber(size = 16) {
5063
5081
  const randomChar = () => Math.round(16 * Math.random()).toString(16);
5064
5082
  return 'x'.repeat(size).replace(/x/g, randomChar);
5065
5083
  }
@@ -5241,7 +5259,8 @@ function A11y(_ref) {
5241
5259
  const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
5242
5260
  if (!slideEl || !swiper.slides.includes(slideEl)) return;
5243
5261
  focusTargetSlideEl = slideEl;
5244
- const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
5262
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5263
+ const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex;
5245
5264
  const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
5246
5265
  if (isActive || isVisible) return;
5247
5266
  if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
@@ -5253,9 +5272,11 @@ function A11y(_ref) {
5253
5272
  requestAnimationFrame(() => {
5254
5273
  if (preventFocusHandler) return;
5255
5274
  if (swiper.params.loop) {
5256
- swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
5275
+ swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0);
5276
+ } else if (isVirtual) {
5277
+ swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0);
5257
5278
  } else {
5258
- swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
5279
+ swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0);
5259
5280
  }
5260
5281
  preventFocusHandler = false;
5261
5282
  });
@@ -5296,9 +5317,11 @@ function A11y(_ref) {
5296
5317
  // Wrapper
5297
5318
  const wrapperEl = swiper.wrapperEl;
5298
5319
  const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
5299
- const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
5300
5320
  addElId(wrapperEl, wrapperId);
5301
- addElLive(wrapperEl, live);
5321
+ if (params.wrapperLiveRegion) {
5322
+ const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
5323
+ addElLive(wrapperEl, live);
5324
+ }
5302
5325
 
5303
5326
  // Slide
5304
5327
  initSlides();
@@ -5329,7 +5352,6 @@ function A11y(_ref) {
5329
5352
  const document = getDocument();
5330
5353
  document.addEventListener('visibilitychange', onVisibilityChange);
5331
5354
  swiper.el.addEventListener('focus', handleFocus, true);
5332
- swiper.el.addEventListener('focus', handleFocus, true);
5333
5355
  swiper.el.addEventListener('pointerdown', handlePointerDown, true);
5334
5356
  swiper.el.addEventListener('pointerup', handlePointerUp, true);
5335
5357
  };
@@ -5413,7 +5435,7 @@ function effectInit(params) {
5413
5435
  Object.assign(swiper.params, overwriteParamsResult);
5414
5436
  Object.assign(swiper.originalParams, overwriteParamsResult);
5415
5437
  });
5416
- on('setTranslate', () => {
5438
+ on('setTranslate _virtualUpdated', () => {
5417
5439
  if (swiper.params.effect !== effect) return;
5418
5440
  setTranslate();
5419
5441
  });
@@ -5457,20 +5479,19 @@ function effectTarget(effectParams, slideEl) {
5457
5479
  return transformEl;
5458
5480
  }
5459
5481
 
5460
- function effectVirtualTransitionEnd(_ref) {
5461
- let {
5462
- swiper,
5463
- duration,
5464
- transformElements,
5465
- allSlides
5466
- } = _ref;
5482
+ function effectVirtualTransitionEnd({
5483
+ swiper,
5484
+ duration,
5485
+ transformElements,
5486
+ allSlides
5487
+ }) {
5467
5488
  const {
5468
5489
  activeIndex
5469
5490
  } = swiper;
5470
5491
  const getSlide = el => {
5471
5492
  if (!el.parentElement) {
5472
5493
  // assume shadow root
5473
- const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];
5494
+ const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);
5474
5495
  return slide;
5475
5496
  }
5476
5497
  return el.parentElement;
@@ -5502,12 +5523,11 @@ function effectVirtualTransitionEnd(_ref) {
5502
5523
  }
5503
5524
  }
5504
5525
 
5505
- function EffectFade(_ref) {
5506
- let {
5507
- swiper,
5508
- extendParams,
5509
- on
5510
- } = _ref;
5526
+ function EffectFade({
5527
+ swiper,
5528
+ extendParams,
5529
+ on
5530
+ }) {
5511
5531
  extendParams({
5512
5532
  fadeEffect: {
5513
5533
  crossFade: false
@@ -5562,7 +5582,7 @@ function EffectFade(_ref) {
5562
5582
  });
5563
5583
  }
5564
5584
 
5565
- 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}";
5585
+ 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}";
5566
5586
  const HyHeroCarouselStyle0 = hyHeroCarouselCss;
5567
5587
 
5568
5588
  const HyHeroCarousel = class {
@@ -5593,6 +5613,7 @@ const HyHeroCarousel = class {
5593
5613
  navigation: {
5594
5614
  nextEl: ".swiper-button-next",
5595
5615
  prevEl: ".swiper-button-prev",
5616
+ addIcons: false,
5596
5617
  },
5597
5618
  pagination: {
5598
5619
  el: ".swiper-pagination",
@@ -5619,7 +5640,7 @@ const HyHeroCarousel = class {
5619
5640
  }
5620
5641
  render() {
5621
5642
  const carouselContentClasses = ["hero-carousel--item__content", this.itemCount > 1 ? "has-pagination" : ""].join(" ");
5622
- return (h("div", { key: '9d96a22771922ed3b7df014f05beaa96ff027288', class: "hero-carousel-container" }, h("div", { key: '4143fde98f6b15317ae8c7b4450b517cfe1c45d2', class: "swiper" }, h("div", { key: '2043f7e03ce07bea346d8bcbf89f65929f51f858', class: "swiper-wrapper" }, this._data["items"] &&
5643
+ return (h("div", { key: '6edb4f0431901d93792c815d98c3d1b0530b028d', class: "hero-carousel-container" }, h("div", { key: '56818055b029489cd68ec5bd242c7fa0f6cbda65', class: "swiper" }, h("div", { key: '10e2871e58c3eac5fe6a5793d435a0ebe126bb25', class: "swiper-wrapper" }, this._data["items"] &&
5623
5644
  this._data["items"].map((i, index) => {
5624
5645
  const currentIndex = index;
5625
5646
  const srcSet = JSON.parse(i.image_sources);