update
BIN
static/.DS_Store
vendored
@ -26697,8 +26697,8 @@ html[dir=rtl] .googlemap .gm-style-iw.gm-style-iw-c button[title=Close] {
|
||||
right: 0;
|
||||
-o-object-fit: cover;
|
||||
object-fit: cover;
|
||||
height: 100%;
|
||||
min-width: 100%;
|
||||
height: 150%;
|
||||
min-width: 150%;
|
||||
}
|
||||
.bg-holder .bg-youtube {
|
||||
position: absolute !important;
|
||||
|
||||
@ -26724,8 +26724,8 @@ html[dir=rtl] .googlemap .gm-style-iw.gm-style-iw-c button[title=Close] {
|
||||
left: 0;
|
||||
-o-object-fit: cover;
|
||||
object-fit: cover;
|
||||
height: 100%;
|
||||
min-width: 100%;
|
||||
height: 150%;
|
||||
min-width: 150%;
|
||||
}
|
||||
.bg-holder .bg-youtube {
|
||||
position: absolute !important;
|
||||
|
||||
BIN
static/images/.DS_Store
vendored
BIN
static/images/bg/.DS_Store
vendored
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 758 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 1.5 MiB |
BIN
static/images/bg/haikal-01.png
Normal file
|
After Width: | Height: | Size: 603 KiB |
BIN
static/images/bg/haikal-02.png
Normal file
|
After Width: | Height: | Size: 886 KiB |
BIN
static/images/bg/haikal-03.png
Normal file
|
After Width: | Height: | Size: 949 KiB |
BIN
static/images/bg/haikal-04.png
Normal file
|
After Width: | Height: | Size: 636 KiB |
BIN
static/images/bg/haikal-05.png
Normal file
|
After Width: | Height: | Size: 911 KiB |
BIN
static/images/bg/haikal-06.png
Normal file
|
After Width: | Height: | Size: 661 KiB |
BIN
static/images/bg/haikal-07.png
Normal file
|
After Width: | Height: | Size: 952 KiB |
BIN
static/images/bg/haikal-08.png
Normal file
|
After Width: | Height: | Size: 737 KiB |
BIN
static/images/bg/haikal-09.png
Normal file
|
After Width: | Height: | Size: 917 KiB |
BIN
static/images/bg/haikal-10.png
Normal file
|
After Width: | Height: | Size: 794 KiB |
BIN
static/images/bg/haikal-11.png
Normal file
|
After Width: | Height: | Size: 518 KiB |
BIN
static/images/bg/haikal-12.png
Normal file
|
After Width: | Height: | Size: 954 KiB |
BIN
static/video/haikal-mobile.mp4
Normal file
BIN
static/video/haikal-video-02.mp4
Normal file
BIN
static/video/haikal-video.mp4
Normal file
BIN
static/video/image-haikal-02.png
Normal file
|
After Width: | Height: | Size: 402 KiB |
BIN
static/video/image-haikal.png
Normal file
|
After Width: | Height: | Size: 383 KiB |
3577
static/web_assets/css/main.css
Normal file
BIN
static/web_assets/img/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
static/web_assets/img/bg/bg-8.webp
Normal file
|
After Width: | Height: | Size: 462 KiB |
BIN
static/web_assets/img/blog/blog-hero-2.webp
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
static/web_assets/img/blog/blog-post-1.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
static/web_assets/img/blog/blog-post-2.webp
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
static/web_assets/img/blog/blog-post-3.webp
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
static/web_assets/img/blog/blog-post-4.webp
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
static/web_assets/img/blog/blog-post-square-1.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
static/web_assets/img/blog/blog-post-square-2.webp
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
static/web_assets/img/blog/blog-post-square-3.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
static/web_assets/img/blog/blog-post-square-4.webp
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
static/web_assets/img/blog/blog-post-square-5.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
static/web_assets/img/clients/clients-1.webp
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
static/web_assets/img/clients/clients-2.webp
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
static/web_assets/img/clients/clients-3.webp
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
static/web_assets/img/clients/clients-4.webp
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
static/web_assets/img/clients/clients-5.webp
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
static/web_assets/img/clients/clients-6.webp
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
static/web_assets/img/clients/clients-7.webp
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
static/web_assets/img/clients/clients-8.webp
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
static/web_assets/img/cta/cta-1.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
static/web_assets/img/favicon.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
static/web_assets/img/hero-img.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
static/web_assets/img/illustration/illustration-10.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
static/web_assets/img/logo.webp
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
static/web_assets/img/person/person-f-12.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
static/web_assets/img/person/person-f-4.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
static/web_assets/img/person/person-f-5.webp
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
static/web_assets/img/person/person-f-7.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
static/web_assets/img/person/person-f-8.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
static/web_assets/img/person/person-f-9.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
static/web_assets/img/person/person-m-12.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
static/web_assets/img/person/person-m-13.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
static/web_assets/img/person/person-m-6.webp
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
static/web_assets/img/person/person-m-7.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
static/web_assets/img/person/person-m-9.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
static/web_assets/img/portfolio/portfolio-1.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
static/web_assets/img/portfolio/portfolio-10.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
static/web_assets/img/portfolio/portfolio-3.webp
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
static/web_assets/img/portfolio/portfolio-4.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
static/web_assets/img/portfolio/portfolio-7.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
static/web_assets/img/portfolio/portfolio-8.webp
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
static/web_assets/img/portfolio/portfolio-9.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
static/web_assets/img/portfolio/portfolio-portrait-1.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
static/web_assets/img/portfolio/portfolio-portrait-2.webp
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
static/web_assets/img/portfolio/portfolio-portrait-3.webp
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
static/web_assets/img/services/services-4.webp
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
static/web_assets/img/steps/steps-1.webp
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
static/web_assets/img/steps/steps-2.webp
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
static/web_assets/img/steps/steps-3.webp
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
static/web_assets/img/why-us.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
232
static/web_assets/js/main.js
Normal file
@ -0,0 +1,232 @@
|
||||
/**
|
||||
* Template Name: Arsha
|
||||
* Template URL: https://bootstrapmade.com/arsha-free-bootstrap-html-template-corporate/
|
||||
* Updated: Feb 22 2025 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');
|
||||
}
|
||||
if (mobileNavToggleBtn) {
|
||||
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);
|
||||
|
||||
/**
|
||||
* Initiate glightbox
|
||||
*/
|
||||
const glightbox = GLightbox({
|
||||
selector: '.glightbox'
|
||||
});
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* Frequently Asked Questions Toggle
|
||||
*/
|
||||
document.querySelectorAll('.faq-item h3, .faq-item .faq-toggle').forEach((faqItem) => {
|
||||
faqItem.addEventListener('click', () => {
|
||||
faqItem.parentNode.classList.toggle('faq-active');
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 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') + '%';
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 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);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
})();
|
||||
93
static/web_assets/scss/_sections.scss
Normal file
@ -0,0 +1,93 @@
|
||||
/*--------------------------------------------------------------
|
||||
# Global Sections
|
||||
--------------------------------------------------------------*/
|
||||
section,
|
||||
.section {
|
||||
color: var(--default-color);
|
||||
background-color: var(--background-color);
|
||||
padding: 60px 0;
|
||||
scroll-margin-top: 88px;
|
||||
overflow: clip;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
|
||||
section,
|
||||
.section {
|
||||
scroll-margin-top: 66px;
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
# Global Section Titles
|
||||
--------------------------------------------------------------*/
|
||||
.section-title {
|
||||
text-align: center;
|
||||
padding-bottom: 60px;
|
||||
position: relative;
|
||||
|
||||
h2 {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 20px;
|
||||
text-transform: uppercase;
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 160px;
|
||||
height: 1px;
|
||||
background: color-mix(in srgb, var(--default-color), transparent 60%);
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 1px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 60px;
|
||||
height: 3px;
|
||||
background: var(--accent-color);
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@import './sections/_hero.scss';
|
||||
@import './sections/_clients.scss';
|
||||
@import './sections/_about.scss';
|
||||
@import './sections/_why-us.scss';
|
||||
@import './sections/_skills.scss';
|
||||
@import './sections/_services.scss';
|
||||
@import './sections/_work-process.scss';
|
||||
@import './sections/_call-to-action.scss';
|
||||
@import './sections/_portfolio.scss';
|
||||
@import './sections/_team.scss';
|
||||
@import './sections/_pricing.scss';
|
||||
@import './sections/_testimonials.scss';
|
||||
@import './sections/_faq-2.scss';
|
||||
@import './sections/_subscribe.scss';
|
||||
@import './sections/_recent-blog-postst.scss';
|
||||
@import './sections/_contact.scss';
|
||||
@import './sections/_portfolio-details.scss';
|
||||
@import './sections/_service-details.scss';
|
||||
@import './sections/_blog-posts.scss';
|
||||
@import './sections/_pagination-2.scss';
|
||||
@import './sections/_blog-details.scss';
|
||||
@import './sections/_blog-comments.scss';
|
||||
@import './sections/_blog-comment-form.scss';
|
||||
@import './sections/_starter-section.scss';
|
||||
@import './sections/_error-404.scss';
|
||||
52
static/web_assets/scss/_variables.scss
Normal file
@ -0,0 +1,52 @@
|
||||
// main: main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# Font & Color Variables
|
||||
# Help: https://bootstrapmade.com/color-system/
|
||||
--------------------------------------------------------------*/
|
||||
|
||||
/* Fonts */
|
||||
:root {
|
||||
--default-font: "Open Sans", 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: "Jost", 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: #444444; /* Default color used for the majority of the text content across the entire website */
|
||||
--heading-color: #37517e; /* Color for headings, subheadings and title throughout the website */
|
||||
--accent-color: #47b2e4; /* 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: #47b2e4; /* 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: #444444; /* Used for navigation links of the dropdown items in the navigation menu. */
|
||||
--nav-dropdown-hover-color: #47b2e4; /* 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: #f5f6f8;
|
||||
--surface-color: #ffffff;
|
||||
}
|
||||
|
||||
.dark-background {
|
||||
--background-color: #37517e;
|
||||
--default-color: #ffffff;
|
||||
--heading-color: #ffffff;
|
||||
--surface-color: #4668a2;
|
||||
--contrast-color: #ffffff;
|
||||
}
|
||||
|
||||
/* Smooth scroll */
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
32
static/web_assets/scss/_widgets.scss
Normal file
@ -0,0 +1,32 @@
|
||||
/*--------------------------------------------------------------
|
||||
# Widgets
|
||||
--------------------------------------------------------------*/
|
||||
.widgets-container {
|
||||
margin: 60px 0 30px 0;
|
||||
}
|
||||
|
||||
.widget-title {
|
||||
color: var(--heading-color);
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
padding: 0 0 0 10px;
|
||||
margin: 0 0 20px 0;
|
||||
border-left: 4px solid var(--accent-color);
|
||||
}
|
||||
|
||||
.widget-item {
|
||||
margin-bottom: 30px;
|
||||
background-color: color-mix(in srgb, var(--default-color), transparent 98%);
|
||||
border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
|
||||
padding: 30px;
|
||||
border-radius: 5px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@import './widgets/_search.scss';
|
||||
@import './widgets/_recent-posts.scss';
|
||||
@import './widgets/_categories.scss';
|
||||
@import './widgets/_tags.scss';
|
||||
9
static/web_assets/scss/layouts/_aos.scss
Normal file
@ -0,0 +1,9 @@
|
||||
// main: ../main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# Disable aos animation delay on mobile devices
|
||||
--------------------------------------------------------------*/
|
||||
@media screen and (max-width: 768px) {
|
||||
[data-aos-delay] {
|
||||
transition-delay: 0 !important;
|
||||
}
|
||||
}
|
||||
165
static/web_assets/scss/layouts/_footer.scss
Normal file
@ -0,0 +1,165 @@
|
||||
// main: ../main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# Global Footer
|
||||
--------------------------------------------------------------*/
|
||||
.footer {
|
||||
color: var(--default-color);
|
||||
background-color: var(--background-color);
|
||||
font-size: 14px;
|
||||
padding-bottom: 50px;
|
||||
position: relative;
|
||||
|
||||
.footer-newsletter {
|
||||
background-color: color-mix(in srgb, var(--heading-color), transparent 95%);
|
||||
padding: 50px 0;
|
||||
|
||||
h4 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.newsletter-form {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 15px;
|
||||
padding: 6px 8px;
|
||||
position: relative;
|
||||
background-color: color-mix(in srgb, var(--background-color), transparent 50%);
|
||||
border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
|
||||
box-shadow: 0px 2px 25px rgba(0, 0, 0, 0.1);
|
||||
display: flex;
|
||||
transition: 0.3s;
|
||||
border-radius: 50px;
|
||||
|
||||
&:focus-within {
|
||||
border-color: var(--accent-color);
|
||||
}
|
||||
|
||||
input[type="email"] {
|
||||
border: 0;
|
||||
padding: 4px;
|
||||
width: 100%;
|
||||
background-color: color-mix(in srgb, var(--background-color), transparent 50%);
|
||||
color: var(--default-color);
|
||||
}
|
||||
|
||||
input[type="email"]:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
border: 0;
|
||||
font-size: 16px;
|
||||
padding: 0 20px;
|
||||
margin: -7px -8px -7px 0;
|
||||
background: var(--accent-color);
|
||||
color: var(--contrast-color);
|
||||
transition: 0.3s;
|
||||
border-radius: 50px;
|
||||
|
||||
&:hover {
|
||||
background: color-mix(in srgb, var(--accent-color), transparent 20%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer-top {
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.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 50%);
|
||||
font-size: 16px;
|
||||
color: color-mix(in srgb, var(--default-color), transparent 20%);
|
||||
margin-right: 10px;
|
||||
transition: 0.3s;
|
||||
|
||||
&:hover {
|
||||
color: var(--accent-color);
|
||||
border-color: var(--accent-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
position: relative;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
margin-bottom: 30px;
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
i {
|
||||
margin-right: 3px;
|
||||
font-size: 12px;
|
||||
line-height: 0;
|
||||
color: var(--accent-color);
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 10px 0;
|
||||
|
||||
&:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
color: color-mix(in srgb, var(--default-color), transparent 20%);
|
||||
line-height: 1;
|
||||
|
||||
&:hover {
|
||||
color: var(--accent-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer-about {
|
||||
a {
|
||||
color: var(--heading-color);
|
||||
font-size: 28px;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
font-family: var(--heading-font);
|
||||
}
|
||||
}
|
||||
|
||||
.footer-contact {
|
||||
p {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.copyright {
|
||||
padding-top: 25px;
|
||||
padding-bottom: 25px;
|
||||
border-top: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.credits {
|
||||
margin-top: 6px;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
84
static/web_assets/scss/layouts/_general.scss
Normal file
@ -0,0 +1,84 @@
|
||||
// main: ../main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# 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;
|
||||
}
|
||||
|
||||
.sent-message {
|
||||
display: none;
|
||||
color: #ffffff;
|
||||
background: #059652;
|
||||
text-align: center;
|
||||
padding: 15px;
|
||||
margin-bottom: 24px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.loading {
|
||||
display: none;
|
||||
background: var(--surface-color);
|
||||
text-align: center;
|
||||
padding: 15px;
|
||||
margin-bottom: 24px;
|
||||
|
||||
&: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);
|
||||
}
|
||||
}
|
||||
77
static/web_assets/scss/layouts/_header.scss
Normal file
@ -0,0 +1,77 @@
|
||||
// main: ../main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# Global Header
|
||||
--------------------------------------------------------------*/
|
||||
.header {
|
||||
--background-color: #3d4d6a;
|
||||
--heading-color: #ffffff;
|
||||
color: var(--default-color);
|
||||
background-color: var(--background-color);
|
||||
padding: 15px 0;
|
||||
transition: all 0.5s;
|
||||
z-index: 997;
|
||||
|
||||
.logo {
|
||||
line-height: 1;
|
||||
|
||||
img {
|
||||
max-height: 36px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
color: var(--heading-color);
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-getstarted,
|
||||
.btn-getstarted:focus {
|
||||
color: var(--contrast-color);
|
||||
background: var(--accent-color);
|
||||
font-size: 14px;
|
||||
padding: 8px 25px;
|
||||
margin: 0 0 0 30px;
|
||||
border-radius: 50px;
|
||||
transition: 0.3s;
|
||||
|
||||
&:hover {
|
||||
color: var(--contrast-color);
|
||||
background: color-mix(in srgb, var(--accent-color), transparent 15%);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.logo {
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.btn-getstarted {
|
||||
order: 2;
|
||||
margin: 0 15px 0 0;
|
||||
padding: 6px 15px;
|
||||
}
|
||||
|
||||
.navmenu {
|
||||
order: 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Index Page Header
|
||||
------------------------------*/
|
||||
.index-page .header {
|
||||
--background-color: rgba(255, 255, 255, 0);
|
||||
--heading-color: #ffffff;
|
||||
--nav-color: #ffffff;
|
||||
}
|
||||
|
||||
/* Index Page Header on Scroll
|
||||
------------------------------*/
|
||||
.index-page.scrolled .header {
|
||||
--background-color: rgba(40, 58, 90, 0.9);
|
||||
}
|
||||
288
static/web_assets/scss/layouts/_navmenu.scss
Normal file
@ -0,0 +1,288 @@
|
||||
// main: ../main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# Navigation Menu
|
||||
--------------------------------------------------------------*/
|
||||
/* Desktop Navigation */
|
||||
@media (min-width: 1200px) {
|
||||
.navmenu {
|
||||
padding: 0;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
list-style: none;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
a,
|
||||
a:focus {
|
||||
color: var(--nav-color);
|
||||
padding: 18px 15px;
|
||||
font-size: 15px;
|
||||
font-family: var(--nav-font);
|
||||
font-weight: 400;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
white-space: nowrap;
|
||||
transition: 0.3s;
|
||||
|
||||
i {
|
||||
font-size: 12px;
|
||||
line-height: 0;
|
||||
margin-left: 5px;
|
||||
transition: 0.3s;
|
||||
}
|
||||
}
|
||||
|
||||
li:last-child a {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
li:hover>a,
|
||||
.active,
|
||||
.active:focus {
|
||||
color: var(--nav-hover-color);
|
||||
}
|
||||
|
||||
.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);
|
||||
|
||||
li {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
a {
|
||||
padding: 10px 20px;
|
||||
font-size: 15px;
|
||||
text-transform: none;
|
||||
color: var(--nav-dropdown-color);
|
||||
|
||||
i {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
a:hover,
|
||||
.active:hover,
|
||||
li:hover>a {
|
||||
color: var(--nav-dropdown-hover-color);
|
||||
}
|
||||
}
|
||||
|
||||
&:hover>ul {
|
||||
opacity: 1;
|
||||
top: 100%;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown .dropdown {
|
||||
ul {
|
||||
top: 0;
|
||||
left: -90%;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
&:hover>ul {
|
||||
opacity: 1;
|
||||
top: 0;
|
||||
left: -100%;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.megamenu {
|
||||
position: static;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
background: var(--nav-dropdown-background-color);
|
||||
box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1);
|
||||
position: absolute;
|
||||
top: 130%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
display: flex;
|
||||
transition: 0.3s;
|
||||
border-radius: 4px;
|
||||
z-index: 99;
|
||||
|
||||
li {
|
||||
flex: 1;
|
||||
|
||||
a,
|
||||
&:hover>a {
|
||||
padding: 10px 20px;
|
||||
font-size: 15px;
|
||||
color: var(--nav-dropdown-color);
|
||||
}
|
||||
|
||||
a:hover,
|
||||
.active,
|
||||
.active:hover {
|
||||
color: var(--nav-dropdown-hover-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover>ul {
|
||||
opacity: 1;
|
||||
top: 100%;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.dd-box-shadow {
|
||||
box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 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;
|
||||
|
||||
ul {
|
||||
display: none;
|
||||
list-style: none;
|
||||
position: absolute;
|
||||
inset: 60px 20px 20px 20px;
|
||||
padding: 10px 0;
|
||||
margin: 0;
|
||||
border-radius: 6px;
|
||||
background-color: var(--nav-mobile-background-color);
|
||||
overflow-y: auto;
|
||||
transition: 0.3s;
|
||||
z-index: 9998;
|
||||
box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
a,
|
||||
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;
|
||||
|
||||
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%);
|
||||
|
||||
&:hover {
|
||||
background-color: var(--accent-color);
|
||||
color: var(--contrast-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a:hover,
|
||||
.active,
|
||||
.active:focus {
|
||||
color: var(--nav-dropdown-hover-color);
|
||||
}
|
||||
|
||||
.active i,
|
||||
.active:focus i {
|
||||
background-color: var(--accent-color);
|
||||
color: var(--contrast-color);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
ul {
|
||||
position: static;
|
||||
display: none;
|
||||
z-index: 99;
|
||||
padding: 10px 0;
|
||||
margin: 10px 20px;
|
||||
background-color: var(--nav-dropdown-background-color);
|
||||
border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
|
||||
box-shadow: none;
|
||||
transition: all .5s ease-in-out;
|
||||
|
||||
ul {
|
||||
background-color: rgba(33, 37, 41, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
>.dropdown-active {
|
||||
display: block;
|
||||
background-color: rgba(33, 37, 41, 0.03);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-nav-active {
|
||||
overflow: hidden;
|
||||
|
||||
.mobile-nav-toggle {
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
font-size: 32px;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
margin-right: 0;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.navmenu {
|
||||
position: fixed;
|
||||
overflow: hidden;
|
||||
inset: 0;
|
||||
background: rgba(33, 37, 41, 0.8);
|
||||
transition: 0.3s;
|
||||
|
||||
>ul {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
39
static/web_assets/scss/layouts/_page-titles.scss
Normal file
@ -0,0 +1,39 @@
|
||||
// main: ../main.scss
|
||||
/*--------------------------------------------------------------
|
||||
# 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: 20px 0;
|
||||
position: relative;
|
||||
|
||||
h1 {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.breadcrumbs {
|
||||
ol {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
list-style: none;
|
||||
padding: 0 0 10px 0;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
|
||||
li+li {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
li+li::before {
|
||||
content: "/";
|
||||
display: inline-block;
|
||||
padding-right: 10px;
|
||||
color: color-mix(in srgb, var(--default-color), transparent 70%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||