@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
@@ -5,28 +5,23 @@ import { d as defineCustomElement$3 } from './cta-button.js';
5
5
  import { d as defineCustomElement$2 } from './icon.js';
6
6
 
7
7
  /**
8
- * SSR Window 4.0.2
8
+ * SSR Window 5.0.1
9
9
  * Better handling for window object in SSR environment
10
10
  * https://github.com/nolimits4web/ssr-window
11
11
  *
12
- * Copyright 2021, Vladimir Kharlampidi
12
+ * Copyright 2025, Vladimir Kharlampidi
13
13
  *
14
14
  * Licensed under MIT
15
15
  *
16
- * Released on: December 13, 2021
16
+ * Released on: June 27, 2025
17
17
  */
18
18
  /* eslint-disable no-param-reassign */
19
19
  function isObject$1(obj) {
20
20
  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
21
21
  }
22
- function extend$1(target, src) {
23
- if (target === void 0) {
24
- target = {};
25
- }
26
- if (src === void 0) {
27
- src = {};
28
- }
29
- Object.keys(src).forEach(key => {
22
+ function extend$1(target = {}, src = {}) {
23
+ const noExtend = ['__proto__', 'constructor', 'prototype'];
24
+ Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {
30
25
  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) {
31
26
  extend$1(target[key], src[key]);
32
27
  }
@@ -148,10 +143,7 @@ function getWindow() {
148
143
  return win;
149
144
  }
150
145
 
151
- function classesToTokens(classes) {
152
- if (classes === void 0) {
153
- classes = '';
154
- }
146
+ function classesToTokens(classes = '') {
155
147
  return classes.trim().split(' ').filter(c => !!c.trim());
156
148
  }
157
149
 
@@ -170,10 +162,7 @@ function deleteProps(obj) {
170
162
  }
171
163
  });
172
164
  }
173
- function nextTick(callback, delay) {
174
- if (delay === void 0) {
175
- delay = 0;
176
- }
165
+ function nextTick(callback, delay = 0) {
177
166
  return setTimeout(callback, delay);
178
167
  }
179
168
  function now() {
@@ -193,10 +182,7 @@ function getComputedStyle$1(el) {
193
182
  }
194
183
  return style;
195
184
  }
196
- function getTranslate(el, axis) {
197
- if (axis === void 0) {
198
- axis = 'x';
199
- }
185
+ function getTranslate(el, axis = 'x') {
200
186
  const window = getWindow();
201
187
  let matrix;
202
188
  let curTransform;
@@ -242,13 +228,12 @@ function isNode(node) {
242
228
  }
243
229
  return node && (node.nodeType === 1 || node.nodeType === 11);
244
230
  }
245
- function extend() {
246
- const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
247
- const noExtend = ['__proto__', 'constructor', 'prototype'];
248
- for (let i = 1; i < arguments.length; i += 1) {
249
- const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
231
+ function extend(...args) {
232
+ const to = Object(args[0]);
233
+ for (let i = 1; i < args.length; i += 1) {
234
+ const nextSource = args[i];
250
235
  if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
251
- const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
236
+ const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype');
252
237
  for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
253
238
  const nextKey = keysArray[nextIndex];
254
239
  const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
@@ -278,12 +263,11 @@ function extend() {
278
263
  function setCSSProperty(el, varName, varValue) {
279
264
  el.style.setProperty(varName, varValue);
280
265
  }
281
- function animateCSSModeScroll(_ref) {
282
- let {
283
- swiper,
284
- targetPosition,
285
- side
286
- } = _ref;
266
+ function animateCSSModeScroll({
267
+ swiper,
268
+ targetPosition,
269
+ side
270
+ }) {
287
271
  const window = getWindow();
288
272
  const startPosition = -swiper.translate;
289
273
  let startTime = null;
@@ -328,12 +312,10 @@ function animateCSSModeScroll(_ref) {
328
312
  function getSlideTransformEl(slideEl) {
329
313
  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
330
314
  }
331
- function elementChildren(element, selector) {
332
- if (selector === void 0) {
333
- selector = '';
334
- }
315
+ function elementChildren(element, selector = '') {
316
+ const window = getWindow();
335
317
  const children = [...element.children];
336
- if (element instanceof HTMLSlotElement) {
318
+ if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {
337
319
  children.push(...element.assignedElements());
338
320
  }
339
321
  if (!selector) {
@@ -341,11 +323,26 @@ function elementChildren(element, selector) {
341
323
  }
342
324
  return children.filter(el => el.matches(selector));
343
325
  }
326
+ function elementIsChildOfSlot(el, slot) {
327
+ // Breadth-first search through all parent's children and assigned elements
328
+ const elementsQueue = [slot];
329
+ while (elementsQueue.length > 0) {
330
+ const elementToCheck = elementsQueue.shift();
331
+ if (el === elementToCheck) {
332
+ return true;
333
+ }
334
+ elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));
335
+ }
336
+ }
344
337
  function elementIsChildOf(el, parent) {
345
- const isChild = parent.contains(el);
346
- if (!isChild && parent instanceof HTMLSlotElement) {
338
+ const window = getWindow();
339
+ let isChild = parent.contains(el);
340
+ if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {
347
341
  const children = [...parent.assignedElements()];
348
- return children.includes(el);
342
+ isChild = children.includes(el);
343
+ if (!isChild) {
344
+ isChild = elementIsChildOfSlot(el, parent);
345
+ }
349
346
  }
350
347
  return isChild;
351
348
  }
@@ -357,10 +354,7 @@ function showWarning(text) {
357
354
  // err
358
355
  }
359
356
  }
360
- function createElement(tag, classes) {
361
- if (classes === void 0) {
362
- classes = [];
363
- }
357
+ function createElement(tag, classes = []) {
364
358
  const el = document.createElement(tag);
365
359
  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));
366
360
  return el;
@@ -437,6 +431,15 @@ function elementOuterSize(el, size, includeMargins) {
437
431
  function makeElementsArray(el) {
438
432
  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
439
433
  }
434
+ function setInnerHTML(el, html = '') {
435
+ if (typeof trustedTypes !== 'undefined') {
436
+ el.innerHTML = trustedTypes.createPolicy('html', {
437
+ createHTML: s => s
438
+ }).createHTML(html);
439
+ } else {
440
+ el.innerHTML = html;
441
+ }
442
+ }
440
443
 
441
444
  let support;
442
445
  function calcSupport() {
@@ -455,10 +458,9 @@ function getSupport() {
455
458
  }
456
459
 
457
460
  let deviceCached;
458
- function calcDevice(_temp) {
459
- let {
460
- userAgent
461
- } = _temp === void 0 ? {} : _temp;
461
+ function calcDevice({
462
+ userAgent
463
+ } = {}) {
462
464
  const support = getSupport();
463
465
  const window = getWindow();
464
466
  const platform = window.navigator.platform;
@@ -470,7 +472,7 @@ function calcDevice(_temp) {
470
472
  const screenWidth = window.screen.width;
471
473
  const screenHeight = window.screen.height;
472
474
  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
473
- let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
475
+ let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/);
474
476
  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
475
477
  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
476
478
  const windows = platform === 'Win32';
@@ -497,10 +499,7 @@ function calcDevice(_temp) {
497
499
  // Export object
498
500
  return device;
499
501
  }
500
- function getDevice(overrides) {
501
- if (overrides === void 0) {
502
- overrides = {};
503
- }
502
+ function getDevice(overrides = {}) {
504
503
  if (!deviceCached) {
505
504
  deviceCached = calcDevice(overrides);
506
505
  }
@@ -540,12 +539,11 @@ function getBrowser() {
540
539
  return browser;
541
540
  }
542
541
 
543
- function Resize(_ref) {
544
- let {
545
- swiper,
546
- on,
547
- emit
548
- } = _ref;
542
+ function Resize({
543
+ swiper,
544
+ on,
545
+ emit
546
+ }) {
549
547
  const window = getWindow();
550
548
  let observer = null;
551
549
  let animationFrame = null;
@@ -564,12 +562,11 @@ function Resize(_ref) {
564
562
  } = swiper;
565
563
  let newWidth = width;
566
564
  let newHeight = height;
567
- entries.forEach(_ref2 => {
568
- let {
569
- contentBoxSize,
570
- contentRect,
571
- target
572
- } = _ref2;
565
+ entries.forEach(({
566
+ contentBoxSize,
567
+ contentRect,
568
+ target
569
+ }) => {
573
570
  if (target && target !== swiper.el) return;
574
571
  newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
575
572
  newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
@@ -609,19 +606,15 @@ function Resize(_ref) {
609
606
  });
610
607
  }
611
608
 
612
- function Observer(_ref) {
613
- let {
614
- swiper,
615
- extendParams,
616
- on,
617
- emit
618
- } = _ref;
609
+ function Observer({
610
+ swiper,
611
+ extendParams,
612
+ on,
613
+ emit
614
+ }) {
619
615
  const observers = [];
620
616
  const window = getWindow();
621
- const attach = function (target, options) {
622
- if (options === void 0) {
623
- options = {};
624
- }
617
+ const attach = (target, options = {}) => {
625
618
  const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
626
619
  const observer = new ObserverFunc(mutations => {
627
620
  // The observerUpdate event should only be triggered
@@ -699,14 +692,11 @@ var eventsEmitter = {
699
692
  const self = this;
700
693
  if (!self.eventsListeners || self.destroyed) return self;
701
694
  if (typeof handler !== 'function') return self;
702
- function onceHandler() {
695
+ function onceHandler(...args) {
703
696
  self.off(events, onceHandler);
704
697
  if (onceHandler.__emitterProxy) {
705
698
  delete onceHandler.__emitterProxy;
706
699
  }
707
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
708
- args[_key] = arguments[_key];
709
- }
710
700
  handler.apply(self, args);
711
701
  }
712
702
  onceHandler.__emitterProxy = handler;
@@ -749,16 +739,13 @@ var eventsEmitter = {
749
739
  });
750
740
  return self;
751
741
  },
752
- emit() {
742
+ emit(...args) {
753
743
  const self = this;
754
744
  if (!self.eventsListeners || self.destroyed) return self;
755
745
  if (!self.eventsListeners) return self;
756
746
  let events;
757
747
  let data;
758
748
  let context;
759
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
760
- args[_key2] = arguments[_key2];
761
- }
762
749
  if (typeof args[0] === 'string' || Array.isArray(args[0])) {
763
750
  events = args[0];
764
751
  data = args.slice(1, args.length);
@@ -826,7 +813,6 @@ function updateSlides() {
826
813
  const {
827
814
  wrapperEl,
828
815
  slidesEl,
829
- size: swiperSize,
830
816
  rtlTranslate: rtl,
831
817
  wrongRTL
832
818
  } = swiper;
@@ -847,6 +833,7 @@ function updateSlides() {
847
833
  }
848
834
  const previousSnapGridLength = swiper.snapGrid.length;
849
835
  const previousSlidesGridLength = swiper.slidesGrid.length;
836
+ const swiperSize = swiper.size - offsetBefore - offsetAfter;
850
837
  let spaceBetween = params.spaceBetween;
851
838
  let slidePosition = -offsetBefore;
852
839
  let prevSlideSize = 0;
@@ -859,7 +846,7 @@ function updateSlides() {
859
846
  } else if (typeof spaceBetween === 'string') {
860
847
  spaceBetween = parseFloat(spaceBetween);
861
848
  }
862
- swiper.virtualSize = -spaceBetween;
849
+ swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;
863
850
 
864
851
  // reset margins
865
852
  slides.forEach(slideEl => {
@@ -877,6 +864,12 @@ function updateSlides() {
877
864
  setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');
878
865
  setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');
879
866
  }
867
+
868
+ // set cssMode offsets
869
+ if (params.cssMode) {
870
+ setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`);
871
+ setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`);
872
+ }
880
873
  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
881
874
  if (gridEnabled) {
882
875
  swiper.grid.initSlides(slides);
@@ -891,16 +884,25 @@ function updateSlides() {
891
884
  }).length > 0;
892
885
  for (let i = 0; i < slidesLength; i += 1) {
893
886
  slideSize = 0;
894
- let slide;
895
- if (slides[i]) slide = slides[i];
896
- if (gridEnabled) {
897
- swiper.grid.updateSlide(i, slide, slides);
887
+ const slide = slides[i];
888
+ if (slide) {
889
+ if (gridEnabled) {
890
+ swiper.grid.updateSlide(i, slide, slides);
891
+ }
892
+ if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
898
893
  }
899
- if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
900
894
 
901
- if (params.slidesPerView === 'auto') {
895
+ if (isVirtual && params.slidesPerView === 'auto') {
896
+ if (params.virtual.slidesPerViewAutoSlideSize) {
897
+ slideSize = params.virtual.slidesPerViewAutoSlideSize;
898
+ }
899
+ if (slideSize && slide) {
900
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
901
+ slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
902
+ }
903
+ } else if (params.slidesPerView === 'auto') {
902
904
  if (shouldResetSlideSize) {
903
- slides[i].style[swiper.getDirectionLabel('width')] = ``;
905
+ slide.style[swiper.getDirectionLabel('width')] = ``;
904
906
  }
905
907
  const slideStyles = getComputedStyle(slide);
906
908
  const currentTransform = slide.style.transform;
@@ -941,12 +943,12 @@ function updateSlides() {
941
943
  } else {
942
944
  slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
943
945
  if (params.roundLengths) slideSize = Math.floor(slideSize);
944
- if (slides[i]) {
945
- slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
946
+ if (slide) {
947
+ slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
946
948
  }
947
949
  }
948
- if (slides[i]) {
949
- slides[i].swiperSlideSize = slideSize;
950
+ if (slide) {
951
+ slide.swiperSlideSize = slideSize;
950
952
  }
951
953
  slidesSizesGrid.push(slideSize);
952
954
  if (params.centeredSlides) {
@@ -980,17 +982,52 @@ function updateSlides() {
980
982
 
981
983
  // Remove last grid elements depending on width
982
984
  if (!params.centeredSlides) {
985
+ // Check if snapToSlideEdge should be applied
986
+ const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0;
987
+ const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView);
988
+
989
+ // Calculate the last allowed snap index when snapToSlideEdge is enabled
990
+ // This ensures minimum slides are visible at the end
991
+ let lastAllowedSnapIndex = snapGrid.length;
992
+ if (shouldSnapToSlideEdge) {
993
+ let minVisibleSlides;
994
+ if (params.slidesPerView === 'auto') {
995
+ // For 'auto' mode, calculate how many slides fit based on actual sizes
996
+ minVisibleSlides = 1;
997
+ let accumulatedSize = 0;
998
+ for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) {
999
+ accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0);
1000
+ if (accumulatedSize <= swiperSize) {
1001
+ minVisibleSlides = slidesSizesGrid.length - i;
1002
+ } else {
1003
+ break;
1004
+ }
1005
+ }
1006
+ } else {
1007
+ minVisibleSlides = Math.floor(params.slidesPerView);
1008
+ }
1009
+ lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0);
1010
+ }
983
1011
  const newSlidesGrid = [];
984
1012
  for (let i = 0; i < snapGrid.length; i += 1) {
985
1013
  let slidesGridItem = snapGrid[i];
986
1014
  if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
987
- if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1015
+ if (shouldSnapToSlideEdge) {
1016
+ // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex
1017
+ if (i <= lastAllowedSnapIndex) {
1018
+ newSlidesGrid.push(slidesGridItem);
1019
+ }
1020
+ } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1021
+ // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area
988
1022
  newSlidesGrid.push(slidesGridItem);
989
1023
  }
990
1024
  }
991
1025
  snapGrid = newSlidesGrid;
992
1026
  if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
993
- snapGrid.push(swiper.virtualSize - swiperSize);
1027
+ // Only add edge-aligned snap if snapToSlideEdge is not enabled
1028
+ if (!shouldSnapToSlideEdge) {
1029
+ snapGrid.push(swiper.virtualSize - swiperSize);
1030
+ }
994
1031
  }
995
1032
  }
996
1033
  if (isVirtual && params.loop) {
@@ -1042,9 +1079,8 @@ function updateSlides() {
1042
1079
  allSlidesSize += slideSizeValue + (spaceBetween || 0);
1043
1080
  });
1044
1081
  allSlidesSize -= spaceBetween;
1045
- const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
1046
- if (allSlidesSize + offsetSize < swiperSize) {
1047
- const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
1082
+ if (allSlidesSize < swiperSize) {
1083
+ const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
1048
1084
  snapGrid.forEach((snap, snapIndex) => {
1049
1085
  snapGrid[snapIndex] = snap - allSlidesOffset;
1050
1086
  });
@@ -1155,10 +1191,7 @@ const toggleSlideClasses$1 = (slideEl, condition, className) => {
1155
1191
  slideEl.classList.remove(className);
1156
1192
  }
1157
1193
  };
1158
- function updateSlidesProgress(translate) {
1159
- if (translate === void 0) {
1160
- translate = this && this.translate || 0;
1161
- }
1194
+ function updateSlidesProgress(translate = this && this.translate || 0) {
1162
1195
  const swiper = this;
1163
1196
  const params = swiper.params;
1164
1197
  const {
@@ -1298,9 +1331,9 @@ function updateSlidesClasses() {
1298
1331
  }
1299
1332
  } else {
1300
1333
  if (gridEnabled) {
1301
- activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];
1302
- nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];
1303
- prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];
1334
+ activeSlide = slides.find(slideEl => slideEl.column === activeIndex);
1335
+ nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);
1336
+ prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);
1304
1337
  } else {
1305
1338
  activeSlide = slides[activeIndex];
1306
1339
  }
@@ -1342,12 +1375,13 @@ const processLazyPreloader = (swiper, imageEl) => {
1342
1375
  requestAnimationFrame(() => {
1343
1376
  if (slideEl.shadowRoot) {
1344
1377
  lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
1345
- if (lazyEl) lazyEl.remove();
1378
+ if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();
1346
1379
  }
1347
1380
  });
1348
1381
  }
1349
1382
  }
1350
- if (lazyEl) lazyEl.remove();
1383
+ // Skip removal if managed by React/Vue component
1384
+ if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();
1351
1385
  }
1352
1386
  };
1353
1387
  const unlazy = (swiper, index) => {
@@ -1462,10 +1496,14 @@ function updateActiveIndex(newActiveIndex) {
1462
1496
 
1463
1497
  // Get real index
1464
1498
  let realIndex;
1465
- if (swiper.virtual && params.virtual.enabled && params.loop) {
1466
- realIndex = getVirtualRealIndex(activeIndex);
1499
+ if (swiper.virtual && params.virtual.enabled) {
1500
+ if (params.loop) {
1501
+ realIndex = getVirtualRealIndex(activeIndex);
1502
+ } else {
1503
+ realIndex = activeIndex;
1504
+ }
1467
1505
  } else if (gridEnabled) {
1468
- const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];
1506
+ const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);
1469
1507
  let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
1470
1508
  if (Number.isNaN(activeSlideIndex)) {
1471
1509
  activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
@@ -1553,10 +1591,7 @@ var update = {
1553
1591
  updateClickedSlide
1554
1592
  };
1555
1593
 
1556
- function getSwiperTranslate(axis) {
1557
- if (axis === void 0) {
1558
- axis = this.isHorizontal() ? 'x' : 'y';
1559
- }
1594
+ function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
1560
1595
  const swiper = this;
1561
1596
  const {
1562
1597
  params,
@@ -1631,19 +1666,7 @@ function maxTranslate() {
1631
1666
  return -this.snapGrid[this.snapGrid.length - 1];
1632
1667
  }
1633
1668
 
1634
- function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
1635
- if (translate === void 0) {
1636
- translate = 0;
1637
- }
1638
- if (speed === void 0) {
1639
- speed = this.params.speed;
1640
- }
1641
- if (runCallbacks === void 0) {
1642
- runCallbacks = true;
1643
- }
1644
- if (translateBounds === void 0) {
1645
- translateBounds = true;
1646
- }
1669
+ function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1647
1670
  const swiper = this;
1648
1671
  const {
1649
1672
  params,
@@ -1731,13 +1754,12 @@ function setTransition(duration, byController) {
1731
1754
  swiper.emit('setTransition', duration, byController);
1732
1755
  }
1733
1756
 
1734
- function transitionEmit(_ref) {
1735
- let {
1736
- swiper,
1737
- runCallbacks,
1738
- direction,
1739
- step
1740
- } = _ref;
1757
+ function transitionEmit({
1758
+ swiper,
1759
+ runCallbacks,
1760
+ direction,
1761
+ step
1762
+ }) {
1741
1763
  const {
1742
1764
  activeIndex,
1743
1765
  previousIndex
@@ -1747,11 +1769,9 @@ function transitionEmit(_ref) {
1747
1769
  if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
1748
1770
  }
1749
1771
  swiper.emit(`transition${step}`);
1750
- if (runCallbacks && activeIndex !== previousIndex) {
1751
- if (dir === 'reset') {
1752
- swiper.emit(`slideResetTransition${step}`);
1753
- return;
1754
- }
1772
+ if (runCallbacks && dir === 'reset') {
1773
+ swiper.emit(`slideResetTransition${step}`);
1774
+ } else if (runCallbacks && activeIndex !== previousIndex) {
1755
1775
  swiper.emit(`slideChangeTransition${step}`);
1756
1776
  if (dir === 'next') {
1757
1777
  swiper.emit(`slideNextTransition${step}`);
@@ -1761,10 +1781,7 @@ function transitionEmit(_ref) {
1761
1781
  }
1762
1782
  }
1763
1783
 
1764
- function transitionStart(runCallbacks, direction) {
1765
- if (runCallbacks === void 0) {
1766
- runCallbacks = true;
1767
- }
1784
+ function transitionStart(runCallbacks = true, direction) {
1768
1785
  const swiper = this;
1769
1786
  const {
1770
1787
  params
@@ -1781,10 +1798,7 @@ function transitionStart(runCallbacks, direction) {
1781
1798
  });
1782
1799
  }
1783
1800
 
1784
- function transitionEnd(runCallbacks, direction) {
1785
- if (runCallbacks === void 0) {
1786
- runCallbacks = true;
1787
- }
1801
+ function transitionEnd(runCallbacks = true, direction) {
1788
1802
  const swiper = this;
1789
1803
  const {
1790
1804
  params
@@ -1806,13 +1820,7 @@ var transition = {
1806
1820
  transitionEnd
1807
1821
  };
1808
1822
 
1809
- function slideTo(index, speed, runCallbacks, internal, initial) {
1810
- if (index === void 0) {
1811
- index = 0;
1812
- }
1813
- if (runCallbacks === void 0) {
1814
- runCallbacks = true;
1815
- }
1823
+ function slideTo(index = 0, speed, runCallbacks = true, internal, initial) {
1816
1824
  if (typeof index === 'string') {
1817
1825
  index = parseInt(index, 10);
1818
1826
  }
@@ -1934,6 +1942,11 @@ function slideTo(index, speed, runCallbacks, internal, initial) {
1934
1942
  }
1935
1943
  return true;
1936
1944
  }
1945
+ const browser = getBrowser();
1946
+ const isSafari = browser.isSafari;
1947
+ if (isVirtual && !initial && isSafari && swiper.isElement) {
1948
+ swiper.virtual.update(false, false, slideIndex);
1949
+ }
1937
1950
  swiper.setTransition(speed);
1938
1951
  swiper.setTranslate(translate);
1939
1952
  swiper.updateActiveIndex(slideIndex);
@@ -1959,13 +1972,7 @@ function slideTo(index, speed, runCallbacks, internal, initial) {
1959
1972
  return true;
1960
1973
  }
1961
1974
 
1962
- function slideToLoop(index, speed, runCallbacks, internal) {
1963
- if (index === void 0) {
1964
- index = 0;
1965
- }
1966
- if (runCallbacks === void 0) {
1967
- runCallbacks = true;
1968
- }
1975
+ function slideToLoop(index = 0, speed, runCallbacks = true, internal) {
1969
1976
  if (typeof index === 'string') {
1970
1977
  const indexAsNumber = parseInt(index, 10);
1971
1978
  index = indexAsNumber;
@@ -1985,32 +1992,35 @@ function slideToLoop(index, speed, runCallbacks, internal) {
1985
1992
  let targetSlideIndex;
1986
1993
  if (gridEnabled) {
1987
1994
  const slideIndex = newIndex * swiper.params.grid.rows;
1988
- targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
1995
+ targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
1989
1996
  } else {
1990
1997
  targetSlideIndex = swiper.getSlideIndexByData(newIndex);
1991
1998
  }
1992
1999
  const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
1993
2000
  const {
1994
- centeredSlides
2001
+ centeredSlides,
2002
+ slidesOffsetBefore,
2003
+ slidesOffsetAfter
1995
2004
  } = swiper.params;
2005
+ const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;
1996
2006
  let slidesPerView = swiper.params.slidesPerView;
1997
2007
  if (slidesPerView === 'auto') {
1998
2008
  slidesPerView = swiper.slidesPerViewDynamic();
1999
2009
  } else {
2000
2010
  slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
2001
- if (centeredSlides && slidesPerView % 2 === 0) {
2011
+ if (bothDirections && slidesPerView % 2 === 0) {
2002
2012
  slidesPerView = slidesPerView + 1;
2003
2013
  }
2004
2014
  }
2005
2015
  let needLoopFix = cols - targetSlideIndex < slidesPerView;
2006
- if (centeredSlides) {
2016
+ if (bothDirections) {
2007
2017
  needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
2008
2018
  }
2009
- if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
2019
+ if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
2010
2020
  needLoopFix = false;
2011
2021
  }
2012
2022
  if (needLoopFix) {
2013
- const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
2023
+ const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
2014
2024
  swiper.loopFix({
2015
2025
  direction,
2016
2026
  slideTo: true,
@@ -2020,7 +2030,7 @@ function slideToLoop(index, speed, runCallbacks, internal) {
2020
2030
  }
2021
2031
  if (gridEnabled) {
2022
2032
  const slideIndex = newIndex * swiper.params.grid.rows;
2023
- newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
2033
+ newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
2024
2034
  } else {
2025
2035
  newIndex = swiper.getSlideIndexByData(newIndex);
2026
2036
  }
@@ -2033,10 +2043,7 @@ function slideToLoop(index, speed, runCallbacks, internal) {
2033
2043
  }
2034
2044
 
2035
2045
  /* eslint no-unused-vars: "off" */
2036
- function slideNext(speed, runCallbacks, internal) {
2037
- if (runCallbacks === void 0) {
2038
- runCallbacks = true;
2039
- }
2046
+ function slideNext(speed, runCallbacks = true, internal) {
2040
2047
  const swiper = this;
2041
2048
  const {
2042
2049
  enabled,
@@ -2074,10 +2081,7 @@ function slideNext(speed, runCallbacks, internal) {
2074
2081
  }
2075
2082
 
2076
2083
  /* eslint no-unused-vars: "off" */
2077
- function slidePrev(speed, runCallbacks, internal) {
2078
- if (runCallbacks === void 0) {
2079
- runCallbacks = true;
2080
- }
2084
+ function slidePrev(speed, runCallbacks = true, internal) {
2081
2085
  const swiper = this;
2082
2086
  const {
2083
2087
  params,
@@ -2107,8 +2111,9 @@ function slidePrev(speed, runCallbacks, internal) {
2107
2111
  }
2108
2112
  const normalizedTranslate = normalize(translate);
2109
2113
  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
2114
+ const isFreeMode = params.freeMode && params.freeMode.enabled;
2110
2115
  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2111
- if (typeof prevSnap === 'undefined' && params.cssMode) {
2116
+ if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {
2112
2117
  let prevSnapIndex;
2113
2118
  snapGrid.forEach((snap, snapIndex) => {
2114
2119
  if (normalizedTranslate >= snap) {
@@ -2117,7 +2122,7 @@ function slidePrev(speed, runCallbacks, internal) {
2117
2122
  }
2118
2123
  });
2119
2124
  if (typeof prevSnapIndex !== 'undefined') {
2120
- prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2125
+ prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2121
2126
  }
2122
2127
  }
2123
2128
  let prevIndex = 0;
@@ -2142,10 +2147,7 @@ function slidePrev(speed, runCallbacks, internal) {
2142
2147
  }
2143
2148
 
2144
2149
  /* eslint no-unused-vars: "off" */
2145
- function slideReset(speed, runCallbacks, internal) {
2146
- if (runCallbacks === void 0) {
2147
- runCallbacks = true;
2148
- }
2150
+ function slideReset(speed, runCallbacks = true, internal) {
2149
2151
  const swiper = this;
2150
2152
  if (swiper.destroyed) return;
2151
2153
  if (typeof speed === 'undefined') {
@@ -2155,13 +2157,7 @@ function slideReset(speed, runCallbacks, internal) {
2155
2157
  }
2156
2158
 
2157
2159
  /* eslint no-unused-vars: "off" */
2158
- function slideToClosest(speed, runCallbacks, internal, threshold) {
2159
- if (runCallbacks === void 0) {
2160
- runCallbacks = true;
2161
- }
2162
- if (threshold === void 0) {
2163
- threshold = 0.5;
2164
- }
2160
+ function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {
2165
2161
  const swiper = this;
2166
2162
  if (swiper.destroyed) return;
2167
2163
  if (typeof speed === 'undefined') {
@@ -2201,23 +2197,16 @@ function slideToClickedSlide() {
2201
2197
  slidesEl
2202
2198
  } = swiper;
2203
2199
  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2204
- let slideToIndex = swiper.clickedIndex;
2200
+ let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);
2205
2201
  let realIndex;
2206
2202
  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
2203
+ const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
2207
2204
  if (params.loop) {
2208
2205
  if (swiper.animating) return;
2209
2206
  realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
2210
2207
  if (params.centeredSlides) {
2211
- if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
2212
- swiper.loopFix();
2213
- slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
2214
- nextTick(() => {
2215
- swiper.slideTo(slideToIndex);
2216
- });
2217
- } else {
2218
- swiper.slideTo(slideToIndex);
2219
- }
2220
- } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2208
+ swiper.slideToLoop(realIndex);
2209
+ } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {
2221
2210
  swiper.loopFix();
2222
2211
  slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
2223
2212
  nextTick(() => {
@@ -2241,7 +2230,7 @@ var slide = {
2241
2230
  slideToClickedSlide
2242
2231
  };
2243
2232
 
2244
- function loopCreate(slideRealIndex) {
2233
+ function loopCreate(slideRealIndex, initial) {
2245
2234
  const swiper = this;
2246
2235
  const {
2247
2236
  params,
@@ -2254,7 +2243,20 @@ function loopCreate(slideRealIndex) {
2254
2243
  el.setAttribute('data-swiper-slide-index', index);
2255
2244
  });
2256
2245
  };
2246
+ const clearBlankSlides = () => {
2247
+ const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);
2248
+ slides.forEach(el => {
2249
+ el.remove();
2250
+ });
2251
+ if (slides.length > 0) {
2252
+ swiper.recalcSlides();
2253
+ swiper.updateSlides();
2254
+ }
2255
+ };
2257
2256
  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
2257
+ if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {
2258
+ clearBlankSlides();
2259
+ }
2258
2260
  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
2259
2261
  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
2260
2262
  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
@@ -2287,22 +2289,24 @@ function loopCreate(slideRealIndex) {
2287
2289
  } else {
2288
2290
  initSlides();
2289
2291
  }
2292
+ const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;
2290
2293
  swiper.loopFix({
2291
2294
  slideRealIndex,
2292
- direction: params.centeredSlides ? undefined : 'next'
2295
+ direction: bothDirections ? undefined : 'next',
2296
+ initial
2293
2297
  });
2294
2298
  }
2295
2299
 
2296
- function loopFix(_temp) {
2297
- let {
2298
- slideRealIndex,
2299
- slideTo = true,
2300
- direction,
2301
- setTranslate,
2302
- activeSlideIndex,
2303
- byController,
2304
- byMousewheel
2305
- } = _temp === void 0 ? {} : _temp;
2300
+ function loopFix({
2301
+ slideRealIndex,
2302
+ slideTo = true,
2303
+ direction,
2304
+ setTranslate,
2305
+ activeSlideIndex,
2306
+ initial,
2307
+ byController,
2308
+ byMousewheel
2309
+ } = {}) {
2306
2310
  const swiper = this;
2307
2311
  if (!swiper.params.loop) return;
2308
2312
  swiper.emit('beforeLoopFix');
@@ -2314,15 +2318,19 @@ function loopFix(_temp) {
2314
2318
  params
2315
2319
  } = swiper;
2316
2320
  const {
2317
- centeredSlides
2321
+ centeredSlides,
2322
+ slidesOffsetBefore,
2323
+ slidesOffsetAfter,
2324
+ initialSlide
2318
2325
  } = params;
2326
+ const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;
2319
2327
  swiper.allowSlidePrev = true;
2320
2328
  swiper.allowSlideNext = true;
2321
2329
  if (swiper.virtual && params.virtual.enabled) {
2322
2330
  if (slideTo) {
2323
- if (!params.centeredSlides && swiper.snapIndex === 0) {
2331
+ if (!bothDirections && swiper.snapIndex === 0) {
2324
2332
  swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
2325
- } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
2333
+ } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {
2326
2334
  swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
2327
2335
  } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
2328
2336
  swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
@@ -2338,28 +2346,30 @@ function loopFix(_temp) {
2338
2346
  slidesPerView = swiper.slidesPerViewDynamic();
2339
2347
  } else {
2340
2348
  slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
2341
- if (centeredSlides && slidesPerView % 2 === 0) {
2349
+ if (bothDirections && slidesPerView % 2 === 0) {
2342
2350
  slidesPerView = slidesPerView + 1;
2343
2351
  }
2344
2352
  }
2345
2353
  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
2346
- let loopedSlides = slidesPerGroup;
2354
+ let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;
2347
2355
  if (loopedSlides % slidesPerGroup !== 0) {
2348
2356
  loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
2349
2357
  }
2350
2358
  loopedSlides += params.loopAdditionalSlides;
2351
2359
  swiper.loopedSlides = loopedSlides;
2352
2360
  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
2353
- if (slides.length < slidesPerView + loopedSlides) {
2354
- 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');
2361
+ if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
2362
+ 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');
2355
2363
  } else if (gridEnabled && params.grid.fill === 'row') {
2356
2364
  showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');
2357
2365
  }
2358
2366
  const prependSlidesIndexes = [];
2359
2367
  const appendSlidesIndexes = [];
2360
- let activeIndex = swiper.activeIndex;
2368
+ const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
2369
+ const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;
2370
+ let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
2361
2371
  if (typeof activeSlideIndex === 'undefined') {
2362
- activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
2372
+ activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));
2363
2373
  } else {
2364
2374
  activeIndex = activeSlideIndex;
2365
2375
  }
@@ -2367,9 +2377,8 @@ function loopFix(_temp) {
2367
2377
  const isPrev = direction === 'prev' || !direction;
2368
2378
  let slidesPrepended = 0;
2369
2379
  let slidesAppended = 0;
2370
- const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
2371
2380
  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
2372
- const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
2381
+ const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
2373
2382
  // prepend last slides before start
2374
2383
  if (activeColIndexWithShift < loopedSlides) {
2375
2384
  slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
@@ -2389,6 +2398,9 @@ function loopFix(_temp) {
2389
2398
  }
2390
2399
  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
2391
2400
  slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
2401
+ if (isInitialOverflow) {
2402
+ slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
2403
+ }
2392
2404
  for (let i = 0; i < slidesAppended; i += 1) {
2393
2405
  const index = i - Math.floor(i / cols) * cols;
2394
2406
  if (gridEnabled) {
@@ -2404,6 +2416,14 @@ function loopFix(_temp) {
2404
2416
  requestAnimationFrame(() => {
2405
2417
  swiper.__preventObserver__ = false;
2406
2418
  });
2419
+ if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
2420
+ if (appendSlidesIndexes.includes(activeSlideIndex)) {
2421
+ appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
2422
+ }
2423
+ if (prependSlidesIndexes.includes(activeSlideIndex)) {
2424
+ prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
2425
+ }
2426
+ }
2407
2427
  if (isPrev) {
2408
2428
  prependSlidesIndexes.forEach(index => {
2409
2429
  slides[index].swiperLoopMoveDOM = true;
@@ -2504,7 +2524,7 @@ function loopDestroy() {
2504
2524
  params,
2505
2525
  slidesEl
2506
2526
  } = swiper;
2507
- if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
2527
+ if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
2508
2528
  swiper.recalcSlides();
2509
2529
  const newSlidesOrder = [];
2510
2530
  swiper.slides.forEach(slideEl => {
@@ -2565,10 +2585,7 @@ var grabCursor = {
2565
2585
  };
2566
2586
 
2567
2587
  // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
2568
- function closestElement(selector, base) {
2569
- if (base === void 0) {
2570
- base = this;
2571
- }
2588
+ function closestElement(selector, base = this) {
2572
2589
  function __closestFrom(el) {
2573
2590
  if (!el || el === getDocument() || el === getWindow()) return null;
2574
2591
  if (el.assignedSlot) el = el.assignedSlot;
@@ -2685,7 +2702,7 @@ function onTouchStart(event) {
2685
2702
  data.isTouched = false;
2686
2703
  }
2687
2704
  }
2688
- if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {
2705
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
2689
2706
  document.activeElement.blur();
2690
2707
  }
2691
2708
  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
@@ -2719,7 +2736,7 @@ function onTouchMove(event) {
2719
2736
  }
2720
2737
  let targetTouch;
2721
2738
  if (e.type === 'touchmove') {
2722
- targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
2739
+ targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
2723
2740
  if (!targetTouch || targetTouch.identifier !== data.touchId) return;
2724
2741
  } else {
2725
2742
  targetTouch = e;
@@ -2760,10 +2777,15 @@ function onTouchMove(event) {
2760
2777
  data.isMoved = false;
2761
2778
  return;
2762
2779
  }
2763
- } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
2780
+ } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
2781
+ return;
2782
+ } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
2764
2783
  return;
2765
2784
  }
2766
2785
  }
2786
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
2787
+ document.activeElement.blur();
2788
+ }
2767
2789
  if (document.activeElement) {
2768
2790
  if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
2769
2791
  data.isMoved = true;
@@ -2859,7 +2881,7 @@ function onTouchMove(event) {
2859
2881
  }
2860
2882
  let loopFixed;
2861
2883
  new Date().getTime();
2862
- if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
2884
+ if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
2863
2885
  Object.assign(touches, {
2864
2886
  startX: pageX,
2865
2887
  startY: pageY,
@@ -2967,7 +2989,7 @@ function onTouchEnd(event) {
2967
2989
  if (e.pointerId !== data.pointerId) return;
2968
2990
  targetTouch = e;
2969
2991
  } else {
2970
- targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
2992
+ targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
2971
2993
  if (!targetTouch || targetTouch.identifier !== data.touchId) return;
2972
2994
  }
2973
2995
  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
@@ -3144,7 +3166,8 @@ function onResize() {
3144
3166
  swiper.updateSlidesClasses();
3145
3167
  const isVirtualLoop = isVirtual && params.loop;
3146
3168
  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
3147
- swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3169
+ const slides = isVirtual ? swiper.virtual.slides : swiper.slides;
3170
+ swiper.slideTo(slides.length - 1, 0, false, true);
3148
3171
  } else {
3149
3172
  if (swiper.params.loop && !isVirtual) {
3150
3173
  swiper.slideToLoop(swiper.realIndex, 0, false, true);
@@ -3341,9 +3364,12 @@ function setBreakpoint() {
3341
3364
  } = swiper;
3342
3365
  const breakpoints = params.breakpoints;
3343
3366
  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
3367
+ const document = getDocument();
3344
3368
 
3345
- // Get breakpoint for window width and update parameters
3346
- const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
3369
+ // Get breakpoint for window/container width and update parameters
3370
+ const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';
3371
+ const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);
3372
+ const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);
3347
3373
  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
3348
3374
  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
3349
3375
  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
@@ -3416,10 +3442,7 @@ function setBreakpoint() {
3416
3442
  swiper.emit('breakpoint', breakpointParams);
3417
3443
  }
3418
3444
 
3419
- function getBreakpoint(breakpoints, base, containerEl) {
3420
- if (base === void 0) {
3421
- base = 'window';
3422
- }
3445
+ function getBreakpoint(breakpoints, base = 'window', containerEl) {
3423
3446
  if (!breakpoints || base === 'container' && !containerEl) return undefined;
3424
3447
  let breakpoint = false;
3425
3448
  const window = getWindow();
@@ -3614,6 +3637,7 @@ var defaults = {
3614
3637
  // in px
3615
3638
  normalizeSlideIndex: true,
3616
3639
  centerInsufficientSlides: false,
3640
+ snapToSlideEdge: false,
3617
3641
  // Disable swiper and hide navigation when container not overflow
3618
3642
  watchOverflow: true,
3619
3643
  // Round length
@@ -3684,10 +3708,7 @@ var defaults = {
3684
3708
  };
3685
3709
 
3686
3710
  function moduleExtendParams(params, allModulesParams) {
3687
- return function extendParams(obj) {
3688
- if (obj === void 0) {
3689
- obj = {};
3690
- }
3711
+ return function extendParams(obj = {}) {
3691
3712
  const moduleParamName = Object.keys(obj)[0];
3692
3713
  const moduleParams = obj[moduleParamName];
3693
3714
  if (typeof moduleParams !== 'object' || moduleParams === null) {
@@ -3735,12 +3756,9 @@ const prototypes = {
3735
3756
  };
3736
3757
  const extendedDefaults = {};
3737
3758
  class Swiper {
3738
- constructor() {
3759
+ constructor(...args) {
3739
3760
  let el;
3740
3761
  let params;
3741
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3742
- args[_key] = arguments[_key];
3743
- }
3744
3762
  if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
3745
3763
  params = args[0];
3746
3764
  } else {
@@ -3774,7 +3792,11 @@ class Swiper {
3774
3792
  swiper.eventsAnyListeners = [];
3775
3793
  swiper.modules = [...swiper.__modules__];
3776
3794
  if (params.modules && Array.isArray(params.modules)) {
3777
- swiper.modules.push(...params.modules);
3795
+ params.modules.forEach(mod => {
3796
+ if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) {
3797
+ swiper.modules.push(mod);
3798
+ }
3799
+ });
3778
3800
  }
3779
3801
  const allModulesParams = {};
3780
3802
  swiper.modules.forEach(mod => {
@@ -3919,7 +3941,17 @@ class Swiper {
3919
3941
  return elementIndex(slideEl) - firstSlideIndex;
3920
3942
  }
3921
3943
  getSlideIndexByData(index) {
3922
- return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
3944
+ return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));
3945
+ }
3946
+ getSlideIndexWhenGrid(index) {
3947
+ if (this.grid && this.params.grid && this.params.grid.rows > 1) {
3948
+ if (this.params.grid.fill === 'column') {
3949
+ index = Math.floor(index / this.params.grid.rows);
3950
+ } else if (this.params.grid.fill === 'row') {
3951
+ index = index % Math.ceil(this.slides.length / this.params.grid.rows);
3952
+ }
3953
+ }
3954
+ return index;
3923
3955
  }
3924
3956
  recalcSlides() {
3925
3957
  const swiper = this;
@@ -3986,13 +4018,7 @@ class Swiper {
3986
4018
  });
3987
4019
  swiper.emit('_slideClasses', updates);
3988
4020
  }
3989
- slidesPerViewDynamic(view, exact) {
3990
- if (view === void 0) {
3991
- view = 'current';
3992
- }
3993
- if (exact === void 0) {
3994
- exact = false;
3995
- }
4021
+ slidesPerViewDynamic(view = 'current', exact = false) {
3996
4022
  const swiper = this;
3997
4023
  const {
3998
4024
  params,
@@ -4091,10 +4117,7 @@ class Swiper {
4091
4117
  }
4092
4118
  swiper.emit('update');
4093
4119
  }
4094
- changeDirection(newDirection, needUpdate) {
4095
- if (needUpdate === void 0) {
4096
- needUpdate = true;
4097
- }
4120
+ changeDirection(newDirection, needUpdate = true) {
4098
4121
  const swiper = this;
4099
4122
  const currentDirection = swiper.params.direction;
4100
4123
  if (!newDirection) {
@@ -4220,7 +4243,7 @@ class Swiper {
4220
4243
 
4221
4244
  // Create loop
4222
4245
  if (swiper.params.loop) {
4223
- swiper.loopCreate();
4246
+ swiper.loopCreate(undefined, true);
4224
4247
  }
4225
4248
 
4226
4249
  // Attach events
@@ -4249,13 +4272,7 @@ class Swiper {
4249
4272
  swiper.emit('afterInit');
4250
4273
  return swiper;
4251
4274
  }
4252
- destroy(deleteInstance, cleanStyles) {
4253
- if (deleteInstance === void 0) {
4254
- deleteInstance = true;
4255
- }
4256
- if (cleanStyles === void 0) {
4257
- cleanStyles = true;
4258
- }
4275
+ destroy(deleteInstance = true, cleanStyles = true) {
4259
4276
  const swiper = this;
4260
4277
  const {
4261
4278
  params,
@@ -4361,17 +4378,18 @@ function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
4361
4378
  return params;
4362
4379
  }
4363
4380
 
4364
- function Navigation(_ref) {
4365
- let {
4366
- swiper,
4367
- extendParams,
4368
- on,
4369
- emit
4370
- } = _ref;
4381
+ 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>`;
4382
+ function Navigation({
4383
+ swiper,
4384
+ extendParams,
4385
+ on,
4386
+ emit
4387
+ }) {
4371
4388
  extendParams({
4372
4389
  navigation: {
4373
4390
  nextEl: null,
4374
4391
  prevEl: null,
4392
+ addIcons: true,
4375
4393
  hideOnClick: false,
4376
4394
  disabledClass: 'swiper-button-disabled',
4377
4395
  hiddenClass: 'swiper-button-hidden',
@@ -4381,12 +4399,13 @@ function Navigation(_ref) {
4381
4399
  });
4382
4400
  swiper.navigation = {
4383
4401
  nextEl: null,
4384
- prevEl: null
4402
+ prevEl: null,
4403
+ arrowSvg
4385
4404
  };
4386
4405
  function getEl(el) {
4387
4406
  let res;
4388
4407
  if (el && typeof el === 'string' && swiper.isElement) {
4389
- res = swiper.el.querySelector(el);
4408
+ res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
4390
4409
  if (res) return res;
4391
4410
  }
4392
4411
  if (el) {
@@ -4457,6 +4476,12 @@ function Navigation(_ref) {
4457
4476
  prevEl = makeElementsArray(prevEl);
4458
4477
  const initButton = (el, dir) => {
4459
4478
  if (el) {
4479
+ if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {
4480
+ const tempEl = document.createElement('div');
4481
+ setInnerHTML(tempEl, arrowSvg);
4482
+ el.appendChild(tempEl.querySelector('svg'));
4483
+ tempEl.remove();
4484
+ }
4460
4485
  el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
4461
4486
  }
4462
4487
  if (!swiper.enabled && el) {
@@ -4557,21 +4582,18 @@ function Navigation(_ref) {
4557
4582
  });
4558
4583
  }
4559
4584
 
4560
- function classesToSelector(classes) {
4561
- if (classes === void 0) {
4562
- classes = '';
4563
- }
4564
- return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
4585
+ function classesToSelector(classes = '') {
4586
+ // Escape all CSS selector special characters
4587
+ return `.${classes.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g, '\\$1') // eslint-disable-line
4565
4588
  .replace(/ /g, '.')}`;
4566
4589
  }
4567
4590
 
4568
- function Pagination(_ref) {
4569
- let {
4570
- swiper,
4571
- extendParams,
4572
- on,
4573
- emit
4574
- } = _ref;
4591
+ function Pagination({
4592
+ swiper,
4593
+ extendParams,
4594
+ on,
4595
+ emit
4596
+ }) {
4575
4597
  const pfx = 'swiper-pagination';
4576
4598
  extendParams({
4577
4599
  pagination: {
@@ -4789,7 +4811,7 @@ function Pagination(_ref) {
4789
4811
  });
4790
4812
  }
4791
4813
  if (params.type === 'custom' && params.renderCustom) {
4792
- subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
4814
+ setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total));
4793
4815
  if (subElIndex === 0) emit('paginationRender', subEl);
4794
4816
  } else {
4795
4817
  if (subElIndex === 0) emit('paginationRender', subEl);
@@ -4839,7 +4861,7 @@ function Pagination(_ref) {
4839
4861
  swiper.pagination.bullets = [];
4840
4862
  el.forEach(subEl => {
4841
4863
  if (params.type !== 'custom') {
4842
- subEl.innerHTML = paginationHTML || '';
4864
+ setInnerHTML(subEl, paginationHTML || '');
4843
4865
  }
4844
4866
  if (params.type === 'bullets') {
4845
4867
  swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
@@ -4870,10 +4892,10 @@ function Pagination(_ref) {
4870
4892
  el = [...swiper.el.querySelectorAll(params.el)];
4871
4893
  // check if it belongs to another nested Swiper
4872
4894
  if (el.length > 1) {
4873
- el = el.filter(subEl => {
4895
+ el = el.find(subEl => {
4874
4896
  if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;
4875
4897
  return true;
4876
- })[0];
4898
+ });
4877
4899
  }
4878
4900
  }
4879
4901
  if (Array.isArray(el) && el.length === 1) el = el[0];
@@ -5020,12 +5042,11 @@ function Pagination(_ref) {
5020
5042
  });
5021
5043
  }
5022
5044
 
5023
- function A11y(_ref) {
5024
- let {
5025
- swiper,
5026
- extendParams,
5027
- on
5028
- } = _ref;
5045
+ function A11y({
5046
+ swiper,
5047
+ extendParams,
5048
+ on
5049
+ }) {
5029
5050
  extendParams({
5030
5051
  a11y: {
5031
5052
  enabled: true,
@@ -5042,7 +5063,8 @@ function A11y(_ref) {
5042
5063
  itemRoleDescriptionMessage: null,
5043
5064
  slideRole: 'group',
5044
5065
  id: null,
5045
- scrollOnFocus: true
5066
+ scrollOnFocus: true,
5067
+ wrapperLiveRegion: true
5046
5068
  }
5047
5069
  });
5048
5070
  swiper.a11y = {
@@ -5055,13 +5077,9 @@ function A11y(_ref) {
5055
5077
  function notify(message) {
5056
5078
  const notification = liveRegion;
5057
5079
  if (notification.length === 0) return;
5058
- notification.innerHTML = '';
5059
- notification.innerHTML = message;
5080
+ setInnerHTML(notification, message);
5060
5081
  }
5061
- function getRandomNumber(size) {
5062
- if (size === void 0) {
5063
- size = 16;
5064
- }
5082
+ function getRandomNumber(size = 16) {
5065
5083
  const randomChar = () => Math.round(16 * Math.random()).toString(16);
5066
5084
  return 'x'.repeat(size).replace(/x/g, randomChar);
5067
5085
  }
@@ -5243,7 +5261,8 @@ function A11y(_ref) {
5243
5261
  const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
5244
5262
  if (!slideEl || !swiper.slides.includes(slideEl)) return;
5245
5263
  focusTargetSlideEl = slideEl;
5246
- const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
5264
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5265
+ const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex;
5247
5266
  const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
5248
5267
  if (isActive || isVisible) return;
5249
5268
  if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
@@ -5255,9 +5274,11 @@ function A11y(_ref) {
5255
5274
  requestAnimationFrame(() => {
5256
5275
  if (preventFocusHandler) return;
5257
5276
  if (swiper.params.loop) {
5258
- swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
5277
+ swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0);
5278
+ } else if (isVirtual) {
5279
+ swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0);
5259
5280
  } else {
5260
- swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
5281
+ swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0);
5261
5282
  }
5262
5283
  preventFocusHandler = false;
5263
5284
  });
@@ -5298,9 +5319,11 @@ function A11y(_ref) {
5298
5319
  // Wrapper
5299
5320
  const wrapperEl = swiper.wrapperEl;
5300
5321
  const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
5301
- const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
5302
5322
  addElId(wrapperEl, wrapperId);
5303
- addElLive(wrapperEl, live);
5323
+ if (params.wrapperLiveRegion) {
5324
+ const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
5325
+ addElLive(wrapperEl, live);
5326
+ }
5304
5327
 
5305
5328
  // Slide
5306
5329
  initSlides();
@@ -5331,7 +5354,6 @@ function A11y(_ref) {
5331
5354
  const document = getDocument();
5332
5355
  document.addEventListener('visibilitychange', onVisibilityChange);
5333
5356
  swiper.el.addEventListener('focus', handleFocus, true);
5334
- swiper.el.addEventListener('focus', handleFocus, true);
5335
5357
  swiper.el.addEventListener('pointerdown', handlePointerDown, true);
5336
5358
  swiper.el.addEventListener('pointerup', handlePointerUp, true);
5337
5359
  };
@@ -5415,7 +5437,7 @@ function effectInit(params) {
5415
5437
  Object.assign(swiper.params, overwriteParamsResult);
5416
5438
  Object.assign(swiper.originalParams, overwriteParamsResult);
5417
5439
  });
5418
- on('setTranslate', () => {
5440
+ on('setTranslate _virtualUpdated', () => {
5419
5441
  if (swiper.params.effect !== effect) return;
5420
5442
  setTranslate();
5421
5443
  });
@@ -5459,20 +5481,19 @@ function effectTarget(effectParams, slideEl) {
5459
5481
  return transformEl;
5460
5482
  }
5461
5483
 
5462
- function effectVirtualTransitionEnd(_ref) {
5463
- let {
5464
- swiper,
5465
- duration,
5466
- transformElements,
5467
- allSlides
5468
- } = _ref;
5484
+ function effectVirtualTransitionEnd({
5485
+ swiper,
5486
+ duration,
5487
+ transformElements,
5488
+ allSlides
5489
+ }) {
5469
5490
  const {
5470
5491
  activeIndex
5471
5492
  } = swiper;
5472
5493
  const getSlide = el => {
5473
5494
  if (!el.parentElement) {
5474
5495
  // assume shadow root
5475
- const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];
5496
+ const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);
5476
5497
  return slide;
5477
5498
  }
5478
5499
  return el.parentElement;
@@ -5504,12 +5525,11 @@ function effectVirtualTransitionEnd(_ref) {
5504
5525
  }
5505
5526
  }
5506
5527
 
5507
- function EffectFade(_ref) {
5508
- let {
5509
- swiper,
5510
- extendParams,
5511
- on
5512
- } = _ref;
5528
+ function EffectFade({
5529
+ swiper,
5530
+ extendParams,
5531
+ on
5532
+ }) {
5513
5533
  extendParams({
5514
5534
  fadeEffect: {
5515
5535
  crossFade: false
@@ -5564,7 +5584,7 @@ function EffectFade(_ref) {
5564
5584
  });
5565
5585
  }
5566
5586
 
5567
- 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}";
5587
+ 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}";
5568
5588
  const HyHeroCarouselStyle0 = hyHeroCarouselCss;
5569
5589
 
5570
5590
  const HyHeroCarousel$1 = /*@__PURE__*/ proxyCustomElement(class HyHeroCarousel extends H {
@@ -5596,6 +5616,7 @@ const HyHeroCarousel$1 = /*@__PURE__*/ proxyCustomElement(class HyHeroCarousel e
5596
5616
  navigation: {
5597
5617
  nextEl: ".swiper-button-next",
5598
5618
  prevEl: ".swiper-button-prev",
5619
+ addIcons: false,
5599
5620
  },
5600
5621
  pagination: {
5601
5622
  el: ".swiper-pagination",
@@ -5622,7 +5643,7 @@ const HyHeroCarousel$1 = /*@__PURE__*/ proxyCustomElement(class HyHeroCarousel e
5622
5643
  }
5623
5644
  render() {
5624
5645
  const carouselContentClasses = ["hero-carousel--item__content", this.itemCount > 1 ? "has-pagination" : ""].join(" ");
5625
- 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"] &&
5646
+ 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"] &&
5626
5647
  this._data["items"].map((i, index) => {
5627
5648
  const currentIndex = index;
5628
5649
  const srcSet = JSON.parse(i.image_sources);