├── README.md ├── assets ├── css │ └── style.css ├── img │ ├── about-abilities-zh.png │ ├── about-abilities.png │ ├── about-img-arch.png │ ├── about-img-data.png │ ├── about-scaling.png │ ├── apple-touch-icon.png │ ├── demo.mp4 │ ├── favicon.png │ ├── hero-carousel │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ └── 4.jpg │ ├── logo.png │ ├── portfolio │ │ ├── detection_016_UCR_Anomaly_DISTORTEDECG4_5000_16900_17100.png │ │ ├── detection_069_UCR_Anomaly_DISTORTEDinsectEPG5_3200_8500_8501.png │ │ ├── detection_206_UCR_Anomaly_CHARISten_25130_29080_29140.pdf.png │ │ ├── forecast_ECL_0.05_10_0.pdf.png │ │ ├── forecast_ECL_0.2_0.pdf.png │ │ ├── forecast_PEMS03_0.05_30_0.pdf.png │ │ ├── forecast_PEMS03_0.2_30_0.pdf.png │ │ ├── forecast_Traffic_0.05_10_0.pdf.png │ │ ├── forecast_Traffic_0.2_10_0.pdf.png │ │ ├── imputation_ECL_0.05_140.pdf.png │ │ ├── imputation_ECL_0.2_140.pdf.png │ │ ├── imputation_ETTh2_0.05_400.pdf.png │ │ ├── imputation_ETTh2_0.2_400.pdf.png │ │ ├── imputation_Traffic_0.05_180.pdf.png │ │ └── imputation_Traffic_0.2_180.pdf.png │ ├── preloader.gif │ ├── quote-sign-left.png │ └── quote-sign-right.png ├── js │ └── main.js ├── scss │ ├── _footer.scss │ ├── _general.scss │ ├── _header.scss │ ├── _hero.scss │ ├── _nav.scss │ ├── _sections.scss │ ├── _variables.scss │ └── style.scss └── vendor │ ├── aos │ ├── aos.cjs.js │ ├── aos.css │ ├── aos.esm.js │ ├── aos.js │ └── aos.js.map │ ├── bootstrap-icons │ ├── bootstrap-icons.css │ ├── bootstrap-icons.json │ ├── bootstrap-icons.min.css │ ├── bootstrap-icons.scss │ └── fonts │ │ ├── bootstrap-icons.woff │ │ └── bootstrap-icons.woff2 │ ├── bootstrap │ ├── css │ │ ├── bootstrap-grid.css │ │ ├── bootstrap-grid.css.map │ │ ├── bootstrap-grid.min.css │ │ ├── bootstrap-grid.min.css.map │ │ ├── bootstrap-grid.rtl.css │ │ ├── bootstrap-grid.rtl.css.map │ │ ├── bootstrap-grid.rtl.min.css │ │ ├── bootstrap-grid.rtl.min.css.map │ │ ├── bootstrap-reboot.css │ │ ├── bootstrap-reboot.css.map │ │ ├── bootstrap-reboot.min.css │ │ ├── bootstrap-reboot.min.css.map │ │ ├── bootstrap-reboot.rtl.css │ │ ├── bootstrap-reboot.rtl.css.map │ │ ├── bootstrap-reboot.rtl.min.css │ │ ├── bootstrap-reboot.rtl.min.css.map │ │ ├── bootstrap-utilities.css │ │ ├── bootstrap-utilities.css.map │ │ ├── bootstrap-utilities.min.css │ │ ├── bootstrap-utilities.min.css.map │ │ ├── bootstrap-utilities.rtl.css │ │ ├── bootstrap-utilities.rtl.css.map │ │ ├── bootstrap-utilities.rtl.min.css │ │ ├── bootstrap-utilities.rtl.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ ├── bootstrap.rtl.css │ │ ├── bootstrap.rtl.css.map │ │ ├── bootstrap.rtl.min.css │ │ └── bootstrap.rtl.min.css.map │ └── js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.esm.js │ │ ├── bootstrap.esm.js.map │ │ ├── bootstrap.esm.min.js │ │ ├── bootstrap.esm.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ └── bootstrap.min.js.map │ ├── boxicons │ ├── css │ │ ├── animations.css │ │ ├── boxicons.css │ │ ├── boxicons.min.css │ │ └── transformations.css │ └── fonts │ │ ├── boxicons.eot │ │ ├── boxicons.svg │ │ ├── boxicons.ttf │ │ ├── boxicons.woff │ │ └── boxicons.woff2 │ ├── glightbox │ ├── css │ │ ├── glightbox.css │ │ └── glightbox.min.css │ └── js │ │ ├── glightbox.js │ │ └── glightbox.min.js │ ├── isotope-layout │ ├── isotope.pkgd.js │ └── isotope.pkgd.min.js │ ├── php-email-form │ ├── php-email-form.php │ └── validate.js │ └── swiper │ ├── swiper-bundle.min.css │ ├── swiper-bundle.min.js │ └── swiper-bundle.min.js.map ├── index.html └── index_zh.html /README.md: -------------------------------------------------------------------------------- 1 | # **:triangular_flag_on_post: The complete code and scripts of Timer have been included in [[Large-Time-Series-Model]](https://github.com/thuml/Large-Time-Series-Model).** 2 | 3 | # **:triangular_flag_on_post: The complete code and scripts of Timer have been included in [[Large-Time-Series-Model]](https://github.com/thuml/Large-Time-Series-Model).** 4 | 5 | # **:triangular_flag_on_post: The complete code and scripts of Timer have been included in [[Large-Time-Series-Model]](https://github.com/thuml/Large-Time-Series-Model).** 6 | -------------------------------------------------------------------------------- /assets/img/about-abilities-zh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/about-abilities-zh.png -------------------------------------------------------------------------------- /assets/img/about-abilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/about-abilities.png -------------------------------------------------------------------------------- /assets/img/about-img-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/about-img-arch.png -------------------------------------------------------------------------------- /assets/img/about-img-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/about-img-data.png -------------------------------------------------------------------------------- /assets/img/about-scaling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/about-scaling.png -------------------------------------------------------------------------------- /assets/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/img/demo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/demo.mp4 -------------------------------------------------------------------------------- /assets/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/favicon.png -------------------------------------------------------------------------------- /assets/img/hero-carousel/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/hero-carousel/1.jpg -------------------------------------------------------------------------------- /assets/img/hero-carousel/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/hero-carousel/2.jpg -------------------------------------------------------------------------------- /assets/img/hero-carousel/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/hero-carousel/3.jpg -------------------------------------------------------------------------------- /assets/img/hero-carousel/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/hero-carousel/4.jpg -------------------------------------------------------------------------------- /assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/logo.png -------------------------------------------------------------------------------- /assets/img/portfolio/detection_016_UCR_Anomaly_DISTORTEDECG4_5000_16900_17100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/detection_016_UCR_Anomaly_DISTORTEDECG4_5000_16900_17100.png -------------------------------------------------------------------------------- /assets/img/portfolio/detection_069_UCR_Anomaly_DISTORTEDinsectEPG5_3200_8500_8501.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/detection_069_UCR_Anomaly_DISTORTEDinsectEPG5_3200_8500_8501.png -------------------------------------------------------------------------------- /assets/img/portfolio/detection_206_UCR_Anomaly_CHARISten_25130_29080_29140.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/detection_206_UCR_Anomaly_CHARISten_25130_29080_29140.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/forecast_ECL_0.05_10_0.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/forecast_ECL_0.05_10_0.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/forecast_ECL_0.2_0.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/forecast_ECL_0.2_0.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/forecast_PEMS03_0.05_30_0.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/forecast_PEMS03_0.05_30_0.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/forecast_PEMS03_0.2_30_0.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/forecast_PEMS03_0.2_30_0.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/forecast_Traffic_0.05_10_0.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/forecast_Traffic_0.05_10_0.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/forecast_Traffic_0.2_10_0.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/forecast_Traffic_0.2_10_0.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/imputation_ECL_0.05_140.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/imputation_ECL_0.05_140.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/imputation_ECL_0.2_140.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/imputation_ECL_0.2_140.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/imputation_ETTh2_0.05_400.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/imputation_ETTh2_0.05_400.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/imputation_ETTh2_0.2_400.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/imputation_ETTh2_0.2_400.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/imputation_Traffic_0.05_180.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/imputation_Traffic_0.05_180.pdf.png -------------------------------------------------------------------------------- /assets/img/portfolio/imputation_Traffic_0.2_180.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/portfolio/imputation_Traffic_0.2_180.pdf.png -------------------------------------------------------------------------------- /assets/img/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/preloader.gif -------------------------------------------------------------------------------- /assets/img/quote-sign-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/quote-sign-left.png -------------------------------------------------------------------------------- /assets/img/quote-sign-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/img/quote-sign-right.png -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | 2 | (function() { 3 | "use strict"; 4 | 5 | /** 6 | * Easy selector helper function 7 | */ 8 | const select = (el, all = false) => { 9 | el = el.trim() 10 | if (all) { 11 | return [...document.querySelectorAll(el)] 12 | } else { 13 | return document.querySelector(el) 14 | } 15 | } 16 | 17 | /** 18 | * Easy event listener function 19 | */ 20 | const on = (type, el, listener, all = false) => { 21 | let selectEl = select(el, all) 22 | if (selectEl) { 23 | if (all) { 24 | selectEl.forEach(e => e.addEventListener(type, listener)) 25 | } else { 26 | selectEl.addEventListener(type, listener) 27 | } 28 | } 29 | } 30 | 31 | /** 32 | * Easy on scroll event listener 33 | */ 34 | const onscroll = (el, listener) => { 35 | el.addEventListener('scroll', listener) 36 | } 37 | 38 | /** 39 | * Navbar links active state on scroll 40 | */ 41 | let navbarlinks = select('#navbar .scrollto', true) 42 | const navbarlinksActive = () => { 43 | let position = window.scrollY + 200 44 | navbarlinks.forEach(navbarlink => { 45 | if (!navbarlink.hash) return 46 | let section = select(navbarlink.hash) 47 | if (!section) return 48 | if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) { 49 | navbarlink.classList.add('active') 50 | } else { 51 | navbarlink.classList.remove('active') 52 | } 53 | }) 54 | } 55 | window.addEventListener('load', navbarlinksActive) 56 | onscroll(document, navbarlinksActive) 57 | 58 | /** 59 | * Scrolls to an element with header offset 60 | */ 61 | const scrollto = (el) => { 62 | let header = select('#header') 63 | let offset = header.offsetHeight 64 | 65 | let elementPos = select(el).offsetTop 66 | window.scrollTo({ 67 | top: elementPos - offset, 68 | behavior: 'smooth' 69 | }) 70 | } 71 | 72 | /** 73 | * Header fixed top on scroll 74 | */ 75 | let selectHeader = select('#header') 76 | if (selectHeader) { 77 | let headerOffset = selectHeader.offsetTop 78 | let nextElement = selectHeader.nextElementSibling 79 | const headerFixed = () => { 80 | if ((headerOffset - window.scrollY) <= 0) { 81 | selectHeader.classList.add('fixed-top') 82 | nextElement.classList.add('scrolled-offset') 83 | } else { 84 | selectHeader.classList.remove('fixed-top') 85 | nextElement.classList.remove('scrolled-offset') 86 | } 87 | } 88 | window.addEventListener('load', headerFixed) 89 | onscroll(document, headerFixed) 90 | } 91 | 92 | /** 93 | * Back to top button 94 | */ 95 | let backtotop = select('.back-to-top') 96 | if (backtotop) { 97 | const toggleBacktotop = () => { 98 | if (window.scrollY > 100) { 99 | backtotop.classList.add('active') 100 | } else { 101 | backtotop.classList.remove('active') 102 | } 103 | } 104 | window.addEventListener('load', toggleBacktotop) 105 | onscroll(document, toggleBacktotop) 106 | } 107 | 108 | /** 109 | * Mobile nav toggle 110 | */ 111 | on('click', '.mobile-nav-toggle', function(e) { 112 | select('#navbar').classList.toggle('navbar-mobile') 113 | this.classList.toggle('bi-list') 114 | this.classList.toggle('bi-x') 115 | }) 116 | 117 | /** 118 | * Mobile nav dropdowns activate 119 | */ 120 | on('click', '.navbar .dropdown > a', function(e) { 121 | if (select('#navbar').classList.contains('navbar-mobile')) { 122 | e.preventDefault() 123 | this.nextElementSibling.classList.toggle('dropdown-active') 124 | } 125 | }, true) 126 | 127 | /** 128 | * Scrool with ofset on links with a class name .scrollto 129 | */ 130 | on('click', '.scrollto', function(e) { 131 | if (select(this.hash)) { 132 | e.preventDefault() 133 | 134 | let navbar = select('#navbar') 135 | if (navbar.classList.contains('navbar-mobile')) { 136 | navbar.classList.remove('navbar-mobile') 137 | let navbarToggle = select('.mobile-nav-toggle') 138 | navbarToggle.classList.toggle('bi-list') 139 | navbarToggle.classList.toggle('bi-x') 140 | } 141 | scrollto(this.hash) 142 | } 143 | }, true) 144 | 145 | /** 146 | * Scroll with ofset on page load with hash links in the url 147 | */ 148 | window.addEventListener('load', () => { 149 | if (window.location.hash) { 150 | if (select(window.location.hash)) { 151 | scrollto(window.location.hash) 152 | } 153 | } 154 | }); 155 | 156 | /** 157 | * Clients Slider 158 | */ 159 | new Swiper('.hero-slider', { 160 | speed: 1000, 161 | loop: true, 162 | effect: 'fade', 163 | autoplay: { 164 | delay: 5000, 165 | disableOnInteraction: false 166 | } 167 | }); 168 | 169 | /** 170 | * Clients Slider 171 | */ 172 | new Swiper('.clients-slider', { 173 | speed: 400, 174 | loop: true, 175 | autoplay: { 176 | delay: 5000, 177 | disableOnInteraction: false 178 | }, 179 | slidesPerView: 'auto', 180 | pagination: { 181 | el: '.swiper-pagination', 182 | type: 'bullets', 183 | clickable: true 184 | }, 185 | breakpoints: { 186 | 320: { 187 | slidesPerView: 2, 188 | spaceBetween: 20 189 | }, 190 | 480: { 191 | slidesPerView: 3, 192 | spaceBetween: 20 193 | }, 194 | 640: { 195 | slidesPerView: 4, 196 | spaceBetween: 20 197 | }, 198 | 992: { 199 | slidesPerView: 6, 200 | spaceBetween: 20 201 | } 202 | } 203 | }); 204 | 205 | /** 206 | * Porfolio isotope and filter 207 | */ 208 | window.addEventListener('load', () => { 209 | let portfolioContainer = select('.portfolio-container'); 210 | if (portfolioContainer) { 211 | let portfolioIsotope = new Isotope(portfolioContainer, { 212 | itemSelector: '.portfolio-item', 213 | layoutMode: 'fitRows' 214 | }); 215 | 216 | let portfolioFilters = select('#portfolio-flters li', true); 217 | 218 | on('click', '#portfolio-flters li', function(e) { 219 | e.preventDefault(); 220 | portfolioFilters.forEach(function(el) { 221 | el.classList.remove('filter-active'); 222 | }); 223 | this.classList.add('filter-active'); 224 | 225 | portfolioIsotope.arrange({ 226 | filter: this.getAttribute('data-filter') 227 | }); 228 | portfolioIsotope.on('arrangeComplete', function() { 229 | AOS.refresh() 230 | }); 231 | }, true); 232 | } 233 | 234 | }); 235 | 236 | /** 237 | * Initiate portfolio lightbox 238 | */ 239 | const portfolioLightbox = GLightbox({ 240 | selector: '.portfolio-lightbox' 241 | }); 242 | 243 | /** 244 | * Portfolio details slider 245 | */ 246 | new Swiper('.portfolio-details-slider', { 247 | speed: 400, 248 | loop: true, 249 | autoplay: { 250 | delay: 5000, 251 | disableOnInteraction: false 252 | }, 253 | pagination: { 254 | el: '.swiper-pagination', 255 | type: 'bullets', 256 | clickable: true 257 | } 258 | }); 259 | 260 | /** 261 | * Testimonials slider 262 | */ 263 | new Swiper('.testimonials-slider', { 264 | speed: 600, 265 | loop: true, 266 | autoplay: { 267 | delay: 5000, 268 | disableOnInteraction: false 269 | }, 270 | slidesPerView: 'auto', 271 | pagination: { 272 | el: '.swiper-pagination', 273 | type: 'bullets', 274 | clickable: true 275 | }, 276 | breakpoints: { 277 | 320: { 278 | slidesPerView: 1, 279 | spaceBetween: 20 280 | }, 281 | 282 | 1200: { 283 | slidesPerView: 3, 284 | spaceBetween: 20 285 | } 286 | } 287 | }); 288 | 289 | /** 290 | * Animation on scroll 291 | */ 292 | window.addEventListener('load', () => { 293 | AOS.init({ 294 | duration: 1000, 295 | easing: 'ease-in-out', 296 | once: true, 297 | mirror: false 298 | }) 299 | }); 300 | 301 | })() -------------------------------------------------------------------------------- /assets/scss/_footer.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | # Footer 3 | --------------------------------------------------------------*/ 4 | #footer { 5 | background: #f2f5f8; 6 | padding: 0 0 30px 0; 7 | font-size: 14px; 8 | 9 | .copyright { 10 | text-align: center; 11 | padding-top: 30px; 12 | } 13 | 14 | .credits { 15 | text-align: center; 16 | font-size: 13px; 17 | color: #555; 18 | a { 19 | color: $secondary; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /assets/scss/_general.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | # General 3 | --------------------------------------------------------------*/ 4 | body { 5 | background: #fff; 6 | color: $default; 7 | font-family: $font-default; 8 | } 9 | 10 | a { 11 | color: $primary; 12 | text-decoration: none; 13 | transition: 0.5s; 14 | } 15 | 16 | a:hover, a:active, a:focus { 17 | color: lighten($primary, 0.2%); 18 | outline: none; 19 | text-decoration: none; 20 | } 21 | 22 | p { 23 | padding: 0; 24 | margin: 0 0 30px 0; 25 | } 26 | 27 | h1, h2, h3, h4, h5, h6 { 28 | font-family: $font-secondary; 29 | font-weight: 400; 30 | margin: 0 0 20px 0; 31 | padding: 0; 32 | } 33 | 34 | /*-------------------------------------------------------------- 35 | # Back to top button 36 | --------------------------------------------------------------*/ 37 | .back-to-top { 38 | position: fixed; 39 | visibility: hidden; 40 | opacity: 0; 41 | right: 15px; 42 | bottom: 15px; 43 | z-index: 996; 44 | background: $primary; 45 | width: 40px; 46 | height: 40px; 47 | transition: all 0.4s; 48 | 49 | i { 50 | font-size: 28px; 51 | color: #fff; 52 | line-height: 0; 53 | } 54 | 55 | &:hover { 56 | background: lighten($primary, 8); 57 | color: #fff; 58 | } 59 | 60 | &.active { 61 | visibility: visible; 62 | opacity: 1; 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /assets/scss/_header.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | # Top Bar 3 | --------------------------------------------------------------*/ 4 | #topbar { 5 | background: #fff; 6 | border-bottom: 1px solid #eee; 7 | font-size: 14px; 8 | padding: 0; 9 | height: 40px; 10 | 11 | .contact-info { 12 | 13 | i { 14 | font-style: normal; 15 | color: $primary; 16 | 17 | a, span { 18 | padding-left: 5px; 19 | color: $default; 20 | } 21 | 22 | a { 23 | line-height: 0; 24 | transition: 0.3s; 25 | &:hover { 26 | color: $primary; 27 | } 28 | } 29 | 30 | } 31 | } 32 | 33 | .social-links { 34 | a { 35 | color: #555; 36 | padding: 0 15px; 37 | display: inline-block; 38 | line-height: 1px; 39 | border-left: 1px solid #e9e9e9; 40 | &:hover { 41 | color: $primary; 42 | } 43 | &:first-child { 44 | border-left: 0; 45 | } 46 | } 47 | } 48 | } 49 | 50 | /*-------------------------------------------------------------- 51 | # Header 52 | --------------------------------------------------------------*/ 53 | #header { 54 | height: 80px; 55 | transition: all 0.5s; 56 | z-index: 997; 57 | background: #fff; 58 | box-shadow: 0px 6px 9px 0px rgba(0,0,0,.06); 59 | 60 | #logo { 61 | 62 | h1 { 63 | font-size: 42px; 64 | margin: 0; 65 | padding: 0; 66 | font-family: $font-secondary; 67 | font-weight: 700; 68 | } 69 | 70 | h1 a { 71 | color: $secondary; 72 | span { 73 | color: $primary; 74 | } 75 | } 76 | 77 | img { 78 | padding: 0; 79 | margin: 0; 80 | } 81 | } 82 | 83 | @media (max-width: 768px) { 84 | height: 60px; 85 | #logo { 86 | h1 { 87 | font-size: 34px; 88 | } 89 | 90 | img { 91 | max-height: 40px; 92 | } 93 | } 94 | } 95 | } 96 | 97 | .scrolled-offset { 98 | margin-top: 70px; 99 | } 100 | -------------------------------------------------------------------------------- /assets/scss/_hero.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | # Hero Section 3 | --------------------------------------------------------------*/ 4 | #hero { 5 | width: 100%; 6 | height: 60vh; 7 | position: relative; 8 | background: url('../img/hero-carousel/1.jpg') no-repeat; 9 | background-size: cover; 10 | padding: 0; 11 | 12 | .hero-content { 13 | position: absolute; 14 | bottom: 0; 15 | top: 0; 16 | left: 0; 17 | right: 0; 18 | z-index: 10; 19 | display: flex; 20 | justify-content: center; 21 | align-items: center; 22 | flex-direction: column; 23 | text-align: center; 24 | 25 | h2 { 26 | color: $secondary; 27 | margin-bottom: 30px; 28 | font-size: 64px; 29 | font-weight: 700; 30 | 31 | span { 32 | color: $primary; 33 | text-decoration: underline; 34 | } 35 | 36 | @media (max-width: 767px) { 37 | font-size: 34px; 38 | } 39 | } 40 | 41 | .btn-get-started, .btn-projects { 42 | font-family: $font-primary; 43 | font-size: 15px; 44 | font-weight: bold; 45 | letter-spacing: 1px; 46 | display: inline-block; 47 | padding: 10px 32px; 48 | border-radius: 2px; 49 | transition: 0.5s; 50 | margin: 10px; 51 | color: #fff; 52 | } 53 | 54 | .btn-get-started { 55 | background: $secondary; 56 | border: 2px solid $secondary; 57 | &:hover { 58 | background: none; 59 | color: $secondary; 60 | } 61 | } 62 | 63 | .btn-projects { 64 | background: $primary; 65 | border: 2px solid $primary; 66 | &:hover { 67 | background: none; 68 | color: $primary; 69 | } 70 | } 71 | 72 | } 73 | 74 | .hero-slider { 75 | z-index: 8; 76 | height: 60vh; 77 | &::before { 78 | content: ''; 79 | background-color: rgba(255, 255, 255, 0.7); 80 | position: absolute; 81 | height: 100%; 82 | width: 100%; 83 | top: 0; 84 | right:0; 85 | left: 0; 86 | bottom: 0; 87 | z-index: 7; 88 | } 89 | 90 | .swiper-slide { 91 | background-size: cover; 92 | background-position: center; 93 | background-repeat: no-repeat; 94 | transition-property: opacity; 95 | } 96 | 97 | } 98 | 99 | } 100 | -------------------------------------------------------------------------------- /assets/scss/_nav.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | # Navigation Menu 3 | --------------------------------------------------------------*/ 4 | 5 | /** 6 | * Desktop Navigation 7 | */ 8 | .navbar { 9 | padding: 0; 10 | 11 | ul { 12 | margin: 0; 13 | padding: 0; 14 | display: flex; 15 | list-style: none; 16 | align-items: center; 17 | } 18 | 19 | li { 20 | position: relative; 21 | } 22 | 23 | a, a:focus { 24 | display: flex; 25 | align-items: center; 26 | justify-content: space-between; 27 | padding: 10px 0 10px 30px; 28 | font-family: $font-primary; 29 | font-size: 15px; 30 | font-weight: 600; 31 | color: $default; 32 | white-space: nowrap; 33 | transition: 0.3s; 34 | 35 | i { 36 | font-size: 12px; 37 | line-height: 0; 38 | margin-left: 5px; 39 | } 40 | } 41 | 42 | a:hover, .active, .active:focus, li:hover > a { 43 | color: $primary; 44 | } 45 | 46 | 47 | .dropdown { 48 | 49 | ul { 50 | display: block; 51 | position: absolute; 52 | left: 14px; 53 | top: calc(100% + 30px); 54 | margin: 0; 55 | padding: 10px 0; 56 | z-index: 99; 57 | opacity: 0; 58 | visibility: hidden; 59 | background: #fff; 60 | box-shadow: 0px 0px 30px rgba(127, 137, 161, 0.25); 61 | transition: 0.3s; 62 | 63 | li { 64 | min-width: 200px; 65 | } 66 | 67 | a { 68 | padding: 10px 20px; 69 | font-size: 14px; 70 | i { 71 | font-size: 12px; 72 | } 73 | } 74 | 75 | a:hover, .active:hover, li:hover > a { 76 | color: $primary; 77 | } 78 | 79 | } 80 | 81 | &:hover > ul { 82 | opacity: 1; 83 | top: 100%; 84 | visibility: visible; 85 | } 86 | 87 | } 88 | 89 | .dropdown .dropdown { 90 | 91 | ul { 92 | top: 0; 93 | left: calc(100% - 30px); 94 | visibility: hidden; 95 | } 96 | 97 | &:hover > ul { 98 | opacity: 1; 99 | top: 0; 100 | left: 100%; 101 | visibility: visible; 102 | } 103 | 104 | @media (max-width: 1366px) { 105 | ul { 106 | left: -90%; 107 | } 108 | 109 | &:hover > ul { 110 | left: -100%; 111 | } 112 | } 113 | } 114 | 115 | } 116 | 117 | /** 118 | * Mobile Navigation 119 | */ 120 | .mobile-nav-toggle { 121 | color: $secondary; 122 | font-size: 28px; 123 | cursor: pointer; 124 | display: none; 125 | line-height: 0; 126 | transition: 0.5s; 127 | &.bi-x { 128 | color: #fff; 129 | } 130 | } 131 | 132 | @media (max-width: 991px) { 133 | 134 | .mobile-nav-toggle { 135 | display: block; 136 | } 137 | 138 | .navbar ul { 139 | display: none; 140 | } 141 | 142 | } 143 | 144 | .navbar-mobile { 145 | position: fixed; 146 | overflow: hidden; 147 | top: 0; 148 | right: 0; 149 | left: 0; 150 | bottom: 0; 151 | background: rgba(darken($secondary, 10), 0.9); 152 | transition: 0.3s; 153 | z-index: 999; 154 | 155 | .mobile-nav-toggle { 156 | position: absolute; 157 | top: 15px; 158 | right: 15px; 159 | } 160 | 161 | ul { 162 | display: block; 163 | position: absolute; 164 | top: 55px; 165 | right: 15px; 166 | bottom: 15px; 167 | left: 15px; 168 | padding: 10px 0; 169 | background-color: #fff; 170 | overflow-y: auto; 171 | transition: 0.3s; 172 | } 173 | 174 | a, a:focus { 175 | padding: 10px 20px; 176 | font-size: 15px; 177 | color: $secondary; 178 | } 179 | 180 | a:hover, .active, li:hover > a { 181 | color: $primary; 182 | } 183 | 184 | .getstarted, .getstarted:focus { 185 | margin: 15px; 186 | } 187 | 188 | .dropdown { 189 | 190 | ul { 191 | position: static; 192 | display: none; 193 | margin: 10px 20px; 194 | padding: 10px 0; 195 | z-index: 99; 196 | opacity: 1; 197 | visibility: visible; 198 | background: #fff; 199 | box-shadow: 0px 0px 30px rgba(127, 137, 161, 0.25); 200 | 201 | li { 202 | min-width: 200px; 203 | } 204 | 205 | a { 206 | padding: 10px 20px; 207 | 208 | i { 209 | font-size: 12px; 210 | } 211 | } 212 | 213 | a:hover, .active:hover, li:hover > a { 214 | color: $primary; 215 | } 216 | 217 | } 218 | 219 | > .dropdown-active { 220 | display: block; 221 | } 222 | 223 | } 224 | 225 | } 226 | -------------------------------------------------------------------------------- /assets/scss/_sections.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | # Sections 3 | --------------------------------------------------------------*/ 4 | section { 5 | padding: 40px 0; 6 | overflow: hidden; 7 | } 8 | 9 | /* Sections Header 10 | --------------------------------*/ 11 | .section-header { 12 | margin-bottom: 30px; 13 | 14 | h2 { 15 | font-size: 32px; 16 | color: $secondary; 17 | text-transform: uppercase; 18 | font-weight: 700; 19 | position: relative; 20 | padding-bottom: 20px; 21 | 22 | &::before { 23 | content: ''; 24 | position: absolute; 25 | display: block; 26 | width: 50px; 27 | height: 3px; 28 | background: $primary; 29 | bottom: 0; 30 | left: 0; 31 | } 32 | } 33 | 34 | p { 35 | padding: 0; 36 | margin: 0; 37 | } 38 | 39 | } 40 | 41 | /*-------------------------------------------------------------- 42 | # Breadcrumbs 43 | --------------------------------------------------------------*/ 44 | .breadcrumbs { 45 | padding: 20px 0; 46 | background-color: #fafafa; 47 | min-height: 40px; 48 | 49 | h2 { 50 | font-size: 24px; 51 | font-weight: 300; 52 | margin: 0; 53 | @media (max-width: 992px) { 54 | margin: 0 0 10px 0; 55 | } 56 | } 57 | 58 | ol { 59 | display: flex; 60 | flex-wrap: wrap; 61 | list-style: none; 62 | padding: 0; 63 | margin: 0; 64 | font-size: 14px; 65 | 66 | li + li { 67 | padding-left: 10px; 68 | } 69 | 70 | li + li::before { 71 | display: inline-block; 72 | padding-right: 10px; 73 | color: #6c757d; 74 | content: "/"; 75 | } 76 | } 77 | 78 | @media (max-width: 768px) { 79 | .d-flex { 80 | display: block !important; 81 | 82 | } 83 | 84 | ol { 85 | display: block; 86 | li { 87 | display: inline-block; 88 | } 89 | 90 | } 91 | } 92 | } 93 | 94 | /* About Section 95 | --------------------------------*/ 96 | #about { 97 | padding: 60px 0 30px 0; 98 | 99 | .about-img { 100 | overflow: hidden; 101 | img { 102 | margin-left: -15px; 103 | max-width: 100%; 104 | } 105 | 106 | @media (max-width: 768px) { 107 | height: auto; 108 | img { 109 | margin-left: 0; 110 | padding-bottom: 30px; 111 | } 112 | } 113 | } 114 | 115 | .content { 116 | h2 { 117 | color: $secondary; 118 | font-weight: 700; 119 | font-size: 36px; 120 | font-family: $font-primary; 121 | } 122 | 123 | h3 { 124 | color: #555; 125 | font-weight: 300; 126 | font-size: 18px; 127 | line-height: 26px; 128 | font-style: italic; 129 | } 130 | 131 | p { 132 | line-height: 26px; 133 | &:last-child { 134 | margin-bottom: 0; 135 | } 136 | } 137 | 138 | i { 139 | font-size: 20px; 140 | padding-right: 4px; 141 | color: $primary; 142 | } 143 | 144 | ul { 145 | list-style: none; 146 | padding: 0; 147 | li { 148 | padding-bottom: 10px; 149 | } 150 | } 151 | } 152 | 153 | } 154 | 155 | 156 | /* Services Section 157 | --------------------------------*/ 158 | #services { 159 | padding: 40px 0; 160 | 161 | .box { 162 | padding: 40px; 163 | box-shadow: 10px 10px 15px rgba(73, 78, 92, 0.1); 164 | background: #fff; 165 | transition: 0.4s; 166 | height: 100%; 167 | 168 | &:hover { 169 | box-shadow: 0px 0px 30px rgba(73, 78, 92, 0.15); 170 | transform: translateY(-10px); 171 | -webkit-transform: translateY(-10px); 172 | -moz-transform: translateY(-10px); 173 | } 174 | 175 | .icon { 176 | float: left; 177 | i { 178 | color: $default; 179 | font-size: 64px; 180 | transition: 0.5s; 181 | line-height: 0; 182 | margin-top: 34px; 183 | &:before { 184 | background: $secondary; 185 | background: linear-gradient(45deg, $primary 0%, lighten($primary, 20%) 100%); 186 | background-clip: border-box; 187 | -webkit-background-clip: text; 188 | -webkit-text-fill-color: transparent; 189 | } 190 | } 191 | } 192 | 193 | h4 { 194 | margin-left: 100px; 195 | font-weight: 700; 196 | margin-bottom: 15px; 197 | font-size: 22px; 198 | a { 199 | color:#444; 200 | } 201 | 202 | } 203 | 204 | p { 205 | font-size: 14px; 206 | margin-left: 100px; 207 | margin-bottom: 0; 208 | line-height: 24px; 209 | } 210 | 211 | @media (max-width: 767px) { 212 | .box { 213 | margin-bottom: 20px; 214 | } 215 | .icon { 216 | float: none; 217 | text-align: center; 218 | padding-bottom: 15px; 219 | } 220 | 221 | h4, p { 222 | margin-left: 0; 223 | text-align: center; 224 | } 225 | } 226 | } 227 | } 228 | 229 | /* Clients Section 230 | --------------------------------*/ 231 | #clients { 232 | padding: 30px 0; 233 | 234 | img { 235 | max-width: 100%; 236 | opacity: 0.5; 237 | transition: 0.3s; 238 | padding: 15px 0; 239 | &:hover { 240 | opacity: 1; 241 | } 242 | } 243 | 244 | .swiper-pagination { 245 | margin-top: 20px; 246 | position: relative; 247 | 248 | .swiper-pagination-bullet { 249 | width: 12px; 250 | height: 12px; 251 | background-color: #fff; 252 | opacity: 1; 253 | border: 1px solid $primary; 254 | } 255 | 256 | .swiper-pagination-bullet-active { 257 | background-color: $primary; 258 | } 259 | } 260 | } 261 | 262 | /* Our Portfolio Section 263 | --------------------------------*/ 264 | #portfolio { 265 | background: #fff; 266 | padding: 30px 0; 267 | 268 | #portfolio-flters { 269 | padding:0; 270 | margin:0 auto 25px auto; 271 | list-style:none; 272 | text-align:center; 273 | border-radius: 50px; 274 | 275 | li { 276 | cursor: pointer; 277 | display: inline-block; 278 | padding: 10px 18px 12px 18px; 279 | font-size: 14px; 280 | font-weight: 500; 281 | line-height: 1; 282 | color: $default; 283 | margin: 0 3px 10px 3px; 284 | transition: all ease-in-out 0.3s; 285 | background: lighten($default, 70); 286 | border-radius: 4px; 287 | 288 | &:hover, &.filter-active { 289 | color: #fff; 290 | background: $primary; 291 | } 292 | 293 | &:last-child { 294 | margin-right: 0; 295 | } 296 | } 297 | } 298 | 299 | .portfolio-item { 300 | margin-bottom: 30px; 301 | overflow: hidden; 302 | 303 | img { 304 | position: relative; 305 | top:0; 306 | transition: all 0.6s cubic-bezier(0.645, 0.045, 0.355, 1); 307 | } 308 | 309 | .portfolio-info { 310 | opacity: 0; 311 | position: absolute; 312 | left: 12px; 313 | right: 12px; 314 | bottom: -50px; 315 | z-index: 3; 316 | transition: all ease-in-out 0.3s; 317 | background: $primary; 318 | padding: 15px 20px; 319 | 320 | h4 { 321 | font-size: 18px; 322 | color: #fff; 323 | font-weight: 600; 324 | } 325 | 326 | p { 327 | color: #fff; 328 | font-size: 14px; 329 | margin-bottom: 0; 330 | } 331 | 332 | .preview-link, .details-link { 333 | position: absolute; 334 | right: 50px; 335 | font-size: 24px; 336 | top: calc(50% - 18px); 337 | color: rgba(#fff, .6); 338 | transition: ease-in-out 0.3s; 339 | &:hover { 340 | color: #fff; 341 | } 342 | } 343 | 344 | .details-link { 345 | right: 15px; 346 | } 347 | 348 | } 349 | 350 | &:hover { 351 | img { 352 | top:-30px; 353 | } 354 | .portfolio-info { 355 | opacity: 1; 356 | bottom: 0; 357 | } 358 | } 359 | } 360 | 361 | } 362 | /*-------------------------------------------------------------- 363 | # Portfolio Details 364 | --------------------------------------------------------------*/ 365 | .portfolio-details { 366 | 367 | padding-top: 40px; 368 | 369 | .portfolio-details-slider { 370 | img { 371 | width: 100%; 372 | } 373 | .swiper-pagination { 374 | margin-top: 20px; 375 | position: relative; 376 | 377 | .swiper-pagination-bullet { 378 | width: 12px; 379 | height: 12px; 380 | background-color: #fff; 381 | opacity: 1; 382 | border: 1px solid $primary; 383 | } 384 | 385 | .swiper-pagination-bullet-active { 386 | background-color: $primary; 387 | } 388 | } 389 | 390 | } 391 | 392 | .portfolio-info { 393 | padding: 30px; 394 | box-shadow: 0px 0 30px rgba($secondary, 0.08); 395 | 396 | h3 { 397 | font-size: 22px; 398 | font-weight: 700; 399 | margin-bottom: 20px; 400 | padding-bottom: 20px; 401 | border-bottom: 1px solid #eee; 402 | } 403 | 404 | ul { 405 | list-style: none; 406 | padding: 0; 407 | font-size: 15px; 408 | 409 | li +li { 410 | margin-top: 10px; 411 | } 412 | } 413 | 414 | } 415 | 416 | .portfolio-description { 417 | padding-top: 30px; 418 | 419 | h2 { 420 | font-size: 26px; 421 | font-weight: 700; 422 | margin-bottom: 20px; 423 | } 424 | 425 | p { 426 | padding: 0; 427 | } 428 | } 429 | 430 | } 431 | 432 | /* Testimonials Section 433 | --------------------------------*/ 434 | #testimonials { 435 | padding: 30px 0; 436 | 437 | 438 | .testimonials-carousel, .testimonials-slider { 439 | overflow: hidden; 440 | } 441 | 442 | .testimonial-item { 443 | box-sizing: content-box; 444 | padding: 30px 30px 0 30px; 445 | margin: 30px 15px; 446 | text-align: center; 447 | min-height: 350px; 448 | box-shadow: 0px 2px 12px rgba(0,0,0,.08); 449 | 450 | @media (max-width: 767px ) { 451 | margin: 30px 10px; 452 | } 453 | 454 | .testimonial-img { 455 | width: 90px; 456 | border-radius: 50%; 457 | border: 4px solid #fff; 458 | margin: 0 auto; 459 | } 460 | 461 | h3 { 462 | font-size: 18px; 463 | font-weight: bold; 464 | margin: 10px 0 5px 0; 465 | color: #111; 466 | } 467 | 468 | h4 { 469 | font-size: 14px; 470 | color: #999; 471 | margin:0; 472 | } 473 | 474 | .quote-sign-left { 475 | margin-top: -15px; 476 | padding-right: 10px; 477 | display: inline-block; 478 | width: 37px; 479 | } 480 | 481 | .quote-sign-right { 482 | margin-bottom: -15px; 483 | padding-left: 10px; 484 | display: inline-block; 485 | max-width: 100%; 486 | width: 37px; 487 | } 488 | 489 | p { 490 | font-style: italic; 491 | margin: 0 auto 15px auto; 492 | } 493 | 494 | } 495 | 496 | .swiper-pagination { 497 | margin-top: 20px; 498 | position: relative; 499 | 500 | .swiper-pagination-bullet { 501 | width: 12px; 502 | height: 12px; 503 | background-color: #fff; 504 | opacity: 1; 505 | border: 1px solid $primary; 506 | } 507 | 508 | .swiper-pagination-bullet-active { 509 | background-color: $primary; 510 | } 511 | } 512 | } 513 | 514 | /* Call To Action Section 515 | --------------------------------*/ 516 | #call-to-action { 517 | background: darken($secondary, 10%); 518 | background-size: cover; 519 | padding: 40px 0; 520 | 521 | .cta-title { 522 | color: #fff; 523 | font-size: 28px; 524 | font-weight: 700; 525 | } 526 | 527 | .cta-text { 528 | color: #fff; 529 | } 530 | 531 | .cta-btn-container { 532 | @media (min-width: 769px) { 533 | display: flex; 534 | align-items: center; 535 | justify-content: flex-end; 536 | } 537 | } 538 | 539 | .cta-btn { 540 | font-family: $font-secondary; 541 | font-weight: 700; 542 | font-size: 16px; 543 | letter-spacing: 1px; 544 | display: inline-block; 545 | padding: 8px 26px; 546 | border-radius: 3px; 547 | transition: 0.5s; 548 | margin: 10px; 549 | border: 3px solid #fff; 550 | color: #fff; 551 | &:hover { 552 | background: $primary; 553 | border: 3px solid $primary; 554 | } 555 | } 556 | } 557 | 558 | /* Our Team Section 559 | --------------------------------*/ 560 | #team { 561 | background: #fff; 562 | padding: 30px 0 0 0; 563 | 564 | .member { 565 | text-align: center; 566 | margin-bottom: 20px; 567 | 568 | .pic { 569 | overflow: hidden; 570 | text-align: center; 571 | 572 | img { 573 | max-width: 100%; 574 | } 575 | 576 | } 577 | 578 | .details { 579 | background: $primary; 580 | color: #fff; 581 | padding: 15px; 582 | border-radius: 0 0 3px 3px; 583 | } 584 | 585 | h4 { 586 | font-weight: 700; 587 | margin-bottom: 2px; 588 | font-size: 18px; 589 | } 590 | 591 | span { 592 | font-style: italic; 593 | display: block; 594 | font-size: 13px; 595 | } 596 | 597 | .social { 598 | margin-top: 5px; 599 | a { 600 | color: #fff; 601 | 602 | } 603 | 604 | i { 605 | font-size: 16px; 606 | margin: 0 2px; 607 | } 608 | } 609 | } 610 | } 611 | 612 | /* Contact Section 613 | --------------------------------*/ 614 | #contact { 615 | padding: 30px 0; 616 | 617 | .contact-info { 618 | margin-bottom: 20px; 619 | text-align: center; 620 | i { 621 | font-size: 48px; 622 | display: inline-block; 623 | margin-bottom: 10px; 624 | color: $primary; 625 | } 626 | 627 | address, p { 628 | margin-bottom: 0; 629 | color: #000; 630 | } 631 | 632 | h3 { 633 | font-size: 18px; 634 | margin-bottom: 15px; 635 | font-weight: bold; 636 | text-transform: uppercase; 637 | color: #999; 638 | } 639 | 640 | a { 641 | color: #000; 642 | &:hover { 643 | color: $primary; 644 | } 645 | } 646 | } 647 | 648 | .contact-address, .contact-phone, .contact-email { 649 | margin-bottom: 20px; 650 | @media (min-width: 768px) { 651 | padding: 20px 0; 652 | } 653 | } 654 | 655 | @media (min-width: 768px) { 656 | .contact-phone { 657 | border-left: 1px solid #ddd; 658 | border-right: 1px solid #ddd; 659 | } 660 | } 661 | 662 | #google-map { 663 | height: 290px; 664 | margin-bottom: 20px; 665 | @media (max-width: 576px ) { 666 | margin-top: 20px; 667 | } 668 | } 669 | 670 | .php-email-form { 671 | 672 | .validate { 673 | display: none; 674 | color: red; 675 | margin: 0 0 15px 0; 676 | font-weight: 400; 677 | font-size: 13px; 678 | } 679 | 680 | .error-message { 681 | display: none; 682 | color: #fff; 683 | background: #ed3c0d; 684 | text-align: left; 685 | padding: 15px; 686 | font-weight: 600; 687 | & br + br { 688 | margin-top: 25px; 689 | } 690 | } 691 | 692 | .sent-message { 693 | display: none; 694 | color: #fff; 695 | background: #18d26e; 696 | text-align: center; 697 | padding: 15px; 698 | font-weight: 600; 699 | } 700 | 701 | .loading { 702 | display: none; 703 | background: #fff; 704 | text-align: center; 705 | padding: 15px; 706 | 707 | &:before { 708 | content: ""; 709 | display: inline-block; 710 | border-radius: 50%; 711 | width: 24px; 712 | height: 24px; 713 | margin: 0 10px -6px 0; 714 | border: 3px solid #18d26e; 715 | border-top-color: #eee; 716 | animation: animate-loading 1s linear infinite; 717 | } 718 | 719 | } 720 | 721 | input, textarea { 722 | padding: 10px 14px; 723 | border-radius: 0; 724 | box-shadow: none; 725 | font-size: 15px; 726 | &::focus { 727 | background-color: $primary; 728 | } 729 | } 730 | 731 | button[type="submit"] { 732 | background: $primary; 733 | border: 0; 734 | border-radius: 3px; 735 | padding: 10px 30px; 736 | color: #fff; 737 | transition: 0.4s; 738 | cursor: pointer; 739 | &:hover { 740 | background: darken($primary, 10%); 741 | } 742 | } 743 | 744 | } 745 | 746 | @keyframes animate-loading { 747 | 0% { transform: rotate(0deg); } 748 | 100% { transform: rotate(360deg); } 749 | } 750 | } 751 | -------------------------------------------------------------------------------- /assets/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | /// Default color variables 2 | 3 | $primary: #50d8af; 4 | $secondary: #0c2e8a; 5 | $default: #444; 6 | 7 | /// Fonts Variables 8 | $font-primary: 'Raleway', sans-serif; 9 | $font-secondary: 'Montserrat', sans-serif; 10 | $font-default: 'Open Sans', sans-serif; 11 | -------------------------------------------------------------------------------- /assets/scss/style.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | @import 'general'; 4 | @import 'header'; 5 | @import 'nav'; 6 | @import 'hero'; 7 | @import 'sections'; 8 | @import 'footer'; 9 | -------------------------------------------------------------------------------- /assets/vendor/aos/aos.esm.js: -------------------------------------------------------------------------------- 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 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; 611 | -------------------------------------------------------------------------------- /assets/vendor/aos/aos.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.AOS=t()}(this,function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t="Expected a function",n=NaN,o="[object Symbol]",i=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,c=/^0o[0-7]+$/i,s=parseInt,u="object"==typeof e&&e&&e.Object===Object&&e,d="object"==typeof self&&self&&self.Object===Object&&self,l=u||d||Function("return this")(),f=Object.prototype.toString,m=Math.max,p=Math.min,b=function(){return l.Date.now()};function v(e,n,o){var i,a,r,c,s,u,d=0,l=!1,f=!1,v=!0;if("function"!=typeof e)throw new TypeError(t);function y(t){var n=i,o=a;return i=a=void 0,d=t,c=e.apply(o,n)}function h(e){var t=e-u;return void 0===u||t>=n||t<0||f&&e-d>=r}function k(){var e=b();if(h(e))return x(e);s=setTimeout(k,function(e){var t=n-(e-u);return f?p(t,r-(e-d)):t}(e))}function x(e){return s=void 0,v&&i?y(e):(i=a=void 0,c)}function O(){var e=b(),t=h(e);if(i=arguments,a=this,u=e,t){if(void 0===s)return function(e){return d=e,s=setTimeout(k,n),l?y(e):c}(u);if(f)return s=setTimeout(k,n),y(u)}return void 0===s&&(s=setTimeout(k,n)),c}return n=w(n)||0,g(o)&&(l=!!o.leading,r=(f="maxWait"in o)?m(w(o.maxWait)||0,n):r,v="trailing"in o?!!o.trailing:v),O.cancel=function(){void 0!==s&&clearTimeout(s),d=0,i=u=a=s=void 0},O.flush=function(){return void 0===s?c:x(b())},O}function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function w(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==o}(e))return n;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var u=r.test(e);return u||c.test(e)?s(e.slice(2),u?2:8):a.test(e)?n:+e}var y=function(e,n,o){var i=!0,a=!0;if("function"!=typeof e)throw new TypeError(t);return g(o)&&(i="leading"in o?!!o.leading:i,a="trailing"in o?!!o.trailing:a),v(e,n,{leading:i,maxWait:n,trailing:a})},h="Expected a function",k=NaN,x="[object Symbol]",O=/^\s+|\s+$/g,j=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,N=/^0o[0-7]+$/i,z=parseInt,C="object"==typeof e&&e&&e.Object===Object&&e,A="object"==typeof self&&self&&self.Object===Object&&self,q=C||A||Function("return this")(),L=Object.prototype.toString,T=Math.max,M=Math.min,S=function(){return q.Date.now()};function D(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function H(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&L.call(e)==x}(e))return k;if(D(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=D(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(O,"");var n=E.test(e);return n||N.test(e)?z(e.slice(2),n?2:8):j.test(e)?k:+e}var $=function(e,t,n){var o,i,a,r,c,s,u=0,d=!1,l=!1,f=!0;if("function"!=typeof e)throw new TypeError(h);function m(t){var n=o,a=i;return o=i=void 0,u=t,r=e.apply(a,n)}function p(e){var n=e-s;return void 0===s||n>=t||n<0||l&&e-u>=a}function b(){var e=S();if(p(e))return v(e);c=setTimeout(b,function(e){var n=t-(e-s);return l?M(n,a-(e-u)):n}(e))}function v(e){return c=void 0,f&&o?m(e):(o=i=void 0,r)}function g(){var e=S(),n=p(e);if(o=arguments,i=this,s=e,n){if(void 0===c)return function(e){return u=e,c=setTimeout(b,t),d?m(e):r}(s);if(l)return c=setTimeout(b,t),m(s)}return void 0===c&&(c=setTimeout(b,t)),r}return t=H(t)||0,D(n)&&(d=!!n.leading,a=(l="maxWait"in n)?T(H(n.maxWait)||0,t):a,f="trailing"in n?!!n.trailing:f),g.cancel=function(){void 0!==c&&clearTimeout(c),u=0,o=s=i=c=void 0},g.flush=function(){return void 0===c?r:v(S())},g},W=function(){};function P(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes);if(function e(t){var n=void 0,o=void 0;for(n=0;n=o.out&&!n.once?a():t>=o.in?e.animated||(function(e,t){t&&t.forEach(function(t){return e.classList.add(t)})}(i,n.animatedClassNames),V("aos:in",i),e.options.id&&V("aos:in:"+e.options.id,i),e.animated=!0):e.animated&&!n.once&&a()}(e,window.pageYOffset)})},Z=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}},ee=function(e,t,n){var o=e.getAttribute("data-aos-"+t);if(void 0!==o){if("true"===o)return!0;if("false"===o)return!1}return o||n},te=function(e,t){return e.forEach(function(e,n){var o=ee(e.node,"mirror",t.mirror),i=ee(e.node,"once",t.once),a=ee(e.node,"id"),r=t.useClassNames&&e.node.getAttribute("data-aos"),c=[t.animatedClassName].concat(r?r.split(" "):[]).filter(function(e){return"string"==typeof e});t.initClassName&&e.node.classList.add(t.initClassName),e.position={in:function(e,t,n){var o=window.innerHeight,i=ee(e,"anchor"),a=ee(e,"anchor-placement"),r=Number(ee(e,"offset",a?0:t)),c=a||n,s=e;i&&document.querySelectorAll(i)&&(s=document.querySelectorAll(i)[0]);var u=Z(s).top-o;switch(c){case"top-bottom":break;case"center-bottom":u+=s.offsetHeight/2;break;case"bottom-bottom":u+=s.offsetHeight;break;case"top-center":u+=o/2;break;case"center-center":u+=o/2+s.offsetHeight/2;break;case"bottom-center":u+=o/2+s.offsetHeight;break;case"top-top":u+=o;break;case"bottom-top":u+=o+s.offsetHeight;break;case"center-top":u+=o+s.offsetHeight/2}return u+r}(e.node,t.offset,t.anchorPlacement),out:o&&function(e,t){window.innerHeight;var n=ee(e,"anchor"),o=ee(e,"offset",t),i=e;return n&&document.querySelectorAll(n)&&(i=document.querySelectorAll(n)[0]),Z(i).top+i.offsetHeight-o}(e.node,t.offset)},e.options={once:i,mirror:o,animatedClassNames:c,id:a}}),e},ne=function(){var e=document.querySelectorAll("[data-aos]");return Array.prototype.map.call(e,function(e){return{node:e}})},oe=[],ie=!1,ae={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,mirror:!1,anchorPlacement:"top-bottom",startEvent:"DOMContentLoaded",animatedClassName:"aos-animate",initClassName:"aos-init",useClassNames:!1,disableMutationObserver:!1,throttleDelay:99,debounceDelay:50},re=function(){return document.all&&!window.atob},ce=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(ie=!0),ie&&(oe=te(oe,ae),X(oe),window.addEventListener("scroll",y(function(){X(oe,ae.once)},ae.throttleDelay)))},se=function(){if(oe=ne(),de(ae.disable)||re())return ue();ce()},ue=function(){oe.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay"),ae.initClassName&&e.node.classList.remove(ae.initClassName),ae.animatedClassName&&e.node.classList.remove(ae.animatedClassName)})},de=function(e){return!0===e||"mobile"===e&&U.mobile()||"phone"===e&&U.phone()||"tablet"===e&&U.tablet()||"function"==typeof e&&!0===e()};return{init:function(e){return ae=I(ae,e),oe=ne(),ae.disableMutationObserver||_.isSupported()||(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 '),ae.disableMutationObserver=!0),ae.disableMutationObserver||_.ready("[data-aos]",se),de(ae.disable)||re()?ue():(document.querySelector("body").setAttribute("data-aos-easing",ae.easing),document.querySelector("body").setAttribute("data-aos-duration",ae.duration),document.querySelector("body").setAttribute("data-aos-delay",ae.delay),-1===["DOMContentLoaded","load"].indexOf(ae.startEvent)?document.addEventListener(ae.startEvent,function(){ce(!0)}):window.addEventListener("load",function(){ce(!0)}),"DOMContentLoaded"===ae.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1&&ce(!0),window.addEventListener("resize",$(ce,ae.debounceDelay,!0)),window.addEventListener("orientationchange",$(ce,ae.debounceDelay,!0)),oe)},refresh:ce,refreshHard:se}}); 2 | -------------------------------------------------------------------------------- /assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /assets/vendor/bootstrap/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 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 */ -------------------------------------------------------------------------------- /assets/vendor/bootstrap/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 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 | */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--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";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} 6 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css: -------------------------------------------------------------------------------- 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 */ -------------------------------------------------------------------------------- /assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css: -------------------------------------------------------------------------------- 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 | */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--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";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} 6 | /*# sourceMappingURL=bootstrap-reboot.rtl.min.css.map */ -------------------------------------------------------------------------------- /assets/vendor/boxicons/css/animations.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes spin 2 | { 3 | 0% 4 | { 5 | -webkit-transform: rotate(0); 6 | transform: rotate(0); 7 | } 8 | 100% 9 | { 10 | -webkit-transform: rotate(359deg); 11 | transform: rotate(359deg); 12 | } 13 | } 14 | @keyframes spin 15 | { 16 | 0% 17 | { 18 | -webkit-transform: rotate(0); 19 | transform: rotate(0); 20 | } 21 | 100% 22 | { 23 | -webkit-transform: rotate(359deg); 24 | transform: rotate(359deg); 25 | } 26 | } 27 | @-webkit-keyframes burst 28 | { 29 | 0% 30 | { 31 | -webkit-transform: scale(1); 32 | transform: scale(1); 33 | 34 | opacity: 1; 35 | } 36 | 90% 37 | { 38 | -webkit-transform: scale(1.5); 39 | transform: scale(1.5); 40 | 41 | opacity: 0; 42 | } 43 | } 44 | @keyframes burst 45 | { 46 | 0% 47 | { 48 | -webkit-transform: scale(1); 49 | transform: scale(1); 50 | 51 | opacity: 1; 52 | } 53 | 90% 54 | { 55 | -webkit-transform: scale(1.5); 56 | transform: scale(1.5); 57 | 58 | opacity: 0; 59 | } 60 | } 61 | @-webkit-keyframes flashing 62 | { 63 | 0% 64 | { 65 | opacity: 1; 66 | } 67 | 45% 68 | { 69 | opacity: 0; 70 | } 71 | 90% 72 | { 73 | opacity: 1; 74 | } 75 | } 76 | @keyframes flashing 77 | { 78 | 0% 79 | { 80 | opacity: 1; 81 | } 82 | 45% 83 | { 84 | opacity: 0; 85 | } 86 | 90% 87 | { 88 | opacity: 1; 89 | } 90 | } 91 | @-webkit-keyframes fade-left 92 | { 93 | 0% 94 | { 95 | -webkit-transform: translateX(0); 96 | transform: translateX(0); 97 | 98 | opacity: 1; 99 | } 100 | 75% 101 | { 102 | -webkit-transform: translateX(-20px); 103 | transform: translateX(-20px); 104 | 105 | opacity: 0; 106 | } 107 | } 108 | @keyframes fade-left 109 | { 110 | 0% 111 | { 112 | -webkit-transform: translateX(0); 113 | transform: translateX(0); 114 | 115 | opacity: 1; 116 | } 117 | 75% 118 | { 119 | -webkit-transform: translateX(-20px); 120 | transform: translateX(-20px); 121 | 122 | opacity: 0; 123 | } 124 | } 125 | @-webkit-keyframes fade-right 126 | { 127 | 0% 128 | { 129 | -webkit-transform: translateX(0); 130 | transform: translateX(0); 131 | 132 | opacity: 1; 133 | } 134 | 75% 135 | { 136 | -webkit-transform: translateX(20px); 137 | transform: translateX(20px); 138 | 139 | opacity: 0; 140 | } 141 | } 142 | @keyframes fade-right 143 | { 144 | 0% 145 | { 146 | -webkit-transform: translateX(0); 147 | transform: translateX(0); 148 | 149 | opacity: 1; 150 | } 151 | 75% 152 | { 153 | -webkit-transform: translateX(20px); 154 | transform: translateX(20px); 155 | 156 | opacity: 0; 157 | } 158 | } 159 | @-webkit-keyframes fade-up 160 | { 161 | 0% 162 | { 163 | -webkit-transform: translateY(0); 164 | transform: translateY(0); 165 | 166 | opacity: 1; 167 | } 168 | 75% 169 | { 170 | -webkit-transform: translateY(-20px); 171 | transform: translateY(-20px); 172 | 173 | opacity: 0; 174 | } 175 | } 176 | @keyframes fade-up 177 | { 178 | 0% 179 | { 180 | -webkit-transform: translateY(0); 181 | transform: translateY(0); 182 | 183 | opacity: 1; 184 | } 185 | 75% 186 | { 187 | -webkit-transform: translateY(-20px); 188 | transform: translateY(-20px); 189 | 190 | opacity: 0; 191 | } 192 | } 193 | @-webkit-keyframes fade-down 194 | { 195 | 0% 196 | { 197 | -webkit-transform: translateY(0); 198 | transform: translateY(0); 199 | 200 | opacity: 1; 201 | } 202 | 75% 203 | { 204 | -webkit-transform: translateY(20px); 205 | transform: translateY(20px); 206 | 207 | opacity: 0; 208 | } 209 | } 210 | @keyframes fade-down 211 | { 212 | 0% 213 | { 214 | -webkit-transform: translateY(0); 215 | transform: translateY(0); 216 | 217 | opacity: 1; 218 | } 219 | 75% 220 | { 221 | -webkit-transform: translateY(20px); 222 | transform: translateY(20px); 223 | 224 | opacity: 0; 225 | } 226 | } 227 | @-webkit-keyframes tada 228 | { 229 | from 230 | { 231 | -webkit-transform: scale3d(1, 1, 1); 232 | transform: scale3d(1, 1, 1); 233 | } 234 | 235 | 10%, 236 | 20% 237 | { 238 | -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 239 | transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 240 | } 241 | 242 | 30%, 243 | 50%, 244 | 70%, 245 | 90% 246 | { 247 | -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 248 | transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 249 | } 250 | 251 | 40%, 252 | 60%, 253 | 80% 254 | { 255 | -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); 256 | transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); 257 | } 258 | 259 | to 260 | { 261 | -webkit-transform: scale3d(1, 1, 1); 262 | transform: scale3d(1, 1, 1); 263 | } 264 | } 265 | 266 | @keyframes tada 267 | { 268 | from 269 | { 270 | -webkit-transform: scale3d(1, 1, 1); 271 | transform: scale3d(1, 1, 1); 272 | } 273 | 274 | 10%, 275 | 20% 276 | { 277 | -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 278 | transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 279 | } 280 | 281 | 30%, 282 | 50%, 283 | 70%, 284 | 90% 285 | { 286 | -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 287 | transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 288 | } 289 | 290 | 40%, 291 | 60%, 292 | 80% 293 | { 294 | -webkit-transform: rotate3d(0, 0, 1, -10deg); 295 | transform: rotate3d(0, 0, 1, -10deg); 296 | } 297 | 298 | to 299 | { 300 | -webkit-transform: scale3d(1, 1, 1); 301 | transform: scale3d(1, 1, 1); 302 | } 303 | } 304 | .bx-spin 305 | { 306 | -webkit-animation: spin 2s linear infinite; 307 | animation: spin 2s linear infinite; 308 | } 309 | .bx-spin-hover:hover 310 | { 311 | -webkit-animation: spin 2s linear infinite; 312 | animation: spin 2s linear infinite; 313 | } 314 | 315 | .bx-tada 316 | { 317 | -webkit-animation: tada 1.5s ease infinite; 318 | animation: tada 1.5s ease infinite; 319 | } 320 | .bx-tada-hover:hover 321 | { 322 | -webkit-animation: tada 1.5s ease infinite; 323 | animation: tada 1.5s ease infinite; 324 | } 325 | 326 | .bx-flashing 327 | { 328 | -webkit-animation: flashing 1.5s infinite linear; 329 | animation: flashing 1.5s infinite linear; 330 | } 331 | .bx-flashing-hover:hover 332 | { 333 | -webkit-animation: flashing 1.5s infinite linear; 334 | animation: flashing 1.5s infinite linear; 335 | } 336 | 337 | .bx-burst 338 | { 339 | -webkit-animation: burst 1.5s infinite linear; 340 | animation: burst 1.5s infinite linear; 341 | } 342 | .bx-burst-hover:hover 343 | { 344 | -webkit-animation: burst 1.5s infinite linear; 345 | animation: burst 1.5s infinite linear; 346 | } 347 | .bx-fade-up 348 | { 349 | -webkit-animation: fade-up 1.5s infinite linear; 350 | animation: fade-up 1.5s infinite linear; 351 | } 352 | .bx-fade-up-hover:hover 353 | { 354 | -webkit-animation: fade-up 1.5s infinite linear; 355 | animation: fade-up 1.5s infinite linear; 356 | } 357 | .bx-fade-down 358 | { 359 | -webkit-animation: fade-down 1.5s infinite linear; 360 | animation: fade-down 1.5s infinite linear; 361 | } 362 | .bx-fade-down-hover:hover 363 | { 364 | -webkit-animation: fade-down 1.5s infinite linear; 365 | animation: fade-down 1.5s infinite linear; 366 | } 367 | .bx-fade-left 368 | { 369 | -webkit-animation: fade-left 1.5s infinite linear; 370 | animation: fade-left 1.5s infinite linear; 371 | } 372 | .bx-fade-left-hover:hover 373 | { 374 | -webkit-animation: fade-left 1.5s infinite linear; 375 | animation: fade-left 1.5s infinite linear; 376 | } 377 | .bx-fade-right 378 | { 379 | -webkit-animation: fade-right 1.5s infinite linear; 380 | animation: fade-right 1.5s infinite linear; 381 | } 382 | .bx-fade-right-hover:hover 383 | { 384 | -webkit-animation: fade-right 1.5s infinite linear; 385 | animation: fade-right 1.5s infinite linear; 386 | } -------------------------------------------------------------------------------- /assets/vendor/boxicons/css/transformations.css: -------------------------------------------------------------------------------- 1 | .bx-rotate-90 2 | { 3 | transform: rotate(90deg); 4 | 5 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; 6 | } 7 | .bx-rotate-180 8 | { 9 | transform: rotate(180deg); 10 | 11 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)'; 12 | } 13 | .bx-rotate-270 14 | { 15 | transform: rotate(270deg); 16 | 17 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'; 18 | } 19 | .bx-flip-horizontal 20 | { 21 | transform: scaleX(-1); 22 | 23 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)'; 24 | } 25 | .bx-flip-vertical 26 | { 27 | transform: scaleY(-1); 28 | 29 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)'; 30 | } 31 | -------------------------------------------------------------------------------- /assets/vendor/boxicons/fonts/boxicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/vendor/boxicons/fonts/boxicons.eot -------------------------------------------------------------------------------- /assets/vendor/boxicons/fonts/boxicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/vendor/boxicons/fonts/boxicons.ttf -------------------------------------------------------------------------------- /assets/vendor/boxicons/fonts/boxicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/vendor/boxicons/fonts/boxicons.woff -------------------------------------------------------------------------------- /assets/vendor/boxicons/fonts/boxicons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuml/timer/3e7f08861b237252e70ac57e6395a04944fbf017/assets/vendor/boxicons/fonts/boxicons.woff2 -------------------------------------------------------------------------------- /assets/vendor/glightbox/css/glightbox.css: -------------------------------------------------------------------------------- 1 | .glightbox-container { 2 | width: 100%; 3 | height: 100%; 4 | position: fixed; 5 | top: 0; 6 | left: 0; 7 | z-index: 999999 !important; 8 | overflow: hidden; 9 | -ms-touch-action: none; 10 | touch-action: none; 11 | -webkit-text-size-adjust: 100%; 12 | -moz-text-size-adjust: 100%; 13 | -ms-text-size-adjust: 100%; 14 | text-size-adjust: 100%; 15 | -webkit-backface-visibility: hidden; 16 | backface-visibility: hidden; 17 | outline: none; 18 | } 19 | 20 | .glightbox-container.inactive { 21 | display: none; 22 | } 23 | 24 | .glightbox-container .gcontainer { 25 | position: relative; 26 | width: 100%; 27 | height: 100%; 28 | z-index: 9999; 29 | overflow: hidden; 30 | } 31 | 32 | .glightbox-container .gslider { 33 | -webkit-transition: -webkit-transform 0.4s ease; 34 | transition: -webkit-transform 0.4s ease; 35 | transition: transform 0.4s ease; 36 | transition: transform 0.4s ease, -webkit-transform 0.4s ease; 37 | height: 100%; 38 | left: 0; 39 | top: 0; 40 | width: 100%; 41 | position: relative; 42 | overflow: hidden; 43 | display: -webkit-box !important; 44 | display: -ms-flexbox !important; 45 | display: flex !important; 46 | -webkit-box-pack: center; 47 | -ms-flex-pack: center; 48 | justify-content: center; 49 | -webkit-box-align: center; 50 | -ms-flex-align: center; 51 | align-items: center; 52 | -webkit-transform: translate3d(0, 0, 0); 53 | transform: translate3d(0, 0, 0); 54 | } 55 | 56 | .glightbox-container .gslide { 57 | width: 100%; 58 | position: absolute; 59 | -webkit-user-select: none; 60 | -moz-user-select: none; 61 | -ms-user-select: none; 62 | user-select: none; 63 | display: -webkit-box; 64 | display: -ms-flexbox; 65 | display: flex; 66 | -webkit-box-align: center; 67 | -ms-flex-align: center; 68 | align-items: center; 69 | -webkit-box-pack: center; 70 | -ms-flex-pack: center; 71 | justify-content: center; 72 | opacity: 0; 73 | } 74 | 75 | .glightbox-container .gslide.current { 76 | opacity: 1; 77 | z-index: 99999; 78 | position: relative; 79 | } 80 | 81 | .glightbox-container .gslide.prev { 82 | opacity: 1; 83 | z-index: 9999; 84 | } 85 | 86 | .glightbox-container .gslide-inner-content { 87 | width: 100%; 88 | } 89 | 90 | .glightbox-container .ginner-container { 91 | position: relative; 92 | width: 100%; 93 | display: -webkit-box; 94 | display: -ms-flexbox; 95 | display: flex; 96 | -webkit-box-pack: center; 97 | -ms-flex-pack: center; 98 | justify-content: center; 99 | -webkit-box-orient: vertical; 100 | -webkit-box-direction: normal; 101 | -ms-flex-direction: column; 102 | flex-direction: column; 103 | max-width: 100%; 104 | margin: auto; 105 | height: 100vh; 106 | } 107 | 108 | .glightbox-container .ginner-container.gvideo-container { 109 | width: 100%; 110 | } 111 | 112 | .glightbox-container .ginner-container.desc-bottom, 113 | .glightbox-container .ginner-container.desc-top { 114 | -webkit-box-orient: vertical; 115 | -webkit-box-direction: normal; 116 | -ms-flex-direction: column; 117 | flex-direction: column; 118 | } 119 | 120 | .glightbox-container .ginner-container.desc-left, 121 | .glightbox-container .ginner-container.desc-right { 122 | max-width: 100% !important; 123 | } 124 | 125 | .gslide iframe, 126 | .gslide video { 127 | outline: none !important; 128 | border: none; 129 | min-height: 165px; 130 | -webkit-overflow-scrolling: touch; 131 | -ms-touch-action: auto; 132 | touch-action: auto; 133 | } 134 | 135 | .gslide:not(.current) { 136 | pointer-events: none; 137 | } 138 | 139 | .gslide-image { 140 | -webkit-box-align: center; 141 | -ms-flex-align: center; 142 | align-items: center; 143 | } 144 | 145 | .gslide-image img { 146 | max-height: 100vh; 147 | display: block; 148 | padding: 0; 149 | float: none; 150 | outline: none; 151 | border: none; 152 | -webkit-user-select: none; 153 | -moz-user-select: none; 154 | -ms-user-select: none; 155 | user-select: none; 156 | max-width: 100vw; 157 | width: auto; 158 | height: auto; 159 | -o-object-fit: cover; 160 | object-fit: cover; 161 | -ms-touch-action: none; 162 | touch-action: none; 163 | margin: auto; 164 | min-width: 200px; 165 | } 166 | 167 | .desc-top .gslide-image img, 168 | .desc-bottom .gslide-image img { 169 | width: auto; 170 | } 171 | 172 | .desc-left .gslide-image img, 173 | .desc-right .gslide-image img { 174 | width: auto; 175 | max-width: 100%; 176 | } 177 | 178 | .gslide-image img.zoomable { 179 | position: relative; 180 | } 181 | 182 | .gslide-image img.dragging { 183 | cursor: -webkit-grabbing !important; 184 | cursor: grabbing !important; 185 | -webkit-transition: none; 186 | transition: none; 187 | } 188 | 189 | .gslide-video { 190 | position: relative; 191 | max-width: 100vh; 192 | width: 100% !important; 193 | } 194 | 195 | .gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster { 196 | display: none; 197 | } 198 | 199 | .gslide-video .gvideo-wrapper { 200 | width: 100%; 201 | /* max-width: 160vmin; */ 202 | margin: auto; 203 | } 204 | 205 | .gslide-video::before { 206 | content: ''; 207 | position: absolute; 208 | width: 100%; 209 | height: 100%; 210 | background: rgba(255, 0, 0, 0.34); 211 | display: none; 212 | } 213 | 214 | .gslide-video.playing::before { 215 | display: none; 216 | } 217 | 218 | .gslide-video.fullscreen { 219 | max-width: 100% !important; 220 | min-width: 100%; 221 | height: 75vh; 222 | } 223 | 224 | .gslide-video.fullscreen video { 225 | max-width: 100% !important; 226 | width: 100% !important; 227 | } 228 | 229 | .gslide-inline { 230 | background: #fff; 231 | text-align: left; 232 | max-height: calc(100vh - 40px); 233 | overflow: auto; 234 | max-width: 100%; 235 | margin: auto; 236 | } 237 | 238 | .gslide-inline .ginlined-content { 239 | padding: 20px; 240 | width: 100%; 241 | } 242 | 243 | .gslide-inline .dragging { 244 | cursor: -webkit-grabbing !important; 245 | cursor: grabbing !important; 246 | -webkit-transition: none; 247 | transition: none; 248 | } 249 | 250 | .ginlined-content { 251 | overflow: auto; 252 | display: block !important; 253 | opacity: 1; 254 | } 255 | 256 | .gslide-external { 257 | display: -webkit-box; 258 | display: -ms-flexbox; 259 | display: flex; 260 | width: 100%; 261 | min-width: 100%; 262 | background: #fff; 263 | padding: 0; 264 | overflow: auto; 265 | max-height: 75vh; 266 | height: 100%; 267 | } 268 | 269 | .gslide-media { 270 | display: -webkit-box; 271 | display: -ms-flexbox; 272 | display: flex; 273 | width: auto; 274 | } 275 | 276 | .zoomed .gslide-media { 277 | -webkit-box-shadow: none !important; 278 | box-shadow: none !important; 279 | } 280 | 281 | .desc-top .gslide-media, 282 | .desc-bottom .gslide-media { 283 | margin: 0 auto; 284 | -webkit-box-orient: vertical; 285 | -webkit-box-direction: normal; 286 | -ms-flex-direction: column; 287 | flex-direction: column; 288 | } 289 | 290 | .gslide-description { 291 | position: relative; 292 | -webkit-box-flex: 1; 293 | -ms-flex: 1 0 100%; 294 | flex: 1 0 100%; 295 | } 296 | 297 | .gslide-description.description-left, 298 | .gslide-description.description-right { 299 | max-width: 100%; 300 | } 301 | 302 | .gslide-description.description-bottom, 303 | .gslide-description.description-top { 304 | margin: 0 auto; 305 | width: 100%; 306 | } 307 | 308 | .gslide-description p { 309 | margin-bottom: 12px; 310 | } 311 | 312 | .gslide-description p:last-child { 313 | margin-bottom: 0; 314 | } 315 | 316 | .zoomed .gslide-description { 317 | display: none; 318 | } 319 | 320 | .glightbox-button-hidden { 321 | display: none; 322 | } 323 | 324 | 325 | /* 326 | * Description for mobiles 327 | * something like facebook does the description 328 | * for the photos 329 | */ 330 | 331 | .glightbox-mobile .glightbox-container .gslide-description { 332 | height: auto !important; 333 | width: 100%; 334 | position: absolute; 335 | bottom: 0; 336 | padding: 19px 11px; 337 | max-width: 100vw !important; 338 | -webkit-box-ordinal-group: 3 !important; 339 | -ms-flex-order: 2 !important; 340 | order: 2 !important; 341 | max-height: 78vh; 342 | overflow: auto !important; 343 | background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.75))); 344 | background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100%); 345 | -webkit-transition: opacity 0.3s linear; 346 | transition: opacity 0.3s linear; 347 | padding-bottom: 50px; 348 | } 349 | 350 | .glightbox-mobile .glightbox-container .gslide-title { 351 | color: #fff; 352 | font-size: 1em; 353 | } 354 | 355 | .glightbox-mobile .glightbox-container .gslide-desc { 356 | color: #a1a1a1; 357 | } 358 | 359 | .glightbox-mobile .glightbox-container .gslide-desc a { 360 | color: #fff; 361 | font-weight: bold; 362 | } 363 | 364 | .glightbox-mobile .glightbox-container .gslide-desc * { 365 | color: inherit; 366 | } 367 | 368 | .glightbox-mobile .glightbox-container .gslide-desc .desc-more { 369 | color: #fff; 370 | opacity: 0.4; 371 | } 372 | 373 | .gdesc-open .gslide-media { 374 | -webkit-transition: opacity 0.5s ease; 375 | transition: opacity 0.5s ease; 376 | opacity: 0.4; 377 | } 378 | 379 | .gdesc-open .gdesc-inner { 380 | padding-bottom: 30px; 381 | } 382 | 383 | .gdesc-closed .gslide-media { 384 | -webkit-transition: opacity 0.5s ease; 385 | transition: opacity 0.5s ease; 386 | opacity: 1; 387 | } 388 | 389 | .greset { 390 | -webkit-transition: all 0.3s ease; 391 | transition: all 0.3s ease; 392 | } 393 | 394 | .gabsolute { 395 | position: absolute; 396 | } 397 | 398 | .grelative { 399 | position: relative; 400 | } 401 | 402 | .glightbox-desc { 403 | display: none !important; 404 | } 405 | 406 | .glightbox-open { 407 | overflow: hidden; 408 | } 409 | 410 | .gloader { 411 | height: 25px; 412 | width: 25px; 413 | -webkit-animation: lightboxLoader 0.8s infinite linear; 414 | animation: lightboxLoader 0.8s infinite linear; 415 | border: 2px solid #fff; 416 | border-right-color: transparent; 417 | border-radius: 50%; 418 | position: absolute; 419 | display: block; 420 | z-index: 9999; 421 | left: 0; 422 | right: 0; 423 | margin: 0 auto; 424 | top: 47%; 425 | } 426 | 427 | .goverlay { 428 | width: 100%; 429 | height: calc(100vh + 1px); 430 | position: fixed; 431 | top: -1px; 432 | left: 0; 433 | background: #000; 434 | will-change: opacity; 435 | } 436 | 437 | .glightbox-mobile .goverlay { 438 | background: #000; 439 | } 440 | 441 | .gprev, 442 | .gnext, 443 | .gclose { 444 | z-index: 99999; 445 | cursor: pointer; 446 | width: 26px; 447 | height: 44px; 448 | border: none; 449 | display: -webkit-box; 450 | display: -ms-flexbox; 451 | display: flex; 452 | -webkit-box-pack: center; 453 | -ms-flex-pack: center; 454 | justify-content: center; 455 | -webkit-box-align: center; 456 | -ms-flex-align: center; 457 | align-items: center; 458 | -webkit-box-orient: vertical; 459 | -webkit-box-direction: normal; 460 | -ms-flex-direction: column; 461 | flex-direction: column; 462 | } 463 | 464 | .gprev svg, 465 | .gnext svg, 466 | .gclose svg { 467 | display: block; 468 | width: 25px; 469 | height: auto; 470 | margin: 0; 471 | padding: 0; 472 | } 473 | 474 | .gprev.disabled, 475 | .gnext.disabled, 476 | .gclose.disabled { 477 | opacity: 0.1; 478 | } 479 | 480 | .gprev .garrow, 481 | .gnext .garrow, 482 | .gclose .garrow { 483 | stroke: #fff; 484 | } 485 | 486 | .gbtn.focused { 487 | outline: 2px solid #0f3d81; 488 | } 489 | 490 | iframe.wait-autoplay { 491 | opacity: 0; 492 | } 493 | 494 | .glightbox-closing .gnext, 495 | .glightbox-closing .gprev, 496 | .glightbox-closing .gclose { 497 | opacity: 0 !important; 498 | } 499 | 500 | 501 | /*Skin */ 502 | 503 | .glightbox-clean .gslide-description { 504 | background: #fff; 505 | } 506 | 507 | .glightbox-clean .gdesc-inner { 508 | padding: 22px 20px; 509 | } 510 | 511 | .glightbox-clean .gslide-title { 512 | font-size: 1em; 513 | font-weight: normal; 514 | font-family: arial; 515 | color: #000; 516 | margin-bottom: 19px; 517 | line-height: 1.4em; 518 | } 519 | 520 | .glightbox-clean .gslide-desc { 521 | font-size: 0.86em; 522 | margin-bottom: 0; 523 | font-family: arial; 524 | line-height: 1.4em; 525 | } 526 | 527 | .glightbox-clean .gslide-video { 528 | background: #000; 529 | } 530 | 531 | .glightbox-clean .gprev, 532 | .glightbox-clean .gnext, 533 | .glightbox-clean .gclose { 534 | background-color: rgba(0, 0, 0, 0.75); 535 | border-radius: 4px; 536 | } 537 | 538 | .glightbox-clean .gprev path, 539 | .glightbox-clean .gnext path, 540 | .glightbox-clean .gclose path { 541 | fill: #fff; 542 | } 543 | 544 | .glightbox-clean .gprev { 545 | position: absolute; 546 | top: -100%; 547 | left: 30px; 548 | width: 40px; 549 | height: 50px; 550 | } 551 | 552 | .glightbox-clean .gnext { 553 | position: absolute; 554 | top: -100%; 555 | right: 30px; 556 | width: 40px; 557 | height: 50px; 558 | } 559 | 560 | .glightbox-clean .gclose { 561 | width: 35px; 562 | height: 35px; 563 | top: 15px; 564 | right: 10px; 565 | position: absolute; 566 | } 567 | 568 | .glightbox-clean .gclose svg { 569 | width: 18px; 570 | height: auto; 571 | } 572 | 573 | .glightbox-clean .gclose:hover { 574 | opacity: 1; 575 | } 576 | 577 | 578 | /*CSS Animations*/ 579 | 580 | .gfadeIn { 581 | -webkit-animation: gfadeIn 0.5s ease; 582 | animation: gfadeIn 0.5s ease; 583 | } 584 | 585 | .gfadeOut { 586 | -webkit-animation: gfadeOut 0.5s ease; 587 | animation: gfadeOut 0.5s ease; 588 | } 589 | 590 | .gslideOutLeft { 591 | -webkit-animation: gslideOutLeft 0.3s ease; 592 | animation: gslideOutLeft 0.3s ease; 593 | } 594 | 595 | .gslideInLeft { 596 | -webkit-animation: gslideInLeft 0.3s ease; 597 | animation: gslideInLeft 0.3s ease; 598 | } 599 | 600 | .gslideOutRight { 601 | -webkit-animation: gslideOutRight 0.3s ease; 602 | animation: gslideOutRight 0.3s ease; 603 | } 604 | 605 | .gslideInRight { 606 | -webkit-animation: gslideInRight 0.3s ease; 607 | animation: gslideInRight 0.3s ease; 608 | } 609 | 610 | .gzoomIn { 611 | -webkit-animation: gzoomIn 0.5s ease; 612 | animation: gzoomIn 0.5s ease; 613 | } 614 | 615 | .gzoomOut { 616 | -webkit-animation: gzoomOut 0.5s ease; 617 | animation: gzoomOut 0.5s ease; 618 | } 619 | 620 | @-webkit-keyframes lightboxLoader { 621 | 0% { 622 | -webkit-transform: rotate(0deg); 623 | transform: rotate(0deg); 624 | } 625 | 100% { 626 | -webkit-transform: rotate(360deg); 627 | transform: rotate(360deg); 628 | } 629 | } 630 | 631 | @keyframes lightboxLoader { 632 | 0% { 633 | -webkit-transform: rotate(0deg); 634 | transform: rotate(0deg); 635 | } 636 | 100% { 637 | -webkit-transform: rotate(360deg); 638 | transform: rotate(360deg); 639 | } 640 | } 641 | 642 | @-webkit-keyframes gfadeIn { 643 | from { 644 | opacity: 0; 645 | } 646 | to { 647 | opacity: 1; 648 | } 649 | } 650 | 651 | @keyframes gfadeIn { 652 | from { 653 | opacity: 0; 654 | } 655 | to { 656 | opacity: 1; 657 | } 658 | } 659 | 660 | @-webkit-keyframes gfadeOut { 661 | from { 662 | opacity: 1; 663 | } 664 | to { 665 | opacity: 0; 666 | } 667 | } 668 | 669 | @keyframes gfadeOut { 670 | from { 671 | opacity: 1; 672 | } 673 | to { 674 | opacity: 0; 675 | } 676 | } 677 | 678 | @-webkit-keyframes gslideInLeft { 679 | from { 680 | opacity: 0; 681 | -webkit-transform: translate3d(-60%, 0, 0); 682 | transform: translate3d(-60%, 0, 0); 683 | } 684 | to { 685 | visibility: visible; 686 | -webkit-transform: translate3d(0, 0, 0); 687 | transform: translate3d(0, 0, 0); 688 | opacity: 1; 689 | } 690 | } 691 | 692 | @keyframes gslideInLeft { 693 | from { 694 | opacity: 0; 695 | -webkit-transform: translate3d(-60%, 0, 0); 696 | transform: translate3d(-60%, 0, 0); 697 | } 698 | to { 699 | visibility: visible; 700 | -webkit-transform: translate3d(0, 0, 0); 701 | transform: translate3d(0, 0, 0); 702 | opacity: 1; 703 | } 704 | } 705 | 706 | @-webkit-keyframes gslideOutLeft { 707 | from { 708 | opacity: 1; 709 | visibility: visible; 710 | -webkit-transform: translate3d(0, 0, 0); 711 | transform: translate3d(0, 0, 0); 712 | } 713 | to { 714 | -webkit-transform: translate3d(-60%, 0, 0); 715 | transform: translate3d(-60%, 0, 0); 716 | opacity: 0; 717 | visibility: hidden; 718 | } 719 | } 720 | 721 | @keyframes gslideOutLeft { 722 | from { 723 | opacity: 1; 724 | visibility: visible; 725 | -webkit-transform: translate3d(0, 0, 0); 726 | transform: translate3d(0, 0, 0); 727 | } 728 | to { 729 | -webkit-transform: translate3d(-60%, 0, 0); 730 | transform: translate3d(-60%, 0, 0); 731 | opacity: 0; 732 | visibility: hidden; 733 | } 734 | } 735 | 736 | @-webkit-keyframes gslideInRight { 737 | from { 738 | opacity: 0; 739 | visibility: visible; 740 | -webkit-transform: translate3d(60%, 0, 0); 741 | transform: translate3d(60%, 0, 0); 742 | } 743 | to { 744 | -webkit-transform: translate3d(0, 0, 0); 745 | transform: translate3d(0, 0, 0); 746 | opacity: 1; 747 | } 748 | } 749 | 750 | @keyframes gslideInRight { 751 | from { 752 | opacity: 0; 753 | visibility: visible; 754 | -webkit-transform: translate3d(60%, 0, 0); 755 | transform: translate3d(60%, 0, 0); 756 | } 757 | to { 758 | -webkit-transform: translate3d(0, 0, 0); 759 | transform: translate3d(0, 0, 0); 760 | opacity: 1; 761 | } 762 | } 763 | 764 | @-webkit-keyframes gslideOutRight { 765 | from { 766 | opacity: 1; 767 | visibility: visible; 768 | -webkit-transform: translate3d(0, 0, 0); 769 | transform: translate3d(0, 0, 0); 770 | } 771 | to { 772 | -webkit-transform: translate3d(60%, 0, 0); 773 | transform: translate3d(60%, 0, 0); 774 | opacity: 0; 775 | } 776 | } 777 | 778 | @keyframes gslideOutRight { 779 | from { 780 | opacity: 1; 781 | visibility: visible; 782 | -webkit-transform: translate3d(0, 0, 0); 783 | transform: translate3d(0, 0, 0); 784 | } 785 | to { 786 | -webkit-transform: translate3d(60%, 0, 0); 787 | transform: translate3d(60%, 0, 0); 788 | opacity: 0; 789 | } 790 | } 791 | 792 | @-webkit-keyframes gzoomIn { 793 | from { 794 | opacity: 0; 795 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 796 | transform: scale3d(0.3, 0.3, 0.3); 797 | } 798 | to { 799 | opacity: 1; 800 | } 801 | } 802 | 803 | @keyframes gzoomIn { 804 | from { 805 | opacity: 0; 806 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 807 | transform: scale3d(0.3, 0.3, 0.3); 808 | } 809 | to { 810 | opacity: 1; 811 | } 812 | } 813 | 814 | @-webkit-keyframes gzoomOut { 815 | from { 816 | opacity: 1; 817 | } 818 | 50% { 819 | opacity: 0; 820 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 821 | transform: scale3d(0.3, 0.3, 0.3); 822 | } 823 | to { 824 | opacity: 0; 825 | } 826 | } 827 | 828 | @keyframes gzoomOut { 829 | from { 830 | opacity: 1; 831 | } 832 | 50% { 833 | opacity: 0; 834 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 835 | transform: scale3d(0.3, 0.3, 0.3); 836 | } 837 | to { 838 | opacity: 0; 839 | } 840 | } 841 | 842 | @media (min-width: 769px) { 843 | .glightbox-container .ginner-container { 844 | width: auto; 845 | height: auto; 846 | -webkit-box-orient: horizontal; 847 | -webkit-box-direction: normal; 848 | -ms-flex-direction: row; 849 | flex-direction: row; 850 | } 851 | .glightbox-container .ginner-container.desc-top .gslide-description { 852 | -webkit-box-ordinal-group: 1; 853 | -ms-flex-order: 0; 854 | order: 0; 855 | } 856 | .glightbox-container .ginner-container.desc-top .gslide-image, 857 | .glightbox-container .ginner-container.desc-top .gslide-image img { 858 | -webkit-box-ordinal-group: 2; 859 | -ms-flex-order: 1; 860 | order: 1; 861 | } 862 | .glightbox-container .ginner-container.desc-left .gslide-description { 863 | -webkit-box-ordinal-group: 1; 864 | -ms-flex-order: 0; 865 | order: 0; 866 | } 867 | .glightbox-container .ginner-container.desc-left .gslide-image { 868 | -webkit-box-ordinal-group: 2; 869 | -ms-flex-order: 1; 870 | order: 1; 871 | } 872 | .gslide-image img { 873 | max-height: 97vh; 874 | max-width: 100%; 875 | } 876 | .gslide-image img.zoomable { 877 | cursor: -webkit-zoom-in; 878 | cursor: zoom-in; 879 | } 880 | .zoomed .gslide-image img.zoomable { 881 | cursor: -webkit-grab; 882 | cursor: grab; 883 | } 884 | .gslide-inline { 885 | max-height: 95vh; 886 | } 887 | .gslide-external { 888 | max-height: 100vh; 889 | } 890 | .gslide-description.description-left, 891 | .gslide-description.description-right { 892 | max-width: 275px; 893 | } 894 | .glightbox-open { 895 | height: auto; 896 | } 897 | .goverlay { 898 | background: rgba(0, 0, 0, 0.92); 899 | } 900 | .glightbox-clean .gslide-media { 901 | -webkit-box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65); 902 | box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65); 903 | } 904 | .glightbox-clean .description-left .gdesc-inner, 905 | .glightbox-clean .description-right .gdesc-inner { 906 | position: absolute; 907 | height: 100%; 908 | overflow-y: auto; 909 | } 910 | .glightbox-clean .gprev, 911 | .glightbox-clean .gnext, 912 | .glightbox-clean .gclose { 913 | background-color: rgba(0, 0, 0, 0.32); 914 | } 915 | .glightbox-clean .gprev:hover, 916 | .glightbox-clean .gnext:hover, 917 | .glightbox-clean .gclose:hover { 918 | background-color: rgba(0, 0, 0, 0.7); 919 | } 920 | .glightbox-clean .gprev { 921 | top: 45%; 922 | } 923 | .glightbox-clean .gnext { 924 | top: 45%; 925 | } 926 | } 927 | 928 | @media (min-width: 992px) { 929 | .glightbox-clean .gclose { 930 | opacity: 0.7; 931 | right: 20px; 932 | } 933 | } 934 | 935 | @media screen and (max-height: 420px) { 936 | .goverlay { 937 | background: #000; 938 | } 939 | } 940 | -------------------------------------------------------------------------------- /assets/vendor/glightbox/css/glightbox.min.css: -------------------------------------------------------------------------------- 1 | .glightbox-container{width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999!important;overflow:hidden;-ms-touch-action:none;touch-action:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0}.glightbox-container.inactive{display:none}.glightbox-container .gcontainer{position:relative;width:100%;height:100%;z-index:9999;overflow:hidden}.glightbox-container .gslider{-webkit-transition:-webkit-transform .4s ease;transition:-webkit-transform .4s ease;transition:transform .4s ease;transition:transform .4s ease,-webkit-transform .4s ease;height:100%;left:0;top:0;width:100%;position:relative;overflow:hidden;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.glightbox-container .gslide{width:100%;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0}.glightbox-container .gslide.current{opacity:1;z-index:99999;position:relative}.glightbox-container .gslide.prev{opacity:1;z-index:9999}.glightbox-container .gslide-inner-content{width:100%}.glightbox-container .ginner-container{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;margin:auto;height:100vh}.glightbox-container .ginner-container.gvideo-container{width:100%}.glightbox-container .ginner-container.desc-bottom,.glightbox-container .ginner-container.desc-top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.glightbox-container .ginner-container.desc-left,.glightbox-container .ginner-container.desc-right{max-width:100%!important}.gslide iframe,.gslide video{outline:0!important;border:none;min-height:165px;-webkit-overflow-scrolling:touch;-ms-touch-action:auto;touch-action:auto}.gslide:not(.current){pointer-events:none}.gslide-image{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gslide-image img{max-height:100vh;display:block;padding:0;float:none;outline:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100vw;width:auto;height:auto;-o-object-fit:cover;object-fit:cover;-ms-touch-action:none;touch-action:none;margin:auto;min-width:200px}.desc-bottom .gslide-image img,.desc-top .gslide-image img{width:auto}.desc-left .gslide-image img,.desc-right .gslide-image img{width:auto;max-width:100%}.gslide-image img.zoomable{position:relative}.gslide-image img.dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.gslide-video{position:relative;max-width:100vh;width:100%!important}.gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster{display:none}.gslide-video .gvideo-wrapper{width:100%;margin:auto}.gslide-video::before{content:'';position:absolute;width:100%;height:100%;background:rgba(255,0,0,.34);display:none}.gslide-video.playing::before{display:none}.gslide-video.fullscreen{max-width:100%!important;min-width:100%;height:75vh}.gslide-video.fullscreen video{max-width:100%!important;width:100%!important}.gslide-inline{background:#fff;text-align:left;max-height:calc(100vh - 40px);overflow:auto;max-width:100%;margin:auto}.gslide-inline .ginlined-content{padding:20px;width:100%}.gslide-inline .dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.ginlined-content{overflow:auto;display:block!important;opacity:1}.gslide-external{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;min-width:100%;background:#fff;padding:0;overflow:auto;max-height:75vh;height:100%}.gslide-media{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.zoomed .gslide-media{-webkit-box-shadow:none!important;box-shadow:none!important}.desc-bottom .gslide-media,.desc-top .gslide-media{margin:0 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gslide-description{position:relative;-webkit-box-flex:1;-ms-flex:1 0 100%;flex:1 0 100%}.gslide-description.description-left,.gslide-description.description-right{max-width:100%}.gslide-description.description-bottom,.gslide-description.description-top{margin:0 auto;width:100%}.gslide-description p{margin-bottom:12px}.gslide-description p:last-child{margin-bottom:0}.zoomed .gslide-description{display:none}.glightbox-button-hidden{display:none}.glightbox-mobile .glightbox-container .gslide-description{height:auto!important;width:100%;position:absolute;bottom:0;padding:19px 11px;max-width:100vw!important;-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;max-height:78vh;overflow:auto!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.75)));background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.75) 100%);-webkit-transition:opacity .3s linear;transition:opacity .3s linear;padding-bottom:50px}.glightbox-mobile .glightbox-container .gslide-title{color:#fff;font-size:1em}.glightbox-mobile .glightbox-container .gslide-desc{color:#a1a1a1}.glightbox-mobile .glightbox-container .gslide-desc a{color:#fff;font-weight:700}.glightbox-mobile .glightbox-container .gslide-desc *{color:inherit}.glightbox-mobile .glightbox-container .gslide-desc .desc-more{color:#fff;opacity:.4}.gdesc-open .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:.4}.gdesc-open .gdesc-inner{padding-bottom:30px}.gdesc-closed .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:1}.greset{-webkit-transition:all .3s ease;transition:all .3s ease}.gabsolute{position:absolute}.grelative{position:relative}.glightbox-desc{display:none!important}.glightbox-open{overflow:hidden}.gloader{height:25px;width:25px;-webkit-animation:lightboxLoader .8s infinite linear;animation:lightboxLoader .8s infinite linear;border:2px solid #fff;border-right-color:transparent;border-radius:50%;position:absolute;display:block;z-index:9999;left:0;right:0;margin:0 auto;top:47%}.goverlay{width:100%;height:calc(100vh + 1px);position:fixed;top:-1px;left:0;background:#000;will-change:opacity}.glightbox-mobile .goverlay{background:#000}.gclose,.gnext,.gprev{z-index:99999;cursor:pointer;width:26px;height:44px;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gclose svg,.gnext svg,.gprev svg{display:block;width:25px;height:auto;margin:0;padding:0}.gclose.disabled,.gnext.disabled,.gprev.disabled{opacity:.1}.gclose .garrow,.gnext .garrow,.gprev .garrow{stroke:#fff}.gbtn.focused{outline:2px solid #0f3d81}iframe.wait-autoplay{opacity:0}.glightbox-closing .gclose,.glightbox-closing .gnext,.glightbox-closing .gprev{opacity:0!important}.glightbox-clean .gslide-description{background:#fff}.glightbox-clean .gdesc-inner{padding:22px 20px}.glightbox-clean .gslide-title{font-size:1em;font-weight:400;font-family:arial;color:#000;margin-bottom:19px;line-height:1.4em}.glightbox-clean .gslide-desc{font-size:.86em;margin-bottom:0;font-family:arial;line-height:1.4em}.glightbox-clean .gslide-video{background:#000}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.75);border-radius:4px}.glightbox-clean .gclose path,.glightbox-clean .gnext path,.glightbox-clean .gprev path{fill:#fff}.glightbox-clean .gprev{position:absolute;top:-100%;left:30px;width:40px;height:50px}.glightbox-clean .gnext{position:absolute;top:-100%;right:30px;width:40px;height:50px}.glightbox-clean .gclose{width:35px;height:35px;top:15px;right:10px;position:absolute}.glightbox-clean .gclose svg{width:18px;height:auto}.glightbox-clean .gclose:hover{opacity:1}.gfadeIn{-webkit-animation:gfadeIn .5s ease;animation:gfadeIn .5s ease}.gfadeOut{-webkit-animation:gfadeOut .5s ease;animation:gfadeOut .5s ease}.gslideOutLeft{-webkit-animation:gslideOutLeft .3s ease;animation:gslideOutLeft .3s ease}.gslideInLeft{-webkit-animation:gslideInLeft .3s ease;animation:gslideInLeft .3s ease}.gslideOutRight{-webkit-animation:gslideOutRight .3s ease;animation:gslideOutRight .3s ease}.gslideInRight{-webkit-animation:gslideInRight .3s ease;animation:gslideInRight .3s ease}.gzoomIn{-webkit-animation:gzoomIn .5s ease;animation:gzoomIn .5s ease}.gzoomOut{-webkit-animation:gzoomOut .5s ease;animation:gzoomOut .5s ease}@-webkit-keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes gfadeIn{from{opacity:0}to{opacity:1}}@keyframes gfadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes gfadeOut{from{opacity:1}to{opacity:0}}@keyframes gfadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@-webkit-keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@-webkit-keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@-webkit-keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@media (min-width:769px){.glightbox-container .ginner-container{width:auto;height:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.glightbox-container .ginner-container.desc-top .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-top .gslide-image,.glightbox-container .ginner-container.desc-top .gslide-image img{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.glightbox-container .ginner-container.desc-left .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-left .gslide-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.gslide-image img{max-height:97vh;max-width:100%}.gslide-image img.zoomable{cursor:-webkit-zoom-in;cursor:zoom-in}.zoomed .gslide-image img.zoomable{cursor:-webkit-grab;cursor:grab}.gslide-inline{max-height:95vh}.gslide-external{max-height:100vh}.gslide-description.description-left,.gslide-description.description-right{max-width:275px}.glightbox-open{height:auto}.goverlay{background:rgba(0,0,0,.92)}.glightbox-clean .gslide-media{-webkit-box-shadow:1px 2px 9px 0 rgba(0,0,0,.65);box-shadow:1px 2px 9px 0 rgba(0,0,0,.65)}.glightbox-clean .description-left .gdesc-inner,.glightbox-clean .description-right .gdesc-inner{position:absolute;height:100%;overflow-y:auto}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.32)}.glightbox-clean .gclose:hover,.glightbox-clean .gnext:hover,.glightbox-clean .gprev:hover{background-color:rgba(0,0,0,.7)}.glightbox-clean .gprev{top:45%}.glightbox-clean .gnext{top:45%}}@media (min-width:992px){.glightbox-clean .gclose{opacity:.7;right:20px}}@media screen and (max-height:420px){.goverlay{background:#000}} -------------------------------------------------------------------------------- /assets/vendor/php-email-form/validate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * PHP Email Form Validation - v3.7 3 | * URL: https://bootstrapmade.com/php-email-form/ 4 | * Author: BootstrapMade.com 5 | */ 6 | (function () { 7 | "use strict"; 8 | 9 | let forms = document.querySelectorAll('.php-email-form'); 10 | 11 | forms.forEach( function(e) { 12 | e.addEventListener('submit', function(event) { 13 | event.preventDefault(); 14 | 15 | let thisForm = this; 16 | 17 | let action = thisForm.getAttribute('action'); 18 | let recaptcha = thisForm.getAttribute('data-recaptcha-site-key'); 19 | 20 | if( ! action ) { 21 | displayError(thisForm, 'The form action property is not set!'); 22 | return; 23 | } 24 | thisForm.querySelector('.loading').classList.add('d-block'); 25 | thisForm.querySelector('.error-message').classList.remove('d-block'); 26 | thisForm.querySelector('.sent-message').classList.remove('d-block'); 27 | 28 | let formData = new FormData( thisForm ); 29 | 30 | if ( recaptcha ) { 31 | if(typeof grecaptcha !== "undefined" ) { 32 | grecaptcha.ready(function() { 33 | try { 34 | grecaptcha.execute(recaptcha, {action: 'php_email_form_submit'}) 35 | .then(token => { 36 | formData.set('recaptcha-response', token); 37 | php_email_form_submit(thisForm, action, formData); 38 | }) 39 | } catch(error) { 40 | displayError(thisForm, error); 41 | } 42 | }); 43 | } else { 44 | displayError(thisForm, 'The reCaptcha javascript API url is not loaded!') 45 | } 46 | } else { 47 | php_email_form_submit(thisForm, action, formData); 48 | } 49 | }); 50 | }); 51 | 52 | function php_email_form_submit(thisForm, action, formData) { 53 | fetch(action, { 54 | method: 'POST', 55 | body: formData, 56 | headers: {'X-Requested-With': 'XMLHttpRequest'} 57 | }) 58 | .then(response => { 59 | if( response.ok ) { 60 | return response.text(); 61 | } else { 62 | throw new Error(`${response.status} ${response.statusText} ${response.url}`); 63 | } 64 | }) 65 | .then(data => { 66 | thisForm.querySelector('.loading').classList.remove('d-block'); 67 | if (data.trim() == 'OK') { 68 | thisForm.querySelector('.sent-message').classList.add('d-block'); 69 | thisForm.reset(); 70 | } else { 71 | throw new Error(data ? data : 'Form submission failed and no error message returned from: ' + action); 72 | } 73 | }) 74 | .catch((error) => { 75 | displayError(thisForm, error); 76 | }); 77 | } 78 | 79 | function displayError(thisForm, error) { 80 | thisForm.querySelector('.loading').classList.remove('d-block'); 81 | thisForm.querySelector('.error-message').innerHTML = error; 82 | thisForm.querySelector('.error-message').classList.add('d-block'); 83 | } 84 | 85 | })(); 86 | -------------------------------------------------------------------------------- /assets/vendor/swiper/swiper-bundle.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 11.1.1 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * https://swiperjs.com 5 | * 6 | * Copyright 2014-2024 Vladimir Kharlampidi 7 | * 8 | * Released under the MIT License 9 | * 10 | * Released on: April 9, 2024 11 | */ 12 | 13 | @font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} -------------------------------------------------------------------------------- /index_zh.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Timer: 时间序列基础模型 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 68 | 69 | 70 |
71 | 72 |
73 |

