diff --git a/jirikarlik/__init__.py b/jirikarlik/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jirikarlik/admin.py b/jirikarlik/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/jirikarlik/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/jirikarlik/apps.py b/jirikarlik/apps.py new file mode 100644 index 0000000..3db2f9e --- /dev/null +++ b/jirikarlik/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class JirikarlikConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'jirikarlik' diff --git a/jirikarlik/migrations/__init__.py b/jirikarlik/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jirikarlik/models.py b/jirikarlik/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/jirikarlik/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/jirikarlik/static/assets/certifications/pm1.pdf b/jirikarlik/static/assets/certifications/pm1.pdf new file mode 100644 index 0000000..fd257e5 Binary files /dev/null and b/jirikarlik/static/assets/certifications/pm1.pdf differ diff --git a/jirikarlik/static/assets/certifications/pm2.pdf b/jirikarlik/static/assets/certifications/pm2.pdf new file mode 100644 index 0000000..447f509 Binary files /dev/null and b/jirikarlik/static/assets/certifications/pm2.pdf differ diff --git a/jirikarlik/static/assets/certifications/pm3.pdf b/jirikarlik/static/assets/certifications/pm3.pdf new file mode 100644 index 0000000..61bbf54 Binary files /dev/null and b/jirikarlik/static/assets/certifications/pm3.pdf differ diff --git a/jirikarlik/static/assets/certifications/pm4.pdf b/jirikarlik/static/assets/certifications/pm4.pdf new file mode 100644 index 0000000..ee8d723 Binary files /dev/null and b/jirikarlik/static/assets/certifications/pm4.pdf differ diff --git a/jirikarlik/static/assets/css/main.css b/jirikarlik/static/assets/css/main.css new file mode 100644 index 0000000..f346971 --- /dev/null +++ b/jirikarlik/static/assets/css/main.css @@ -0,0 +1,1679 @@ +/** +* Template Name: DevFolio +* Template URL: https://bootstrapmade.com/devfolio-bootstrap-portfolio-html-template/ +* Updated: Jun 29 2024 with Bootstrap v5.3.3 +* Author: BootstrapMade.com +* License: https://bootstrapmade.com/license/ +*/ + +/*-------------------------------------------------------------- +# Font & Color Variables +# Help: https://bootstrapmade.com/color-system/ +--------------------------------------------------------------*/ +/* Fonts */ +:root { + --default-font: "Roboto", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --heading-font: "Raleway", sans-serif; + --nav-font: "Poppins", sans-serif; +} + +/* Global Colors - The following color variables are used throughout the website. Updating them here will change the color scheme of the entire website */ +:root { + --background-color: #ffffff; /* Background color for the entire website, including individual sections */ + --default-color: #4e4e4e; /* Default color used for the majority of the text content across the entire website */ + --heading-color: #0a090f; /* Color for headings, subheadings and title throughout the website */ + --accent-color: #a52a21; /* Accent color that represents your brand on the website. It's used for buttons, links, and other elements that need to stand out */ + --surface-color: #ffffff; /* The surface color is used as a background of boxed elements within sections, such as cards, icon boxes, or other elements that require a visual separation from the global background. */ + --contrast-color: #ffffff; /* Contrast color for text, ensuring readability against backgrounds of accent, heading, or default colors. */ +} + +/* Nav Menu Colors - The following color variables are used specifically for the navigation menu. They are separate from the global colors to allow for more customization options */ +:root { + --nav-color: #ffffff; /* The default color of the main navmenu links */ + --nav-hover-color: #ffffff; /* Applied to main navmenu links when they are hovered over or active */ + --nav-mobile-background-color: #ffffff; /* Used as the background color for mobile navigation menu */ + --nav-dropdown-background-color: #ffffff; /* Used as the background color for dropdown items that appear when hovering over primary navigation items */ + --nav-dropdown-color: #212529; /* Used for navigation links of the dropdown items in the navigation menu. */ + --nav-dropdown-hover-color: #a52a21; /* Similar to --nav-hover-color, this color is applied to dropdown navigation links when they are hovered over. */ +} + +/* Color Presets - These classes override global colors when applied to any section or element, providing reuse of the sam color scheme. */ + +.light-background { + --background-color: #f9f9f9; + --surface-color: #ffffff; +} + +.dark-background { + --background-color: #060606; + --default-color: #ffffff; + --heading-color: #ffffff; + --surface-color: #252525; + --contrast-color: #ffffff; +} + +.accent-background { + --background-color: #a52a21; + --default-color: #ffffff; + --heading-color: #ffffff; + --accent-color: #ffffff; + --surface-color: #61150f; + --contrast-color: #ffffff; +} + +/* Smooth scroll */ +:root { + scroll-behavior: smooth; +} + +/*-------------------------------------------------------------- +# General Styling & Shared Classes +--------------------------------------------------------------*/ +body { + color: var(--default-color); + background-color: var(--background-color); + font-family: var(--default-font); +} + +a { + color: var(--accent-color); + text-decoration: none; + transition: 0.3s; +} + +a:hover { + color: color-mix(in srgb, var(--accent-color), transparent 25%); + text-decoration: none; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: var(--heading-color); + font-family: var(--heading-font); +} + +/* PHP Email Form Messages +------------------------------*/ +.php-email-form .error-message { + display: none; + background: #df1529; + color: #ffffff; + text-align: left; + padding: 15px; + margin-bottom: 24px; + font-weight: 600; +} + +.php-email-form .sent-message { + display: none; + color: #ffffff; + background: #059652; + text-align: center; + padding: 15px; + margin-bottom: 24px; + font-weight: 600; +} + +.php-email-form .loading { + display: none; + background: var(--surface-color); + text-align: center; + padding: 15px; + margin-bottom: 24px; +} + +.php-email-form .loading:before { + content: ""; + display: inline-block; + border-radius: 50%; + width: 24px; + height: 24px; + margin: 0 10px -6px 0; + border: 3px solid var(--accent-color); + border-top-color: var(--surface-color); + animation: php-email-form-loading 1s linear infinite; +} + +@keyframes php-email-form-loading { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +/*-------------------------------------------------------------- +# Global Header +--------------------------------------------------------------*/ +.header { + --background-color: #000000; + --default-color: #ffffff; + --heading-color: #ffffff; + color: var(--default-color); + background-color: var(--background-color); + padding: 20px 0; + transition: all 0.5s; + z-index: 997; +} + +.header .logo { + line-height: 1; +} + +.header .logo img { + max-height: 32px; + margin-right: 8px; +} + +.header .logo h1 { + font-size: 30px; + margin: 0; + font-weight: 700; + color: var(--heading-color); +} + +.scrolled .header { + box-shadow: 0px 0 18px rgba(0, 0, 0, 0.1); +} + +/*-------------------------------------------------------------- +# Navigation Menu +--------------------------------------------------------------*/ +/* Desktop Navigation */ +@media (min-width: 1200px) { + .navmenu { + padding: 0; + } + + .navmenu ul { + margin: 0; + padding: 0; + display: flex; + list-style: none; + align-items: center; + } + + .navmenu li { + position: relative; + } + + .navmenu>ul>li { + white-space: nowrap; + padding: 15px 14px; + } + + .navmenu>ul>li:last-child { + padding-right: 0; + } + + .navmenu a, + .navmenu a:focus { + color: var(--nav-color); + font-size: 15px; + padding: 0 2px; + font-family: var(--nav-font); + font-weight: 400; + display: flex; + align-items: center; + justify-content: space-between; + white-space: nowrap; + transition: 0.3s; + position: relative; + } + + .navmenu a i, + .navmenu a:focus i { + font-size: 12px; + line-height: 0; + margin-left: 5px; + transition: 0.3s; + } + + .navmenu>ul>li>a:before { + content: ""; + position: absolute; + width: 100%; + height: 2px; + bottom: -6px; + left: 0; + background-color: var(--nav-hover-color); + visibility: hidden; + width: 0px; + transition: all 0.3s ease-in-out 0s; + } + + .navmenu a:hover:before, + .navmenu li:hover>a:before, + .navmenu .active:before { + visibility: visible; + width: 100%; + } + + .navmenu li:hover>a, + .navmenu .active, + .navmenu .active:focus { + color: var(--nav-hover-color); + } + + .navmenu .dropdown ul { + margin: 0; + padding: 10px 0; + background: var(--nav-dropdown-background-color); + display: block; + position: absolute; + visibility: hidden; + left: 14px; + top: 130%; + opacity: 0; + transition: 0.3s; + border-radius: 4px; + z-index: 99; + box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1); + } + + .navmenu .dropdown ul li { + min-width: 200px; + } + + .navmenu .dropdown ul a { + padding: 10px 20px; + font-size: 15px; + text-transform: none; + color: var(--nav-dropdown-color); + } + + .navmenu .dropdown ul a i { + font-size: 12px; + } + + .navmenu .dropdown ul a:hover, + .navmenu .dropdown ul .active:hover, + .navmenu .dropdown ul li:hover>a { + color: var(--nav-dropdown-hover-color); + } + + .navmenu .dropdown:hover>ul { + opacity: 1; + top: 100%; + visibility: visible; + } + + .navmenu .dropdown .dropdown ul { + top: 0; + left: -90%; + visibility: hidden; + } + + .navmenu .dropdown .dropdown:hover>ul { + opacity: 1; + top: 0; + left: -100%; + visibility: visible; + } +} + +/* Mobile Navigation */ +@media (max-width: 1199px) { + .mobile-nav-toggle { + color: var(--nav-color); + font-size: 28px; + line-height: 0; + margin-right: 10px; + cursor: pointer; + transition: color 0.3s; + } + + .navmenu { + padding: 0; + z-index: 9997; + } + + .navmenu ul { + display: none; + position: absolute; + inset: 60px 20px 20px 20px; + padding: 10px 0; + margin: 0; + border-radius: 6px; + background-color: var(--nav-mobile-background-color); + border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%); + box-shadow: none; + overflow-y: auto; + transition: 0.3s; + z-index: 9998; + } + + .navmenu a, + .navmenu a:focus { + color: var(--nav-dropdown-color); + padding: 10px 20px; + font-family: var(--nav-font); + font-size: 17px; + font-weight: 500; + display: flex; + align-items: center; + justify-content: space-between; + white-space: nowrap; + transition: 0.3s; + } + + .navmenu a i, + .navmenu a:focus i { + font-size: 12px; + line-height: 0; + margin-left: 5px; + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: 0.3s; + background-color: color-mix(in srgb, var(--accent-color), transparent 90%); + } + + .navmenu a i:hover, + .navmenu a:focus i:hover { + background-color: var(--accent-color); + color: var(--contrast-color); + } + + .navmenu a:hover, + .navmenu .active, + .navmenu .active:focus { + color: var(--nav-dropdown-hover-color); + } + + .navmenu .active i, + .navmenu .active:focus i { + background-color: var(--accent-color); + color: var(--contrast-color); + transform: rotate(180deg); + } + + .navmenu .dropdown ul { + position: static; + display: none; + z-index: 99; + padding: 10px 0; + margin: 10px 20px; + background-color: var(--nav-dropdown-background-color); + transition: all 0.5s ease-in-out; + } + + .navmenu .dropdown ul ul { + background-color: rgba(33, 37, 41, 0.1); + } + + .navmenu .dropdown>.dropdown-active { + display: block; + background-color: rgba(33, 37, 41, 0.03); + } + + .mobile-nav-active { + overflow: hidden; + } + + .mobile-nav-active .mobile-nav-toggle { + color: #fff; + position: absolute; + font-size: 32px; + top: 15px; + right: 15px; + margin-right: 0; + z-index: 9999; + } + + .mobile-nav-active .navmenu { + position: fixed; + overflow: hidden; + inset: 0; + background: rgba(33, 37, 41, 0.8); + transition: 0.3s; + } + + .mobile-nav-active .navmenu>ul { + display: block; + } +} + +/*-------------------------------------------------------------- +# Global Footer +--------------------------------------------------------------*/ +.footer { + color: var(--default-color); + background-color: var(--background-color); + font-size: 14px; + padding: 20px 0; + position: relative; +} + +.footer .copyright p { + margin-bottom: 0; +} + +.footer .social-links { + margin-top: 20px; +} + +.footer .social-links a { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border-radius: 50%; + border: 1px solid color-mix(in srgb, var(--default-color), transparent 30%); + font-size: 16px; + color: color-mix(in srgb, var(--default-color), transparent 40%); + margin: 0 5px; + transition: 0.3s; +} + +.footer .social-links a:hover { + color: var(--default-color); + border-color: var(--default-color); +} + +.footer .credits { + margin-top: 10px; + font-size: 13px; + text-align: center; +} + +.footer .credits a { + color: color-mix(in srgb, var(--default-color), transparent 30%); +} + +/*-------------------------------------------------------------- +# Preloader +--------------------------------------------------------------*/ +#preloader { + position: fixed; + inset: 0; + z-index: 999999; + overflow: hidden; + background: var(--background-color); + transition: all 0.6s ease-out; +} + +#preloader:before { + content: ""; + position: fixed; + top: calc(50% - 30px); + left: calc(50% - 30px); + border: 6px solid #ffffff; + border-color: var(--accent-color) transparent var(--accent-color) transparent; + border-radius: 50%; + width: 60px; + height: 60px; + animation: animate-preloader 1.5s linear infinite; +} + +@keyframes animate-preloader { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +/*-------------------------------------------------------------- +# Scroll Top Button +--------------------------------------------------------------*/ +.scroll-top { + position: fixed; + visibility: hidden; + opacity: 0; + right: 15px; + bottom: -15px; + z-index: 99999; + background-color: var(--accent-color); + width: 44px; + height: 44px; + border-radius: 50px; + transition: all 0.4s; +} + +.scroll-top i { + font-size: 24px; + color: var(--contrast-color); + line-height: 0; +} + +.scroll-top:hover { + background-color: color-mix(in srgb, var(--accent-color), transparent 20%); + color: var(--contrast-color); +} + +.scroll-top.active { + visibility: visible; + opacity: 1; + bottom: 15px; +} + +/*-------------------------------------------------------------- +# Disable aos animation delay on mobile devices +--------------------------------------------------------------*/ +@media screen and (max-width: 768px) { + [data-aos-delay] { + transition-delay: 0 !important; + } +} + +/*-------------------------------------------------------------- +# Global Page Titles & Breadcrumbs +--------------------------------------------------------------*/ +.page-title { + --background-color: color-mix(in srgb, var(--default-color), transparent 96%); + color: var(--default-color); + background-color: var(--background-color); + padding: 25px 0; + position: relative; +} + +.page-title h1 { + font-size: 24px; + font-weight: 700; +} + +.page-title .breadcrumbs ol { + display: flex; + flex-wrap: wrap; + list-style: none; + padding: 0; + margin: 0; + font-size: 14px; + font-weight: 400; +} + +.page-title .breadcrumbs ol li+li { + padding-left: 10px; +} + +.page-title .breadcrumbs ol li+li::before { + content: "/"; + display: inline-block; + padding-right: 10px; + color: color-mix(in srgb, var(--default-color), transparent 70%); +} + +/*-------------------------------------------------------------- +# Global Sections +--------------------------------------------------------------*/ +section, +.section { + color: var(--default-color); + background-color: var(--background-color); + padding: 60px 0; + scroll-margin-top: 92px; + overflow: clip; +} + +@media (max-width: 1199px) { + + section, + .section { + scroll-margin-top: 76px; + } +} + +/*-------------------------------------------------------------- +# Global Section Titles +--------------------------------------------------------------*/ +.section-title { + text-align: center; + padding-bottom: 60px; + position: relative; +} + +.section-title h2 { + font-size: 32px; + font-weight: 700; + margin-bottom: 20px; + padding-bottom: 20px; + position: relative; +} + +.section-title h2:after { + content: ""; + position: absolute; + display: block; + width: 50px; + height: 3px; + background: var(--accent-color); + left: 0; + right: 0; + bottom: 0; + margin: auto; +} + +.section-title p { + margin-bottom: 0; +} + +/*-------------------------------------------------------------- +# Hero Section +--------------------------------------------------------------*/ +.hero { + width: 100%; + min-height: calc(100vh - 92px); + position: relative; + padding: 60px 0; + display: flex; + align-items: center; + justify-content: center; +} + +.hero img { + position: absolute; + inset: 0; + display: block; + width: 100%; + height: 100%; + object-fit: cover; + z-index: 1; +} + +.hero:before { + content: ""; + background: color-mix(in srgb, var(--background-color), transparent 30%); + position: absolute; + inset: 0; + z-index: 2; +} + +.hero .container { + position: relative; + z-index: 3; +} + +.hero h2 { + margin: 0; + font-size: 64px; + font-weight: 700; +} + +.hero p { + margin: 5px 0 0 0; + font-size: 36px; + font-weight: 600; +} + +.hero p span { + letter-spacing: 1px; +} + +@media (max-width: 768px) { + .hero h2 { + font-size: 32px; + } + + .hero p { + font-size: 20px; + } +} + +/*-------------------------------------------------------------- +# About Section +--------------------------------------------------------------*/ +.about .container { + background-color: var(--surface-color); + box-shadow: 0px 2px 15px rgba(0, 0, 0, 0.1); + padding: 30px; +} + +.about .skills-content h5 { + font-size: 18px; + font-weight: 700; + margin: 30px 0 15px 0; +} + +.about .progress { + height: 36px; + display: block; + background: none; + border-radius: 0; + margin-top: 15px; +} + +.about .progress .skill { + color: var(--default-color); + padding: 0; + margin: 0 0 6px 0; + text-transform: uppercase; + display: block; + font-weight: 600; + font-family: var(--heading-font); +} + +.about .progress .skill .val { + float: right; + font-style: normal; +} + +.about .progress-bar-wrap { + background: color-mix(in srgb, var(--default-color), transparent 90%); + height: 10px; +} + +.about .progress-bar { + width: 1px; + height: 10px; + transition: 0.9s; + background-color: var(--accent-color); +} + +.about .about-me h4 { + font-size: 28px; + position: relative; + padding-bottom: 10px; + margin-bottom: 30px; + font-weight: 700; +} + +.about .about-me h4:after { + content: ""; + position: absolute; + display: block; + width: 64px; + height: 3px; + background: var(--accent-color); + left: 0; + bottom: 0; + margin: auto; +} + +.about .about-me p { + font-size: 18px; +} + +/*-------------------------------------------------------------- +# Resume Section +--------------------------------------------------------------*/ +.resume .resume-title { + color: var(--heading-color); + font-size: 26px; + font-weight: 700; + margin-top: 20px; + margin-bottom: 20px; +} + +.resume .resume-item { + padding: 0 0 20px 20px; + margin-top: -2px; + border-left: 2px solid var(--accent-color); + position: relative; +} + +.resume .resume-item h4 { + line-height: 18px; + font-size: 18px; + font-weight: 600; + text-transform: uppercase; + color: color-mix(in srgb, var(--default-color), transparent 20%); + margin-bottom: 10px; +} + +.resume .resume-item h5 { + font-size: 16px; + padding: 5px 15px; + display: inline-block; + font-weight: 600; + margin-bottom: 10px; +} + +.resume .resume-item ul { + padding-left: 20px; +} + +.resume .resume-item ul li { + padding-bottom: 10px; +} + +.resume .resume-item:last-child { + padding-bottom: 0; +} + +.resume .resume-item::before { + content: ""; + position: absolute; + width: 16px; + height: 16px; + border-radius: 50px; + left: -9px; + top: 0; + background: var(--background-color); + border: 2px solid var(--accent-color); +} + +.multicert h5{ + color: color-mix(in srgb, var(--default-color), transparent 20%); +} +.multicert{ + margin-bottom: 0; +} +.multicert li{ + padding-bottom: 0 !important; +} + +.hidden { + display: none; +} + +/* Style for the clickable area with the "+" symbol */ +.toggle-symbol { + position: absolute; + width: 16px; + height: 16px; + left: -9px; /* Adjust this based on your layout */ + top: 0; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-weight: bold; + font-size: 14px; + line-height: 16px; + cursor: pointer; + border-radius: 50px; + background-color: var(--accent-color); + border: 2px solid var(--accent-color); +} + +/* Initially, show the "+" symbol */ +.toggle-symbol::before { + content: "+"; +} + +.toggle-symbol:hover{ + background-color: white; + color: var(--accent-color); + text-decoration: none; +} + +/* When the item is expanded, show the "-" symbol */ +.resume-item.open .toggle-symbol::before { + content: "-"; +} + + +/*-------------------------------------------------------------- +# Services Section +--------------------------------------------------------------*/ +.services .service-item { + background-color: var(--surface-color); + box-shadow: 0px 5px 90px 0px rgba(0, 0, 0, 0.1); + padding: 60px 30px; + transition: all ease-in-out 0.3s; + border-radius: 18px; + border-bottom: 5px solid var(--surface-color); + height: 100%; +} + +.services .service-item .icon { + color: var(--contrast-color); + background: var(--accent-color); + margin: 0; + width: 64px; + height: 64px; + border-radius: 50px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 20px; + font-size: 28px; + transition: ease-in-out 0.3s; +} + +.services .service-item h3 { + font-weight: 700; + margin: 10px 0 15px 0; + font-size: 22px; + transition: ease-in-out 0.3s; +} + +.services .service-item p { + line-height: 24px; + font-size: 14px; + margin-bottom: 0; +} + +@media (min-width: 1365px) { + .services .service-item:hover { + transform: translateY(-10px); + border-color: var(--accent-color); + } + + .services .service-item:hover h3 { + color: var(--accent-color); + } +} + +/*-------------------------------------------------------------- +# Stats Section +--------------------------------------------------------------*/ +.stats { + position: relative; + padding: 120px 0; +} + +.stats img { + position: absolute; + inset: 0; + display: block; + width: 100%; + height: 100%; + object-fit: cover; + z-index: 1; +} + +.stats:before { + content: ""; + background: color-mix(in srgb, var(--background-color), transparent 40%); + position: absolute; + inset: 0; + z-index: 2; +} + +.stats .container { + position: relative; + z-index: 3; +} + +.stats .stats-item { + padding: 30px; + width: 100%; +} + +.stats .stats-item span { + font-size: 48px; + + color: var(--default-color); + font-weight: 700; +} + +.stats .stats-item p { + padding: 0; + margin: 0; + font-family: var(--heading-font); + font-size: 16px; + font-weight: 700; + color: color-mix(in srgb, var(--default-color), transparent 40%); +} + +/*-------------------------------------------------------------- +# Portfolio Section +--------------------------------------------------------------*/ +.portfolio .portfolio-filters { + padding: 0; + margin: 0 auto 20px auto; + list-style: none; + text-align: center; +} + +.portfolio .portfolio-filters li { + cursor: pointer; + display: inline-block; + padding: 0; + font-size: 16px; + font-weight: 600; + margin: 0 10px; + line-height: 1; + text-transform: uppercase; + margin-bottom: 5px; + transition: all 0.3s ease-in-out; +} + +.portfolio .portfolio-filters li:hover, +.portfolio .portfolio-filters li.filter-active { + color: var(--accent-color); +} + +.portfolio .portfolio-filters li:first-child { + margin-left: 0; +} + +.portfolio .portfolio-filters li:last-child { + margin-right: 0; +} + +@media (max-width: 575px) { + .portfolio .portfolio-filters li { + font-size: 14px; + margin: 0 5px; + } +} + +.portfolio .portfolio-item { + position: relative; +} + +.portfolio .portfolio-item .portfolio-info { + opacity: 0; + position: absolute; + left: 30px; + right: 30px; + bottom: 0; + z-index: 3; + transition: all ease-in-out 0.3s; + background: color-mix(in srgb, var(--background-color), transparent 10%); + padding: 15px; +} + +.portfolio .portfolio-item .portfolio-info h4 { + font-size: 18px; + font-weight: 600; + padding-right: 50px; +} + +.portfolio .portfolio-item .portfolio-info p { + color: color-mix(in srgb, var(--default-color), transparent 30%); + font-size: 14px; + margin-bottom: 0; + padding-right: 50px; +} + +.portfolio .portfolio-item .portfolio-info .preview-link, +.portfolio .portfolio-item .portfolio-info .details-link { + position: absolute; + right: 50px; + font-size: 24px; + top: calc(50% - 14px); + color: color-mix(in srgb, var(--default-color), transparent 30%); + transition: 0.3s; + line-height: 0; +} + +.portfolio .portfolio-item .portfolio-info .preview-link:hover, +.portfolio .portfolio-item .portfolio-info .details-link:hover { + color: var(--accent-color); +} + +.portfolio .portfolio-item .portfolio-info .details-link { + right: 14px; + font-size: 28px; +} + +.portfolio .portfolio-item:hover .portfolio-info { + opacity: 1; + bottom: 20px; +} + +/*-------------------------------------------------------------- +# Pricing Section +--------------------------------------------------------------*/ +.pricing .pricing-item { + border-bottom: 1px dashed color-mix(in srgb, var(--default-color), transparent 60%); + width: 100%; + height: 100%; + padding: 0 0 15px 0; +} + +.pricing .pricing-item h3 { + margin: 0; + font-size: 20px; + font-weight: 600; +} + +.pricing .pricing-item h4 { + margin: 0; + font-size: 18px; + color: var(--accent-color); +} + +/*-------------------------------------------------------------- +# Faq Section +--------------------------------------------------------------*/ +.faq .content h3 { + font-weight: 400; + font-size: 34px; +} + +.faq .content p { + font-size: 15px; + color: color-mix(in srgb, var(--default-color), transparent 30%); +} + +.faq .faq-container .faq-item { + background-color: var(--surface-color); + position: relative; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.faq .faq-container .faq-item:last-child { + margin-bottom: 0; +} + +.faq .faq-container .faq-item h3 { + font-weight: 600; + font-size: 18px; + line-height: 24px; + margin: 0 30px 0 0; + transition: 0.3s; + cursor: pointer; + display: flex; + align-items: flex-start; +} + +.faq .faq-container .faq-item h3 .num { + color: var(--accent-color); + padding-right: 5px; +} + +.faq .faq-container .faq-item h3:hover { + color: var(--accent-color); +} + +.faq .faq-container .faq-item .faq-content { + display: grid; + grid-template-rows: 0fr; + transition: 0.3s ease-in-out; + visibility: hidden; + opacity: 0; +} + +.faq .faq-container .faq-item .faq-content p { + margin-bottom: 0; + overflow: hidden; +} + +.faq .faq-container .faq-item .faq-toggle { + position: absolute; + top: 20px; + right: 20px; + font-size: 16px; + line-height: 0; + transition: 0.3s; + cursor: pointer; +} + +.faq .faq-container .faq-item .faq-toggle:hover { + color: var(--accent-color); +} + +.faq .faq-container .faq-active h3 { + color: var(--accent-color); +} + +.faq .faq-container .faq-active .faq-content { + grid-template-rows: 1fr; + visibility: visible; + opacity: 1; + padding-top: 10px; +} + +.faq .faq-container .faq-active .faq-toggle { + transform: rotate(90deg); + color: var(--accent-color); +} + +/*-------------------------------------------------------------- +# Testimonials Section +--------------------------------------------------------------*/ +.testimonials { + padding: 80px 0; + position: relative; +} + +.testimonials:before { + content: ""; + background: color-mix(in srgb, var(--background-color), transparent 30%); + position: absolute; + inset: 0; + z-index: 2; +} + +.testimonials .testimonials-bg { + position: absolute; + inset: 0; + display: block; + width: 100%; + height: 100%; + object-fit: cover; + z-index: 1; +} + +.testimonials .container { + position: relative; + z-index: 3; +} + +.testimonials .testimonials-carousel, +.testimonials .testimonials-slider { + overflow: hidden; +} + +.testimonials .testimonial-item { + text-align: center; +} + +.testimonials .testimonial-item .testimonial-img { + width: 100px; + border-radius: 50%; + border: 6px solid color-mix(in srgb, var(--default-color), transparent 85%); + margin: 0 auto; +} + +.testimonials .testimonial-item h3 { + font-size: 20px; + font-weight: bold; + margin: 10px 0 5px 0; +} + +.testimonials .testimonial-item h4 { + font-size: 14px; + margin: 0 0 15px 0; + color: color-mix(in srgb, var(--default-color), transparent 40%); +} + +.testimonials .testimonial-item .stars { + margin-bottom: 15px; +} + +.testimonials .testimonial-item .stars i { + color: #ffc107; + margin: 0 1px; +} + +.testimonials .testimonial-item .quote-icon-left, +.testimonials .testimonial-item .quote-icon-right { + color: color-mix(in srgb, var(--default-color), transparent 40%); + font-size: 26px; + line-height: 0; +} + +.testimonials .testimonial-item .quote-icon-left { + display: inline-block; + left: -5px; + position: relative; +} + +.testimonials .testimonial-item .quote-icon-right { + display: inline-block; + right: -5px; + position: relative; + top: 10px; + transform: scale(-1, -1); +} + +.testimonials .testimonial-item p { + font-style: italic; + margin: 0 auto 15px auto; +} + +.testimonials .swiper-wrapper { + height: auto; +} + +.testimonials .swiper-pagination { + margin-top: 20px; + position: relative; +} + +.testimonials .swiper-pagination .swiper-pagination-bullet { + width: 12px; + height: 12px; + background-color: color-mix(in srgb, var(--default-color), transparent 50%); + opacity: 0.5; +} + +.testimonials .swiper-pagination .swiper-pagination-bullet-active { + background-color: var(--default-color); + opacity: 1; +} + +@media (min-width: 992px) { + .testimonials .testimonial-item p { + width: 80%; + } +} + +/*-------------------------------------------------------------- +# Contact Section +--------------------------------------------------------------*/ +.contact .info-wrap { + background-color: var(--surface-color); + box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1); + padding: 30px; + margin-bottom: 30px; +} + +.contact .info-item i { + font-size: 20px; + color: var(--accent-color); + width: 56px; + height: 56px; + display: flex; + justify-content: center; + align-items: center; + transition: all 0.3s ease-in-out; + border-radius: 50%; + border: 1px solid color-mix(in srgb, var(--accent-color), transparent 40%); + margin-right: 15px; +} + +.contact .info-item h3 { + font-size: 18px; + font-weight: 700; + margin: 0 0 2px 0; +} + +.contact .info-item p { + padding: 0; + margin-bottom: 0; + font-size: 14px; +} + +.contact .info-item:hover i { + background: var(--accent-color); + color: var(--contrast-color); +} + +.contact .php-email-form { + background-color: var(--surface-color); + box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1); + padding: 30px; +} + +@media (max-width: 575px) { + .contact .php-email-form { + padding: 20px; + } +} + +.contact .php-email-form input[type=text], +.contact .php-email-form input[type=email], +.contact .php-email-form textarea { + font-size: 14px; + padding: 10px 15px; + box-shadow: none; + border-radius: 0; + color: var(--default-color); + background-color: color-mix(in srgb, var(--background-color), transparent 50%); + border-color: color-mix(in srgb, var(--default-color), transparent 80%); +} + +.contact .php-email-form input[type=text]:focus, +.contact .php-email-form input[type=email]:focus, +.contact .php-email-form textarea:focus { + border-color: var(--accent-color); +} + +.contact .php-email-form input[type=text]::placeholder, +.contact .php-email-form input[type=email]::placeholder, +.contact .php-email-form textarea::placeholder { + color: color-mix(in srgb, var(--default-color), transparent 70%); +} + +.contact .php-email-form button[type=submit] { + color: var(--contrast-color); + background: var(--accent-color); + border: 0; + padding: 10px 30px; + transition: 0.4s; + border-radius: 50px; +} + +.contact .php-email-form button[type=submit]:hover { + background: color-mix(in srgb, var(--accent-color), transparent 20%); +} + +/*-------------------------------------------------------------- +# Portfolio Details Section +--------------------------------------------------------------*/ +.portfolio-details .portfolio-details-slider img { + width: 100%; +} + +.portfolio-details .swiper-wrapper { + height: auto; +} + +.portfolio-details .swiper-button-prev, +.portfolio-details .swiper-button-next { + width: 48px; + height: 48px; +} + +.portfolio-details .swiper-button-prev:after, +.portfolio-details .swiper-button-next:after { + color: rgba(255, 255, 255, 0.8); + background-color: rgba(0, 0, 0, 0.15); + font-size: 24px; + border-radius: 50%; + width: 48px; + height: 48px; + display: flex; + align-items: center; + justify-content: center; + transition: 0.3s; +} + +.portfolio-details .swiper-button-prev:hover:after, +.portfolio-details .swiper-button-next:hover:after { + background-color: rgba(0, 0, 0, 0.3); +} + +@media (max-width: 575px) { + + .portfolio-details .swiper-button-prev, + .portfolio-details .swiper-button-next { + display: none; + } +} + +.portfolio-details .swiper-pagination { + margin-top: 20px; + position: relative; +} + +.portfolio-details .swiper-pagination .swiper-pagination-bullet { + width: 10px; + height: 10px; + background-color: color-mix(in srgb, var(--default-color), transparent 85%); + opacity: 1; +} + +.portfolio-details .swiper-pagination .swiper-pagination-bullet-active { + background-color: var(--accent-color); +} + +.portfolio-details .portfolio-info h3 { + font-size: 22px; + font-weight: 700; + margin-bottom: 20px; + padding-bottom: 20px; + position: relative; +} + +.portfolio-details .portfolio-info h3:after { + content: ""; + position: absolute; + display: block; + width: 50px; + height: 3px; + background: var(--accent-color); + left: 0; + bottom: 0; +} + +.portfolio-details .portfolio-info ul { + list-style: none; + padding: 0; + font-size: 15px; +} + +.portfolio-details .portfolio-info ul li { + display: flex; + flex-direction: column; + padding-bottom: 15px; +} + +.portfolio-details .portfolio-info ul strong { + text-transform: uppercase; + font-weight: 400; + color: color-mix(in srgb, var(--default-color), transparent 50%); + font-size: 14px; +} + +.portfolio-details .portfolio-info .btn-visit { + padding: 8px 40px; + background: var(--accent-color); + color: var(--contrast-color); + border-radius: 50px; + transition: 0.3s; +} + +.portfolio-details .portfolio-info .btn-visit:hover { + background: color-mix(in srgb, var(--accent-color), transparent 20%); +} + +.portfolio-details .portfolio-description h2 { + font-size: 26px; + font-weight: 700; + margin-bottom: 20px; +} + +.portfolio-details .portfolio-description p { + padding: 0; +} + +.portfolio-details .portfolio-description .testimonial-item { + padding: 30px 30px 0 30px; + position: relative; + background: color-mix(in srgb, var(--default-color), transparent 97%); + margin-bottom: 50px; +} + +.portfolio-details .portfolio-description .testimonial-item .testimonial-img { + width: 90px; + border-radius: 50px; + border: 6px solid var(--background-color); + float: left; + margin: 0 10px 0 0; +} + +.portfolio-details .portfolio-description .testimonial-item h3 { + font-size: 18px; + font-weight: bold; + margin: 15px 0 5px 0; + padding-top: 20px; +} + +.portfolio-details .portfolio-description .testimonial-item h4 { + font-size: 14px; + color: #6c757d; + margin: 0; +} + +.portfolio-details .portfolio-description .testimonial-item .quote-icon-left, +.portfolio-details .portfolio-description .testimonial-item .quote-icon-right { + color: color-mix(in srgb, var(--accent-color), transparent 50%); + font-size: 26px; + line-height: 0; +} + +.portfolio-details .portfolio-description .testimonial-item .quote-icon-left { + display: inline-block; + left: -5px; + position: relative; +} + +.portfolio-details .portfolio-description .testimonial-item .quote-icon-right { + display: inline-block; + right: -5px; + position: relative; + top: 10px; + transform: scale(-1, -1); +} + +.portfolio-details .portfolio-description .testimonial-item p { + font-style: italic; + margin: 0 0 15px 0 0 0; + padding: 0; +} + +/*-------------------------------------------------------------- +# Service Details Section +--------------------------------------------------------------*/ +.service-details .services-list { + background-color: var(--surface-color); + padding: 10px 30px; + border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%); + margin-bottom: 20px; +} + +.service-details .services-list a { + display: block; + line-height: 1; + padding: 8px 0 8px 15px; + border-left: 3px solid color-mix(in srgb, var(--default-color), transparent 70%); + margin: 20px 0; + color: color-mix(in srgb, var(--default-color), transparent 20%); + transition: 0.3s; +} + +.service-details .services-list a.active { + color: var(--heading-color); + font-weight: 700; + border-color: var(--accent-color); +} + +.service-details .services-list a:hover { + border-color: var(--accent-color); +} + +.service-details .services-img { + margin-bottom: 20px; +} + +.service-details h3 { + font-size: 26px; + font-weight: 700; +} + +.service-details h4 { + font-size: 20px; + font-weight: 700; +} + +.service-details p { + font-size: 15px; +} + +.service-details ul { + list-style: none; + padding: 0; + font-size: 15px; +} + +.service-details ul li { + padding: 5px 0; + display: flex; + align-items: center; +} + +.service-details ul i { + font-size: 20px; + margin-right: 8px; + color: var(--accent-color); +} + +/*-------------------------------------------------------------- +# Starter Section Section +--------------------------------------------------------------*/ +.starter-section { + /* Add your styles here */ +} \ No newline at end of file diff --git a/jirikarlik/static/assets/extra_icons/api.svg b/jirikarlik/static/assets/extra_icons/api.svg new file mode 100644 index 0000000..d6a0988 --- /dev/null +++ b/jirikarlik/static/assets/extra_icons/api.svg @@ -0,0 +1,54 @@ + + + \ No newline at end of file diff --git a/jirikarlik/static/assets/extra_icons/c_sharp.svg b/jirikarlik/static/assets/extra_icons/c_sharp.svg new file mode 100644 index 0000000..c023aa9 --- /dev/null +++ b/jirikarlik/static/assets/extra_icons/c_sharp.svg @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/jirikarlik/static/assets/extra_icons/ci-cd.svg b/jirikarlik/static/assets/extra_icons/ci-cd.svg new file mode 100644 index 0000000..8df14c9 --- /dev/null +++ b/jirikarlik/static/assets/extra_icons/ci-cd.svg @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/jirikarlik/static/assets/extra_icons/godot.svg b/jirikarlik/static/assets/extra_icons/godot.svg new file mode 100644 index 0000000..1daefc1 --- /dev/null +++ b/jirikarlik/static/assets/extra_icons/godot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jirikarlik/static/assets/img/Screenshot 2024-07-11 113240.png b/jirikarlik/static/assets/img/Screenshot 2024-07-11 113240.png new file mode 100644 index 0000000..489974c Binary files /dev/null and b/jirikarlik/static/assets/img/Screenshot 2024-07-11 113240.png differ diff --git a/jirikarlik/static/assets/img/apple-touch-icon.png b/jirikarlik/static/assets/img/apple-touch-icon.png new file mode 100644 index 0000000..fbdc8f7 Binary files /dev/null and b/jirikarlik/static/assets/img/apple-touch-icon.png differ diff --git a/jirikarlik/static/assets/img/favicon.png b/jirikarlik/static/assets/img/favicon.png new file mode 100644 index 0000000..8196882 Binary files /dev/null and b/jirikarlik/static/assets/img/favicon.png differ diff --git a/jirikarlik/static/assets/img/hero-img.jpg b/jirikarlik/static/assets/img/hero-img.jpg new file mode 100644 index 0000000..d2f5b45 Binary files /dev/null and b/jirikarlik/static/assets/img/hero-img.jpg differ diff --git a/jirikarlik/static/assets/img/logo.png b/jirikarlik/static/assets/img/logo.png new file mode 100644 index 0000000..71cbbd8 Binary files /dev/null and b/jirikarlik/static/assets/img/logo.png differ diff --git a/jirikarlik/static/assets/img/portfolio/app-1.jpg b/jirikarlik/static/assets/img/portfolio/app-1.jpg new file mode 100644 index 0000000..9c81393 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/app-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/app-2.jpg b/jirikarlik/static/assets/img/portfolio/app-2.jpg new file mode 100644 index 0000000..4d2f058 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/app-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/app-3.jpg b/jirikarlik/static/assets/img/portfolio/app-3.jpg new file mode 100644 index 0000000..3338cbd Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/app-3.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/books-1.jpg b/jirikarlik/static/assets/img/portfolio/books-1.jpg new file mode 100644 index 0000000..601d2ec Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/books-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/books-2.jpg b/jirikarlik/static/assets/img/portfolio/books-2.jpg new file mode 100644 index 0000000..97dad98 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/books-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/books-3.jpg b/jirikarlik/static/assets/img/portfolio/books-3.jpg new file mode 100644 index 0000000..4b9326b Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/books-3.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/branding-1.jpg b/jirikarlik/static/assets/img/portfolio/branding-1.jpg new file mode 100644 index 0000000..edb6ede Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/branding-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/branding-2.jpg b/jirikarlik/static/assets/img/portfolio/branding-2.jpg new file mode 100644 index 0000000..b361349 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/branding-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/branding-3.jpg b/jirikarlik/static/assets/img/portfolio/branding-3.jpg new file mode 100644 index 0000000..5e3a8c2 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/branding-3.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi1/example-1.jpg b/jirikarlik/static/assets/img/portfolio/pi1/example-1.jpg new file mode 100644 index 0000000..63eaaf5 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi1/example-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi1/example-2.jpg b/jirikarlik/static/assets/img/portfolio/pi1/example-2.jpg new file mode 100644 index 0000000..be5ba66 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi1/example-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi1/example-3.jpg b/jirikarlik/static/assets/img/portfolio/pi1/example-3.jpg new file mode 100644 index 0000000..2c36497 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi1/example-3.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi1/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi1/logo.jpg new file mode 100644 index 0000000..ace5217 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi1/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi2/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi2/logo.jpg new file mode 100644 index 0000000..a39f0e3 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi2/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi3/example-1.jpg b/jirikarlik/static/assets/img/portfolio/pi3/example-1.jpg new file mode 100644 index 0000000..7177c7b Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi3/example-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi3/example-2.jpg b/jirikarlik/static/assets/img/portfolio/pi3/example-2.jpg new file mode 100644 index 0000000..a5f7dae Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi3/example-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi3/example-3.jpg b/jirikarlik/static/assets/img/portfolio/pi3/example-3.jpg new file mode 100644 index 0000000..6a32395 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi3/example-3.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi3/example-4.jpg b/jirikarlik/static/assets/img/portfolio/pi3/example-4.jpg new file mode 100644 index 0000000..7659cb9 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi3/example-4.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi3/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi3/logo.jpg new file mode 100644 index 0000000..dfd54cc Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi3/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi4/example-1.jpg b/jirikarlik/static/assets/img/portfolio/pi4/example-1.jpg new file mode 100644 index 0000000..2a149a4 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi4/example-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi4/example-2.jpg b/jirikarlik/static/assets/img/portfolio/pi4/example-2.jpg new file mode 100644 index 0000000..d2ff399 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi4/example-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi4/example-3.jpg b/jirikarlik/static/assets/img/portfolio/pi4/example-3.jpg new file mode 100644 index 0000000..732e164 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi4/example-3.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi4/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi4/logo.jpg new file mode 100644 index 0000000..fbd7ac6 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi4/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi5/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi5/logo.jpg new file mode 100644 index 0000000..1e556e9 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi5/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi6/example-1.jpg b/jirikarlik/static/assets/img/portfolio/pi6/example-1.jpg new file mode 100644 index 0000000..049b715 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi6/example-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi6/example-2.jpg b/jirikarlik/static/assets/img/portfolio/pi6/example-2.jpg new file mode 100644 index 0000000..b6fe392 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi6/example-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi6/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi6/logo.jpg new file mode 100644 index 0000000..e7b5b7d Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi6/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi7/example-1.jpg b/jirikarlik/static/assets/img/portfolio/pi7/example-1.jpg new file mode 100644 index 0000000..a8f8107 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi7/example-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi7/example-2.jpg b/jirikarlik/static/assets/img/portfolio/pi7/example-2.jpg new file mode 100644 index 0000000..0f99c70 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi7/example-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi7/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi7/logo.jpg new file mode 100644 index 0000000..f7bafe8 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi7/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi9/example-1.jpg b/jirikarlik/static/assets/img/portfolio/pi9/example-1.jpg new file mode 100644 index 0000000..1e99954 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi9/example-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/pi9/logo.jpg b/jirikarlik/static/assets/img/portfolio/pi9/logo.jpg new file mode 100644 index 0000000..385f2e3 Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/pi9/logo.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/product-1.jpg b/jirikarlik/static/assets/img/portfolio/product-1.jpg new file mode 100644 index 0000000..b8605bd Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/product-1.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/product-2.jpg b/jirikarlik/static/assets/img/portfolio/product-2.jpg new file mode 100644 index 0000000..05075aa Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/product-2.jpg differ diff --git a/jirikarlik/static/assets/img/portfolio/product-3.jpg b/jirikarlik/static/assets/img/portfolio/product-3.jpg new file mode 100644 index 0000000..e58467f Binary files /dev/null and b/jirikarlik/static/assets/img/portfolio/product-3.jpg differ diff --git a/jirikarlik/static/assets/img/profile-img.jpg b/jirikarlik/static/assets/img/profile-img.jpg new file mode 100644 index 0000000..ce64e2e Binary files /dev/null and b/jirikarlik/static/assets/img/profile-img.jpg differ diff --git a/jirikarlik/static/assets/img/services.jpg b/jirikarlik/static/assets/img/services.jpg new file mode 100644 index 0000000..674784d Binary files /dev/null and b/jirikarlik/static/assets/img/services.jpg differ diff --git a/jirikarlik/static/assets/img/stats-bg.jpg b/jirikarlik/static/assets/img/stats-bg.jpg new file mode 100644 index 0000000..54eff48 Binary files /dev/null and b/jirikarlik/static/assets/img/stats-bg.jpg differ diff --git a/jirikarlik/static/assets/img/testimonials-bg.jpg b/jirikarlik/static/assets/img/testimonials-bg.jpg new file mode 100644 index 0000000..b504507 Binary files /dev/null and b/jirikarlik/static/assets/img/testimonials-bg.jpg differ diff --git a/jirikarlik/static/assets/img/testimonials/testimonials-1.jpg b/jirikarlik/static/assets/img/testimonials/testimonials-1.jpg new file mode 100644 index 0000000..8346740 Binary files /dev/null and b/jirikarlik/static/assets/img/testimonials/testimonials-1.jpg differ diff --git a/jirikarlik/static/assets/img/testimonials/testimonials-2.jpg b/jirikarlik/static/assets/img/testimonials/testimonials-2.jpg new file mode 100644 index 0000000..9205a65 Binary files /dev/null and b/jirikarlik/static/assets/img/testimonials/testimonials-2.jpg differ diff --git a/jirikarlik/static/assets/img/testimonials/testimonials-3.jpg b/jirikarlik/static/assets/img/testimonials/testimonials-3.jpg new file mode 100644 index 0000000..ac819ca Binary files /dev/null and b/jirikarlik/static/assets/img/testimonials/testimonials-3.jpg differ diff --git a/jirikarlik/static/assets/img/testimonials/testimonials-4.jpg b/jirikarlik/static/assets/img/testimonials/testimonials-4.jpg new file mode 100644 index 0000000..6595cee Binary files /dev/null and b/jirikarlik/static/assets/img/testimonials/testimonials-4.jpg differ diff --git a/jirikarlik/static/assets/img/testimonials/testimonials-5.jpg b/jirikarlik/static/assets/img/testimonials/testimonials-5.jpg new file mode 100644 index 0000000..cb0a641 Binary files /dev/null and b/jirikarlik/static/assets/img/testimonials/testimonials-5.jpg differ diff --git a/jirikarlik/static/assets/js/main.js b/jirikarlik/static/assets/js/main.js new file mode 100644 index 0000000..647f94c --- /dev/null +++ b/jirikarlik/static/assets/js/main.js @@ -0,0 +1,264 @@ +/** +* Template Name: DevFolio +* Template URL: https://bootstrapmade.com/devfolio-bootstrap-portfolio-html-template/ +* Updated: Jun 29 2024 with Bootstrap v5.3.3 +* Author: BootstrapMade.com +* License: https://bootstrapmade.com/license/ +*/ + +(function() { + "use strict"; + + /** + * Apply .scrolled class to the body as the page is scrolled down + */ + function toggleScrolled() { + const selectBody = document.querySelector('body'); + const selectHeader = document.querySelector('#header'); + if (!selectHeader.classList.contains('scroll-up-sticky') && !selectHeader.classList.contains('sticky-top') && !selectHeader.classList.contains('fixed-top')) return; + window.scrollY > 100 ? selectBody.classList.add('scrolled') : selectBody.classList.remove('scrolled'); + } + + document.addEventListener('scroll', toggleScrolled); + window.addEventListener('load', toggleScrolled); + + /** + * Mobile nav toggle + */ + const mobileNavToggleBtn = document.querySelector('.mobile-nav-toggle'); + + function mobileNavToogle() { + document.querySelector('body').classList.toggle('mobile-nav-active'); + mobileNavToggleBtn.classList.toggle('bi-list'); + mobileNavToggleBtn.classList.toggle('bi-x'); + } + mobileNavToggleBtn.addEventListener('click', mobileNavToogle); + + /** + * Hide mobile nav on same-page/hash links + */ + document.querySelectorAll('#navmenu a').forEach(navmenu => { + navmenu.addEventListener('click', () => { + if (document.querySelector('.mobile-nav-active')) { + mobileNavToogle(); + } + }); + + }); + + /** + * Toggle mobile nav dropdowns + */ + document.querySelectorAll('.navmenu .toggle-dropdown').forEach(navmenu => { + navmenu.addEventListener('click', function(e) { + e.preventDefault(); + this.parentNode.classList.toggle('active'); + this.parentNode.nextElementSibling.classList.toggle('dropdown-active'); + e.stopImmediatePropagation(); + }); + }); + + /** + * Preloader + */ + const preloader = document.querySelector('#preloader'); + if (preloader) { + window.addEventListener('load', () => { + preloader.remove(); + }); + } + + /** + * Scroll top button + */ + let scrollTop = document.querySelector('.scroll-top'); + + function toggleScrollTop() { + if (scrollTop) { + window.scrollY > 100 ? scrollTop.classList.add('active') : scrollTop.classList.remove('active'); + } + } + scrollTop.addEventListener('click', (e) => { + e.preventDefault(); + window.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }); + + window.addEventListener('load', toggleScrollTop); + document.addEventListener('scroll', toggleScrollTop); + + /** + * Animation on scroll function and init + */ + function aosInit() { + AOS.init({ + duration: 600, + easing: 'ease-in-out', + once: true, + mirror: false + }); + } + window.addEventListener('load', aosInit); + + /** + * Init typed.js + */ + const selectTyped = document.querySelector('.typed'); + if (selectTyped) { + let typed_strings = selectTyped.getAttribute('data-typed-items'); + typed_strings = typed_strings.split(','); + new Typed('.typed', { + strings: typed_strings, + loop: true, + typeSpeed: 100, + backSpeed: 50, + backDelay: 2000 + }); + } + + /** + * Animate the skills items on reveal + */ + let skillsAnimation = document.querySelectorAll('.skills-animation'); + skillsAnimation.forEach((item) => { + new Waypoint({ + element: item, + offset: '80%', + handler: function(direction) { + let progress = item.querySelectorAll('.progress .progress-bar'); + progress.forEach(el => { + el.style.width = el.getAttribute('aria-valuenow') + '%'; + }); + } + }); + }); + + /** + * Initiate Pure Counter + */ + new PureCounter(); + + /** + * Init isotope layout and filters + */ + document.querySelectorAll('.isotope-layout').forEach(function(isotopeItem) { + let layout = isotopeItem.getAttribute('data-layout') ?? 'masonry'; + let filter = isotopeItem.getAttribute('data-default-filter') ?? '*'; + let sort = isotopeItem.getAttribute('data-sort') ?? 'original-order'; + + let initIsotope; + imagesLoaded(isotopeItem.querySelector('.isotope-container'), function() { + initIsotope = new Isotope(isotopeItem.querySelector('.isotope-container'), { + itemSelector: '.isotope-item', + layoutMode: layout, + filter: filter, + sortBy: sort + }); + }); + + isotopeItem.querySelectorAll('.isotope-filters li').forEach(function(filters) { + filters.addEventListener('click', function() { + isotopeItem.querySelector('.isotope-filters .filter-active').classList.remove('filter-active'); + this.classList.add('filter-active'); + initIsotope.arrange({ + filter: this.getAttribute('data-filter') + }); + if (typeof aosInit === 'function') { + aosInit(); + } + }, false); + }); + + }); + + /** + * Frequently Asked Questions Toggle + */ + document.querySelectorAll('.faq-item h3, .faq-item .faq-toggle').forEach((faqItem) => { + faqItem.addEventListener('click', () => { + faqItem.parentNode.classList.toggle('faq-active'); + }); + }); + + /** + * Init swiper sliders + */ + function initSwiper() { + document.querySelectorAll(".init-swiper").forEach(function(swiperElement) { + let config = JSON.parse( + swiperElement.querySelector(".swiper-config").innerHTML.trim() + ); + + if (swiperElement.classList.contains("swiper-tab")) { + initSwiperWithCustomPagination(swiperElement, config); + } else { + new Swiper(swiperElement, config); + } + }); + } + + window.addEventListener("load", initSwiper); + + /** + * Correct scrolling position upon page load for URLs containing hash links. + */ + window.addEventListener('load', function(e) { + if (window.location.hash) { + if (document.querySelector(window.location.hash)) { + setTimeout(() => { + let section = document.querySelector(window.location.hash); + let scrollMarginTop = getComputedStyle(section).scrollMarginTop; + window.scrollTo({ + top: section.offsetTop - parseInt(scrollMarginTop), + behavior: 'smooth' + }); + }, 100); + } + } + }); + + /** + * Navmenu Scrollspy + */ + let navmenulinks = document.querySelectorAll('.navmenu a'); + + function navmenuScrollspy() { + navmenulinks.forEach(navmenulink => { + if (!navmenulink.hash) return; + let section = document.querySelector(navmenulink.hash); + if (!section) return; + let position = window.scrollY + 200; + if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) { + document.querySelectorAll('.navmenu a.active').forEach(link => link.classList.remove('active')); + navmenulink.classList.add('active'); + } else { + navmenulink.classList.remove('active'); + } + }) + } + window.addEventListener('load', navmenuScrollspy); + document.addEventListener('scroll', navmenuScrollspy); + +})(); + +document.addEventListener('DOMContentLoaded', function() { + var toggles = document.querySelectorAll('.toggle-certificates, .toggle-symbol'); + + toggles.forEach(function(toggle) { + toggle.addEventListener('click', function() { + var resumeItem = this.closest('.resume-item'); + var certList = resumeItem.querySelector('.multicert'); + + if (certList.classList.contains('hidden')) { + certList.classList.remove('hidden'); + resumeItem.classList.add('open'); + } else { + certList.classList.add('hidden'); + resumeItem.classList.remove('open'); + } + }); + }); +}); + diff --git a/jirikarlik/static/assets/scss/Readme.txt b/jirikarlik/static/assets/scss/Readme.txt new file mode 100644 index 0000000..9f02663 --- /dev/null +++ b/jirikarlik/static/assets/scss/Readme.txt @@ -0,0 +1,2 @@ +The .scss (Sass) files are only available in the pro version. +You can buy it from: https://bootstrapmade.com/devfolio-bootstrap-portfolio-html-template/ \ No newline at end of file diff --git a/jirikarlik/static/assets/vendor/aos/aos.cjs.js b/jirikarlik/static/assets/vendor/aos/aos.cjs.js new file mode 100644 index 0000000..86119ba --- /dev/null +++ b/jirikarlik/static/assets/vendor/aos/aos.cjs.js @@ -0,0 +1,614 @@ +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var throttle = _interopDefault(require('lodash.throttle')); +var debounce = _interopDefault(require('lodash.debounce')); + +var callback = function callback() {}; + +function containsAOSNode(nodes) { + var i = void 0, + currentNode = void 0, + result = void 0; + + for (i = 0; i < nodes.length; i += 1) { + currentNode = nodes[i]; + + if (currentNode.dataset && currentNode.dataset.aos) { + return true; + } + + result = currentNode.children && containsAOSNode(currentNode.children); + + if (result) { + return true; + } + } + + return false; +} + +function check(mutations) { + if (!mutations) return; + + mutations.forEach(function (mutation) { + var addedNodes = Array.prototype.slice.call(mutation.addedNodes); + var removedNodes = Array.prototype.slice.call(mutation.removedNodes); + var allNodes = addedNodes.concat(removedNodes); + + if (containsAOSNode(allNodes)) { + return callback(); + } + }); +} + +function getMutationObserver() { + return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; +} + +function isSupported() { + return !!getMutationObserver(); +} + +function ready(selector, fn) { + var doc = window.document; + var MutationObserver = getMutationObserver(); + + var observer = new MutationObserver(check); + callback = fn; + + observer.observe(doc.documentElement, { + childList: true, + subtree: true, + removedNodes: true + }); +} + +var observer = { isSupported: isSupported, ready: ready }; + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +/** + * Device detector + */ + +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; +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; +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; +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; + +function ua() { + return navigator.userAgent || navigator.vendor || window.opera || ''; +} + +var Detector = function () { + function Detector() { + classCallCheck(this, Detector); + } + + createClass(Detector, [{ + key: 'phone', + value: function phone() { + var a = ua(); + return !!(fullNameRe.test(a) || prefixRe.test(a.substr(0, 4))); + } + }, { + key: 'mobile', + value: function mobile() { + var a = ua(); + return !!(fullNameMobileRe.test(a) || prefixMobileRe.test(a.substr(0, 4))); + } + }, { + key: 'tablet', + value: function tablet() { + return this.mobile() && !this.phone(); + } + + // http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c + + }, { + key: 'ie11', + value: function ie11() { + return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style; + } + }]); + return Detector; +}(); + +var detect = new Detector(); + +/** + * Adds multiple classes on node + * @param {DOMNode} node + * @param {array} classes + */ +var addClasses = function addClasses(node, classes) { + return classes && classes.forEach(function (className) { + return node.classList.add(className); + }); +}; + +/** + * Removes multiple classes from node + * @param {DOMNode} node + * @param {array} classes + */ +var removeClasses = function removeClasses(node, classes) { + return classes && classes.forEach(function (className) { + return node.classList.remove(className); + }); +}; + +var fireEvent = function fireEvent(eventName, data) { + var customEvent = void 0; + + if (detect.ie11()) { + customEvent = document.createEvent('CustomEvent'); + customEvent.initCustomEvent(eventName, true, true, { detail: data }); + } else { + customEvent = new CustomEvent(eventName, { + detail: data + }); + } + + return document.dispatchEvent(customEvent); +}; + +/** + * Set or remove aos-animate class + * @param {node} el element + * @param {int} top scrolled distance + */ +var applyClasses = function applyClasses(el, top) { + var options = el.options, + position = el.position, + node = el.node, + data = el.data; + + + var hide = function hide() { + if (!el.animated) return; + + removeClasses(node, options.animatedClassNames); + fireEvent('aos:out', node); + + if (el.options.id) { + fireEvent('aos:in:' + el.options.id, node); + } + + el.animated = false; + }; + + var show = function show() { + if (el.animated) return; + + addClasses(node, options.animatedClassNames); + + fireEvent('aos:in', node); + if (el.options.id) { + fireEvent('aos:in:' + el.options.id, node); + } + + el.animated = true; + }; + + if (options.mirror && top >= position.out && !options.once) { + hide(); + } else if (top >= position.in) { + show(); + } else if (el.animated && !options.once) { + hide(); + } +}; + +/** + * Scroll logic - add or remove 'aos-animate' class on scroll + * + * @param {array} $elements array of elements nodes + * @return {void} + */ +var handleScroll = function handleScroll($elements) { + return $elements.forEach(function (el, i) { + return applyClasses(el, window.pageYOffset); + }); +}; + +/** + * Get offset of DOM element + * like there were no transforms applied on it + * + * @param {Node} el [DOM element] + * @return {Object} [top and left offset] + */ +var offset = function offset(el) { + var _x = 0; + var _y = 0; + + while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) { + _x += el.offsetLeft - (el.tagName != 'BODY' ? el.scrollLeft : 0); + _y += el.offsetTop - (el.tagName != 'BODY' ? el.scrollTop : 0); + el = el.offsetParent; + } + + return { + top: _y, + left: _x + }; +}; + +/** + * Get inline option with a fallback. + * + * @param {Node} el [Dom element] + * @param {String} key [Option key] + * @param {String} fallback [Default (fallback) value] + * @return {Mixed} [Option set with inline attributes or fallback value if not set] + */ + +var getInlineOption = (function (el, key, fallback) { + var attr = el.getAttribute('data-aos-' + key); + + if (typeof attr !== 'undefined') { + if (attr === 'true') { + return true; + } else if (attr === 'false') { + return false; + } + } + + return attr || fallback; +}); + +/** + * Calculate offset + * basing on element's settings like: + * - anchor + * - offset + * + * @param {Node} el [Dom element] + * @return {Integer} [Final offset that will be used to trigger animation in good position] + */ + +var getPositionIn = function getPositionIn(el, defaultOffset, defaultAnchorPlacement) { + var windowHeight = window.innerHeight; + var anchor = getInlineOption(el, 'anchor'); + var inlineAnchorPlacement = getInlineOption(el, 'anchor-placement'); + var additionalOffset = Number(getInlineOption(el, 'offset', inlineAnchorPlacement ? 0 : defaultOffset)); + var anchorPlacement = inlineAnchorPlacement || defaultAnchorPlacement; + var finalEl = el; + + if (anchor && document.querySelectorAll(anchor)) { + finalEl = document.querySelectorAll(anchor)[0]; + } + + var triggerPoint = offset(finalEl).top - windowHeight; + + switch (anchorPlacement) { + case 'top-bottom': + // Default offset + break; + case 'center-bottom': + triggerPoint += finalEl.offsetHeight / 2; + break; + case 'bottom-bottom': + triggerPoint += finalEl.offsetHeight; + break; + case 'top-center': + triggerPoint += windowHeight / 2; + break; + case 'center-center': + triggerPoint += windowHeight / 2 + finalEl.offsetHeight / 2; + break; + case 'bottom-center': + triggerPoint += windowHeight / 2 + finalEl.offsetHeight; + break; + case 'top-top': + triggerPoint += windowHeight; + break; + case 'bottom-top': + triggerPoint += windowHeight + finalEl.offsetHeight; + break; + case 'center-top': + triggerPoint += windowHeight + finalEl.offsetHeight / 2; + break; + } + + return triggerPoint + additionalOffset; +}; + +var getPositionOut = function getPositionOut(el, defaultOffset) { + var windowHeight = window.innerHeight; + var anchor = getInlineOption(el, 'anchor'); + var additionalOffset = getInlineOption(el, 'offset', defaultOffset); + var finalEl = el; + + if (anchor && document.querySelectorAll(anchor)) { + finalEl = document.querySelectorAll(anchor)[0]; + } + + var elementOffsetTop = offset(finalEl).top; + + return elementOffsetTop + finalEl.offsetHeight - additionalOffset; +}; + +/* Clearing variables */ + +var prepare = function prepare($elements, options) { + $elements.forEach(function (el, i) { + var mirror = getInlineOption(el.node, 'mirror', options.mirror); + var once = getInlineOption(el.node, 'once', options.once); + var id = getInlineOption(el.node, 'id'); + var customClassNames = options.useClassNames && el.node.getAttribute('data-aos'); + + var animatedClassNames = [options.animatedClassName].concat(customClassNames ? customClassNames.split(' ') : []).filter(function (className) { + return typeof className === 'string'; + }); + + if (options.initClassName) { + el.node.classList.add(options.initClassName); + } + + el.position = { + in: getPositionIn(el.node, options.offset, options.anchorPlacement), + out: mirror && getPositionOut(el.node, options.offset) + }; + + el.options = { + once: once, + mirror: mirror, + animatedClassNames: animatedClassNames, + id: id + }; + }); + + return $elements; +}; + +/** + * Generate initial array with elements as objects + * This array will be extended later with elements attributes values + * like 'position' + */ +var elements = (function () { + var elements = document.querySelectorAll('[data-aos]'); + return Array.prototype.map.call(elements, function (node) { + return { node: node }; + }); +}); + +/** + * ******************************************************* + * AOS (Animate on scroll) - wowjs alternative + * made to animate elements on scroll in both directions + * ******************************************************* + */ + +/** + * Private variables + */ +var $aosElements = []; +var initialized = false; + +/** + * Default options + */ +var options = { + offset: 120, + delay: 0, + easing: 'ease', + duration: 400, + disable: false, + once: false, + mirror: false, + anchorPlacement: 'top-bottom', + startEvent: 'DOMContentLoaded', + animatedClassName: 'aos-animate', + initClassName: 'aos-init', + useClassNames: false, + disableMutationObserver: false, + throttleDelay: 99, + debounceDelay: 50 +}; + +// Detect not supported browsers (<=IE9) +// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 +var isBrowserNotSupported = function isBrowserNotSupported() { + return document.all && !window.atob; +}; + +var initializeScroll = function initializeScroll() { + // Extend elements objects in $aosElements with their positions + $aosElements = prepare($aosElements, options); + // Perform scroll event, to refresh view and show/hide elements + handleScroll($aosElements); + + /** + * Handle scroll event to animate elements on scroll + */ + window.addEventListener('scroll', throttle(function () { + handleScroll($aosElements, options.once); + }, options.throttleDelay)); + + return $aosElements; +}; + +/** + * Refresh AOS + */ +var refresh = function refresh() { + var initialize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + // Allow refresh only when it was first initialized on startEvent + if (initialize) initialized = true; + if (initialized) initializeScroll(); +}; + +/** + * Hard refresh + * create array with new elements and trigger refresh + */ +var refreshHard = function refreshHard() { + $aosElements = elements(); + + if (isDisabled(options.disable) || isBrowserNotSupported()) { + return disable(); + } + + refresh(); +}; + +/** + * Disable AOS + * Remove all attributes to reset applied styles + */ +var disable = function disable() { + $aosElements.forEach(function (el, i) { + el.node.removeAttribute('data-aos'); + el.node.removeAttribute('data-aos-easing'); + el.node.removeAttribute('data-aos-duration'); + el.node.removeAttribute('data-aos-delay'); + + if (options.initClassName) { + el.node.classList.remove(options.initClassName); + } + + if (options.animatedClassName) { + el.node.classList.remove(options.animatedClassName); + } + }); +}; + +/** + * Check if AOS should be disabled based on provided setting + */ +var isDisabled = function isDisabled(optionDisable) { + return optionDisable === true || optionDisable === 'mobile' && detect.mobile() || optionDisable === 'phone' && detect.phone() || optionDisable === 'tablet' && detect.tablet() || typeof optionDisable === 'function' && optionDisable() === true; +}; + +/** + * Initializing AOS + * - Create options merging defaults with user defined options + * - Set attributes on
as global setting - css relies on it + * - Attach preparing elements to options.startEvent, + * window resize and orientation change + * - Attach function that handle scroll and everything connected to it + * to window scroll event and fire once document is ready to set initial state + */ +var init = function init(settings) { + options = _extends(options, settings); + + // Create initial array with elements -> to be fullfilled later with prepare() + $aosElements = elements(); + + /** + * Disable mutation observing if not supported + */ + if (!options.disableMutationObserver && !observer.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 '); + options.disableMutationObserver = true; + } + + /** + * Observe [aos] elements + * If something is loaded by AJAX + * it'll refresh plugin automatically + */ + if (!options.disableMutationObserver) { + observer.ready('[data-aos]', refreshHard); + } + + /** + * Don't init plugin if option `disable` is set + * or when browser is not supported + */ + if (isDisabled(options.disable) || isBrowserNotSupported()) { + return disable(); + } + + /** + * Set global settings on body, based on options + * so CSS can use it + */ + document.querySelector('body').setAttribute('data-aos-easing', options.easing); + + document.querySelector('body').setAttribute('data-aos-duration', options.duration); + + document.querySelector('body').setAttribute('data-aos-delay', options.delay); + + /** + * Handle initializing + */ + if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) { + // Listen to options.startEvent and initialize AOS + document.addEventListener(options.startEvent, function () { + refresh(true); + }); + } else { + window.addEventListener('load', function () { + refresh(true); + }); + } + + if (options.startEvent === 'DOMContentLoaded' && ['complete', 'interactive'].indexOf(document.readyState) > -1) { + // Initialize AOS if default startEvent was already fired + refresh(true); + } + + /** + * Refresh plugin on window resize or orientation change + */ + window.addEventListener('resize', debounce(refresh, options.debounceDelay, true)); + + window.addEventListener('orientationchange', debounce(refresh, options.debounceDelay, true)); + + return $aosElements; +}; + +/** + * Export Public API + */ + +var aos = { + init: init, + refresh: refresh, + refreshHard: refreshHard +}; + +module.exports = aos; diff --git a/jirikarlik/static/assets/vendor/aos/aos.css b/jirikarlik/static/assets/vendor/aos/aos.css new file mode 100644 index 0000000..2e1a9be --- /dev/null +++ b/jirikarlik/static/assets/vendor/aos/aos.css @@ -0,0 +1 @@ +[data-aos][data-aos][data-aos-duration="50"],body[data-aos-duration="50"] [data-aos]{transition-duration:50ms}[data-aos][data-aos][data-aos-delay="50"],body[data-aos-delay="50"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="50"].aos-animate,body[data-aos-delay="50"] [data-aos].aos-animate{transition-delay:50ms}[data-aos][data-aos][data-aos-duration="100"],body[data-aos-duration="100"] [data-aos]{transition-duration:.1s}[data-aos][data-aos][data-aos-delay="100"],body[data-aos-delay="100"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="100"].aos-animate,body[data-aos-delay="100"] [data-aos].aos-animate{transition-delay:.1s}[data-aos][data-aos][data-aos-duration="150"],body[data-aos-duration="150"] [data-aos]{transition-duration:.15s}[data-aos][data-aos][data-aos-delay="150"],body[data-aos-delay="150"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="150"].aos-animate,body[data-aos-delay="150"] [data-aos].aos-animate{transition-delay:.15s}[data-aos][data-aos][data-aos-duration="200"],body[data-aos-duration="200"] [data-aos]{transition-duration:.2s}[data-aos][data-aos][data-aos-delay="200"],body[data-aos-delay="200"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="200"].aos-animate,body[data-aos-delay="200"] [data-aos].aos-animate{transition-delay:.2s}[data-aos][data-aos][data-aos-duration="250"],body[data-aos-duration="250"] [data-aos]{transition-duration:.25s}[data-aos][data-aos][data-aos-delay="250"],body[data-aos-delay="250"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="250"].aos-animate,body[data-aos-delay="250"] [data-aos].aos-animate{transition-delay:.25s}[data-aos][data-aos][data-aos-duration="300"],body[data-aos-duration="300"] [data-aos]{transition-duration:.3s}[data-aos][data-aos][data-aos-delay="300"],body[data-aos-delay="300"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="300"].aos-animate,body[data-aos-delay="300"] [data-aos].aos-animate{transition-delay:.3s}[data-aos][data-aos][data-aos-duration="350"],body[data-aos-duration="350"] [data-aos]{transition-duration:.35s}[data-aos][data-aos][data-aos-delay="350"],body[data-aos-delay="350"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="350"].aos-animate,body[data-aos-delay="350"] [data-aos].aos-animate{transition-delay:.35s}[data-aos][data-aos][data-aos-duration="400"],body[data-aos-duration="400"] [data-aos]{transition-duration:.4s}[data-aos][data-aos][data-aos-delay="400"],body[data-aos-delay="400"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="400"].aos-animate,body[data-aos-delay="400"] [data-aos].aos-animate{transition-delay:.4s}[data-aos][data-aos][data-aos-duration="450"],body[data-aos-duration="450"] [data-aos]{transition-duration:.45s}[data-aos][data-aos][data-aos-delay="450"],body[data-aos-delay="450"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="450"].aos-animate,body[data-aos-delay="450"] [data-aos].aos-animate{transition-delay:.45s}[data-aos][data-aos][data-aos-duration="500"],body[data-aos-duration="500"] [data-aos]{transition-duration:.5s}[data-aos][data-aos][data-aos-delay="500"],body[data-aos-delay="500"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="500"].aos-animate,body[data-aos-delay="500"] [data-aos].aos-animate{transition-delay:.5s}[data-aos][data-aos][data-aos-duration="550"],body[data-aos-duration="550"] [data-aos]{transition-duration:.55s}[data-aos][data-aos][data-aos-delay="550"],body[data-aos-delay="550"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="550"].aos-animate,body[data-aos-delay="550"] [data-aos].aos-animate{transition-delay:.55s}[data-aos][data-aos][data-aos-duration="600"],body[data-aos-duration="600"] [data-aos]{transition-duration:.6s}[data-aos][data-aos][data-aos-delay="600"],body[data-aos-delay="600"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="600"].aos-animate,body[data-aos-delay="600"] [data-aos].aos-animate{transition-delay:.6s}[data-aos][data-aos][data-aos-duration="650"],body[data-aos-duration="650"] [data-aos]{transition-duration:.65s}[data-aos][data-aos][data-aos-delay="650"],body[data-aos-delay="650"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="650"].aos-animate,body[data-aos-delay="650"] [data-aos].aos-animate{transition-delay:.65s}[data-aos][data-aos][data-aos-duration="700"],body[data-aos-duration="700"] [data-aos]{transition-duration:.7s}[data-aos][data-aos][data-aos-delay="700"],body[data-aos-delay="700"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="700"].aos-animate,body[data-aos-delay="700"] [data-aos].aos-animate{transition-delay:.7s}[data-aos][data-aos][data-aos-duration="750"],body[data-aos-duration="750"] [data-aos]{transition-duration:.75s}[data-aos][data-aos][data-aos-delay="750"],body[data-aos-delay="750"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="750"].aos-animate,body[data-aos-delay="750"] [data-aos].aos-animate{transition-delay:.75s}[data-aos][data-aos][data-aos-duration="800"],body[data-aos-duration="800"] [data-aos]{transition-duration:.8s}[data-aos][data-aos][data-aos-delay="800"],body[data-aos-delay="800"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="800"].aos-animate,body[data-aos-delay="800"] [data-aos].aos-animate{transition-delay:.8s}[data-aos][data-aos][data-aos-duration="850"],body[data-aos-duration="850"] [data-aos]{transition-duration:.85s}[data-aos][data-aos][data-aos-delay="850"],body[data-aos-delay="850"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="850"].aos-animate,body[data-aos-delay="850"] [data-aos].aos-animate{transition-delay:.85s}[data-aos][data-aos][data-aos-duration="900"],body[data-aos-duration="900"] [data-aos]{transition-duration:.9s}[data-aos][data-aos][data-aos-delay="900"],body[data-aos-delay="900"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="900"].aos-animate,body[data-aos-delay="900"] [data-aos].aos-animate{transition-delay:.9s}[data-aos][data-aos][data-aos-duration="950"],body[data-aos-duration="950"] [data-aos]{transition-duration:.95s}[data-aos][data-aos][data-aos-delay="950"],body[data-aos-delay="950"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="950"].aos-animate,body[data-aos-delay="950"] [data-aos].aos-animate{transition-delay:.95s}[data-aos][data-aos][data-aos-duration="1000"],body[data-aos-duration="1000"] [data-aos]{transition-duration:1s}[data-aos][data-aos][data-aos-delay="1000"],body[data-aos-delay="1000"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1000"].aos-animate,body[data-aos-delay="1000"] [data-aos].aos-animate{transition-delay:1s}[data-aos][data-aos][data-aos-duration="1050"],body[data-aos-duration="1050"] [data-aos]{transition-duration:1.05s}[data-aos][data-aos][data-aos-delay="1050"],body[data-aos-delay="1050"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1050"].aos-animate,body[data-aos-delay="1050"] [data-aos].aos-animate{transition-delay:1.05s}[data-aos][data-aos][data-aos-duration="1100"],body[data-aos-duration="1100"] [data-aos]{transition-duration:1.1s}[data-aos][data-aos][data-aos-delay="1100"],body[data-aos-delay="1100"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1100"].aos-animate,body[data-aos-delay="1100"] [data-aos].aos-animate{transition-delay:1.1s}[data-aos][data-aos][data-aos-duration="1150"],body[data-aos-duration="1150"] [data-aos]{transition-duration:1.15s}[data-aos][data-aos][data-aos-delay="1150"],body[data-aos-delay="1150"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1150"].aos-animate,body[data-aos-delay="1150"] [data-aos].aos-animate{transition-delay:1.15s}[data-aos][data-aos][data-aos-duration="1200"],body[data-aos-duration="1200"] [data-aos]{transition-duration:1.2s}[data-aos][data-aos][data-aos-delay="1200"],body[data-aos-delay="1200"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1200"].aos-animate,body[data-aos-delay="1200"] [data-aos].aos-animate{transition-delay:1.2s}[data-aos][data-aos][data-aos-duration="1250"],body[data-aos-duration="1250"] [data-aos]{transition-duration:1.25s}[data-aos][data-aos][data-aos-delay="1250"],body[data-aos-delay="1250"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1250"].aos-animate,body[data-aos-delay="1250"] [data-aos].aos-animate{transition-delay:1.25s}[data-aos][data-aos][data-aos-duration="1300"],body[data-aos-duration="1300"] [data-aos]{transition-duration:1.3s}[data-aos][data-aos][data-aos-delay="1300"],body[data-aos-delay="1300"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1300"].aos-animate,body[data-aos-delay="1300"] [data-aos].aos-animate{transition-delay:1.3s}[data-aos][data-aos][data-aos-duration="1350"],body[data-aos-duration="1350"] [data-aos]{transition-duration:1.35s}[data-aos][data-aos][data-aos-delay="1350"],body[data-aos-delay="1350"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1350"].aos-animate,body[data-aos-delay="1350"] [data-aos].aos-animate{transition-delay:1.35s}[data-aos][data-aos][data-aos-duration="1400"],body[data-aos-duration="1400"] [data-aos]{transition-duration:1.4s}[data-aos][data-aos][data-aos-delay="1400"],body[data-aos-delay="1400"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1400"].aos-animate,body[data-aos-delay="1400"] [data-aos].aos-animate{transition-delay:1.4s}[data-aos][data-aos][data-aos-duration="1450"],body[data-aos-duration="1450"] [data-aos]{transition-duration:1.45s}[data-aos][data-aos][data-aos-delay="1450"],body[data-aos-delay="1450"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1450"].aos-animate,body[data-aos-delay="1450"] [data-aos].aos-animate{transition-delay:1.45s}[data-aos][data-aos][data-aos-duration="1500"],body[data-aos-duration="1500"] [data-aos]{transition-duration:1.5s}[data-aos][data-aos][data-aos-delay="1500"],body[data-aos-delay="1500"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1500"].aos-animate,body[data-aos-delay="1500"] [data-aos].aos-animate{transition-delay:1.5s}[data-aos][data-aos][data-aos-duration="1550"],body[data-aos-duration="1550"] [data-aos]{transition-duration:1.55s}[data-aos][data-aos][data-aos-delay="1550"],body[data-aos-delay="1550"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1550"].aos-animate,body[data-aos-delay="1550"] [data-aos].aos-animate{transition-delay:1.55s}[data-aos][data-aos][data-aos-duration="1600"],body[data-aos-duration="1600"] [data-aos]{transition-duration:1.6s}[data-aos][data-aos][data-aos-delay="1600"],body[data-aos-delay="1600"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1600"].aos-animate,body[data-aos-delay="1600"] [data-aos].aos-animate{transition-delay:1.6s}[data-aos][data-aos][data-aos-duration="1650"],body[data-aos-duration="1650"] [data-aos]{transition-duration:1.65s}[data-aos][data-aos][data-aos-delay="1650"],body[data-aos-delay="1650"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1650"].aos-animate,body[data-aos-delay="1650"] [data-aos].aos-animate{transition-delay:1.65s}[data-aos][data-aos][data-aos-duration="1700"],body[data-aos-duration="1700"] [data-aos]{transition-duration:1.7s}[data-aos][data-aos][data-aos-delay="1700"],body[data-aos-delay="1700"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1700"].aos-animate,body[data-aos-delay="1700"] [data-aos].aos-animate{transition-delay:1.7s}[data-aos][data-aos][data-aos-duration="1750"],body[data-aos-duration="1750"] [data-aos]{transition-duration:1.75s}[data-aos][data-aos][data-aos-delay="1750"],body[data-aos-delay="1750"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1750"].aos-animate,body[data-aos-delay="1750"] [data-aos].aos-animate{transition-delay:1.75s}[data-aos][data-aos][data-aos-duration="1800"],body[data-aos-duration="1800"] [data-aos]{transition-duration:1.8s}[data-aos][data-aos][data-aos-delay="1800"],body[data-aos-delay="1800"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1800"].aos-animate,body[data-aos-delay="1800"] [data-aos].aos-animate{transition-delay:1.8s}[data-aos][data-aos][data-aos-duration="1850"],body[data-aos-duration="1850"] [data-aos]{transition-duration:1.85s}[data-aos][data-aos][data-aos-delay="1850"],body[data-aos-delay="1850"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1850"].aos-animate,body[data-aos-delay="1850"] [data-aos].aos-animate{transition-delay:1.85s}[data-aos][data-aos][data-aos-duration="1900"],body[data-aos-duration="1900"] [data-aos]{transition-duration:1.9s}[data-aos][data-aos][data-aos-delay="1900"],body[data-aos-delay="1900"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1900"].aos-animate,body[data-aos-delay="1900"] [data-aos].aos-animate{transition-delay:1.9s}[data-aos][data-aos][data-aos-duration="1950"],body[data-aos-duration="1950"] [data-aos]{transition-duration:1.95s}[data-aos][data-aos][data-aos-delay="1950"],body[data-aos-delay="1950"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="1950"].aos-animate,body[data-aos-delay="1950"] [data-aos].aos-animate{transition-delay:1.95s}[data-aos][data-aos][data-aos-duration="2000"],body[data-aos-duration="2000"] [data-aos]{transition-duration:2s}[data-aos][data-aos][data-aos-delay="2000"],body[data-aos-delay="2000"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2000"].aos-animate,body[data-aos-delay="2000"] [data-aos].aos-animate{transition-delay:2s}[data-aos][data-aos][data-aos-duration="2050"],body[data-aos-duration="2050"] [data-aos]{transition-duration:2.05s}[data-aos][data-aos][data-aos-delay="2050"],body[data-aos-delay="2050"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2050"].aos-animate,body[data-aos-delay="2050"] [data-aos].aos-animate{transition-delay:2.05s}[data-aos][data-aos][data-aos-duration="2100"],body[data-aos-duration="2100"] [data-aos]{transition-duration:2.1s}[data-aos][data-aos][data-aos-delay="2100"],body[data-aos-delay="2100"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2100"].aos-animate,body[data-aos-delay="2100"] [data-aos].aos-animate{transition-delay:2.1s}[data-aos][data-aos][data-aos-duration="2150"],body[data-aos-duration="2150"] [data-aos]{transition-duration:2.15s}[data-aos][data-aos][data-aos-delay="2150"],body[data-aos-delay="2150"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2150"].aos-animate,body[data-aos-delay="2150"] [data-aos].aos-animate{transition-delay:2.15s}[data-aos][data-aos][data-aos-duration="2200"],body[data-aos-duration="2200"] [data-aos]{transition-duration:2.2s}[data-aos][data-aos][data-aos-delay="2200"],body[data-aos-delay="2200"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2200"].aos-animate,body[data-aos-delay="2200"] [data-aos].aos-animate{transition-delay:2.2s}[data-aos][data-aos][data-aos-duration="2250"],body[data-aos-duration="2250"] [data-aos]{transition-duration:2.25s}[data-aos][data-aos][data-aos-delay="2250"],body[data-aos-delay="2250"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2250"].aos-animate,body[data-aos-delay="2250"] [data-aos].aos-animate{transition-delay:2.25s}[data-aos][data-aos][data-aos-duration="2300"],body[data-aos-duration="2300"] [data-aos]{transition-duration:2.3s}[data-aos][data-aos][data-aos-delay="2300"],body[data-aos-delay="2300"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2300"].aos-animate,body[data-aos-delay="2300"] [data-aos].aos-animate{transition-delay:2.3s}[data-aos][data-aos][data-aos-duration="2350"],body[data-aos-duration="2350"] [data-aos]{transition-duration:2.35s}[data-aos][data-aos][data-aos-delay="2350"],body[data-aos-delay="2350"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2350"].aos-animate,body[data-aos-delay="2350"] [data-aos].aos-animate{transition-delay:2.35s}[data-aos][data-aos][data-aos-duration="2400"],body[data-aos-duration="2400"] [data-aos]{transition-duration:2.4s}[data-aos][data-aos][data-aos-delay="2400"],body[data-aos-delay="2400"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2400"].aos-animate,body[data-aos-delay="2400"] [data-aos].aos-animate{transition-delay:2.4s}[data-aos][data-aos][data-aos-duration="2450"],body[data-aos-duration="2450"] [data-aos]{transition-duration:2.45s}[data-aos][data-aos][data-aos-delay="2450"],body[data-aos-delay="2450"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2450"].aos-animate,body[data-aos-delay="2450"] [data-aos].aos-animate{transition-delay:2.45s}[data-aos][data-aos][data-aos-duration="2500"],body[data-aos-duration="2500"] [data-aos]{transition-duration:2.5s}[data-aos][data-aos][data-aos-delay="2500"],body[data-aos-delay="2500"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2500"].aos-animate,body[data-aos-delay="2500"] [data-aos].aos-animate{transition-delay:2.5s}[data-aos][data-aos][data-aos-duration="2550"],body[data-aos-duration="2550"] [data-aos]{transition-duration:2.55s}[data-aos][data-aos][data-aos-delay="2550"],body[data-aos-delay="2550"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2550"].aos-animate,body[data-aos-delay="2550"] [data-aos].aos-animate{transition-delay:2.55s}[data-aos][data-aos][data-aos-duration="2600"],body[data-aos-duration="2600"] [data-aos]{transition-duration:2.6s}[data-aos][data-aos][data-aos-delay="2600"],body[data-aos-delay="2600"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2600"].aos-animate,body[data-aos-delay="2600"] [data-aos].aos-animate{transition-delay:2.6s}[data-aos][data-aos][data-aos-duration="2650"],body[data-aos-duration="2650"] [data-aos]{transition-duration:2.65s}[data-aos][data-aos][data-aos-delay="2650"],body[data-aos-delay="2650"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2650"].aos-animate,body[data-aos-delay="2650"] [data-aos].aos-animate{transition-delay:2.65s}[data-aos][data-aos][data-aos-duration="2700"],body[data-aos-duration="2700"] [data-aos]{transition-duration:2.7s}[data-aos][data-aos][data-aos-delay="2700"],body[data-aos-delay="2700"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2700"].aos-animate,body[data-aos-delay="2700"] [data-aos].aos-animate{transition-delay:2.7s}[data-aos][data-aos][data-aos-duration="2750"],body[data-aos-duration="2750"] [data-aos]{transition-duration:2.75s}[data-aos][data-aos][data-aos-delay="2750"],body[data-aos-delay="2750"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2750"].aos-animate,body[data-aos-delay="2750"] [data-aos].aos-animate{transition-delay:2.75s}[data-aos][data-aos][data-aos-duration="2800"],body[data-aos-duration="2800"] [data-aos]{transition-duration:2.8s}[data-aos][data-aos][data-aos-delay="2800"],body[data-aos-delay="2800"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2800"].aos-animate,body[data-aos-delay="2800"] [data-aos].aos-animate{transition-delay:2.8s}[data-aos][data-aos][data-aos-duration="2850"],body[data-aos-duration="2850"] [data-aos]{transition-duration:2.85s}[data-aos][data-aos][data-aos-delay="2850"],body[data-aos-delay="2850"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2850"].aos-animate,body[data-aos-delay="2850"] [data-aos].aos-animate{transition-delay:2.85s}[data-aos][data-aos][data-aos-duration="2900"],body[data-aos-duration="2900"] [data-aos]{transition-duration:2.9s}[data-aos][data-aos][data-aos-delay="2900"],body[data-aos-delay="2900"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2900"].aos-animate,body[data-aos-delay="2900"] [data-aos].aos-animate{transition-delay:2.9s}[data-aos][data-aos][data-aos-duration="2950"],body[data-aos-duration="2950"] [data-aos]{transition-duration:2.95s}[data-aos][data-aos][data-aos-delay="2950"],body[data-aos-delay="2950"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="2950"].aos-animate,body[data-aos-delay="2950"] [data-aos].aos-animate{transition-delay:2.95s}[data-aos][data-aos][data-aos-duration="3000"],body[data-aos-duration="3000"] [data-aos]{transition-duration:3s}[data-aos][data-aos][data-aos-delay="3000"],body[data-aos-delay="3000"] [data-aos]{transition-delay:0s}[data-aos][data-aos][data-aos-delay="3000"].aos-animate,body[data-aos-delay="3000"] [data-aos].aos-animate{transition-delay:3s}[data-aos]{pointer-events:none}[data-aos].aos-animate{pointer-events:auto}[data-aos][data-aos][data-aos-easing=linear],body[data-aos-easing=linear] [data-aos]{transition-timing-function:cubic-bezier(.25,.25,.75,.75)}[data-aos][data-aos][data-aos-easing=ease],body[data-aos-easing=ease] [data-aos]{transition-timing-function:ease}[data-aos][data-aos][data-aos-easing=ease-in],body[data-aos-easing=ease-in] [data-aos]{transition-timing-function:ease-in}[data-aos][data-aos][data-aos-easing=ease-out],body[data-aos-easing=ease-out] [data-aos]{transition-timing-function:ease-out}[data-aos][data-aos][data-aos-easing=ease-in-out],body[data-aos-easing=ease-in-out] [data-aos]{transition-timing-function:ease-in-out}[data-aos][data-aos][data-aos-easing=ease-in-back],body[data-aos-easing=ease-in-back] [data-aos]{transition-timing-function:cubic-bezier(.6,-.28,.735,.045)}[data-aos][data-aos][data-aos-easing=ease-out-back],body[data-aos-easing=ease-out-back] [data-aos]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}[data-aos][data-aos][data-aos-easing=ease-in-out-back],body[data-aos-easing=ease-in-out-back] [data-aos]{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}[data-aos][data-aos][data-aos-easing=ease-in-sine],body[data-aos-easing=ease-in-sine] [data-aos]{transition-timing-function:cubic-bezier(.47,0,.745,.715)}[data-aos][data-aos][data-aos-easing=ease-out-sine],body[data-aos-easing=ease-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.39,.575,.565,1)}[data-aos][data-aos][data-aos-easing=ease-in-out-sine],body[data-aos-easing=ease-in-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.445,.05,.55,.95)}[data-aos][data-aos][data-aos-easing=ease-in-quad],body[data-aos-easing=ease-in-quad] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quad],body[data-aos-easing=ease-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quad],body[data-aos-easing=ease-in-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-cubic],body[data-aos-easing=ease-in-cubic] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-cubic],body[data-aos-easing=ease-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-cubic],body[data-aos-easing=ease-in-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-quart],body[data-aos-easing=ease-in-quart] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quart],body[data-aos-easing=ease-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quart],body[data-aos-easing=ease-in-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}@media screen{html:not(.no-js) [data-aos^=fade][data-aos^=fade]{opacity:0;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}html:not(.no-js) [data-aos^=fade][data-aos^=fade].aos-animate{opacity:1;-webkit-transform:none;transform:none}html:not(.no-js) [data-aos=fade-up]{-webkit-transform:translate3d(0,100px,0);transform:translate3d(0,100px,0)}html:not(.no-js) [data-aos=fade-down]{-webkit-transform:translate3d(0,-100px,0);transform:translate3d(0,-100px,0)}html:not(.no-js) [data-aos=fade-right]{-webkit-transform:translate3d(-100px,0,0);transform:translate3d(-100px,0,0)}html:not(.no-js) [data-aos=fade-left]{-webkit-transform:translate3d(100px,0,0);transform:translate3d(100px,0,0)}html:not(.no-js) [data-aos=fade-up-right]{-webkit-transform:translate3d(-100px,100px,0);transform:translate3d(-100px,100px,0)}html:not(.no-js) [data-aos=fade-up-left]{-webkit-transform:translate3d(100px,100px,0);transform:translate3d(100px,100px,0)}html:not(.no-js) [data-aos=fade-down-right]{-webkit-transform:translate3d(-100px,-100px,0);transform:translate3d(-100px,-100px,0)}html:not(.no-js) [data-aos=fade-down-left]{-webkit-transform:translate3d(100px,-100px,0);transform:translate3d(100px,-100px,0)}html:not(.no-js) [data-aos^=zoom][data-aos^=zoom]{opacity:0;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}html:not(.no-js) [data-aos^=zoom][data-aos^=zoom].aos-animate{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}html:not(.no-js) [data-aos=zoom-in]{-webkit-transform:scale(.6);transform:scale(.6)}html:not(.no-js) [data-aos=zoom-in-up]{-webkit-transform:translate3d(0,100px,0) scale(.6);transform:translate3d(0,100px,0) scale(.6)}html:not(.no-js) [data-aos=zoom-in-down]{-webkit-transform:translate3d(0,-100px,0) scale(.6);transform:translate3d(0,-100px,0) scale(.6)}html:not(.no-js) [data-aos=zoom-in-right]{-webkit-transform:translate3d(-100px,0,0) scale(.6);transform:translate3d(-100px,0,0) scale(.6)}html:not(.no-js) [data-aos=zoom-in-left]{-webkit-transform:translate3d(100px,0,0) scale(.6);transform:translate3d(100px,0,0) scale(.6)}html:not(.no-js) [data-aos=zoom-out]{-webkit-transform:scale(1.2);transform:scale(1.2)}html:not(.no-js) [data-aos=zoom-out-up]{-webkit-transform:translate3d(0,100px,0) scale(1.2);transform:translate3d(0,100px,0) scale(1.2)}html:not(.no-js) [data-aos=zoom-out-down]{-webkit-transform:translate3d(0,-100px,0) scale(1.2);transform:translate3d(0,-100px,0) scale(1.2)}html:not(.no-js) [data-aos=zoom-out-right]{-webkit-transform:translate3d(-100px,0,0) scale(1.2);transform:translate3d(-100px,0,0) scale(1.2)}html:not(.no-js) [data-aos=zoom-out-left]{-webkit-transform:translate3d(100px,0,0) scale(1.2);transform:translate3d(100px,0,0) scale(1.2)}html:not(.no-js) [data-aos^=slide][data-aos^=slide]{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;visibility:hidden}html:not(.no-js) [data-aos^=slide][data-aos^=slide].aos-animate{visibility:visible;-webkit-transform:translateZ(0);transform:translateZ(0)}html:not(.no-js) [data-aos=slide-up]{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}html:not(.no-js) [data-aos=slide-down]{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}html:not(.no-js) [data-aos=slide-right]{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}html:not(.no-js) [data-aos=slide-left]{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}html:not(.no-js) [data-aos^=flip][data-aos^=flip]{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}html:not(.no-js) [data-aos=flip-left]{-webkit-transform:perspective(2500px) rotateY(-100deg);transform:perspective(2500px) rotateY(-100deg)}html:not(.no-js) [data-aos=flip-left].aos-animate{-webkit-transform:perspective(2500px) rotateY(0);transform:perspective(2500px) rotateY(0)}html:not(.no-js) [data-aos=flip-right]{-webkit-transform:perspective(2500px) rotateY(100deg);transform:perspective(2500px) rotateY(100deg)}html:not(.no-js) [data-aos=flip-right].aos-animate{-webkit-transform:perspective(2500px) rotateY(0);transform:perspective(2500px) rotateY(0)}html:not(.no-js) [data-aos=flip-up]{-webkit-transform:perspective(2500px) rotateX(-100deg);transform:perspective(2500px) rotateX(-100deg)}html:not(.no-js) [data-aos=flip-up].aos-animate{-webkit-transform:perspective(2500px) rotateX(0);transform:perspective(2500px) rotateX(0)}html:not(.no-js) [data-aos=flip-down]{-webkit-transform:perspective(2500px) rotateX(100deg);transform:perspective(2500px) rotateX(100deg)}html:not(.no-js) [data-aos=flip-down].aos-animate{-webkit-transform:perspective(2500px) rotateX(0);transform:perspective(2500px) rotateX(0)}} \ No newline at end of file diff --git a/jirikarlik/static/assets/vendor/aos/aos.esm.js b/jirikarlik/static/assets/vendor/aos/aos.esm.js new file mode 100644 index 0000000..d5597d4 --- /dev/null +++ b/jirikarlik/static/assets/vendor/aos/aos.esm.js @@ -0,0 +1,610 @@ +import throttle from 'lodash.throttle'; +import debounce from 'lodash.debounce'; + +var callback = function callback() {}; + +function containsAOSNode(nodes) { + var i = void 0, + currentNode = void 0, + result = void 0; + + for (i = 0; i < nodes.length; i += 1) { + currentNode = nodes[i]; + + if (currentNode.dataset && currentNode.dataset.aos) { + return true; + } + + result = currentNode.children && containsAOSNode(currentNode.children); + + if (result) { + return true; + } + } + + return false; +} + +function check(mutations) { + if (!mutations) return; + + mutations.forEach(function (mutation) { + var addedNodes = Array.prototype.slice.call(mutation.addedNodes); + var removedNodes = Array.prototype.slice.call(mutation.removedNodes); + var allNodes = addedNodes.concat(removedNodes); + + if (containsAOSNode(allNodes)) { + return callback(); + } + }); +} + +function getMutationObserver() { + return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; +} + +function isSupported() { + return !!getMutationObserver(); +} + +function ready(selector, fn) { + var doc = window.document; + var MutationObserver = getMutationObserver(); + + var observer = new MutationObserver(check); + callback = fn; + + observer.observe(doc.documentElement, { + childList: true, + subtree: true, + removedNodes: true + }); +} + +var observer = { isSupported: isSupported, ready: ready }; + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +/** + * Device detector + */ + +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; +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; +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; +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; + +function ua() { + return navigator.userAgent || navigator.vendor || window.opera || ''; +} + +var Detector = function () { + function Detector() { + classCallCheck(this, Detector); + } + + createClass(Detector, [{ + key: 'phone', + value: function phone() { + var a = ua(); + return !!(fullNameRe.test(a) || prefixRe.test(a.substr(0, 4))); + } + }, { + key: 'mobile', + value: function mobile() { + var a = ua(); + return !!(fullNameMobileRe.test(a) || prefixMobileRe.test(a.substr(0, 4))); + } + }, { + key: 'tablet', + value: function tablet() { + return this.mobile() && !this.phone(); + } + + // http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c + + }, { + key: 'ie11', + value: function ie11() { + return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style; + } + }]); + return Detector; +}(); + +var detect = new Detector(); + +/** + * Adds multiple classes on node + * @param {DOMNode} node + * @param {array} classes + */ +var addClasses = function addClasses(node, classes) { + return classes && classes.forEach(function (className) { + return node.classList.add(className); + }); +}; + +/** + * Removes multiple classes from node + * @param {DOMNode} node + * @param {array} classes + */ +var removeClasses = function removeClasses(node, classes) { + return classes && classes.forEach(function (className) { + return node.classList.remove(className); + }); +}; + +var fireEvent = function fireEvent(eventName, data) { + var customEvent = void 0; + + if (detect.ie11()) { + customEvent = document.createEvent('CustomEvent'); + customEvent.initCustomEvent(eventName, true, true, { detail: data }); + } else { + customEvent = new CustomEvent(eventName, { + detail: data + }); + } + + return document.dispatchEvent(customEvent); +}; + +/** + * Set or remove aos-animate class + * @param {node} el element + * @param {int} top scrolled distance + */ +var applyClasses = function applyClasses(el, top) { + var options = el.options, + position = el.position, + node = el.node, + data = el.data; + + + var hide = function hide() { + if (!el.animated) return; + + removeClasses(node, options.animatedClassNames); + fireEvent('aos:out', node); + + if (el.options.id) { + fireEvent('aos:in:' + el.options.id, node); + } + + el.animated = false; + }; + + var show = function show() { + if (el.animated) return; + + addClasses(node, options.animatedClassNames); + + fireEvent('aos:in', node); + if (el.options.id) { + fireEvent('aos:in:' + el.options.id, node); + } + + el.animated = true; + }; + + if (options.mirror && top >= position.out && !options.once) { + hide(); + } else if (top >= position.in) { + show(); + } else if (el.animated && !options.once) { + hide(); + } +}; + +/** + * Scroll logic - add or remove 'aos-animate' class on scroll + * + * @param {array} $elements array of elements nodes + * @return {void} + */ +var handleScroll = function handleScroll($elements) { + return $elements.forEach(function (el, i) { + return applyClasses(el, window.pageYOffset); + }); +}; + +/** + * Get offset of DOM element + * like there were no transforms applied on it + * + * @param {Node} el [DOM element] + * @return {Object} [top and left offset] + */ +var offset = function offset(el) { + var _x = 0; + var _y = 0; + + while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) { + _x += el.offsetLeft - (el.tagName != 'BODY' ? el.scrollLeft : 0); + _y += el.offsetTop - (el.tagName != 'BODY' ? el.scrollTop : 0); + el = el.offsetParent; + } + + return { + top: _y, + left: _x + }; +}; + +/** + * Get inline option with a fallback. + * + * @param {Node} el [Dom element] + * @param {String} key [Option key] + * @param {String} fallback [Default (fallback) value] + * @return {Mixed} [Option set with inline attributes or fallback value if not set] + */ + +var getInlineOption = (function (el, key, fallback) { + var attr = el.getAttribute('data-aos-' + key); + + if (typeof attr !== 'undefined') { + if (attr === 'true') { + return true; + } else if (attr === 'false') { + return false; + } + } + + return attr || fallback; +}); + +/** + * Calculate offset + * basing on element's settings like: + * - anchor + * - offset + * + * @param {Node} el [Dom element] + * @return {Integer} [Final offset that will be used to trigger animation in good position] + */ + +var getPositionIn = function getPositionIn(el, defaultOffset, defaultAnchorPlacement) { + var windowHeight = window.innerHeight; + var anchor = getInlineOption(el, 'anchor'); + var inlineAnchorPlacement = getInlineOption(el, 'anchor-placement'); + var additionalOffset = Number(getInlineOption(el, 'offset', inlineAnchorPlacement ? 0 : defaultOffset)); + var anchorPlacement = inlineAnchorPlacement || defaultAnchorPlacement; + var finalEl = el; + + if (anchor && document.querySelectorAll(anchor)) { + finalEl = document.querySelectorAll(anchor)[0]; + } + + var triggerPoint = offset(finalEl).top - windowHeight; + + switch (anchorPlacement) { + case 'top-bottom': + // Default offset + break; + case 'center-bottom': + triggerPoint += finalEl.offsetHeight / 2; + break; + case 'bottom-bottom': + triggerPoint += finalEl.offsetHeight; + break; + case 'top-center': + triggerPoint += windowHeight / 2; + break; + case 'center-center': + triggerPoint += windowHeight / 2 + finalEl.offsetHeight / 2; + break; + case 'bottom-center': + triggerPoint += windowHeight / 2 + finalEl.offsetHeight; + break; + case 'top-top': + triggerPoint += windowHeight; + break; + case 'bottom-top': + triggerPoint += windowHeight + finalEl.offsetHeight; + break; + case 'center-top': + triggerPoint += windowHeight + finalEl.offsetHeight / 2; + break; + } + + return triggerPoint + additionalOffset; +}; + +var getPositionOut = function getPositionOut(el, defaultOffset) { + var windowHeight = window.innerHeight; + var anchor = getInlineOption(el, 'anchor'); + var additionalOffset = getInlineOption(el, 'offset', defaultOffset); + var finalEl = el; + + if (anchor && document.querySelectorAll(anchor)) { + finalEl = document.querySelectorAll(anchor)[0]; + } + + var elementOffsetTop = offset(finalEl).top; + + return elementOffsetTop + finalEl.offsetHeight - additionalOffset; +}; + +/* Clearing variables */ + +var prepare = function prepare($elements, options) { + $elements.forEach(function (el, i) { + var mirror = getInlineOption(el.node, 'mirror', options.mirror); + var once = getInlineOption(el.node, 'once', options.once); + var id = getInlineOption(el.node, 'id'); + var customClassNames = options.useClassNames && el.node.getAttribute('data-aos'); + + var animatedClassNames = [options.animatedClassName].concat(customClassNames ? customClassNames.split(' ') : []).filter(function (className) { + return typeof className === 'string'; + }); + + if (options.initClassName) { + el.node.classList.add(options.initClassName); + } + + el.position = { + in: getPositionIn(el.node, options.offset, options.anchorPlacement), + out: mirror && getPositionOut(el.node, options.offset) + }; + + el.options = { + once: once, + mirror: mirror, + animatedClassNames: animatedClassNames, + id: id + }; + }); + + return $elements; +}; + +/** + * Generate initial array with elements as objects + * This array will be extended later with elements attributes values + * like 'position' + */ +var elements = (function () { + var elements = document.querySelectorAll('[data-aos]'); + return Array.prototype.map.call(elements, function (node) { + return { node: node }; + }); +}); + +/** + * ******************************************************* + * AOS (Animate on scroll) - wowjs alternative + * made to animate elements on scroll in both directions + * ******************************************************* + */ + +/** + * Private variables + */ +var $aosElements = []; +var initialized = false; + +/** + * Default options + */ +var options = { + offset: 120, + delay: 0, + easing: 'ease', + duration: 400, + disable: false, + once: false, + mirror: false, + anchorPlacement: 'top-bottom', + startEvent: 'DOMContentLoaded', + animatedClassName: 'aos-animate', + initClassName: 'aos-init', + useClassNames: false, + disableMutationObserver: false, + throttleDelay: 99, + debounceDelay: 50 +}; + +// Detect not supported browsers (<=IE9) +// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 +var isBrowserNotSupported = function isBrowserNotSupported() { + return document.all && !window.atob; +}; + +var initializeScroll = function initializeScroll() { + // Extend elements objects in $aosElements with their positions + $aosElements = prepare($aosElements, options); + // Perform scroll event, to refresh view and show/hide elements + handleScroll($aosElements); + + /** + * Handle scroll event to animate elements on scroll + */ + window.addEventListener('scroll', throttle(function () { + handleScroll($aosElements, options.once); + }, options.throttleDelay)); + + return $aosElements; +}; + +/** + * Refresh AOS + */ +var refresh = function refresh() { + var initialize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + // Allow refresh only when it was first initialized on startEvent + if (initialize) initialized = true; + if (initialized) initializeScroll(); +}; + +/** + * Hard refresh + * create array with new elements and trigger refresh + */ +var refreshHard = function refreshHard() { + $aosElements = elements(); + + if (isDisabled(options.disable) || isBrowserNotSupported()) { + return disable(); + } + + refresh(); +}; + +/** + * Disable AOS + * Remove all attributes to reset applied styles + */ +var disable = function disable() { + $aosElements.forEach(function (el, i) { + el.node.removeAttribute('data-aos'); + el.node.removeAttribute('data-aos-easing'); + el.node.removeAttribute('data-aos-duration'); + el.node.removeAttribute('data-aos-delay'); + + if (options.initClassName) { + el.node.classList.remove(options.initClassName); + } + + if (options.animatedClassName) { + el.node.classList.remove(options.animatedClassName); + } + }); +}; + +/** + * Check if AOS should be disabled based on provided setting + */ +var isDisabled = function isDisabled(optionDisable) { + return optionDisable === true || optionDisable === 'mobile' && detect.mobile() || optionDisable === 'phone' && detect.phone() || optionDisable === 'tablet' && detect.tablet() || typeof optionDisable === 'function' && optionDisable() === true; +}; + +/** + * Initializing AOS + * - Create options merging defaults with user defined options + * - Set attributes on as global setting - css relies on it + * - Attach preparing elements to options.startEvent, + * window resize and orientation change + * - Attach function that handle scroll and everything connected to it + * to window scroll event and fire once document is ready to set initial state + */ +var init = function init(settings) { + options = _extends(options, settings); + + // Create initial array with elements -> to be fullfilled later with prepare() + $aosElements = elements(); + + /** + * Disable mutation observing if not supported + */ + if (!options.disableMutationObserver && !observer.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 '); + options.disableMutationObserver = true; + } + + /** + * Observe [aos] elements + * If something is loaded by AJAX + * it'll refresh plugin automatically + */ + if (!options.disableMutationObserver) { + observer.ready('[data-aos]', refreshHard); + } + + /** + * Don't init plugin if option `disable` is set + * or when browser is not supported + */ + if (isDisabled(options.disable) || isBrowserNotSupported()) { + return disable(); + } + + /** + * Set global settings on body, based on options + * so CSS can use it + */ + document.querySelector('body').setAttribute('data-aos-easing', options.easing); + + document.querySelector('body').setAttribute('data-aos-duration', options.duration); + + document.querySelector('body').setAttribute('data-aos-delay', options.delay); + + /** + * Handle initializing + */ + if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) { + // Listen to options.startEvent and initialize AOS + document.addEventListener(options.startEvent, function () { + refresh(true); + }); + } else { + window.addEventListener('load', function () { + refresh(true); + }); + } + + if (options.startEvent === 'DOMContentLoaded' && ['complete', 'interactive'].indexOf(document.readyState) > -1) { + // Initialize AOS if default startEvent was already fired + refresh(true); + } + + /** + * Refresh plugin on window resize or orientation change + */ + window.addEventListener('resize', debounce(refresh, options.debounceDelay, true)); + + window.addEventListener('orientationchange', debounce(refresh, options.debounceDelay, true)); + + return $aosElements; +}; + +/** + * Export Public API + */ + +var aos = { + init: init, + refresh: refresh, + refreshHard: refreshHard +}; + +export default aos; diff --git a/jirikarlik/static/assets/vendor/aos/aos.js b/jirikarlik/static/assets/vendor/aos/aos.js new file mode 100644 index 0000000..74d35d9 --- /dev/null +++ b/jirikarlik/static/assets/vendor/aos/aos.js @@ -0,0 +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`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `