Rahul Katari 5 månader sedan
incheckning
5cee8fb181
100 ändrade filer med 69937 tillägg och 0 borttagningar
  1. 6
    0
      Readme.txt
  2. 117
    0
      about.html
  3. 2344
    0
      assets/css/main.css
  4. Binär
      assets/img/about-2.jpg
  5. Binär
      assets/img/about-21.webp
  6. Binär
      assets/img/about-5.jpg
  7. Binär
      assets/img/about-51.webp
  8. Binär
      assets/img/about.jpg
  9. Binär
      assets/img/apple-touch-icon.png
  10. Binär
      assets/img/avatar-1.webp
  11. Binär
      assets/img/avatar-2.webp
  12. Binär
      assets/img/avatar-3.webp
  13. Binär
      assets/img/avatar-4.webp
  14. Binär
      assets/img/avatar-5.webp
  15. Binär
      assets/img/banner.webp
  16. Binär
      assets/img/clients/client-1.png
  17. Binär
      assets/img/clients/client-2.png
  18. Binär
      assets/img/clients/client-3.png
  19. Binär
      assets/img/clients/client-4.png
  20. Binär
      assets/img/clients/client-5.png
  21. Binär
      assets/img/clients/client-6.png
  22. Binär
      assets/img/clients/client-7.png
  23. Binär
      assets/img/clients/client-8.png
  24. Binär
      assets/img/favicon.png
  25. Binär
      assets/img/features-illustration-1.webp
  26. Binär
      assets/img/features-illustration-2.webp
  27. Binär
      assets/img/features-illustration-3.webp
  28. Binär
      assets/img/icons/marketing.png
  29. Binär
      assets/img/icons/pre-sales.png
  30. Binär
      assets/img/icons/procurement.png
  31. Binär
      assets/img/icons/sales.png
  32. Binär
      assets/img/illustration-1.webp
  33. Binär
      assets/img/logo-.png
  34. Binär
      assets/img/logo-white-bg.jpg
  35. Binär
      assets/img/logo.png
  36. Binär
      assets/img/phone-app-screen.webp
  37. Binär
      assets/img/services.jpg
  38. Binär
      assets/img/testimonials/testimonials-1.jpg
  39. Binär
      assets/img/testimonials/testimonials-2.jpg
  40. Binär
      assets/img/testimonials/testimonials-3.jpg
  41. Binär
      assets/img/testimonials/testimonials-4.jpg
  42. 65
    0
      assets/js/footer.js
  43. 177
    0
      assets/js/main.js
  44. 103
    0
      assets/js/navbar.html
  45. 91
    0
      assets/js/navbar.js
  46. 2
    0
      assets/scss/Readme.txt
  47. 614
    0
      assets/vendor/aos/aos.cjs.js
  48. 1
    0
      assets/vendor/aos/aos.css
  49. 610
    0
      assets/vendor/aos/aos.esm.js
  50. 1
    0
      assets/vendor/aos/aos.js
  51. 1
    0
      assets/vendor/aos/aos.js.map
  52. 2078
    0
      assets/vendor/bootstrap-icons/bootstrap-icons.css
  53. 2052
    0
      assets/vendor/bootstrap-icons/bootstrap-icons.json
  54. 5
    0
      assets/vendor/bootstrap-icons/bootstrap-icons.min.css
  55. 2090
    0
      assets/vendor/bootstrap-icons/bootstrap-icons.scss
  56. Binär
      assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff
  57. Binär
      assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2
  58. 4085
    0
      assets/vendor/bootstrap/css/bootstrap-grid.css
  59. 1
    0
      assets/vendor/bootstrap/css/bootstrap-grid.css.map
  60. 6
    0
      assets/vendor/bootstrap/css/bootstrap-grid.min.css
  61. 1
    0
      assets/vendor/bootstrap/css/bootstrap-grid.min.css.map
  62. 4084
    0
      assets/vendor/bootstrap/css/bootstrap-grid.rtl.css
  63. 1
    0
      assets/vendor/bootstrap/css/bootstrap-grid.rtl.css.map
  64. 6
    0
      assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css
  65. 1
    0
      assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css.map
  66. 597
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.css
  67. 1
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.css.map
  68. 6
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.min.css
  69. 1
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.min.css.map
  70. 594
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css
  71. 1
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css.map
  72. 6
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css
  73. 1
    0
      assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css.map
  74. 5402
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.css
  75. 1
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.css.map
  76. 6
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.min.css
  77. 1
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.min.css.map
  78. 5393
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css
  79. 1
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css.map
  80. 6
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css
  81. 1
    0
      assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css.map
  82. 12057
    0
      assets/vendor/bootstrap/css/bootstrap.css
  83. 1
    0
      assets/vendor/bootstrap/css/bootstrap.css.map
  84. 6
    0
      assets/vendor/bootstrap/css/bootstrap.min.css
  85. 1
    0
      assets/vendor/bootstrap/css/bootstrap.min.css.map
  86. 12030
    0
      assets/vendor/bootstrap/css/bootstrap.rtl.css
  87. 1
    0
      assets/vendor/bootstrap/css/bootstrap.rtl.css.map
  88. 6
    0
      assets/vendor/bootstrap/css/bootstrap.rtl.min.css
  89. 1
    0
      assets/vendor/bootstrap/css/bootstrap.rtl.min.css.map
  90. 1
    0
      assets/vendor/bootstrap/css/prb.txt
  91. 6314
    0
      assets/vendor/bootstrap/js/bootstrap.bundle.js
  92. 1
    0
      assets/vendor/bootstrap/js/bootstrap.bundle.js.map
  93. 7
    0
      assets/vendor/bootstrap/js/bootstrap.bundle.min.js
  94. 1
    0
      assets/vendor/bootstrap/js/bootstrap.bundle.min.js.map
  95. 4447
    0
      assets/vendor/bootstrap/js/bootstrap.esm.js
  96. 1
    0
      assets/vendor/bootstrap/js/bootstrap.esm.js.map
  97. 7
    0
      assets/vendor/bootstrap/js/bootstrap.esm.min.js
  98. 1
    0
      assets/vendor/bootstrap/js/bootstrap.esm.min.js.map
  99. 4494
    0
      assets/vendor/bootstrap/js/bootstrap.js
  100. 0
    0
      assets/vendor/bootstrap/js/bootstrap.js.map

+ 6
- 0
Readme.txt Visa fil

@@ -0,0 +1,6 @@
1
+Thanks for downloading this template!
2
+
3
+Template Name: iLanding
4
+Template URL: https://bootstrapmade.com/ilanding-bootstrap-landing-page-template/
5
+Author: BootstrapMade.com
6
+License: https://bootstrapmade.com/license/

+ 117
- 0
about.html Visa fil

@@ -0,0 +1,117 @@
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+
4
+<head>
5
+  <meta charset="utf-8">
6
+  <meta content="width=device-width, initial-scale=1.0" name="viewport">
7
+  <title>ADM - ARIA Digital Machines</title>
8
+  <meta name="description" content="">
9
+  <meta name="keywords" content=""> <!-- Favicons -->
10
+  <link href="assets/img/favicon.png" rel="icon">
11
+  <link href="assets/img/apple-touch-icon.png" rel="apple-touch-icon"> <!-- Fonts -->
12
+  <link href="https://fonts.googleapis.com" rel="preconnect">
13
+  <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
14
+  <link
15
+    href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&family=Inter:wght@100;200;300;400;500;600;700;800;900&family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
16
+    rel="stylesheet"> <!-- Vendor CSS Files -->
17
+  <link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
18
+  <link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
19
+  <link href="assets/vendor/aos/aos.css" rel="stylesheet">
20
+  <link href="assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet">
21
+  <link href="assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet"> <!-- Main CSS File -->
22
+  <link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
23
+  <link href="assets/css/main.css" rel="stylesheet">
24
+  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
25
+</head>
26
+
27
+<body class="index-page">
28
+  <header id="header" class="header d-flex align-items-center fixed-top"> </header>
29
+  <main class="main"> <!-- Hero Section -->
30
+    <!-- Hero Section -->
31
+    <section class="py-5 bg-light text-center mt-5">
32
+      <div class="container mt-5 position-relative">
33
+        <div class="position-absolute top-0 text-white d-flex flex-column py-5">
34
+          <h1 class="display-4 fw-bold text-white">About Us</h1>
35
+          <p class="lead w-75 mt-5 ms-5 text-start">Discover the story behind Aria Digital Machines, a company dedicated to innovative computer
36
+            hardware and software solutions.</p>
37
+        </div>
38
+        <img src="./assets/img/about.jpg" alt="About Us" class="img-fluid rounded top-0" >
39
+      </div>
40
+    </section>
41
+
42
+    <!-- About Section -->
43
+    <section class="py-5">
44
+      <div class="container">
45
+        <div class="row align-items-center my-5 py-5">
46
+          <div class="col-md-6 mb-4 mb-md-0">
47
+            <h2 class="fw-bold">Who We Are</h2>
48
+            <p>At Aria Digital Machines, we are passionate about delivering top-notch computer hardware and software
49
+              solutions. Our mission is to empower businesses and individuals with cutting-edge technology that drives
50
+              efficiency, creativity, and success.</p>
51
+          </div>
52
+          <div class="col-md-6 text-center">
53
+            <i class="fas fa-users fa-5x "></i>
54
+          </div>
55
+        </div>
56
+        <div class="row my-5 py-5">
57
+          <div class="col-md-6 text-center">
58
+            <i class="fas fa-bullseye fa-5x text-success"></i>
59
+          </div>
60
+          <div class="col-md-6">
61
+            <h2 class="fw-bold">Our Mission</h2>
62
+            <p>To provide innovative and reliable solutions that simplify technology and make it accessible for
63
+              everyone. We aim to bridge the gap between complex technology and user-friendly experiences.</p>
64
+          </div>
65
+        </div>
66
+        <div class="row my-5 py-5 align-items-center">
67
+          <div class="col-md-6 mb-4 mb-md-0">
68
+            <h2 class="fw-bold">Our Vision</h2>
69
+            <p>To be a global leader in digital solutions, setting benchmarks for quality, innovation, and customer
70
+              satisfaction in the tech industry.</p>
71
+          </div>
72
+          <div class="col-md-6 text-center">
73
+            <i class="fas fa-lightbulb fa-5x "></i>
74
+          </div>
75
+        </div>
76
+      </div>
77
+    </section>
78
+
79
+    <!-- Values Section -->
80
+    <section class="py-5 bg-light my-5">
81
+      <div class="container my-5">
82
+        <div class="row text-center">
83
+          <div class="col-md-4 mb-4">
84
+            <i class="fas fa-cogs fa-3x text-primary"></i>
85
+            <h3 class="mt-3">Innovation</h3>
86
+            <p>We embrace innovation to stay ahead in the tech industry, constantly evolving to meet our customers'
87
+              needs.</p>
88
+          </div>
89
+          <div class="col-md-4 mb-4">
90
+            <i class="fas fa-heart fa-3x text-danger"></i>
91
+            <h3 class="mt-3">Customer Focus</h3>
92
+            <p>Our customers are at the heart of everything we do. We prioritize their satisfaction and success.</p>
93
+          </div>
94
+          <div class="col-md-4 mb-4">
95
+            <i class="fas fa-handshake fa-3x text-success"></i>
96
+            <h3 class="mt-3">Integrity</h3>
97
+            <p>We uphold the highest standards of integrity, ensuring transparency and trust in all our operations.</p>
98
+          </div>
99
+        </div>
100
+      </div>
101
+    </section>
102
+  </main>
103
+  <footer id="footer" class="footer"> </footer> <!-- Scroll Top --> <a href="#" id="scroll-top"
104
+    class="scroll-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
105
+  <!-- Vendor JS Files -->
106
+  <script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
107
+  <script src="assets/vendor/php-email-form/validate.js"></script>
108
+  <script src="assets/vendor/aos/aos.js"></script>
109
+  <script src="assets/vendor/glightbox/js/glightbox.min.js"></script>
110
+  <script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
111
+  <script src="assets/vendor/purecounter/purecounter_vanilla.js"></script> <!-- Main JS File -->
112
+  <script src="assets/js/main.js"></script> <!-- header and footer js files  -->
113
+  <script src="assets/js/navbar.js"></script>
114
+  <script src="assets/js/footer.js"></script>
115
+</body>
116
+
117
+</html>

+ 2344
- 0
assets/css/main.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


Binär
assets/img/about-2.jpg Visa fil


Binär
assets/img/about-21.webp Visa fil


Binär
assets/img/about-5.jpg Visa fil


Binär
assets/img/about-51.webp Visa fil


Binär
assets/img/about.jpg Visa fil


Binär
assets/img/apple-touch-icon.png Visa fil


Binär
assets/img/avatar-1.webp Visa fil


Binär
assets/img/avatar-2.webp Visa fil


Binär
assets/img/avatar-3.webp Visa fil


Binär
assets/img/avatar-4.webp Visa fil


Binär
assets/img/avatar-5.webp Visa fil


Binär
assets/img/banner.webp Visa fil


Binär
assets/img/clients/client-1.png Visa fil


Binär
assets/img/clients/client-2.png Visa fil


Binär
assets/img/clients/client-3.png Visa fil


Binär
assets/img/clients/client-4.png Visa fil


Binär
assets/img/clients/client-5.png Visa fil


Binär
assets/img/clients/client-6.png Visa fil


Binär
assets/img/clients/client-7.png Visa fil


Binär
assets/img/clients/client-8.png Visa fil


Binär
assets/img/favicon.png Visa fil


Binär
assets/img/features-illustration-1.webp Visa fil


Binär
assets/img/features-illustration-2.webp Visa fil


Binär
assets/img/features-illustration-3.webp Visa fil


Binär
assets/img/icons/marketing.png Visa fil


Binär
assets/img/icons/pre-sales.png Visa fil


Binär
assets/img/icons/procurement.png Visa fil


Binär
assets/img/icons/sales.png Visa fil


Binär
assets/img/illustration-1.webp Visa fil


Binär
assets/img/logo-.png Visa fil


Binär
assets/img/logo-white-bg.jpg Visa fil


Binär
assets/img/logo.png Visa fil


Binär
assets/img/phone-app-screen.webp Visa fil


Binär
assets/img/services.jpg Visa fil


Binär
assets/img/testimonials/testimonials-1.jpg Visa fil