基于大模型的通用时间序列分析

74 |
75 | 了解详情 76 | 论文原文 77 |
78 |
79 | 80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | 89 |
90 | 91 |
92 | 93 | 94 |
95 |
96 | 97 |
98 |
99 | 100 |
101 |
102 |

欢迎使用Timer-深度时序分析通用基础模型

103 |

Timer 模型发源于清华大学软件学院,针对时序分析领域,构建了大规模时序数据集和预训练格式。通过在大量数据集上进行训练,Timer 展现出少样本泛化以及多任务适配能力,具备可观的时序分析能力和对真实场景的数据生成能力,拥有以下特点:

104 |
    105 |
  • 泛化性:基于少样本微调取得领域前沿深度模型预测效果
  • 106 |
  • 通用性:适配多种任务,支持可变输入输出长度
  • 107 |
  • 可扩展性:模型随着参数量或预训练规模扩大取得效果提升
  • 108 |
109 |
110 |
111 | 112 |
113 |
114 | 115 |
116 |
117 | 118 |
119 |
120 |

大规模高质量时序数据集

121 |

为了追求业内卓越的分析能力,我们构建了大规模的预训练数据集,该数据集兼有庞大的体量、卓越的质量和丰富的领域等重要特质,这为Timer提供了一个高水准数据知识库,从而使其在众多任务中具有较强的泛化能力。

