123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. @import "../../themes/ionic.globals";
  2. // Adopted from Swiper
  3. // Most modern mobile touch slider and framework with hardware
  4. // accelerated transitions.
  5. //
  6. // http://www.idangero.us/swiper/
  7. //
  8. // Copyright 2016, Vladimir Kharlampidi
  9. // The iDangero.us
  10. // http://www.idangero.us/
  11. //
  12. // Licensed under MIT
  13. .swiper-container {
  14. @include margin-horizontal(auto);
  15. @include padding(0);
  16. position: relative;
  17. // Fix of Webkit flickering
  18. z-index: 1;
  19. display: flex;
  20. overflow: hidden;
  21. width: 100%;
  22. height: 100%;
  23. }
  24. .swiper-container-no-flexbox .swiper-slide {
  25. @include float(start);
  26. }
  27. .swiper-container-vertical > .swiper-wrapper {
  28. flex-direction: column;
  29. }
  30. .swiper-wrapper {
  31. @include padding(0);
  32. position: relative;
  33. z-index: 1;
  34. display: flex;
  35. width: 100%;
  36. height: 100%;
  37. transition-property: transform;
  38. box-sizing: content-box;
  39. }
  40. .swiper-container-android .swiper-slide,
  41. .swiper-wrapper {
  42. @include transform(translate3d(0, 0, 0));
  43. }
  44. .swiper-container-multirow > .swiper-wrapper {
  45. flex-wrap: wrap;
  46. }
  47. .swiper-container-free-mode > .swiper-wrapper {
  48. @include margin(0, auto);
  49. transition-timing-function: ease-out;
  50. }
  51. .swiper-slide {
  52. @include text-align(center);
  53. position: relative;
  54. // Center slide text vertically
  55. display: flex;
  56. flex-shrink: 0;
  57. align-items: center;
  58. justify-content: center;
  59. width: 100%;
  60. height: 100%;
  61. font-size: 18px;
  62. box-sizing: border-box;
  63. }
  64. // Auto Height
  65. .swiper-container-autoheight,
  66. .swiper-container-autoheight .swiper-slide {
  67. height: auto;
  68. }
  69. .swiper-container-autoheight .swiper-wrapper {
  70. align-items: flex-start;
  71. transition-property: transform, height;
  72. }
  73. // a11y
  74. .swiper-container .swiper-notification {
  75. @include position(0, null, null, 0);
  76. position: absolute;
  77. z-index: -1000;
  78. opacity: 0;
  79. pointer-events: none;
  80. }
  81. // IE10 Windows Phone 8 Fixes
  82. .swiper-wp8-horizontal {
  83. touch-action: pan-y;
  84. }
  85. .swiper-wp8-vertical {
  86. touch-action: pan-x;
  87. }
  88. // Arrows
  89. .swiper-button-prev,
  90. .swiper-button-next {
  91. @include position(50%, null, null, null);
  92. @include margin(-22px, null, null, null);
  93. @include background-position(center);
  94. position: absolute;
  95. z-index: 10;
  96. width: 27px;
  97. height: 44px;
  98. background-repeat: no-repeat;
  99. background-size: 27px 44px;
  100. cursor: pointer;
  101. }
  102. .swiper-button-prev.swiper-button-disabled,
  103. .swiper-button-next.swiper-button-disabled {
  104. cursor: auto;
  105. opacity: .35;
  106. pointer-events: none;
  107. }
  108. .swiper-button-prev,
  109. .swiper-container-rtl .swiper-button-next {
  110. @include position-horizontal(10px, auto);
  111. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
  112. }
  113. .swiper-button-prev.swiper-button-black,
  114. .swiper-container-rtl .swiper-button-next.swiper-button-black {
  115. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
  116. }
  117. .swiper-button-prev.swiper-button-white,
  118. .swiper-container-rtl .swiper-button-next.swiper-button-white {
  119. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
  120. }
  121. .swiper-button-next,
  122. .swiper-container-rtl .swiper-button-prev {
  123. @include position-horizontal(auto, 10px);
  124. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
  125. }
  126. .swiper-button-next.swiper-button-black,
  127. .swiper-container-rtl .swiper-button-prev.swiper-button-black {
  128. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
  129. }
  130. .swiper-button-next.swiper-button-white,
  131. .swiper-container-rtl .swiper-button-prev.swiper-button-white {
  132. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
  133. }
  134. // Pagination Styles
  135. .swiper-pagination {
  136. @include text-align(center);
  137. @include transform(translate3d(0, 0, 0));
  138. position: absolute;
  139. z-index: 10;
  140. transition: 300ms;
  141. pointer-events: none;
  142. }
  143. .swiper-pagination.swiper-pagination-hidden {
  144. opacity: 0;
  145. }
  146. // Common Styles
  147. .swiper-pagination-fraction,
  148. .swiper-pagination-custom,
  149. .swiper-container-horizontal > .swiper-pagination-bullets {
  150. @include position(null, null, 10px, 0);
  151. width: 100%;
  152. }
  153. // Bullets
  154. .swiper-pagination-bullet {
  155. @include border-radius(100%);
  156. display: inline-block;
  157. width: 8px;
  158. height: 8px;
  159. background: #000;
  160. opacity: .2;
  161. pointer-events: auto;
  162. }
  163. button.swiper-pagination-bullet {
  164. @include margin(0);
  165. @include padding(0);
  166. @include appearance(none);
  167. border: 0;
  168. box-shadow: none;
  169. }
  170. .swiper-pagination-clickable .swiper-pagination-bullet {
  171. cursor: pointer;
  172. }
  173. .swiper-pagination-white .swiper-pagination-bullet {
  174. background: #fff;
  175. }
  176. .swiper-pagination-bullet-active {
  177. background: #007aff;
  178. opacity: 1;
  179. }
  180. .swiper-pagination-white .swiper-pagination-bullet-active {
  181. background: #fff;
  182. }
  183. .swiper-pagination-black .swiper-pagination-bullet-active {
  184. background: #000;
  185. }
  186. .swiper-container-vertical > .swiper-pagination-bullets {
  187. @include position(50%, 10px, null, null);
  188. @include transform(translate3d(0, -50%, 0));
  189. }
  190. .swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {
  191. @include margin(5px, 0);
  192. display: block;
  193. }
  194. .swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {
  195. @include margin(0, 5px);
  196. }
  197. // Progress
  198. .swiper-pagination-progress {
  199. position: absolute;
  200. background: rgba(0, 0, 0, .25);
  201. }
  202. .swiper-pagination-progress .swiper-pagination-progressbar {
  203. @include position(0, null, null, 0);
  204. @include transform-origin(start, top);
  205. position: absolute;
  206. width: 100%;
  207. height: 100%;
  208. background: #007aff;
  209. transform: scale(0);
  210. }
  211. .swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar {
  212. @include transform-origin(end, top);
  213. }
  214. .swiper-container-horizontal > .swiper-pagination-progress {
  215. @include position(0, null, null, 0);
  216. width: 100%;
  217. height: 4px;
  218. }
  219. .swiper-container-vertical > .swiper-pagination-progress {
  220. @include position(0, null, null, 0);
  221. width: 4px;
  222. height: 100%;
  223. }
  224. .swiper-pagination-progress.swiper-pagination-white {
  225. background: rgba(255, 255, 255, .5);
  226. }
  227. .swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar {
  228. background: #fff;
  229. }
  230. .swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar {
  231. background: #000;
  232. }
  233. // 3D Container
  234. .swiper-container-3d {
  235. perspective: 1200px;
  236. }
  237. .swiper-container-3d .swiper-wrapper,
  238. .swiper-container-3d .swiper-slide,
  239. .swiper-container-3d .swiper-slide-shadow-left,
  240. .swiper-container-3d .swiper-slide-shadow-right,
  241. .swiper-container-3d .swiper-slide-shadow-top,
  242. .swiper-container-3d .swiper-slide-shadow-bottom,
  243. .swiper-container-3d .swiper-cube-shadow {
  244. transform-style: preserve-3d;
  245. }
  246. .swiper-container-3d .swiper-slide-shadow-left,
  247. .swiper-container-3d .swiper-slide-shadow-right,
  248. .swiper-container-3d .swiper-slide-shadow-top,
  249. .swiper-container-3d .swiper-slide-shadow-bottom {
  250. @include position(0, null, null, 0);
  251. position: absolute;
  252. z-index: 10;
  253. width: 100%;
  254. height: 100%;
  255. pointer-events: none;
  256. }
  257. .swiper-container-3d .swiper-slide-shadow-left {
  258. background-image: linear-gradient(to left, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0));
  259. }
  260. .swiper-container-3d .swiper-slide-shadow-right {
  261. background-image: linear-gradient(to right, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0));
  262. }
  263. .swiper-container-3d .swiper-slide-shadow-top {
  264. background-image: linear-gradient(to top, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0));
  265. }
  266. .swiper-container-3d .swiper-slide-shadow-bottom {
  267. background-image: linear-gradient(to bottom, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0));
  268. }
  269. // Coverflow
  270. .swiper-container-coverflow .swiper-wrapper,
  271. .swiper-container-flip .swiper-wrapper {
  272. // Windows 8 IE 10 fix
  273. perspective: 1200px;
  274. }
  275. // Cube + Flip
  276. .swiper-container-cube,
  277. .swiper-container-flip {
  278. overflow: visible;
  279. }
  280. .swiper-container-cube .swiper-slide,
  281. .swiper-container-flip .swiper-slide {
  282. z-index: 1;
  283. backface-visibility: hidden;
  284. pointer-events: none;
  285. }
  286. .swiper-container-cube .swiper-slide .swiper-slide,
  287. .swiper-container-flip .swiper-slide .swiper-slide {
  288. pointer-events: none;
  289. }
  290. .swiper-container-cube .swiper-slide-active,
  291. .swiper-container-flip .swiper-slide-active,
  292. .swiper-container-cube .swiper-slide-active .swiper-slide-active,
  293. .swiper-container-flip .swiper-slide-active .swiper-slide-active {
  294. pointer-events: auto;
  295. }
  296. .swiper-container-cube .swiper-slide-shadow-top,
  297. .swiper-container-flip .swiper-slide-shadow-top,
  298. .swiper-container-cube .swiper-slide-shadow-bottom,
  299. .swiper-container-flip .swiper-slide-shadow-bottom,
  300. .swiper-container-cube .swiper-slide-shadow-left,
  301. .swiper-container-flip .swiper-slide-shadow-left,
  302. .swiper-container-cube .swiper-slide-shadow-right,
  303. .swiper-container-flip .swiper-slide-shadow-right {
  304. z-index: 0;
  305. backface-visibility: hidden;
  306. }
  307. // Cube
  308. .swiper-container-cube .swiper-slide {
  309. @include transform-origin(0, 0);
  310. width: 100%;
  311. height: 100%;
  312. visibility: hidden;
  313. }
  314. .swiper-container-cube.swiper-container-rtl .swiper-slide {
  315. @include transform-origin(100%, 0);
  316. }
  317. .swiper-container-cube .swiper-slide-active,
  318. .swiper-container-cube .swiper-slide-next,
  319. .swiper-container-cube .swiper-slide-prev,
  320. .swiper-container-cube .swiper-slide-next + .swiper-slide {
  321. visibility: visible;
  322. pointer-events: auto;
  323. }
  324. .swiper-container-cube .swiper-cube-shadow {
  325. @include position(null, null, 0, 0);
  326. position: absolute;
  327. z-index: 0;
  328. width: 100%;
  329. height: 100%;
  330. background: #000;
  331. opacity: .6;
  332. filter: blur(50px);
  333. }
  334. // Fade
  335. .swiper-container-fade.swiper-container-free-mode .swiper-slide {
  336. transition-timing-function: ease-out;
  337. }
  338. .swiper-container-fade .swiper-slide {
  339. transition-property: opacity;
  340. pointer-events: none;
  341. }
  342. .swiper-container-fade .swiper-slide .swiper-slide {
  343. pointer-events: none;
  344. }
  345. .swiper-container-fade .swiper-slide-active,
  346. .swiper-container-fade .swiper-slide-active .swiper-slide-active {
  347. pointer-events: auto;
  348. }
  349. .swiper-zoom-container {
  350. @include text-align(center);
  351. display: flex;
  352. align-items: center;
  353. justify-content: center;
  354. width: 100%;
  355. height: 100%;
  356. }
  357. .swiper-zoom-container > img,
  358. .swiper-zoom-container > svg,
  359. .swiper-zoom-container > canvas {
  360. max-width: 100%;
  361. max-height: 100%;
  362. object-fit: contain;
  363. }
  364. // Scrollbar
  365. .swiper-scrollbar {
  366. @include border-radius(10px);
  367. position: relative;
  368. background: rgba(0, 0, 0, .1);
  369. touch-action: none;
  370. }
  371. .swiper-container-horizontal > .swiper-scrollbar {
  372. @include position(null, null, 3px, 1%);
  373. position: absolute;
  374. z-index: 50;
  375. width: 98%;
  376. height: 5px;
  377. }
  378. .swiper-container-vertical > .swiper-scrollbar {
  379. @include position(1%, 3px, null, null);
  380. position: absolute;
  381. z-index: 50;
  382. width: 5px;
  383. height: 98%;
  384. }
  385. .swiper-scrollbar-drag {
  386. @include position(0, null, null, 0);
  387. @include border-radius(10px);
  388. position: relative;
  389. width: 100%;
  390. height: 100%;
  391. background: rgba(0, 0, 0, .5);
  392. }
  393. .swiper-scrollbar-cursor-drag {
  394. cursor: move;
  395. }
  396. // Preloader
  397. .swiper-lazy-preloader {
  398. @include position(50%, null, null, 50%);
  399. @include margin(-21px, null, null, -21px);
  400. @include transform-origin(50%);
  401. position: absolute;
  402. z-index: 10;
  403. width: 42px;
  404. height: 42px;
  405. animation: swiper-preloader-spin 1s steps(12, end) infinite;
  406. }
  407. .swiper-lazy-preloader::after {
  408. @include background-position(50%);
  409. display: block;
  410. width: 100%;
  411. height: 100%;
  412. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  413. background-repeat: no-repeat;
  414. background-size: 100%;
  415. content: "";
  416. }
  417. .swiper-lazy-preloader-white::after {
  418. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  419. }
  420. @keyframes swiper-preloader-spin {
  421. 100% {
  422. transform: rotate(360deg);
  423. }
  424. }
  425. ion-slides {
  426. display: block;
  427. width: 100%;
  428. height: 100%;
  429. }
  430. .slide-zoom {
  431. @include text-align(center);
  432. display: block;
  433. width: 100%;
  434. }
  435. .swiper-slide img {
  436. width: auto;
  437. max-width: 100%;
  438. height: auto;
  439. max-height: 100%;
  440. }