Binär
assets/img/testimonials/testimonials-2.jpg Visa fil


Binär
assets/img/testimonials/testimonials-3.jpg Visa fil


Binär
assets/img/testimonials/testimonials-4.jpg Visa fil


+ 65
- 0
assets/js/footer.js Visa fil

@@ -0,0 +1,65 @@
1
+const footerHtml = `<div class="container footer-top">
2
+      <div class="row gy-4">
3
+        <div class="col-lg-3 col-md-6 footer-about">
4
+          <a href="index.html" class="logo d-flex align-items-center">
5
+            <img src="./assets/img/logo.png"/>
6
+          </a>
7
+          <!-- <div class="footer-contact pt-3">
8
+            <p>A108 Adam Street</p>
9
+            <p>New York, NY 535022</p>
10
+            <p class="mt-3"><strong>Phone:</strong> <span>+1 5589 55488 55</span></p>
11
+            <p><strong>Email:</strong> <span>info@example.com</span></p>
12
+          </div> -->
13
+          <div class="social-links d-none mt-4 ms-4">
14
+            <a href=""><i class="bi bi-twitter-x"></i></a>
15
+            <a href=""><i class="bi bi-facebook"></i></a>
16
+            <a href=""><i class="bi bi-instagram"></i></a>
17
+            <a href=""><i class="bi bi-linkedin"></i></a>
18
+          </div>
19
+        </div>
20
+
21
+        <div class="col-lg-3 col-md-6 footer-links">
22
+          <h4>Useful Links</h4>
23
+          <ul>
24
+            <li><a href="/">Home</a></li>
25
+            <li><a href="#">About us</a></li>
26
+            <li><a href="#">Services</a></li>
27
+            <li><a href="#">Terms of service</a></li>
28
+            <li><a href="#">Privacy policy</a></li>
29
+          </ul>
30
+        </div>
31
+
32
+        <div class="col-lg-3 col-md-6 footer-links ">
33
+          <h4>Our Products</h4>
34
+          <ul>
35
+            <li><a href="#">Laptops</a></li>
36
+            <li><a href="#">All In One's</a></li>
37
+            <li><a href="#">Servers</a></li>
38
+            <li><a href="#">AI NVR (coming soon)</a></li>
39
+            <li><a href="#">Racks</a></li>
40
+          </ul>
41
+        </div>
42
+
43
+        <div class="col-lg-3 col-md-6 footer-links">
44
+          <h5 class="mb-4">Places We Serve</h5>
45
+          <ul>
46
+            <li><h4 class="mb-0 pb-0">San Francisco</h4></li>
47
+            <li><h4 class="mb-0 pb-0">Kabul</h4></li>
48
+            <li><h4 class="mb-0 pb-0">Dubai</h4></li>
49
+            <li><h4 class="mb-0 pb-0">Hyderabad</h4></li>
50
+          </ul>
51
+        </div>
52
+
53
+      </div>
54
+    </div>
55
+
56
+    <div class="container copyright text-center mt-4">
57
+      <p>© <span>Copyright</span> <strong class="px-1 sitename">ADM</strong> <span>All Rights Reserved</span></p>
58
+      <div class="credits">
59
+        <!-- All the links in the footer should remain intact. -->
60
+        <!-- You can delete the links only if you've purchased the pro version. -->
61
+        <!-- Licensing information: https://bootstrapmade.com/license/ -->
62
+        <!-- Purchase the pro version with working PHP/AJAX contact form: [buy-url] -->
63
+      </div>
64
+    </div>`;
65
+    document.getElementById('footer').innerHTML = footerHtml;

+ 177
- 0
assets/js/main.js Visa fil

@@ -0,0 +1,177 @@
1
+/**
2
+* Template Name: iLanding
3
+* Template URL: https://bootstrapmade.com/ilanding-bootstrap-landing-page-template/
4
+* Updated: Nov 12 2024 with Bootstrap v5.3.3
5
+* Author: BootstrapMade.com
6
+* License: https://bootstrapmade.com/license/
7
+*/
8
+
9
+(function() {
10
+  "use strict";
11
+
12
+  /**
13
+   * Apply .scrolled class to the body as the page is scrolled down
14
+   */
15
+  function toggleScrolled() {
16
+    const selectBody = document.querySelector('body');
17
+    const selectHeader = document.querySelector('#header');
18
+    if (!selectHeader.classList.contains('scroll-up-sticky') && !selectHeader.classList.contains('sticky-top') && !selectHeader.classList.contains('fixed-top')) return;
19
+    window.scrollY > 100 ? selectBody.classList.add('scrolled') : selectBody.classList.remove('scrolled');
20
+  }
21
+
22
+  document.addEventListener('scroll', toggleScrolled);
23
+  window.addEventListener('load', toggleScrolled);
24
+
25
+  /**
26
+   * Mobile nav toggle
27
+   */
28
+  const mobileNavToggleBtn = document.querySelector('.mobile-nav-toggle');
29
+
30
+  function mobileNavToogle() {
31
+    document.querySelector('body').classList.toggle('mobile-nav-active');
32
+    mobileNavToggleBtn.classList.toggle('bi-list');
33
+    mobileNavToggleBtn.classList.toggle('bi-x');
34
+  }
35
+  if (mobileNavToggleBtn) {
36
+    mobileNavToggleBtn.addEventListener('click', mobileNavToogle);
37
+  }
38
+
39
+  /**
40
+   * Hide mobile nav on same-page/hash links
41
+   */
42
+  document.querySelectorAll('#navmenu a').forEach(navmenu => {
43
+    navmenu.addEventListener('click', () => {
44
+      if (document.querySelector('.mobile-nav-active')) {
45
+        mobileNavToogle();
46
+      }
47
+    });
48
+
49
+  });
50
+
51
+  /**
52
+   * Toggle mobile nav dropdowns
53
+   */
54
+  document.querySelectorAll('.navmenu .toggle-dropdown').forEach(navmenu => {
55
+    navmenu.addEventListener('click', function(e) {
56
+      e.preventDefault();
57
+      this.parentNode.classList.toggle('active');
58
+      this.parentNode.nextElementSibling.classList.toggle('dropdown-active');
59
+      e.stopImmediatePropagation();
60
+    });
61
+  });
62
+
63
+  /**
64
+   * Scroll top button
65
+   */
66
+  let scrollTop = document.querySelector('.scroll-top');
67
+
68
+  function toggleScrollTop() {
69
+    if (scrollTop) {
70
+      window.scrollY > 100 ? scrollTop.classList.add('active') : scrollTop.classList.remove('active');
71
+    }
72
+  }
73
+  scrollTop.addEventListener('click', (e) => {
74
+    e.preventDefault();
75
+    window.scrollTo({
76
+      top: 0,
77
+      behavior: 'smooth'
78
+    });
79
+  });
80
+
81
+  window.addEventListener('load', toggleScrollTop);
82
+  document.addEventListener('scroll', toggleScrollTop);
83
+
84
+  /**
85
+   * Animation on scroll function and init
86
+   */
87
+  function aosInit() {
88
+    AOS.init({
89
+      duration: 600,
90
+      easing: 'ease-in-out',
91
+      once: true,
92
+      mirror: false
93
+    });
94
+  }
95
+  window.addEventListener('load', aosInit);
96
+
97
+  /**
98
+   * Initiate glightbox
99
+   */
100
+  const glightbox = GLightbox({
101
+    selector: '.glightbox'
102
+  });
103
+
104
+  /**
105
+   * Init swiper sliders
106
+   */
107
+  function initSwiper() {
108
+    document.querySelectorAll(".init-swiper").forEach(function(swiperElement) {
109
+      let config = JSON.parse(
110
+        swiperElement.querySelector(".swiper-config").innerHTML.trim()
111
+      );
112
+
113
+      if (swiperElement.classList.contains("swiper-tab")) {
114
+        initSwiperWithCustomPagination(swiperElement, config);
115
+      } else {
116
+        new Swiper(swiperElement, config);
117
+      }
118
+    });
119
+  }
120
+
121
+  window.addEventListener("load", initSwiper);
122
+
123
+  /**
124
+   * Initiate Pure Counter
125
+   */
126
+  new PureCounter();
127
+
128
+  /**
129
+   * Frequently Asked Questions Toggle
130
+   */
131
+  document.querySelectorAll('.faq-item h3, .faq-item .faq-toggle').forEach((faqItem) => {
132
+    faqItem.addEventListener('click', () => {
133
+      faqItem.parentNode.classList.toggle('faq-active');
134
+    });
135
+  });
136
+
137
+  /**
138
+   * Correct scrolling position upon page load for URLs containing hash links.
139
+   */
140
+  window.addEventListener('load', function(e) {
141
+    if (window.location.hash) {
142
+      if (document.querySelector(window.location.hash)) {
143
+        setTimeout(() => {
144
+          let section = document.querySelector(window.location.hash);
145
+          let scrollMarginTop = getComputedStyle(section).scrollMarginTop;
146
+          window.scrollTo({
147
+            top: section.offsetTop - parseInt(scrollMarginTop),
148
+            behavior: 'smooth'
149
+          });
150
+        }, 100);
151
+      }
152
+    }
153
+  });
154
+
155
+  /**
156
+   * Navmenu Scrollspy
157
+   */
158
+  let navmenulinks = document.querySelectorAll('.navmenu a');
159
+
160
+  function navmenuScrollspy() {
161
+    navmenulinks.forEach(navmenulink => {
162
+      if (!navmenulink.hash) return;
163
+      let section = document.querySelector(navmenulink.hash);
164
+      if (!section) return;
165
+      let position = window.scrollY + 200;
166
+      if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
167
+        document.querySelectorAll('.navmenu a.active').forEach(link => link.classList.remove('active'));
168
+        navmenulink.classList.add('active');
169
+      } else {
170
+        navmenulink.classList.remove('active');
171
+      }
172
+    })
173
+  }
174
+  window.addEventListener('load', navmenuScrollspy);
175
+  document.addEventListener('scroll', navmenuScrollspy);
176
+
177
+})();

+ 103
- 0
assets/js/navbar.html Visa fil

@@ -0,0 +1,103 @@
1
+<div
2
+    class="header-container container-fluid container-xl position-relative d-flex align-items-center justify-content-between">
3
+
4
+    <a href="index.html" class="logo d-flex align-items-center me-auto me-xl-0">
5
+        <!-- Uncomment the line below if you also wish to use an image logo -->
6
+        <!-- <img src="assets/img/logo.png" alt=""> -->
7
+        <h1 class="sitename text-primary">ADM</h1>
8
+    </a>
9
+
10
+    <nav id="navmenu" class="navmenu">
11
+        <ul>
12
+            <li><a href="#hero" class="active">Home</a></li>
13
+            <li><a href="#about">About</a></li>
14
+            <li class="dropdown mega-menu"><a href="#"><span>Solutions</span> <i
15
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
16
+                <ul>
17
+                    <li>
18
+                        <span class="text-primary ps-2">Supply Chain Solutions</span>
19
+                        <div>
20
+                            <div><a href="dealer-automation.html">Dealer Automation</a></div>
21
+                            <div><a href="secondary-sales.html">Secodary Sales </a></div>
22
+                            <div><a href="e-governance.html">E-Governance </a></div>
23
+                            <div><a href="loyalty-solutions.html">Loyalty Solutions</a></div>
24
+                            <div><a href="block-chain-enabled.html">Block Chain Enabled</a></div>
25
+                            <div><a href="track-and-trace.html">Track and Trace </a></div>
26
+                        </div>
27
+                    </li>
28
+                    <li>
29
+                        <span class="text-primary ps-2">Process Automation</span>
30
+                        <div>
31
+                            <div><a href="enterprises.html">Enterprises</a></div>
32
+                            <div><a href="govermnets.html">Governments</a></div>
33
+                            <div><a href="small-businesses.html">Small Businesses</a></div>
34
+                        </div>
35
+                    </li>
36
+                    <li><span class="text-primary ps-2">VMS</span>
37
+                        <div>
38
+                            <div><a href="integrated-video-solutions.html">Integrated Video Solutions</a></div>
39
+                            <div><a href="video-storage-solutions.html">Video Storage Solutions</a></div>
40
+                            <div><a href="central-command-center.html">Central Command Center</a></div>
41
+                            <div><a href="event-streaming.html">Event Streaming</a></div>
42
+                            <div><a href="video-analytics.html">Video Analytics</a></div>
43
+                        </div>
44
+                    </li>
45
+                </ul>
46
+            </li>
47
+            <li class="dropdown"><a href="#"><span>Products</span> <i
48
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
49
+                <ul>
50
+                    <li><a href="#">Storage Systems</a></li>
51
+                    <li><a href="#">AI NVR (Coming Soon)</a></li>
52
+                    <li><a href="#">Racks</a></li>
53
+                </ul>
54
+            </li>
55
+            <li class="dropdown mega-menu"><a href="#"><span>Services</span> <i
56
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
57
+                <ul>
58
+                    <li>
59
+                        <div>
60
+                            <div><a href="iot-technologies.html">IoT Technologies</a></div>
61
+                            <div><a href="video-analytics.html">Video Analytics</a></div>
62
+                            <div><a href="rf=technlogy.html">RF Technology </a></div>
63
+                        </div>
64
+                    </li>
65
+                    <li>
66
+                        <div>
67
+                            <div><a href="rooftop-solar.html">Rooftop Solar/Solar Pump</a></div>
68
+                            <div><a href="software-development.html">Software Development</a></div>
69
+                            <div><a href="home-automation.html">Home Automation</a></div>
70
+                        </div>
71
+                    </li>
72
+                    <li>
73
+                        <div>
74
+                            <div><a href="it-telecommunications.html">IT & Telecommunication</a></div>
75
+                            <div><a href="smart-city.html">Smart Cities</a></div>
76
+                            <div><a href="e-mobility-services.html">E-Mobility Services</a></div>
77
+                        </div>
78
+                    </li>
79
+                </ul>
80
+            </li>
81
+            <li class="dropdown"><a href="#"><span>Investors</span> <i
82
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
83
+                <ul>
84
+                    <li><a href="annual-reports.html">Annual Reports</a></li>
85
+                    <li><a href="financial-information.html">Financial Information</a></li>
86
+                    <li><a href="corporate-governance.html">Corporate Governance</a></li>
87
+                    <li><a href="board-of-directors.html">Board of Directors</a></li>
88
+                    <li><a href="investor-news-updates.html">Investor News & Updates</a></li>
89
+                    <li><a href="regulatory-filings.html">Regulatory Filings</a></li>
90
+                    <li><a href="drhp.html">DRHP</a></li>
91
+                    <li><a href="contact-details.html">Contact Details</a></li>
92
+                    <li><a href="csr-policy.html">CSR Policy</a></li>
93
+                    <li><a href="disclosure.html">Disclosure</a></li>
94
+                </ul>
95
+            </li>
96
+            <li><a href="#contact">Contact</a></li>
97
+        </ul>
98
+        <i class="mobile-nav-toggle d-xl-none bi bi-list"></i>
99
+    </nav>
100
+
101
+    <a class="btn-getstarted" href="index.html#about">Get Started</a>
102
+
103
+</div>