122 |
123 |
124 | 125 |
126 |
127 | 128 |
129 |
130 |

大模型可扩展性

131 | 132 |
133 |
134 | 135 |
136 |
137 | 141 |
142 |
143 |

对大模型分析解决方案

144 |

基于我们模型的能力,我们可以构建一套完整的大模型解决方案。这些解决方案使您能够通过多种方法访问我们大型模型的高级分析服务,将包括在线API访问、基于平台的调用,乃至定制的私人部署等多种选项。 145 |
为在线调用而设计的前端API即将推出,敬请期待。

146 |
147 |
148 | 149 |
150 | 151 | 152 |
153 | 154 | 155 |
156 |
157 |
158 |

场景服务

159 |

Timer提供全面的时序分析能力,旨在帮助您企业和研究人员释放其时间序列数据的全部潜力。我们的Timer模型在大量数据集上进行了预训练,并针对特定任务进行了微调,为一系列可能的实际应用场景提供通用解决方案。

160 |
161 | 162 |
163 | 164 |
165 |
166 |
167 |

时序预测

168 |

对时间序列的预测建模是Timer功能的核心。我们的服务能够提供对工业生产、自然环境等时序数据的预测。

169 |
170 |
171 | 172 |
173 |
174 |
175 |

数据填补

176 |