+ 91
- 0
assets/js/navbar.js Visa fil

@@ -0,0 +1,91 @@
1
+const html = `<div
2
+    class="header-container container-fluid container-xl position-relative d-flex align-items-center justify-content-between">
3
+
4
+    <a href="index.html" class="logo d-flex align-items-center me-auto me-xl-0">
5
+        <!-- Uncomment the line below if you also wish to use an image logo -->
6
+        <img src="assets/img/logo.png" alt="">
7
+        <!--<h1 class="sitename text-primary">ADM</h1> -->
8
+    </a>
9
+
10
+    <nav id="navmenu" class="navmenu">
11
+        <ul>
12
+            <li><a href="/" class="active">Home</a></li>
13
+            <li><a href="about.html">About</a></li>
14
+            <li class="dropdown"><a href="#"><span>Products</span> <i
15
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
16
+                <ul>
17
+                    <li><a href="zeno-aio-landing.html">Laptops</a></li>
18
+                    <li><a href="zeno-aio-landing.html">All In One's</a></li>
19
+                    <li><a href="#">Servers</a></li>
20
+                    <li><a href="#">AI NVR (Coming Soon)</a></li>
21
+                    <li><a href="#">Racks</a></li>
22
+                </ul>
23
+            </li>
24
+            <li class="dropdown mega-menu"><a href="#"><span>Solutions</span> <i
25
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
26
+                <ul>
27
+                    <li>
28
+                        <span class="text-primary ps-2">Supply Chain Solutions</span>
29
+                        <div>
30
+                            <div><a href="dealer-automation.html">Dealer Automation</a></div>
31
+                            <div><a href="secondary-sales.html">Secodary Sales </a></div>
32
+                            <div><a href="e-governance.html">E-Governance </a></div>
33
+                            <div><a href="loyalty-solutions.html">Loyalty Solutions</a></div>
34
+                            <div><a href="block-chain-enabled.html">Block Chain Enabled</a></div>
35
+                            <div><a href="track-and-trace.html">Track and Trace </a></div>
36
+                        </div>
37
+                    </li>
38
+                    <li>
39
+                        <span class="text-primary ps-2">Process Automation</span>
40
+                        <div>
41
+                            <div><a href="enterprises.html">Enterprises</a></div>
42
+                            <div><a href="govermnets.html">Governments</a></div>
43
+                            <div><a href="small-businesses.html">Small Businesses</a></div>
44
+                        </div>
45
+                    </li>
46
+                    <li><span class="text-primary ps-2">VMS</span>
47
+                        <div>
48
+                            <div><a href="integrated-video-solutions.html">Integrated Video Solutions</a></div>
49
+                            <div><a href="video-storage-solutions.html">Video Storage Solutions</a></div>
50
+                            <div><a href="central-command-center.html">Central Command Center</a></div>
51
+                            <div><a href="event-streaming.html">Event Streaming</a></div>
52
+                        </div>
53
+                    </li>
54
+                </ul>
55
+            </li>
56
+            <li class="dropdown mega-menu"><a href="#"><span>Services</span> <i
57
+                        class="bi bi-chevron-down toggle-dropdown"></i></a>
58
+                <ul>
59
+                    <li>
60
+                        <div>
61
+                            <div><a href="iot-technology.html">IoT Technologies</a></div>
62
+                            <div><a href="video-analytics.html">Video Analytics</a></div>
63
+                            <div><a href="rf-technology.html">RF Technology </a></div>
64
+                        </div>
65
+                    </li>
66
+                    <li>
67
+                        <div>
68
+                            <div><a href="rooftop-solar.html">Rooftop Solar/Solar Pump</a></div>
69
+                            <div><a href="software-development.html">Software Development</a></div>
70
+                            <div><a href="home-automation.html">Home Automation</a></div>
71
+                        </div>
72
+                    </li>
73
+                    <li>
74
+                        <div>
75
+                            <div><a href="it-telecommunications.html">IT & Telecommunication</a></div>
76
+                            <div><a href="smart-cities.html">Smart Cities</a></div>
77
+                            <div><a href="smart-communication.html">Smart Communication</a></div>
78
+                        </div>
79
+                    </li>
80
+                </ul>
81
+            </li>
82
+                <li><a href="#">Investors</a></li>
83
+                <li><a href="#">Contact</a></li>
84
+        </ul>
85
+        <i class="mobile-nav-toggle d-xl-none bi bi-list"></i>
86
+    </nav>
87
+
88
+    <a class="btn-getstarted d-none" href="#">Get Started</a>
89
+
90
+</div>`;
91
+    document.getElementById('header').innerHTML = html;

+ 2
- 0
assets/scss/Readme.txt Visa fil

@@ -0,0 +1,2 @@
1
+The .scss (Sass) files are only available in the pro version.
2
+You can buy it from: https://bootstrapmade.com/ilanding-bootstrap-landing-page-template/

+ 614
- 0
assets/vendor/aos/aos.cjs.js Visa fil

@@ -0,0 +1,614 @@
1
+'use strict';
2
+
3
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
4
+
5
+var throttle = _interopDefault(require('lodash.throttle'));
6
+var debounce = _interopDefault(require('lodash.debounce'));
7
+
8
+var callback = function callback() {};
9
+
10
+function containsAOSNode(nodes) {
11
+  var i = void 0,
12
+      currentNode = void 0,
13
+      result = void 0;
14
+
15
+  for (i = 0; i < nodes.length; i += 1) {
16
+    currentNode = nodes[i];
17
+
18
+    if (currentNode.dataset && currentNode.dataset.aos) {
19
+      return true;
20
+    }
21
+
22
+    result = currentNode.children && containsAOSNode(currentNode.children);
23
+
24
+    if (result) {
25
+      return true;
26
+    }
27
+  }
28
+
29
+  return false;
30
+}
31
+
32
+function check(mutations) {
33
+  if (!mutations) return;
34
+
35
+  mutations.forEach(function (mutation) {
36
+    var addedNodes = Array.prototype.slice.call(mutation.addedNodes);
37
+    var removedNodes = Array.prototype.slice.call(mutation.removedNodes);
38
+    var allNodes = addedNodes.concat(removedNodes);
39
+
40
+    if (containsAOSNode(allNodes)) {
41
+      return callback();
42
+    }
43
+  });
44
+}
45
+
46
+function getMutationObserver() {
47
+  return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
48
+}
49
+
50
+function isSupported() {
51
+  return !!getMutationObserver();
52
+}
53
+
54
+function ready(selector, fn) {
55
+  var doc = window.document;
56
+  var MutationObserver = getMutationObserver();
57
+
58
+  var observer = new MutationObserver(check);
59
+  callback = fn;
60
+
61
+  observer.observe(doc.documentElement, {
62
+    childList: true,
63
+    subtree: true,
64
+    removedNodes: true
65
+  });
66
+}
67
+
68
+var observer = { isSupported: isSupported, ready: ready };
69
+
70
+var classCallCheck = function (instance, Constructor) {
71
+  if (!(instance instanceof Constructor)) {
72
+    throw new TypeError("Cannot call a class as a function");
73
+  }
74
+};
75
+
76
+var createClass = function () {
77
+  function defineProperties(target, props) {
78
+    for (var i = 0; i < props.length; i++) {
79
+      var descriptor = props[i];
80
+      descriptor.enumerable = descriptor.enumerable || false;
81
+      descriptor.configurable = true;
82
+      if ("value" in descriptor) descriptor.writable = true;
83
+      Object.defineProperty(target, descriptor.key, descriptor);
84
+    }
85
+  }
86
+
87
+  return function (Constructor, protoProps, staticProps) {
88
+    if (protoProps) defineProperties(Constructor.prototype, protoProps);
89
+    if (staticProps) defineProperties(Constructor, staticProps);
90
+    return Constructor;
91
+  };
92
+}();
93
+
94
+var _extends = Object.assign || function (target) {
95
+  for (var i = 1; i < arguments.length; i++) {
96
+    var source = arguments[i];
97
+
98
+    for (var key in source) {
99
+      if (Object.prototype.hasOwnProperty.call(source, key)) {
100
+        target[key] = source[key];
101
+      }
102
+    }
103
+  }
104
+
105
+  return target;
106
+};
107
+
108
+/**
109
+ * Device detector
110
+ */
111
+
112
+var fullNameRe = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;
113
+var prefixRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i;
114
+var fullNameMobileRe = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i;
115
+var prefixMobileRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i;
116
+
117
+function ua() {
118
+  return navigator.userAgent || navigator.vendor || window.opera || '';
119
+}
120
+
121
+var Detector = function () {
122
+  function Detector() {
123
+    classCallCheck(this, Detector);
124
+  }
125
+
126
+  createClass(Detector, [{
127
+    key: 'phone',
128
+    value: function phone() {
129
+      var a = ua();
130
+      return !!(fullNameRe.test(a) || prefixRe.test(a.substr(0, 4)));
131
+    }
132
+  }, {
133
+    key: 'mobile',
134
+    value: function mobile() {
135
+      var a = ua();
136
+      return !!(fullNameMobileRe.test(a) || prefixMobileRe.test(a.substr(0, 4)));
137
+    }
138
+  }, {
139
+    key: 'tablet',
140
+    value: function tablet() {
141
+      return this.mobile() && !this.phone();
142
+    }
143
+
144
+    // http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c
145
+
146
+  }, {
147
+    key: 'ie11',
148
+    value: function ie11() {
149
+      return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;
150
+    }
151
+  }]);
152
+  return Detector;
153
+}();
154
+
155
+var detect = new Detector();
156
+
157
+/**
158
+ * Adds multiple classes on node
159
+ * @param {DOMNode} node
160
+ * @param {array}  classes
161
+ */
162
+var addClasses = function addClasses(node, classes) {
163
+  return classes && classes.forEach(function (className) {
164
+    return node.classList.add(className);
165
+  });
166
+};
167
+
168
+/**
169
+ * Removes multiple classes from node
170
+ * @param {DOMNode} node
171
+ * @param {array}  classes
172
+ */
173
+var removeClasses = function removeClasses(node, classes) {
174
+  return classes && classes.forEach(function (className) {
175
+    return node.classList.remove(className);
176
+  });
177
+};
178
+
179
+var fireEvent = function fireEvent(eventName, data) {
180
+  var customEvent = void 0;
181
+
182
+  if (detect.ie11()) {
183
+    customEvent = document.createEvent('CustomEvent');
184
+    customEvent.initCustomEvent(eventName, true, true, { detail: data });
185
+  } else {
186
+    customEvent = new CustomEvent(eventName, {
187
+      detail: data
188
+    });
189
+  }
190
+
191
+  return document.dispatchEvent(customEvent);
192
+};
193
+
194
+/**
195
+ * Set or remove aos-animate class
196
+ * @param {node} el         element
197
+ * @param {int}  top        scrolled distance
198
+ */
199
+var applyClasses = function applyClasses(el, top) {
200
+  var options = el.options,
201
+      position = el.position,
202
+      node = el.node,
203
+      data = el.data;
204
+
205
+
206
+  var hide = function hide() {
207
+    if (!el.animated) return;
208
+
209
+    removeClasses(node, options.animatedClassNames);
210
+    fireEvent('aos:out', node);
211
+
212
+    if (el.options.id) {
213
+      fireEvent('aos:in:' + el.options.id, node);
214
+    }
215
+
216
+    el.animated = false;
217
+  };
218
+
219
+  var show = function show() {
220
+    if (el.animated) return;
221
+
222
+    addClasses(node, options.animatedClassNames);
223
+
224
+    fireEvent('aos:in', node);
225
+    if (el.options.id) {
226
+      fireEvent('aos:in:' + el.options.id, node);
227
+    }
228
+
229
+    el.animated = true;
230
+  };
231
+
232
+  if (options.mirror && top >= position.out && !options.once) {
233
+    hide();
234
+  } else if (top >= position.in) {
235
+    show();
236
+  } else if (el.animated && !options.once) {
237
+    hide();
238
+  }
239
+};
240
+
241
+/**
242
+ * Scroll logic - add or remove 'aos-animate' class on scroll
243
+ *
244
+ * @param  {array} $elements         array of elements nodes
245
+ * @return {void}
246
+ */
247
+var handleScroll = function handleScroll($elements) {
248
+  return $elements.forEach(function (el, i) {
249
+    return applyClasses(el, window.pageYOffset);
250
+  });
251
+};
252
+
253
+/**
254
+ * Get offset of DOM element
255
+ * like there were no transforms applied on it
256
+ *
257
+ * @param  {Node} el [DOM element]
258
+ * @return {Object} [top and left offset]
259
+ */
260
+var offset = function offset(el) {
261
+  var _x = 0;
262
+  var _y = 0;
263
+
264
+  while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
265
+    _x += el.offsetLeft - (el.tagName != 'BODY' ? el.scrollLeft : 0);
266
+    _y += el.offsetTop - (el.tagName != 'BODY' ? el.scrollTop : 0);
267
+    el = el.offsetParent;
268
+  }
269
+
270
+  return {
271
+    top: _y,
272
+    left: _x
273
+  };
274
+};
275
+
276
+/**
277
+ * Get inline option with a fallback.
278
+ *
279
+ * @param  {Node} el [Dom element]
280
+ * @param  {String} key [Option key]
281
+ * @param  {String} fallback [Default (fallback) value]
282
+ * @return {Mixed} [Option set with inline attributes or fallback value if not set]
283
+ */
284
+
285
+var getInlineOption = (function (el, key, fallback) {
286
+  var attr = el.getAttribute('data-aos-' + key);
287
+
288
+  if (typeof attr !== 'undefined') {
289
+    if (attr === 'true') {
290
+      return true;
291
+    } else if (attr === 'false') {
292
+      return false;
293
+    }
294
+  }
295
+
296
+  return attr || fallback;
297
+});
298
+
299
+/**
300
+ * Calculate offset
301
+ * basing on element's settings like:
302
+ * - anchor
303
+ * - offset
304
+ *
305
+ * @param  {Node} el [Dom element]
306
+ * @return {Integer} [Final offset that will be used to trigger animation in good position]
307
+ */
308
+
309
+var getPositionIn = function getPositionIn(el, defaultOffset, defaultAnchorPlacement) {
310
+  var windowHeight = window.innerHeight;
311
+  var anchor = getInlineOption(el, 'anchor');
312
+  var inlineAnchorPlacement = getInlineOption(el, 'anchor-placement');
313
+  var additionalOffset = Number(getInlineOption(el, 'offset', inlineAnchorPlacement ? 0 : defaultOffset));
314
+  var anchorPlacement = inlineAnchorPlacement || defaultAnchorPlacement;
315
+  var finalEl = el;
316
+
317
+  if (anchor && document.querySelectorAll(anchor)) {
318
+    finalEl = document.querySelectorAll(anchor)[0];
319
+  }
320
+
321
+  var triggerPoint = offset(finalEl).top - windowHeight;
322
+
323
+  switch (anchorPlacement) {
324
+    case 'top-bottom':
325
+      // Default offset
326
+      break;
327
+    case 'center-bottom':
328
+      triggerPoint += finalEl.offsetHeight / 2;
329
+      break;
330
+    case 'bottom-bottom':
331
+      triggerPoint += finalEl.offsetHeight;
332
+      break;
333
+    case 'top-center':
334
+      triggerPoint += windowHeight / 2;
335
+      break;
336
+    case 'center-center':
337
+      triggerPoint += windowHeight / 2 + finalEl.offsetHeight / 2;
338
+      break;
339
+    case 'bottom-center':
340
+      triggerPoint += windowHeight / 2 + finalEl.offsetHeight;
341
+      break;
342
+    case 'top-top':
343
+      triggerPoint += windowHeight;
344
+      break;
345
+    case 'bottom-top':
346
+      triggerPoint += windowHeight + finalEl.offsetHeight;
347
+      break;
348
+    case 'center-top':
349
+      triggerPoint += windowHeight + finalEl.offsetHeight / 2;
350
+      break;
351
+  }
352
+
353
+  return triggerPoint + additionalOffset;
354
+};
355
+
356
+var getPositionOut = function getPositionOut(el, defaultOffset) {
357
+  var windowHeight = window.innerHeight;
358
+  var anchor = getInlineOption(el, 'anchor');
359
+  var additionalOffset = getInlineOption(el, 'offset', defaultOffset);
360
+  var finalEl = el;
361
+
362
+  if (anchor && document.querySelectorAll(anchor)) {
363
+    finalEl = document.querySelectorAll(anchor)[0];
364
+  }
365
+
366
+  var elementOffsetTop = offset(finalEl).top;
367
+
368
+  return elementOffsetTop + finalEl.offsetHeight - additionalOffset;
369
+};
370
+
371
+/* Clearing variables */
372
+
373
+var prepare = function prepare($elements, options) {
374
+  $elements.forEach(function (el, i) {
375
+    var mirror = getInlineOption(el.node, 'mirror', options.mirror);
376
+    var once = getInlineOption(el.node, 'once', options.once);
377
+    var id = getInlineOption(el.node, 'id');
378
+    var customClassNames = options.useClassNames && el.node.getAttribute('data-aos');
379
+
380
+    var animatedClassNames = [options.animatedClassName].concat(customClassNames ? customClassNames.split(' ') : []).filter(function (className) {
381
+      return typeof className === 'string';
382
+    });
383
+
384
+    if (options.initClassName) {
385
+      el.node.classList.add(options.initClassName);
386
+    }
387
+
388
+    el.position = {
389
+      in: getPositionIn(el.node, options.offset, options.anchorPlacement),
390
+      out: mirror && getPositionOut(el.node, options.offset)
391
+    };
392
+
393
+    el.options = {
394
+      once: once,
395
+      mirror: mirror,
396
+      animatedClassNames: animatedClassNames,
397
+      id: id
398
+    };
399
+  });
400
+
401
+  return $elements;
402
+};
403
+
404
+/**
405
+ * Generate initial array with elements as objects
406
+ * This array will be extended later with elements attributes values
407
+ * like 'position'
408
+ */
409
+var elements = (function () {
410
+  var elements = document.querySelectorAll('[data-aos]');
411
+  return Array.prototype.map.call(elements, function (node) {
412
+    return { node: node };
413
+  });
414
+});
415
+
416
+/**
417
+ * *******************************************************
418
+ * AOS (Animate on scroll) - wowjs alternative
419
+ * made to animate elements on scroll in both directions
420
+ * *******************************************************
421
+ */
422
+
423
+/**
424
+ * Private variables
425
+ */
426
+var $aosElements = [];
427
+var initialized = false;
428
+
429
+/**
430
+ * Default options
431
+ */
432
+var options = {
433
+  offset: 120,
434
+  delay: 0,
435
+  easing: 'ease',
436
+  duration: 400,
437
+  disable: false,
438
+  once: false,
439
+  mirror: false,
440
+  anchorPlacement: 'top-bottom',
441
+  startEvent: 'DOMContentLoaded',
442
+  animatedClassName: 'aos-animate',
443
+  initClassName: 'aos-init',
444
+  useClassNames: false,
445
+  disableMutationObserver: false,
446
+  throttleDelay: 99,
447
+  debounceDelay: 50
448
+};
449
+
450
+// Detect not supported browsers (<=IE9)
451
+// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
452
+var isBrowserNotSupported = function isBrowserNotSupported() {
453
+  return document.all && !window.atob;
454
+};
455
+
456
+var initializeScroll = function initializeScroll() {
457
+  // Extend elements objects in $aosElements with their positions
458
+  $aosElements = prepare($aosElements, options);
459
+  // Perform scroll event, to refresh view and show/hide elements
460
+  handleScroll($aosElements);
461
+
462
+  /**
463
+   * Handle scroll event to animate elements on scroll
464
+   */
465
+  window.addEventListener('scroll', throttle(function () {
466
+    handleScroll($aosElements, options.once);
467
+  }, options.throttleDelay));
468
+
469
+  return $aosElements;
470
+};
471
+
472
+/**
473
+ * Refresh AOS
474
+ */
475
+var refresh = function refresh() {
476
+  var initialize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
477
+
478
+  // Allow refresh only when it was first initialized on startEvent
479
+  if (initialize) initialized = true;
480
+  if (initialized) initializeScroll();
481
+};
482
+
483
+/**
484
+ * Hard refresh
485
+ * create array with new elements and trigger refresh
486
+ */
487
+var refreshHard = function refreshHard() {
488
+  $aosElements = elements();
489
+
490
+  if (isDisabled(options.disable) || isBrowserNotSupported()) {
491
+    return disable();
492
+  }
493
+
494
+  refresh();
495
+};
496
+
497
+/**
498
+ * Disable AOS
499
+ * Remove all attributes to reset applied styles
500
+ */
501
+var disable = function disable() {
502
+  $aosElements.forEach(function (el, i) {
503
+    el.node.removeAttribute('data-aos');
504
+    el.node.removeAttribute('data-aos-easing');
505
+    el.node.removeAttribute('data-aos-duration');
506
+    el.node.removeAttribute('data-aos-delay');
507
+
508
+    if (options.initClassName) {
509
+      el.node.classList.remove(options.initClassName);
510
+    }
511
+
512
+    if (options.animatedClassName) {
513
+      el.node.classList.remove(options.animatedClassName);
514
+    }
515
+  });
516
+};
517
+
518
+/**
519
+ * Check if AOS should be disabled based on provided setting
520
+ */
521
+var isDisabled = function isDisabled(optionDisable) {
522
+  return optionDisable === true || optionDisable === 'mobile' && detect.mobile() || optionDisable === 'phone' && detect.phone() || optionDisable === 'tablet' && detect.tablet() || typeof optionDisable === 'function' && optionDisable() === true;
523
+};
524
+
525
+/**
526
+ * Initializing AOS
527
+ * - Create options merging defaults with user defined options
528
+ * - Set attributes on <body> as global setting - css relies on it
529
+ * - Attach preparing elements to options.startEvent,
530
+ *   window resize and orientation change
531
+ * - Attach function that handle scroll and everything connected to it
532
+ *   to window scroll event and fire once document is ready to set initial state
533
+ */
534
+var init = function init(settings) {
535
+  options = _extends(options, settings);
536
+
537
+  // Create initial array with elements -> to be fullfilled later with prepare()
538
+  $aosElements = elements();
539
+
540
+  /**
541
+   * Disable mutation observing if not supported
542
+   */
543
+  if (!options.disableMutationObserver && !observer.isSupported()) {
544
+    console.info('\n      aos: MutationObserver is not supported on this browser,\n      code mutations observing has been disabled.\n      You may have to call "refreshHard()" by yourself.\n    ');
545
+    options.disableMutationObserver = true;
546
+  }
547
+
548
+  /**
549
+   * Observe [aos] elements
550
+   * If something is loaded by AJAX
551
+   * it'll refresh plugin automatically
552
+   */
553
+  if (!options.disableMutationObserver) {
554
+    observer.ready('[data-aos]', refreshHard);
555
+  }
556
+
557
+  /**
558
+   * Don't init plugin if option `disable` is set
559
+   * or when browser is not supported
560
+   */
561
+  if (isDisabled(options.disable) || isBrowserNotSupported()) {
562
+    return disable();
563
+  }
564
+
565
+  /**
566
+   * Set global settings on body, based on options
567
+   * so CSS can use it
568
+   */
569
+  document.querySelector('body').setAttribute('data-aos-easing', options.easing);
570
+
571
+  document.querySelector('body').setAttribute('data-aos-duration', options.duration);
572
+
573
+  document.querySelector('body').setAttribute('data-aos-delay', options.delay);
574
+
575
+  /**
576
+   * Handle initializing
577
+   */
578
+  if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) {
579
+    // Listen to options.startEvent and initialize AOS
580
+    document.addEventListener(options.startEvent, function () {
581
+      refresh(true);
582
+    });
583
+  } else {
584
+    window.addEventListener('load', function () {
585
+      refresh(true);
586
+    });
587
+  }
588
+
589
+  if (options.startEvent === 'DOMContentLoaded' && ['complete', 'interactive'].indexOf(document.readyState) > -1) {
590
+    // Initialize AOS if default startEvent was already fired
591
+    refresh(true);
592
+  }
593
+
594
+  /**
595
+   * Refresh plugin on window resize or orientation change
596
+   */
597
+  window.addEventListener('resize', debounce(refresh, options.debounceDelay, true));
598
+
599
+  window.addEventListener('orientationchange', debounce(refresh, options.debounceDelay, true));
600
+
601
+  return $aosElements;
602
+};
603
+
604
+/**
605
+ * Export Public API
606
+ */
607
+
608
+var aos = {
609
+  init: init,
610
+  refresh: refresh,
611
+  refreshHard: refreshHard
612
+};
613
+
614
+module.exports = aos;

+ 1
- 0
assets/vendor/aos/aos.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 610
- 0
assets/vendor/aos/aos.esm.js Visa fil