消除数据丢失带来的麻烦。Timer拥有对缺失序列段的上下文填补能力,为时间序列数据集带来连续性和完整性。

177 |
178 |
179 | 180 |
181 |
182 |
183 |

异常检测

184 |

我们提供基于自回归分析的异常检测能力,Timer将通过对于序列段的滚动分析对可能异常序列数据进行实时预警。

185 |
186 |
187 | 188 |
189 |
190 |
191 |

通用生成式分析框架

192 |

我们的服务在统一的生成方法下运行,为不同的应用程序和领域简化复杂的任务,提供通用时序分析的可能。

193 |
194 |
195 | 196 |
197 | 198 |
199 |
200 | 201 | 202 | 203 |
204 |
205 |
206 |

效果展示

207 | 208 |

Timer拥有很强的泛化性,能够适应多种不同领域和场景的真实时序数据,在各种任务上拥有优异的处理效果,这里展现了Timer在不同数据上的真实表现。 209 |
以下可视化结果均来自极低样本使用率下的微调结果。 210 |

211 |
212 | 213 |
214 |
215 |
    216 |
  • 全部
  • 217 |
  • 时序预测
  • 218 |
  • 数据填补
  • 219 |
  • 异常检测
  • 220 |
221 |
222 |
223 | 224 |
225 | 226 |
227 | 228 |
229 |

时序预测 ECL数据集

230 |

20% 样本微调

231 | 232 | 233 |
234 |
235 | 236 |
237 | 238 |
239 |

时序预测 Traffic数据集

240 |

20% 样本微调

241 | 242 | 243 |
244 |
245 | 246 |
247 | 248 |
249 |

时序预测 PEMS03数据集

250 |

20% 样本微调

251 | 252 | 253 |
254 |
255 | 256 |
257 | 258 |
259 |

时序预测 ECL数据集

260 |

5% 样本微调

261 | 262 | 263 |
264 |
265 | 266 |
267 | 268 |
269 |

时序预测 Traffic数据集

270 |

5% 样本微调

271 | 272 | 273 |
274 |
275 | 276 |
277 | 278 |
279 |

时序预测 PEMS03数据集

280 |

5% 样本微调

281 | 282 | 283 |
284 |
285 | 286 |
287 | 288 |
289 |

数据填补 ETTh2数据集

290 |

20% 样本微调

291 | 292 | 293 |
294 |
295 | 296 |
297 | 298 |
299 |

数据填补 ECL数据集

300 |

20% 样本微调

301 | 302 | 303 |
304 |
305 | 306 |
307 | 308 |
309 |

数据填补 Traffic数据集

310 |

20% 样本微调