@@ -0,0 +1,610 @@
1
+import throttle from 'lodash.throttle';
2
+import debounce from 'lodash.debounce';
3
+
4
+var callback = function callback() {};
5
+
6
+function containsAOSNode(nodes) {
7
+  var i = void 0,
8
+      currentNode = void 0,
9
+      result = void 0;
10
+
11
+  for (i = 0; i < nodes.length; i += 1) {
12
+    currentNode = nodes[i];
13
+
14
+    if (currentNode.dataset && currentNode.dataset.aos) {
15
+      return true;
16
+    }
17
+
18
+    result = currentNode.children && containsAOSNode(currentNode.children);
19
+
20
+    if (result) {
21
+      return true;
22
+    }
23
+  }
24
+
25
+  return false;
26
+}
27
+
28
+function check(mutations) {
29
+  if (!mutations) return;
30
+
31
+  mutations.forEach(function (mutation) {
32
+    var addedNodes = Array.prototype.slice.call(mutation.addedNodes);
33
+    var removedNodes = Array.prototype.slice.call(mutation.removedNodes);
34
+    var allNodes = addedNodes.concat(removedNodes);
35
+
36
+    if (containsAOSNode(allNodes)) {
37
+      return callback();
38
+    }
39
+  });
40
+}
41
+
42
+function getMutationObserver() {
43
+  return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
44
+}
45
+
46
+function isSupported() {
47
+  return !!getMutationObserver();
48
+}
49
+
50
+function ready(selector, fn) {
51
+  var doc = window.document;
52
+  var MutationObserver = getMutationObserver();
53
+
54
+  var observer = new MutationObserver(check);
55
+  callback = fn;
56
+
57
+  observer.observe(doc.documentElement, {
58
+    childList: true,
59
+    subtree: true,
60
+    removedNodes: true
61
+  });
62
+}
63
+
64
+var observer = { isSupported: isSupported, ready: ready };
65
+
66
+var classCallCheck = function (instance, Constructor) {
67
+  if (!(instance instanceof Constructor)) {
68
+    throw new TypeError("Cannot call a class as a function");
69
+  }
70
+};
71
+
72
+var createClass = function () {
73
+  function defineProperties(target, props) {
74
+    for (var i = 0; i < props.length; i++) {
75
+      var descriptor = props[i];
76
+      descriptor.enumerable = descriptor.enumerable || false;
77
+      descriptor.configurable = true;
78
+      if ("value" in descriptor) descriptor.writable = true;
79
+      Object.defineProperty(target, descriptor.key, descriptor);
80
+    }
81
+  }
82
+
83
+  return function (Constructor, protoProps, staticProps) {
84
+    if (protoProps) defineProperties(Constructor.prototype, protoProps);
85
+    if (staticProps) defineProperties(Constructor, staticProps);
86
+    return Constructor;
87
+  };
88
+}();
89
+
90
+var _extends = Object.assign || function (target) {
91
+  for (var i = 1; i < arguments.length; i++) {
92
+    var source = arguments[i];
93
+
94
+    for (var key in source) {
95
+      if (Object.prototype.hasOwnProperty.call(source, key)) {
96
+        target[key] = source[key];
97
+      }
98
+    }
99
+  }
100
+
101
+  return target;
102
+};
103
+
104
+/**
105
+ * Device detector
106
+ */
107
+
108
+var fullNameRe = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;
109
+var prefixRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i;
110
+var fullNameMobileRe = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i;
111
+var prefixMobileRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i;
112
+
113
+function ua() {
114
+  return navigator.userAgent || navigator.vendor || window.opera || '';
115
+}
116
+
117
+var Detector = function () {
118
+  function Detector() {
119
+    classCallCheck(this, Detector);
120
+  }
121
+
122
+  createClass(Detector, [{
123
+    key: 'phone',
124
+    value: function phone() {
125
+      var a = ua();
126
+      return !!(fullNameRe.test(a) || prefixRe.test(a.substr(0, 4)));
127
+    }
128
+  }, {
129
+    key: 'mobile',
130
+    value: function mobile() {
131
+      var a = ua();
132
+      return !!(fullNameMobileRe.test(a) || prefixMobileRe.test(a.substr(0, 4)));
133
+    }
134
+  }, {
135
+    key: 'tablet',
136
+    value: function tablet() {
137
+      return this.mobile() && !this.phone();
138
+    }
139
+
140
+    // http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c
141
+
142
+  }, {
143
+    key: 'ie11',
144
+    value: function ie11() {
145
+      return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;
146
+    }
147
+  }]);
148
+  return Detector;
149
+}();
150
+
151
+var detect = new Detector();
152
+
153
+/**
154
+ * Adds multiple classes on node
155
+ * @param {DOMNode} node
156
+ * @param {array}  classes
157
+ */
158
+var addClasses = function addClasses(node, classes) {
159
+  return classes && classes.forEach(function (className) {
160
+    return node.classList.add(className);
161
+  });
162
+};
163
+
164
+/**
165
+ * Removes multiple classes from node
166
+ * @param {DOMNode} node
167
+ * @param {array}  classes
168
+ */
169
+var removeClasses = function removeClasses(node, classes) {
170
+  return classes && classes.forEach(function (className) {
171
+    return node.classList.remove(className);
172
+  });
173
+};
174
+
175
+var fireEvent = function fireEvent(eventName, data) {
176
+  var customEvent = void 0;
177
+
178
+  if (detect.ie11()) {
179
+    customEvent = document.createEvent('CustomEvent');
180
+    customEvent.initCustomEvent(eventName, true, true, { detail: data });
181
+  } else {
182
+    customEvent = new CustomEvent(eventName, {
183
+      detail: data
184
+    });
185
+  }
186
+
187
+  return document.dispatchEvent(customEvent);
188
+};
189
+
190
+/**
191
+ * Set or remove aos-animate class
192
+ * @param {node} el         element
193
+ * @param {int}  top        scrolled distance
194
+ */
195
+var applyClasses = function applyClasses(el, top) {
196
+  var options = el.options,
197
+      position = el.position,
198
+      node = el.node,
199
+      data = el.data;
200
+
201
+
202
+  var hide = function hide() {
203
+    if (!el.animated) return;
204
+
205
+    removeClasses(node, options.animatedClassNames);
206
+    fireEvent('aos:out', node);
207
+
208
+    if (el.options.id) {
209
+      fireEvent('aos:in:' + el.options.id, node);
210
+    }
211
+
212
+    el.animated = false;
213
+  };
214
+
215
+  var show = function show() {
216
+    if (el.animated) return;
217
+
218
+    addClasses(node, options.animatedClassNames);
219
+
220
+    fireEvent('aos:in', node);
221
+    if (el.options.id) {
222
+      fireEvent('aos:in:' + el.options.id, node);
223
+    }
224
+
225
+    el.animated = true;
226
+  };
227
+
228
+  if (options.mirror && top >= position.out && !options.once) {
229
+    hide();
230
+  } else if (top >= position.in) {
231
+    show();
232
+  } else if (el.animated && !options.once) {
233
+    hide();
234
+  }
235
+};
236
+
237
+/**
238
+ * Scroll logic - add or remove 'aos-animate' class on scroll
239
+ *
240
+ * @param  {array} $elements         array of elements nodes
241
+ * @return {void}
242
+ */
243
+var handleScroll = function handleScroll($elements) {
244
+  return $elements.forEach(function (el, i) {
245
+    return applyClasses(el, window.pageYOffset);
246
+  });
247
+};
248
+
249
+/**
250
+ * Get offset of DOM element
251
+ * like there were no transforms applied on it
252
+ *
253
+ * @param  {Node} el [DOM element]
254
+ * @return {Object} [top and left offset]
255
+ */
256
+var offset = function offset(el) {
257
+  var _x = 0;
258
+  var _y = 0;
259
+
260
+  while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
261
+    _x += el.offsetLeft - (el.tagName != 'BODY' ? el.scrollLeft : 0);
262
+    _y += el.offsetTop - (el.tagName != 'BODY' ? el.scrollTop : 0);
263
+    el = el.offsetParent;
264
+  }
265
+
266
+  return {
267
+    top: _y,
268
+    left: _x
269
+  };
270
+};
271
+
272
+/**
273
+ * Get inline option with a fallback.
274
+ *
275
+ * @param  {Node} el [Dom element]
276
+ * @param  {String} key [Option key]
277
+ * @param  {String} fallback [Default (fallback) value]
278
+ * @return {Mixed} [Option set with inline attributes or fallback value if not set]
279
+ */
280
+
281
+var getInlineOption = (function (el, key, fallback) {
282
+  var attr = el.getAttribute('data-aos-' + key);
283
+
284
+  if (typeof attr !== 'undefined') {
285
+    if (attr === 'true') {
286
+      return true;
287
+    } else if (attr === 'false') {
288
+      return false;
289
+    }
290
+  }
291
+
292
+  return attr || fallback;
293
+});
294
+
295
+/**
296
+ * Calculate offset
297
+ * basing on element's settings like:
298
+ * - anchor
299
+ * - offset
300
+ *
301
+ * @param  {Node} el [Dom element]
302
+ * @return {Integer} [Final offset that will be used to trigger animation in good position]
303
+ */
304
+
305
+var getPositionIn = function getPositionIn(el, defaultOffset, defaultAnchorPlacement) {
306
+  var windowHeight = window.innerHeight;
307
+  var anchor = getInlineOption(el, 'anchor');
308
+  var inlineAnchorPlacement = getInlineOption(el, 'anchor-placement');
309
+  var additionalOffset = Number(getInlineOption(el, 'offset', inlineAnchorPlacement ? 0 : defaultOffset));
310
+  var anchorPlacement = inlineAnchorPlacement || defaultAnchorPlacement;
311
+  var finalEl = el;
312
+
313
+  if (anchor && document.querySelectorAll(anchor)) {
314
+    finalEl = document.querySelectorAll(anchor)[0];
315
+  }
316
+
317
+  var triggerPoint = offset(finalEl).top - windowHeight;
318
+
319
+  switch (anchorPlacement) {
320
+    case 'top-bottom':
321
+      // Default offset
322
+      break;
323
+    case 'center-bottom':
324
+      triggerPoint += finalEl.offsetHeight / 2;
325
+      break;
326
+    case 'bottom-bottom':
327
+      triggerPoint += finalEl.offsetHeight;
328
+      break;
329
+    case 'top-center':
330
+      triggerPoint += windowHeight / 2;
331
+      break;
332
+    case 'center-center':
333
+      triggerPoint += windowHeight / 2 + finalEl.offsetHeight / 2;
334
+      break;
335
+    case 'bottom-center':
336
+      triggerPoint += windowHeight / 2 + finalEl.offsetHeight;
337
+      break;
338
+    case 'top-top':
339
+      triggerPoint += windowHeight;
340
+      break;
341
+    case 'bottom-top':
342
+      triggerPoint += windowHeight + finalEl.offsetHeight;
343
+      break;
344
+    case 'center-top':
345
+      triggerPoint += windowHeight + finalEl.offsetHeight / 2;
346
+      break;
347
+  }
348
+
349
+  return triggerPoint + additionalOffset;
350
+};
351
+
352
+var getPositionOut = function getPositionOut(el, defaultOffset) {
353
+  var windowHeight = window.innerHeight;
354
+  var anchor = getInlineOption(el, 'anchor');
355
+  var additionalOffset = getInlineOption(el, 'offset', defaultOffset);
356
+  var finalEl = el;
357
+
358
+  if (anchor && document.querySelectorAll(anchor)) {
359
+    finalEl = document.querySelectorAll(anchor)[0];
360
+  }
361
+
362
+  var elementOffsetTop = offset(finalEl).top;
363
+
364
+  return elementOffsetTop + finalEl.offsetHeight - additionalOffset;
365
+};
366
+
367
+/* Clearing variables */
368
+
369
+var prepare = function prepare($elements, options) {
370
+  $elements.forEach(function (el, i) {
371
+    var mirror = getInlineOption(el.node, 'mirror', options.mirror);
372
+    var once = getInlineOption(el.node, 'once', options.once);
373
+    var id = getInlineOption(el.node, 'id');
374
+    var customClassNames = options.useClassNames && el.node.getAttribute('data-aos');
375
+
376
+    var animatedClassNames = [options.animatedClassName].concat(customClassNames ? customClassNames.split(' ') : []).filter(function (className) {
377
+      return typeof className === 'string';
378
+    });
379
+
380
+    if (options.initClassName) {
381
+      el.node.classList.add(options.initClassName);
382
+    }
383
+
384
+    el.position = {
385
+      in: getPositionIn(el.node, options.offset, options.anchorPlacement),
386
+      out: mirror && getPositionOut(el.node, options.offset)
387
+    };
388
+
389
+    el.options = {
390
+      once: once,
391
+      mirror: mirror,
392
+      animatedClassNames: animatedClassNames,
393
+      id: id
394
+    };
395
+  });
396
+
397
+  return $elements;
398
+};
399
+
400
+/**
401
+ * Generate initial array with elements as objects
402
+ * This array will be extended later with elements attributes values
403
+ * like 'position'
404
+ */
405
+var elements = (function () {
406
+  var elements = document.querySelectorAll('[data-aos]');
407
+  return Array.prototype.map.call(elements, function (node) {
408
+    return { node: node };
409
+  });
410
+});
411
+
412
+/**
413
+ * *******************************************************
414
+ * AOS (Animate on scroll) - wowjs alternative
415
+ * made to animate elements on scroll in both directions
416
+ * *******************************************************
417
+ */
418
+
419
+/**
420
+ * Private variables
421
+ */
422
+var $aosElements = [];
423
+var initialized = false;
424
+
425
+/**
426
+ * Default options
427
+ */
428
+var options = {
429
+  offset: 120,
430
+  delay: 0,
431
+  easing: 'ease',
432
+  duration: 400,
433
+  disable: false,
434
+  once: false,
435
+  mirror: false,
436
+  anchorPlacement: 'top-bottom',
437
+  startEvent: 'DOMContentLoaded',
438
+  animatedClassName: 'aos-animate',
439
+  initClassName: 'aos-init',
440
+  useClassNames: false,
441
+  disableMutationObserver: false,
442
+  throttleDelay: 99,
443
+  debounceDelay: 50
444
+};
445
+
446
+// Detect not supported browsers (<=IE9)
447
+// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
448
+var isBrowserNotSupported = function isBrowserNotSupported() {
449
+  return document.all && !window.atob;
450
+};
451
+
452
+var initializeScroll = function initializeScroll() {
453
+  // Extend elements objects in $aosElements with their positions
454
+  $aosElements = prepare($aosElements, options);
455
+  // Perform scroll event, to refresh view and show/hide elements
456
+  handleScroll($aosElements);
457
+
458
+  /**
459
+   * Handle scroll event to animate elements on scroll
460
+   */
461
+  window.addEventListener('scroll', throttle(function () {
462
+    handleScroll($aosElements, options.once);
463
+  }, options.throttleDelay));
464
+
465
+  return $aosElements;
466
+};
467
+
468
+/**
469
+ * Refresh AOS
470
+ */
471
+var refresh = function refresh() {
472
+  var initialize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
473
+
474
+  // Allow refresh only when it was first initialized on startEvent
475
+  if (initialize) initialized = true;
476
+  if (initialized) initializeScroll();
477
+};
478
+
479
+/**
480
+ * Hard refresh
481
+ * create array with new elements and trigger refresh
482
+ */
483
+var refreshHard = function refreshHard() {
484
+  $aosElements = elements();
485
+
486
+  if (isDisabled(options.disable) || isBrowserNotSupported()) {
487
+    return disable();
488
+  }
489
+
490
+  refresh();
491
+};
492
+
493
+/**
494
+ * Disable AOS
495
+ * Remove all attributes to reset applied styles
496
+ */
497
+var disable = function disable() {
498
+  $aosElements.forEach(function (el, i) {
499
+    el.node.removeAttribute('data-aos');
500
+    el.node.removeAttribute('data-aos-easing');
501
+    el.node.removeAttribute('data-aos-duration');
502
+    el.node.removeAttribute('data-aos-delay');
503
+
504
+    if (options.initClassName) {
505
+      el.node.classList.remove(options.initClassName);
506
+    }
507
+
508
+    if (options.animatedClassName) {
509
+      el.node.classList.remove(options.animatedClassName);
510
+    }
511
+  });
512
+};
513
+
514
+/**
515
+ * Check if AOS should be disabled based on provided setting
516
+ */
517
+var isDisabled = function isDisabled(optionDisable) {
518
+  return optionDisable === true || optionDisable === 'mobile' && detect.mobile() || optionDisable === 'phone' && detect.phone() || optionDisable === 'tablet' && detect.tablet() || typeof optionDisable === 'function' && optionDisable() === true;
519
+};
520
+
521
+/**
522
+ * Initializing AOS
523
+ * - Create options merging defaults with user defined options
524
+ * - Set attributes on <body> as global setting - css relies on it
525
+ * - Attach preparing elements to options.startEvent,
526
+ *   window resize and orientation change
527
+ * - Attach function that handle scroll and everything connected to it
528
+ *   to window scroll event and fire once document is ready to set initial state
529
+ */
530
+var init = function init(settings) {
531
+  options = _extends(options, settings);
532
+
533
+  // Create initial array with elements -> to be fullfilled later with prepare()
534
+  $aosElements = elements();
535
+
536
+  /**
537
+   * Disable mutation observing if not supported
538
+   */
539
+  if (!options.disableMutationObserver && !observer.isSupported()) {
540
+    console.info('\n      aos: MutationObserver is not supported on this browser,\n      code mutations observing has been disabled.\n      You may have to call "refreshHard()" by yourself.\n    ');
541
+    options.disableMutationObserver = true;
542
+  }
543
+
544
+  /**
545
+   * Observe [aos] elements
546
+   * If something is loaded by AJAX
547
+   * it'll refresh plugin automatically
548
+   */
549
+  if (!options.disableMutationObserver) {
550
+    observer.ready('[data-aos]', refreshHard);
551
+  }
552
+
553
+  /**
554
+   * Don't init plugin if option `disable` is set
555
+   * or when browser is not supported
556
+   */
557
+  if (isDisabled(options.disable) || isBrowserNotSupported()) {
558
+    return disable();
559
+  }
560
+
561
+  /**
562
+   * Set global settings on body, based on options
563
+   * so CSS can use it
564
+   */
565
+  document.querySelector('body').setAttribute('data-aos-easing', options.easing);
566
+
567
+  document.querySelector('body').setAttribute('data-aos-duration', options.duration);
568
+
569
+  document.querySelector('body').setAttribute('data-aos-delay', options.delay);
570
+
571
+  /**
572
+   * Handle initializing
573
+   */
574
+  if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) {
575
+    // Listen to options.startEvent and initialize AOS
576
+    document.addEventListener(options.startEvent, function () {
577
+      refresh(true);
578
+    });
579
+  } else {
580
+    window.addEventListener('load', function () {
581
+      refresh(true);
582
+    });
583
+  }
584
+
585
+  if (options.startEvent === 'DOMContentLoaded' && ['complete', 'interactive'].indexOf(document.readyState) > -1) {
586
+    // Initialize AOS if default startEvent was already fired
587
+    refresh(true);
588
+  }
589
+
590
+  /**
591
+   * Refresh plugin on window resize or orientation change
592
+   */
593
+  window.addEventListener('resize', debounce(refresh, options.debounceDelay, true));
594
+
595
+  window.addEventListener('orientationchange', debounce(refresh, options.debounceDelay, true));
596
+
597
+  return $aosElements;
598
+};
599
+
600
+/**
601
+ * Export Public API
602
+ */
603
+
604
+var aos = {
605
+  init: init,
606
+  refresh: refresh,
607
+  refreshHard: refreshHard
608
+};
609
+
610
+export default aos;

+ 1
- 0
assets/vendor/aos/aos.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/aos/aos.js.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 2078
- 0
assets/vendor/bootstrap-icons/bootstrap-icons.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 2052
- 0
assets/vendor/bootstrap-icons/bootstrap-icons.json
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 5
- 0
assets/vendor/bootstrap-icons/bootstrap-icons.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 2090
- 0
assets/vendor/bootstrap-icons/bootstrap-icons.scss
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


Binär
assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff Visa fil


Binär
assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 Visa fil


+ 4085
- 0
assets/vendor/bootstrap/css/bootstrap-grid.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-grid.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap-grid.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-grid.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 4084
- 0
assets/vendor/bootstrap/css/bootstrap-grid.rtl.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-grid.rtl.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 597
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.css Visa fil

@@ -0,0 +1,597 @@
1
+/*!
2
+ * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2024 The Bootstrap Authors
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+:root,
7
+[data-bs-theme=light] {
8
+  --bs-blue: #0d6efd;
9
+  --bs-indigo: #6610f2;
10
+  --bs-purple: #6f42c1;
11
+  --bs-pink: #d63384;
12
+  --bs-red: #dc3545;
13
+  --bs-orange: #fd7e14;
14
+  --bs-yellow: #ffc107;
15
+  --bs-green: #198754;
16
+  --bs-teal: #20c997;
17
+  --bs-cyan: #0dcaf0;
18
+  --bs-black: #000;
19
+  --bs-white: #fff;
20
+  --bs-gray: #6c757d;
21
+  --bs-gray-dark: #343a40;
22
+  --bs-gray-100: #f8f9fa;
23
+  --bs-gray-200: #e9ecef;
24
+  --bs-gray-300: #dee2e6;
25
+  --bs-gray-400: #ced4da;
26
+  --bs-gray-500: #adb5bd;
27
+  --bs-gray-600: #6c757d;
28
+  --bs-gray-700: #495057;
29
+  --bs-gray-800: #343a40;
30
+  --bs-gray-900: #212529;
31
+  --bs-primary: #0d6efd;
32
+  --bs-secondary: #6c757d;
33
+  --bs-success: #198754;
34
+  --bs-info: #0dcaf0;
35
+  --bs-warning: #ffc107;
36
+  --bs-danger: #dc3545;
37
+  --bs-light: #f8f9fa;
38
+  --bs-dark: #212529;
39
+  --bs-primary-rgb: 13, 110, 253;
40
+  --bs-secondary-rgb: 108, 117, 125;
41
+  --bs-success-rgb: 25, 135, 84;
42
+  --bs-info-rgb: 13, 202, 240;
43
+  --bs-warning-rgb: 255, 193, 7;
44
+  --bs-danger-rgb: 220, 53, 69;
45
+  --bs-light-rgb: 248, 249, 250;
46
+  --bs-dark-rgb: 33, 37, 41;
47
+  --bs-primary-text-emphasis: #052c65;
48
+  --bs-secondary-text-emphasis: #2b2f32;
49
+  --bs-success-text-emphasis: #0a3622;
50
+  --bs-info-text-emphasis: #055160;
51
+  --bs-warning-text-emphasis: #664d03;
52
+  --bs-danger-text-emphasis: #58151c;
53
+  --bs-light-text-emphasis: #495057;
54
+  --bs-dark-text-emphasis: #495057;
55
+  --bs-primary-bg-subtle: #cfe2ff;
56
+  --bs-secondary-bg-subtle: #e2e3e5;
57
+  --bs-success-bg-subtle: #d1e7dd;
58
+  --bs-info-bg-subtle: #cff4fc;
59
+  --bs-warning-bg-subtle: #fff3cd;
60
+  --bs-danger-bg-subtle: #f8d7da;
61
+  --bs-light-bg-subtle: #fcfcfd;
62
+  --bs-dark-bg-subtle: #ced4da;
63
+  --bs-primary-border-subtle: #9ec5fe;
64
+  --bs-secondary-border-subtle: #c4c8cb;
65
+  --bs-success-border-subtle: #a3cfbb;
66
+  --bs-info-border-subtle: #9eeaf9;
67
+  --bs-warning-border-subtle: #ffe69c;
68
+  --bs-danger-border-subtle: #f1aeb5;
69
+  --bs-light-border-subtle: #e9ecef;
70
+  --bs-dark-border-subtle: #adb5bd;
71
+  --bs-white-rgb: 255, 255, 255;
72
+  --bs-black-rgb: 0, 0, 0;
73
+  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
74
+  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
75
+  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
76
+  --bs-body-font-family: var(--bs-font-sans-serif);
77
+  --bs-body-font-size: 1rem;
78
+  --bs-body-font-weight: 400;
79
+  --bs-body-line-height: 1.5;
80
+  --bs-body-color: #212529;
81
+  --bs-body-color-rgb: 33, 37, 41;
82
+  --bs-body-bg: #fff;
83
+  --bs-body-bg-rgb: 255, 255, 255;
84
+  --bs-emphasis-color: #000;
85
+  --bs-emphasis-color-rgb: 0, 0, 0;
86
+  --bs-secondary-color: rgba(33, 37, 41, 0.75);
87
+  --bs-secondary-color-rgb: 33, 37, 41;
88
+  --bs-secondary-bg: #e9ecef;
89
+  --bs-secondary-bg-rgb: 233, 236, 239;
90
+  --bs-tertiary-color: rgba(33, 37, 41, 0.5);
91
+  --bs-tertiary-color-rgb: 33, 37, 41;
92
+  --bs-tertiary-bg: #f8f9fa;
93
+  --bs-tertiary-bg-rgb: 248, 249, 250;
94
+  --bs-heading-color: inherit;
95
+  --bs-link-color: #0d6efd;
96
+  --bs-link-color-rgb: 13, 110, 253;
97
+  --bs-link-decoration: underline;
98
+  --bs-link-hover-color: #0a58ca;
99
+  --bs-link-hover-color-rgb: 10, 88, 202;
100
+  --bs-code-color: #d63384;
101
+  --bs-highlight-color: #212529;
102
+  --bs-highlight-bg: #fff3cd;
103
+  --bs-border-width: 1px;
104
+  --bs-border-style: solid;
105
+  --bs-border-color: #dee2e6;
106
+  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
107
+  --bs-border-radius: 0.375rem;
108
+  --bs-border-radius-sm: 0.25rem;
109
+  --bs-border-radius-lg: 0.5rem;
110
+  --bs-border-radius-xl: 1rem;
111
+  --bs-border-radius-xxl: 2rem;
112
+  --bs-border-radius-2xl: var(--bs-border-radius-xxl);
113
+  --bs-border-radius-pill: 50rem;
114
+  --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
115
+  --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
116
+  --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
117
+  --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
118
+  --bs-focus-ring-width: 0.25rem;
119
+  --bs-focus-ring-opacity: 0.25;
120
+  --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
121
+  --bs-form-valid-color: #198754;
122
+  --bs-form-valid-border-color: #198754;
123
+  --bs-form-invalid-color: #dc3545;
124
+  --bs-form-invalid-border-color: #dc3545;
125
+}
126
+
127
+[data-bs-theme=dark] {
128
+  color-scheme: dark;
129
+  --bs-body-color: #dee2e6;
130
+  --bs-body-color-rgb: 222, 226, 230;
131
+  --bs-body-bg: #212529;
132
+  --bs-body-bg-rgb: 33, 37, 41;
133
+  --bs-emphasis-color: #fff;
134
+  --bs-emphasis-color-rgb: 255, 255, 255;
135
+  --bs-secondary-color: rgba(222, 226, 230, 0.75);
136
+  --bs-secondary-color-rgb: 222, 226, 230;
137
+  --bs-secondary-bg: #343a40;
138
+  --bs-secondary-bg-rgb: 52, 58, 64;
139
+  --bs-tertiary-color: rgba(222, 226, 230, 0.5);
140
+  --bs-tertiary-color-rgb: 222, 226, 230;
141
+  --bs-tertiary-bg: #2b3035;
142
+  --bs-tertiary-bg-rgb: 43, 48, 53;
143
+  --bs-primary-text-emphasis: #6ea8fe;
144
+  --bs-secondary-text-emphasis: #a7acb1;
145
+  --bs-success-text-emphasis: #75b798;
146
+  --bs-info-text-emphasis: #6edff6;
147
+  --bs-warning-text-emphasis: #ffda6a;
148
+  --bs-danger-text-emphasis: #ea868f;
149
+  --bs-light-text-emphasis: #f8f9fa;
150
+  --bs-dark-text-emphasis: #dee2e6;
151
+  --bs-primary-bg-subtle: #031633;
152
+  --bs-secondary-bg-subtle: #161719;
153
+  --bs-success-bg-subtle: #051b11;
154
+  --bs-info-bg-subtle: #032830;
155
+  --bs-warning-bg-subtle: #332701;
156
+  --bs-danger-bg-subtle: #2c0b0e;
157
+  --bs-light-bg-subtle: #343a40;
158
+  --bs-dark-bg-subtle: #1a1d20;
159
+  --bs-primary-border-subtle: #084298;
160
+  --bs-secondary-border-subtle: #41464b;
161
+  --bs-success-border-subtle: #0f5132;
162
+  --bs-info-border-subtle: #087990;
163
+  --bs-warning-border-subtle: #997404;
164
+  --bs-danger-border-subtle: #842029;
165
+  --bs-light-border-subtle: #495057;
166
+  --bs-dark-border-subtle: #343a40;
167
+  --bs-heading-color: inherit;
168
+  --bs-link-color: #6ea8fe;
169
+  --bs-link-hover-color: #8bb9fe;
170
+  --bs-link-color-rgb: 110, 168, 254;
171
+  --bs-link-hover-color-rgb: 139, 185, 254;
172
+  --bs-code-color: #e685b5;
173
+  --bs-highlight-color: #dee2e6;
174
+  --bs-highlight-bg: #664d03;
175
+  --bs-border-color: #495057;
176
+  --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
177
+  --bs-form-valid-color: #75b798;
178
+  --bs-form-valid-border-color: #75b798;
179
+  --bs-form-invalid-color: #ea868f;
180
+  --bs-form-invalid-border-color: #ea868f;
181
+}
182
+
183
+*,
184
+*::before,
185
+*::after {
186
+  box-sizing: border-box;
187
+}
188
+
189
+@media (prefers-reduced-motion: no-preference) {
190
+  :root {
191
+    scroll-behavior: smooth;
192
+  }
193
+}
194
+
195
+body {
196
+  margin: 0;
197
+  font-family: var(--bs-body-font-family);
198
+  font-size: var(--bs-body-font-size);
199
+  font-weight: var(--bs-body-font-weight);
200
+  line-height: var(--bs-body-line-height);
201
+  color: var(--bs-body-color);
202
+  text-align: var(--bs-body-text-align);
203
+  background-color: var(--bs-body-bg);
204
+  -webkit-text-size-adjust: 100%;
205
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
206
+}
207
+
208
+hr {
209
+  margin: 1rem 0;
210
+  color: inherit;
211
+  border: 0;
212
+  border-top: var(--bs-border-width) solid;
213
+  opacity: 0.25;
214
+}
215
+
216
+h6, h5, h4, h3, h2, h1 {
217
+  margin-top: 0;
218
+  margin-bottom: 0.5rem;
219
+  font-weight: 500;
220
+  line-height: 1.2;
221
+  color: var(--bs-heading-color);
222
+}
223
+
224
+h1 {
225
+  font-size: calc(1.375rem + 1.5vw);
226
+}
227
+@media (min-width: 1200px) {
228
+  h1 {
229
+    font-size: 2.5rem;
230
+  }
231
+}
232
+
233
+h2 {
234
+  font-size: calc(1.325rem + 0.9vw);
235
+}
236
+@media (min-width: 1200px) {
237
+  h2 {
238
+    font-size: 2rem;
239
+  }
240
+}
241
+
242
+h3 {
243
+  font-size: calc(1.3rem + 0.6vw);
244
+}
245
+@media (min-width: 1200px) {
246
+  h3 {
247
+    font-size: 1.75rem;
248
+  }
249
+}
250
+
251
+h4 {
252
+  font-size: calc(1.275rem + 0.3vw);
253
+}
254
+@media (min-width: 1200px) {
255
+  h4 {
256
+    font-size: 1.5rem;
257
+  }
258
+}
259
+
260
+h5 {
261
+  font-size: 1.25rem;
262
+}
263
+
264
+h6 {
265
+  font-size: 1rem;
266
+}
267
+
268
+p {
269
+  margin-top: 0;
270
+  margin-bottom: 1rem;
271
+}
272
+
273
+abbr[title] {
274
+  -webkit-text-decoration: underline dotted;
275
+  text-decoration: underline dotted;
276
+  cursor: help;
277
+  -webkit-text-decoration-skip-ink: none;
278
+  text-decoration-skip-ink: none;
279
+}
280
+
281
+address {
282
+  margin-bottom: 1rem;
283
+  font-style: normal;
284
+  line-height: inherit;
285
+}
286
+
287
+ol,
288
+ul {
289
+  padding-left: 2rem;
290
+}
291
+
292
+ol,
293
+ul,
294
+dl {
295
+  margin-top: 0;
296
+  margin-bottom: 1rem;
297
+}
298
+
299
+ol ol,
300
+ul ul,
301
+ol ul,
302
+ul ol {
303
+  margin-bottom: 0;
304
+}
305
+
306
+dt {
307
+  font-weight: 700;
308
+}
309
+
310
+dd {
311
+  margin-bottom: 0.5rem;
312
+  margin-left: 0;
313
+}
314
+
315
+blockquote {
316
+  margin: 0 0 1rem;
317
+}
318
+
319
+b,
320
+strong {
321
+  font-weight: bolder;
322
+}
323
+
324
+small {
325
+  font-size: 0.875em;
326
+}
327
+
328
+mark {
329
+  padding: 0.1875em;
330
+  color: var(--bs-highlight-color);
331
+  background-color: var(--bs-highlight-bg);
332
+}
333
+
334
+sub,
335
+sup {
336
+  position: relative;
337
+  font-size: 0.75em;
338
+  line-height: 0;
339
+  vertical-align: baseline;
340
+}
341
+
342
+sub {
343
+  bottom: -0.25em;
344
+}
345
+
346
+sup {
347
+  top: -0.5em;
348
+}
349
+
350
+a {
351
+  color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
352
+  text-decoration: underline;
353
+}
354
+a:hover {
355
+  --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
356
+}
357
+
358
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
359
+  color: inherit;
360
+  text-decoration: none;
361
+}
362
+
363
+pre,
364
+code,
365
+kbd,
366
+samp {
367
+  font-family: var(--bs-font-monospace);
368
+  font-size: 1em;
369
+}
370
+
371
+pre {
372
+  display: block;
373
+  margin-top: 0;
374
+  margin-bottom: 1rem;
375
+  overflow: auto;
376
+  font-size: 0.875em;
377
+}
378
+pre code {
379
+  font-size: inherit;
380
+  color: inherit;
381
+  word-break: normal;
382
+}
383
+
384
+code {
385
+  font-size: 0.875em;
386
+  color: var(--bs-code-color);
387
+  word-wrap: break-word;
388
+}
389
+a > code {
390
+  color: inherit;
391
+}
392
+
393
+kbd {
394
+  padding: 0.1875rem 0.375rem;
395
+  font-size: 0.875em;
396
+  color: var(--bs-body-bg);
397
+  background-color: var(--bs-body-color);
398
+  border-radius: 0.25rem;
399
+}
400
+kbd kbd {
401
+  padding: 0;
402
+  font-size: 1em;
403
+}
404
+
405
+figure {
406
+  margin: 0 0 1rem;
407
+}
408
+
409
+img,
410
+svg {
411
+  vertical-align: middle;
412
+}
413
+
414
+table {
415
+  caption-side: bottom;
416
+  border-collapse: collapse;
417
+}
418
+
419
+caption {
420
+  padding-top: 0.5rem;
421
+  padding-bottom: 0.5rem;
422
+  color: var(--bs-secondary-color);
423
+  text-align: left;
424
+}
425
+
426
+th {
427
+  text-align: inherit;
428
+  text-align: -webkit-match-parent;
429
+}
430
+
431
+thead,
432
+tbody,
433
+tfoot,
434
+tr,
435
+td,
436
+th {
437
+  border-color: inherit;
438
+  border-style: solid;
439
+  border-width: 0;
440
+}
441
+
442
+label {
443
+  display: inline-block;
444
+}
445
+
446
+button {
447
+  border-radius: 0;
448
+}
449
+
450
+button:focus:not(:focus-visible) {
451
+  outline: 0;
452
+}
453
+
454
+input,
455
+button,
456
+select,
457
+optgroup,
458
+textarea {
459
+  margin: 0;
460
+  font-family: inherit;
461
+  font-size: inherit;
462
+  line-height: inherit;
463
+}
464
+
465
+button,
466
+select {
467
+  text-transform: none;
468
+}
469
+
470
+[role=button] {
471
+  cursor: pointer;
472
+}
473
+
474
+select {
475
+  word-wrap: normal;
476
+}
477
+select:disabled {
478
+  opacity: 1;
479
+}
480
+
481
+[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
482
+  display: none !important;
483
+}
484
+
485
+button,
486
+[type=button],
487
+[type=reset],
488
+[type=submit] {
489
+  -webkit-appearance: button;
490
+}
491
+button:not(:disabled),
492
+[type=button]:not(:disabled),
493
+[type=reset]:not(:disabled),
494
+[type=submit]:not(:disabled) {
495
+  cursor: pointer;
496
+}
497
+
498
+::-moz-focus-inner {
499
+  padding: 0;
500
+  border-style: none;
501
+}
502
+
503
+textarea {
504
+  resize: vertical;
505
+}
506
+
507
+fieldset {
508
+  min-width: 0;
509
+  padding: 0;
510
+  margin: 0;
511
+  border: 0;
512
+}
513
+
514
+legend {
515
+  float: left;
516
+  width: 100%;
517
+  padding: 0;
518
+  margin-bottom: 0.5rem;
519
+  font-size: calc(1.275rem + 0.3vw);
520
+  line-height: inherit;
521
+}
522
+@media (min-width: 1200px) {
523
+  legend {
524
+    font-size: 1.5rem;
525
+  }
526
+}
527
+legend + * {
528
+  clear: left;
529
+}
530
+
531
+::-webkit-datetime-edit-fields-wrapper,
532
+::-webkit-datetime-edit-text,
533
+::-webkit-datetime-edit-minute,
534
+::-webkit-datetime-edit-hour-field,
535
+::-webkit-datetime-edit-day-field,
536
+::-webkit-datetime-edit-month-field,
537
+::-webkit-datetime-edit-year-field {
538
+  padding: 0;
539
+}
540
+
541
+::-webkit-inner-spin-button {
542
+  height: auto;
543
+}
544
+
545
+[type=search] {
546
+  -webkit-appearance: textfield;
547
+  outline-offset: -2px;
548
+}
549
+
550
+/* rtl:raw:
551
+[type="tel"],
552
+[type="url"],
553
+[type="email"],
554
+[type="number"] {
555
+  direction: ltr;
556
+}
557
+*/
558
+::-webkit-search-decoration {
559
+  -webkit-appearance: none;
560
+}
561
+
562
+::-webkit-color-swatch-wrapper {
563
+  padding: 0;
564
+}
565
+
566
+::-webkit-file-upload-button {
567
+  font: inherit;
568
+  -webkit-appearance: button;
569
+}
570
+
571
+::file-selector-button {
572
+  font: inherit;
573
+  -webkit-appearance: button;
574
+}
575
+
576
+output {
577
+  display: inline-block;
578
+}
579
+
580
+iframe {
581
+  border: 0;
582
+}
583
+
584
+summary {
585
+  display: list-item;
586
+  cursor: pointer;
587
+}
588
+
589
+progress {
590
+  vertical-align: baseline;
591
+}
592
+
593
+[hidden] {
594
+  display: none !important;
595
+}
596
+
597
+/*# sourceMappingURL=bootstrap-reboot.css.map */