311 | 312 | 313 |
314 |
315 | 316 |
317 | 318 |
319 |

数据填补 ETTh2数据集

320 |

5% 样本微调

321 | 322 | 323 |
324 |
325 | 326 |
327 | 328 |
329 |

数据填补 ECL数据集

330 |

5% 样本微调

331 | 332 | 333 |
334 |
335 | 336 |
337 | 338 |
339 |

数据填补 Traffic数据集

340 |

5% 样本微调

341 | 342 | 343 |
344 |
345 | 346 |
347 | 348 |
349 |

异常检测 ECG4数据集

350 | 351 | 352 |
353 |
354 | 355 |
356 | 357 |
358 |

异常检测 insectEPG5数据集

359 | 360 | 361 |
362 |
363 | 364 |
365 | 366 |
367 |

异常检测 CHARISten数据集

368 | 369 | 370 |
371 |
372 | 373 |
374 | 375 |
376 |
377 | 378 | 379 |
380 |
381 |
382 |

联系我们

383 |

随着研究的进展,我们的模型功能正在快速迭代。如果您对我们的工作感兴趣,请主动与我们联系。

384 |
385 | 386 |
387 | 388 |
389 |
390 | 391 |

地址

392 |
北京市海淀区清华大学软件学院
东配楼11区11-419室
393 |
394 |
395 | 396 |
397 |
398 | 399 |

主页

400 |

http://ise.thss.tsinghua.edu.cn/~mlong/

401 |
402 |
403 | 404 |
405 |
406 | 407 |

邮箱

408 |

mingsheng@tsinghua.edu.cn

409 |
410 |
411 | 412 |
413 |
414 | 415 |
416 | 417 |
418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | --------------------------------------------------------------------------------