+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 594
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css Visa fil

@@ -0,0 +1,594 @@
1
+/*!
2
+ * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2024 The Bootstrap Authors
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+:root,
7
+[data-bs-theme=light] {
8
+  --bs-blue: #0d6efd;
9
+  --bs-indigo: #6610f2;
10
+  --bs-purple: #6f42c1;
11
+  --bs-pink: #d63384;
12
+  --bs-red: #dc3545;
13
+  --bs-orange: #fd7e14;
14
+  --bs-yellow: #ffc107;
15
+  --bs-green: #198754;
16
+  --bs-teal: #20c997;
17
+  --bs-cyan: #0dcaf0;
18
+  --bs-black: #000;
19
+  --bs-white: #fff;
20
+  --bs-gray: #6c757d;
21
+  --bs-gray-dark: #343a40;
22
+  --bs-gray-100: #f8f9fa;
23
+  --bs-gray-200: #e9ecef;
24
+  --bs-gray-300: #dee2e6;
25
+  --bs-gray-400: #ced4da;
26
+  --bs-gray-500: #adb5bd;
27
+  --bs-gray-600: #6c757d;
28
+  --bs-gray-700: #495057;
29
+  --bs-gray-800: #343a40;
30
+  --bs-gray-900: #212529;
31
+  --bs-primary: #0d6efd;
32
+  --bs-secondary: #6c757d;
33
+  --bs-success: #198754;
34
+  --bs-info: #0dcaf0;
35
+  --bs-warning: #ffc107;
36
+  --bs-danger: #dc3545;
37
+  --bs-light: #f8f9fa;
38
+  --bs-dark: #212529;
39
+  --bs-primary-rgb: 13, 110, 253;
40
+  --bs-secondary-rgb: 108, 117, 125;
41
+  --bs-success-rgb: 25, 135, 84;
42
+  --bs-info-rgb: 13, 202, 240;
43
+  --bs-warning-rgb: 255, 193, 7;
44
+  --bs-danger-rgb: 220, 53, 69;
45
+  --bs-light-rgb: 248, 249, 250;
46
+  --bs-dark-rgb: 33, 37, 41;
47
+  --bs-primary-text-emphasis: #052c65;
48
+  --bs-secondary-text-emphasis: #2b2f32;
49
+  --bs-success-text-emphasis: #0a3622;
50
+  --bs-info-text-emphasis: #055160;
51
+  --bs-warning-text-emphasis: #664d03;
52
+  --bs-danger-text-emphasis: #58151c;
53
+  --bs-light-text-emphasis: #495057;
54
+  --bs-dark-text-emphasis: #495057;
55
+  --bs-primary-bg-subtle: #cfe2ff;
56
+  --bs-secondary-bg-subtle: #e2e3e5;
57
+  --bs-success-bg-subtle: #d1e7dd;
58
+  --bs-info-bg-subtle: #cff4fc;
59
+  --bs-warning-bg-subtle: #fff3cd;
60
+  --bs-danger-bg-subtle: #f8d7da;
61
+  --bs-light-bg-subtle: #fcfcfd;
62
+  --bs-dark-bg-subtle: #ced4da;
63
+  --bs-primary-border-subtle: #9ec5fe;
64
+  --bs-secondary-border-subtle: #c4c8cb;
65
+  --bs-success-border-subtle: #a3cfbb;
66
+  --bs-info-border-subtle: #9eeaf9;
67
+  --bs-warning-border-subtle: #ffe69c;
68
+  --bs-danger-border-subtle: #f1aeb5;
69
+  --bs-light-border-subtle: #e9ecef;
70
+  --bs-dark-border-subtle: #adb5bd;
71
+  --bs-white-rgb: 255, 255, 255;
72
+  --bs-black-rgb: 0, 0, 0;
73
+  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
74
+  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
75
+  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
76
+  --bs-body-font-family: var(--bs-font-sans-serif);
77
+  --bs-body-font-size: 1rem;
78
+  --bs-body-font-weight: 400;
79
+  --bs-body-line-height: 1.5;
80
+  --bs-body-color: #212529;
81
+  --bs-body-color-rgb: 33, 37, 41;
82
+  --bs-body-bg: #fff;
83
+  --bs-body-bg-rgb: 255, 255, 255;
84
+  --bs-emphasis-color: #000;
85
+  --bs-emphasis-color-rgb: 0, 0, 0;
86
+  --bs-secondary-color: rgba(33, 37, 41, 0.75);
87
+  --bs-secondary-color-rgb: 33, 37, 41;
88
+  --bs-secondary-bg: #e9ecef;
89
+  --bs-secondary-bg-rgb: 233, 236, 239;
90
+  --bs-tertiary-color: rgba(33, 37, 41, 0.5);
91
+  --bs-tertiary-color-rgb: 33, 37, 41;
92
+  --bs-tertiary-bg: #f8f9fa;
93
+  --bs-tertiary-bg-rgb: 248, 249, 250;
94
+  --bs-heading-color: inherit;
95
+  --bs-link-color: #0d6efd;
96
+  --bs-link-color-rgb: 13, 110, 253;
97
+  --bs-link-decoration: underline;
98
+  --bs-link-hover-color: #0a58ca;
99
+  --bs-link-hover-color-rgb: 10, 88, 202;
100
+  --bs-code-color: #d63384;
101
+  --bs-highlight-color: #212529;
102
+  --bs-highlight-bg: #fff3cd;
103
+  --bs-border-width: 1px;
104
+  --bs-border-style: solid;
105
+  --bs-border-color: #dee2e6;
106
+  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
107
+  --bs-border-radius: 0.375rem;
108
+  --bs-border-radius-sm: 0.25rem;
109
+  --bs-border-radius-lg: 0.5rem;
110
+  --bs-border-radius-xl: 1rem;
111
+  --bs-border-radius-xxl: 2rem;
112
+  --bs-border-radius-2xl: var(--bs-border-radius-xxl);
113
+  --bs-border-radius-pill: 50rem;
114
+  --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
115
+  --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
116
+  --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
117
+  --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
118
+  --bs-focus-ring-width: 0.25rem;
119
+  --bs-focus-ring-opacity: 0.25;
120
+  --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
121
+  --bs-form-valid-color: #198754;
122
+  --bs-form-valid-border-color: #198754;
123
+  --bs-form-invalid-color: #dc3545;
124
+  --bs-form-invalid-border-color: #dc3545;
125
+}
126
+
127
+[data-bs-theme=dark] {
128
+  color-scheme: dark;
129
+  --bs-body-color: #dee2e6;
130
+  --bs-body-color-rgb: 222, 226, 230;
131
+  --bs-body-bg: #212529;
132
+  --bs-body-bg-rgb: 33, 37, 41;
133
+  --bs-emphasis-color: #fff;
134
+  --bs-emphasis-color-rgb: 255, 255, 255;
135
+  --bs-secondary-color: rgba(222, 226, 230, 0.75);
136
+  --bs-secondary-color-rgb: 222, 226, 230;
137
+  --bs-secondary-bg: #343a40;
138
+  --bs-secondary-bg-rgb: 52, 58, 64;
139
+  --bs-tertiary-color: rgba(222, 226, 230, 0.5);
140
+  --bs-tertiary-color-rgb: 222, 226, 230;
141
+  --bs-tertiary-bg: #2b3035;
142
+  --bs-tertiary-bg-rgb: 43, 48, 53;
143
+  --bs-primary-text-emphasis: #6ea8fe;
144
+  --bs-secondary-text-emphasis: #a7acb1;
145
+  --bs-success-text-emphasis: #75b798;
146
+  --bs-info-text-emphasis: #6edff6;
147
+  --bs-warning-text-emphasis: #ffda6a;
148
+  --bs-danger-text-emphasis: #ea868f;
149
+  --bs-light-text-emphasis: #f8f9fa;
150
+  --bs-dark-text-emphasis: #dee2e6;
151
+  --bs-primary-bg-subtle: #031633;
152
+  --bs-secondary-bg-subtle: #161719;
153
+  --bs-success-bg-subtle: #051b11;
154
+  --bs-info-bg-subtle: #032830;
155
+  --bs-warning-bg-subtle: #332701;
156
+  --bs-danger-bg-subtle: #2c0b0e;
157
+  --bs-light-bg-subtle: #343a40;
158
+  --bs-dark-bg-subtle: #1a1d20;
159
+  --bs-primary-border-subtle: #084298;
160
+  --bs-secondary-border-subtle: #41464b;
161
+  --bs-success-border-subtle: #0f5132;
162
+  --bs-info-border-subtle: #087990;
163
+  --bs-warning-border-subtle: #997404;
164
+  --bs-danger-border-subtle: #842029;
165
+  --bs-light-border-subtle: #495057;
166
+  --bs-dark-border-subtle: #343a40;
167
+  --bs-heading-color: inherit;
168
+  --bs-link-color: #6ea8fe;
169
+  --bs-link-hover-color: #8bb9fe;
170
+  --bs-link-color-rgb: 110, 168, 254;
171
+  --bs-link-hover-color-rgb: 139, 185, 254;
172
+  --bs-code-color: #e685b5;
173
+  --bs-highlight-color: #dee2e6;
174
+  --bs-highlight-bg: #664d03;
175
+  --bs-border-color: #495057;
176
+  --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
177
+  --bs-form-valid-color: #75b798;
178
+  --bs-form-valid-border-color: #75b798;
179
+  --bs-form-invalid-color: #ea868f;
180
+  --bs-form-invalid-border-color: #ea868f;
181
+}
182
+
183
+*,
184
+*::before,
185
+*::after {
186
+  box-sizing: border-box;
187
+}
188
+
189
+@media (prefers-reduced-motion: no-preference) {
190
+  :root {
191
+    scroll-behavior: smooth;
192
+  }
193
+}
194
+
195
+body {
196
+  margin: 0;
197
+  font-family: var(--bs-body-font-family);
198
+  font-size: var(--bs-body-font-size);
199
+  font-weight: var(--bs-body-font-weight);
200
+  line-height: var(--bs-body-line-height);
201
+  color: var(--bs-body-color);
202
+  text-align: var(--bs-body-text-align);
203
+  background-color: var(--bs-body-bg);
204
+  -webkit-text-size-adjust: 100%;
205
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
206
+}
207
+
208
+hr {
209
+  margin: 1rem 0;
210
+  color: inherit;
211
+  border: 0;
212
+  border-top: var(--bs-border-width) solid;
213
+  opacity: 0.25;
214
+}
215
+
216
+h6, h5, h4, h3, h2, h1 {
217
+  margin-top: 0;
218
+  margin-bottom: 0.5rem;
219
+  font-weight: 500;
220
+  line-height: 1.2;
221
+  color: var(--bs-heading-color);
222
+}
223
+
224
+h1 {
225
+  font-size: calc(1.375rem + 1.5vw);
226
+}
227
+@media (min-width: 1200px) {
228
+  h1 {
229
+    font-size: 2.5rem;
230
+  }
231
+}
232
+
233
+h2 {
234
+  font-size: calc(1.325rem + 0.9vw);
235
+}
236
+@media (min-width: 1200px) {
237
+  h2 {
238
+    font-size: 2rem;
239
+  }
240
+}
241
+
242
+h3 {
243
+  font-size: calc(1.3rem + 0.6vw);
244
+}
245
+@media (min-width: 1200px) {
246
+  h3 {
247
+    font-size: 1.75rem;
248
+  }
249
+}
250
+
251
+h4 {
252
+  font-size: calc(1.275rem + 0.3vw);
253
+}
254
+@media (min-width: 1200px) {
255
+  h4 {
256
+    font-size: 1.5rem;
257
+  }
258
+}
259
+
260
+h5 {
261
+  font-size: 1.25rem;
262
+}
263
+
264
+h6 {
265
+  font-size: 1rem;
266
+}
267
+
268
+p {
269
+  margin-top: 0;
270
+  margin-bottom: 1rem;
271
+}
272
+
273
+abbr[title] {
274
+  -webkit-text-decoration: underline dotted;
275
+  text-decoration: underline dotted;
276
+  cursor: help;
277
+  -webkit-text-decoration-skip-ink: none;
278
+  text-decoration-skip-ink: none;
279
+}
280
+
281
+address {
282
+  margin-bottom: 1rem;
283
+  font-style: normal;
284
+  line-height: inherit;
285
+}
286
+
287
+ol,
288
+ul {
289
+  padding-right: 2rem;
290
+}
291
+
292
+ol,
293
+ul,
294
+dl {
295
+  margin-top: 0;
296
+  margin-bottom: 1rem;
297
+}
298
+
299
+ol ol,
300
+ul ul,
301
+ol ul,
302
+ul ol {
303
+  margin-bottom: 0;
304
+}
305
+
306
+dt {
307
+  font-weight: 700;
308
+}
309
+
310
+dd {
311
+  margin-bottom: 0.5rem;
312
+  margin-right: 0;
313
+}
314
+
315
+blockquote {
316
+  margin: 0 0 1rem;
317
+}
318
+
319
+b,
320
+strong {
321
+  font-weight: bolder;
322
+}
323
+
324
+small {
325
+  font-size: 0.875em;
326
+}
327
+
328
+mark {
329
+  padding: 0.1875em;
330
+  color: var(--bs-highlight-color);
331
+  background-color: var(--bs-highlight-bg);
332
+}
333
+
334
+sub,
335
+sup {
336
+  position: relative;
337
+  font-size: 0.75em;
338
+  line-height: 0;
339
+  vertical-align: baseline;
340
+}
341
+
342
+sub {
343
+  bottom: -0.25em;
344
+}
345
+
346
+sup {
347
+  top: -0.5em;
348
+}
349
+
350
+a {
351
+  color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
352
+  text-decoration: underline;
353
+}
354
+a:hover {
355
+  --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
356
+}
357
+
358
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
359
+  color: inherit;
360
+  text-decoration: none;
361
+}
362
+
363
+pre,
364
+code,
365
+kbd,
366
+samp {
367
+  font-family: var(--bs-font-monospace);
368
+  font-size: 1em;
369
+}
370
+
371
+pre {
372
+  display: block;
373
+  margin-top: 0;
374
+  margin-bottom: 1rem;
375
+  overflow: auto;
376
+  font-size: 0.875em;
377
+}
378
+pre code {
379
+  font-size: inherit;
380
+  color: inherit;
381
+  word-break: normal;
382
+}
383
+
384
+code {
385
+  font-size: 0.875em;
386
+  color: var(--bs-code-color);
387
+  word-wrap: break-word;
388
+}
389
+a > code {
390
+  color: inherit;
391
+}
392
+
393
+kbd {
394
+  padding: 0.1875rem 0.375rem;
395
+  font-size: 0.875em;
396
+  color: var(--bs-body-bg);
397
+  background-color: var(--bs-body-color);
398
+  border-radius: 0.25rem;
399
+}
400
+kbd kbd {
401
+  padding: 0;
402
+  font-size: 1em;
403
+}
404
+
405
+figure {
406
+  margin: 0 0 1rem;
407
+}
408
+
409
+img,
410
+svg {
411
+  vertical-align: middle;
412
+}
413
+
414
+table {
415
+  caption-side: bottom;
416
+  border-collapse: collapse;
417
+}
418
+
419
+caption {
420
+  padding-top: 0.5rem;
421
+  padding-bottom: 0.5rem;
422
+  color: var(--bs-secondary-color);
423
+  text-align: right;
424
+}
425
+
426
+th {
427
+  text-align: inherit;
428
+  text-align: -webkit-match-parent;
429
+}
430
+
431
+thead,
432
+tbody,
433
+tfoot,
434
+tr,
435
+td,
436
+th {
437
+  border-color: inherit;
438
+  border-style: solid;
439
+  border-width: 0;
440
+}
441
+
442
+label {
443
+  display: inline-block;
444
+}
445
+
446
+button {
447
+  border-radius: 0;
448
+}
449
+
450
+button:focus:not(:focus-visible) {
451
+  outline: 0;
452
+}
453
+
454
+input,
455
+button,
456
+select,
457
+optgroup,
458
+textarea {
459
+  margin: 0;
460
+  font-family: inherit;
461
+  font-size: inherit;
462
+  line-height: inherit;
463
+}
464
+
465
+button,
466
+select {
467
+  text-transform: none;
468
+}
469
+
470
+[role=button] {
471
+  cursor: pointer;
472
+}
473
+
474
+select {
475
+  word-wrap: normal;
476
+}
477
+select:disabled {
478
+  opacity: 1;
479
+}
480
+
481
+[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
482
+  display: none !important;
483
+}
484
+
485
+button,
486
+[type=button],
487
+[type=reset],
488
+[type=submit] {
489
+  -webkit-appearance: button;
490
+}
491
+button:not(:disabled),
492
+[type=button]:not(:disabled),
493
+[type=reset]:not(:disabled),
494
+[type=submit]:not(:disabled) {
495
+  cursor: pointer;
496
+}
497
+
498
+::-moz-focus-inner {
499
+  padding: 0;
500
+  border-style: none;
501
+}
502
+
503
+textarea {
504
+  resize: vertical;
505
+}
506
+
507
+fieldset {
508
+  min-width: 0;
509
+  padding: 0;
510
+  margin: 0;
511
+  border: 0;
512
+}
513
+
514
+legend {
515
+  float: right;
516
+  width: 100%;
517
+  padding: 0;
518
+  margin-bottom: 0.5rem;
519
+  font-size: calc(1.275rem + 0.3vw);
520
+  line-height: inherit;
521
+}
522
+@media (min-width: 1200px) {
523
+  legend {
524
+    font-size: 1.5rem;
525
+  }
526
+}
527
+legend + * {
528
+  clear: right;
529
+}
530
+
531
+::-webkit-datetime-edit-fields-wrapper,
532
+::-webkit-datetime-edit-text,
533
+::-webkit-datetime-edit-minute,
534
+::-webkit-datetime-edit-hour-field,
535
+::-webkit-datetime-edit-day-field,
536
+::-webkit-datetime-edit-month-field,
537
+::-webkit-datetime-edit-year-field {
538
+  padding: 0;
539
+}
540
+
541
+::-webkit-inner-spin-button {
542
+  height: auto;
543
+}
544
+
545
+[type=search] {
546
+  -webkit-appearance: textfield;
547
+  outline-offset: -2px;
548
+}
549
+
550
+[type="tel"],
551
+[type="url"],
552
+[type="email"],
553
+[type="number"] {
554
+  direction: ltr;
555
+}
556
+::-webkit-search-decoration {
557
+  -webkit-appearance: none;
558
+}
559
+
560
+::-webkit-color-swatch-wrapper {
561
+  padding: 0;
562
+}
563
+
564
+::-webkit-file-upload-button {
565
+  font: inherit;
566
+  -webkit-appearance: button;
567
+}
568
+
569
+::file-selector-button {
570
+  font: inherit;
571
+  -webkit-appearance: button;
572
+}
573
+
574
+output {
575
+  display: inline-block;
576
+}
577
+
578
+iframe {
579
+  border: 0;
580
+}
581
+
582
+summary {
583
+  display: list-item;
584
+  cursor: pointer;
585
+}
586
+
587
+progress {
588
+  vertical-align: baseline;
589
+}
590
+
591
+[hidden] {
592
+  display: none !important;
593
+}
594
+/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 5402
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 5393
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 12057
- 0
assets/vendor/bootstrap/css/bootstrap.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 12030
- 0
assets/vendor/bootstrap/css/bootstrap.rtl.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap.rtl.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 6
- 0
assets/vendor/bootstrap/css/bootstrap.rtl.min.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/bootstrap.rtl.min.css.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/css/prb.txt Visa fil

@@ -0,0 +1 @@
1
+prb

+ 6314
- 0
assets/vendor/bootstrap/js/bootstrap.bundle.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/js/bootstrap.bundle.js.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 7
- 0
assets/vendor/bootstrap/js/bootstrap.bundle.min.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/js/bootstrap.bundle.min.js.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 4447
- 0
assets/vendor/bootstrap/js/bootstrap.esm.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/js/bootstrap.esm.js.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 7
- 0
assets/vendor/bootstrap/js/bootstrap.esm.min.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
assets/vendor/bootstrap/js/bootstrap.esm.min.js.map
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 4494
- 0
assets/vendor/bootstrap/js/bootstrap.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 0
- 0
assets/vendor/bootstrap/js/bootstrap.js.map Visa fil


Vissa filer visades inte eftersom för många filer har ändrats

Laddar…
Avbryt
Spara