Files
GNX-WEB/gnx-react/public/styles/layout/_header.scss
Iliyan Angelov f962401565 update
2025-10-10 02:01:46 +03:00

1217 lines
24 KiB
SCSS

/* ====
--------- (4.01) header styles start ---------
==== */
@use "../abstracts/mixins" as *;
// 4.01.01 header common
.tp-header {
position: fixed;
top: 0px;
left: 0px;
right: 0px;
width: 100%;
z-index: 99;
background-color: rgba(0, 0, 0, 0.95);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
.primary-navbar {
padding: 15px 0px;
transition: all 0.3s ease;
height: 80px;
display: flex;
align-items: center;
}
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.navbar__menu {
flex: 1;
display: flex;
justify-content: center;
ul {
display: flex;
align-items: center;
gap: 40px;
list-style: none;
margin: 0;
padding: 0;
}
}
.navbar__item {
position: relative;
a, button {
color: white;
text-decoration: none;
font-weight: 500;
font-size: 15px;
letter-spacing: 0.5px;
padding: 10px 0;
transition: all 0.3s ease;
background: none;
border: none;
cursor: pointer;
&:hover {
color: var(--enterprise-gold);
}
}
}
.navbar__item--has-children {
.navbar__dropdown-label {
position: relative;
padding-right: 25px;
&::after {
content: "\f107";
font-family: "Font Awesome 6 Free";
font-weight: 900;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
font-size: 12px;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
color: rgba(255, 255, 255, 0.7);
}
&:hover {
color: var(--enterprise-gold);
&::after {
color: var(--enterprise-gold);
transform: translateY(-50%) rotate(180deg);
}
}
.loading-indicator {
margin-left: 8px;
animation: spin 1s linear infinite;
font-size: 12px;
}
}
&:hover .navbar__dropdown-label::after {
transform: translateY(-50%) rotate(180deg);
}
}
.navbar__sub-menu {
position: absolute;
top: calc(100% + 8px);
left: 50%;
transform: translateX(-50%);
background: rgba(0, 0, 0, 0.92);
border-radius: 8px;
box-shadow:
0 20px 60px rgba(0, 0, 0, 0.5),
0 8px 25px rgba(0, 0, 0, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.08);
padding: 4px 0;
min-width: 240px;
opacity: 0;
visibility: hidden;
transform: translateX(-50%) translateY(-10px) scale(0.96);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 1000;
border: 1px solid rgba(255, 255, 255, 0.12);
backdrop-filter: blur(20px);
&.show {
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0) scale(1);
}
&::before {
content: "";
position: absolute;
top: -7px;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid rgba(0, 0, 0, 0.92);
filter: drop-shadow(0 -2px 6px rgba(0, 0, 0, 0.4));
}
li {
list-style: none;
margin: 1px 6px;
border-radius: 6px;
overflow: hidden;
a {
display: flex;
align-items: center;
padding: 10px 16px;
color: rgba(255, 255, 255, 0.85);
font-size: 13px;
font-weight: 500;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
text-decoration: none;
border-radius: 6px;
letter-spacing: 0.2px;
line-height: 1.4;
&::before {
content: "";
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 2px;
background: linear-gradient(135deg, var(--enterprise-gold), #f4d03f);
transform: scaleY(0);
transition: transform 0.25s ease;
border-radius: 0 1px 1px 0;
}
&::after {
content: "";
position: absolute;
right: 16px;
opacity: 0;
transform: translateX(-3px);
transition: all 0.25s ease;
color: var(--enterprise-gold);
font-weight: 600;
font-size: 10px;
}
&:hover {
color: var(--enterprise-gold);
background: rgba(212, 175, 55, 0.12);
transform: translateX(3px);
box-shadow: 0 2px 8px rgba(212, 175, 55, 0.15);
&::before {
transform: scaleY(1);
}
&::after {
opacity: 1;
transform: translateX(0);
}
}
&.active-current-sub {
color: var(--enterprise-gold);
background: rgba(212, 175, 55, 0.18);
font-weight: 600;
box-shadow: 0 1px 6px rgba(212, 175, 55, 0.25);
&::before {
transform: scaleY(1);
}
}
}
// Loading and error states
.text-muted {
color: rgba(255, 255, 255, 0.6);
font-style: italic;
font-size: 12px;
padding: 10px 16px;
display: flex;
align-items: center;
gap: 6px;
letter-spacing: 0.2px;
&::before {
content: "";
animation: spin 1s linear infinite;
font-size: 10px;
}
}
.text-danger {
color: #ff6b6b;
font-size: 12px;
padding: 10px 16px;
display: flex;
align-items: center;
gap: 6px;
letter-spacing: 0.2px;
&::before {
content: "⚠️";
font-size: 10px;
}
}
}
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.navbar__options {
display: flex;
align-items: center;
gap: 30px;
flex-wrap: wrap;
.btn {
padding: 12px 24px;
border-radius: 6px;
font-weight: 600;
text-transform: none;
letter-spacing: 0.5px;
font-size: 13px;
transition: all 0.3s ease;
text-decoration: none;
border: 2px solid var(--enterprise-gold);
background-color: var(--enterprise-gold);
color: white;
&:hover {
background-color: var(--secondary-color);
color: white;
border-color: var(--secondary-color);
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(34, 34, 34, 0.4);
}
}
}
}
.logo-img {
height: 100%;
display: flex;
align-items: center;
img {
max-height: 90px;
width: auto;
}
}
.open-offcanvas-nav {
padding: 0px;
display: inline-block;
background-color: transparent;
display: flex;
align-items: flex-end;
flex-direction: column;
gap: 10px;
span {
height: 2px;
background-color: white;
transition: var(--transition);
}
.top-bar {
width: 30px;
}
.middle-bar {
width: 34px;
}
.bottom-bar {
width: 16px;
}
&:hover {
span {
background-color: var(--enterprise-gold);
}
}
}
// 4.01.02 light header
.tp-header--light {
background-color: rgba(255, 255, 255, 0.95);
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
.navbar__item {
a, button {
color: var(--secondary-color);
&:hover {
color: var(--primary-color);
}
}
}
.navbar__sub-menu {
background-color: white;
border: 1px solid rgba(0, 0, 0, 0.1);
&::before {
border-bottom-color: white;
}
li a {
color: var(--secondary-color);
&:hover {
color: var(--primary-color);
}
}
}
.open-offcanvas-nav {
span {
background-color: var(--secondary-color);
}
&:hover {
span {
background-color: var(--primary-color);
}
}
}
.navbar-active {
background-color: rgba(255, 255, 255, 0.98);
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1);
border-bottom: 1px solid var(--primary-color);
}
}
// 4.01.03 offcanvas nav
.offcanvas-nav {
.offcanvas-menu {
position: fixed;
inset: 0px;
overflow: hidden;
opacity: 0;
visibility: hidden;
transform: translateY(-100%);
transition: var(--transition);
z-index: 9999;
transition-delay: 0.6s;
transition: all 0.9s ease-in-out;
background-color: var(--enterprise-gold);
&::before {
content: "Enterprise Solutions";
position: absolute;
top: 15%;
left: 8%;
font-size: 5.5vw;
line-height: 1.1;
font-weight: 800;
text-transform: none;
max-width: 35vw;
z-index: 2;
color: white;
opacity: 0.08;
text-align: start;
letter-spacing: 2px;
font-family: var(--mont);
}
.offcanvas-menu__header {
display: flex;
align-items: center;
gap: 24px;
flex-wrap: wrap;
padding: 25px 20px;
justify-content: space-between;
}
.close-offcanvas-menu {
@include box(50px);
background-color: var(--enterprise-gold);
font-size: 24px;
&:hover {
background-color: white;
color: black;
}
}
.offcanvas-menu__wrapper {
position: fixed;
inset: 0px;
background-color: var(--black);
z-index: 1;
padding: 0px 100px 60px;
height: 100vh;
overflow-y: auto;
overflow-x: clip;
display: flex;
flex-direction: column;
transition: 0.9s ease-in-out;
transition-delay: 0.9s;
gap: 60px;
transform: translateY(100%);
opacity: 1;
visibility: visible;
&::-webkit-scrollbar {
width: 0px;
}
}
.navbar__menu {
& > ul {
flex-direction: column;
}
}
.navbar__item {
width: 100%;
transition: var(--transition);
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
a,
button {
color: var(--white);
padding: 24px 60px 24px 20px;
line-height: 1.2;
font-size: 16px;
width: 100%;
text-transform: none;
font-size: 28px;
font-weight: 600;
justify-content: flex-end;
font-family: var(--mont);
letter-spacing: 0.5px;
position: relative;
transition: all 0.3s ease;
&::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 0;
height: 2px;
background-color: var(--enterprise-gold);
transition: width 0.3s ease;
}
&:hover {
color: var(--enterprise-gold);
padding-left: 30px;
&::before {
width: 20px;
}
}
&::after {
transition: none;
}
}
}
.nav-fade {
transform: translateY(30px);
opacity: 0;
transition: all 0.7s ease-in-out !important;
}
.navbar__item--has-children {
.navbar__dropdown-label {
position: relative;
.loading-indicator {
margin-left: 8px;
animation: spin 1s linear infinite;
font-size: 16px;
}
&::after {
content: "\2b";
font-family: "Font Awesome 6 Free";
font-weight: 900;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
height: 100%;
font-size: 20px;
width: 60px;
display: inline-flex;
align-items: center;
justify-content: center;
transform: rotate(0deg);
}
}
&:hover {
.navbar__dropdown-label {
&::after {
transform: rotate(0deg);
}
}
}
}
.navbar__item-active {
color: var(--enterprise-gold) !important;
&::after {
content: "\f068" !important;
font-family: "Font Awesome 6 Free" !important;
}
}
.navbar__sub-menu {
position: static;
opacity: 1;
visibility: visible;
transform: translateY(0px);
width: 100%;
max-width: 100%;
padding: 0px;
transition: none;
background-color: rgba(0, 0, 0, 0.2);
border-radius: 0px;
padding-right: 40px;
margin-left: 20px;
border-left: 2px solid rgba(212, 175, 55, 0.3);
&::before {
content: none;
}
li {
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
&:last-child {
border-bottom: none;
}
}
a,
button {
color: rgba(255, 255, 255, 0.85);
padding: 18px 20px;
font-size: 15px;
font-weight: 500;
justify-content: flex-end;
transition: all 0.3s ease;
position: relative;
&::before {
content: '';
position: absolute;
left: 20px;
top: 50%;
transform: translateY(-50%);
opacity: 0;
transition: all 0.3s ease;
color: var(--enterprise-gold);
}
&:hover {
color: var(--enterprise-gold);
padding-left: 40px;
background-color: rgba(212, 175, 55, 0.1);
&::before {
opacity: 1;
left: 30px;
}
}
}
}
}
.offcanvas-menu__enterprise-info {
position: fixed;
top: 25%;
left: 100px;
z-index: 2;
max-width: 300px;
.enterprise-contact {
h4 {
color: white;
font-size: 24px;
font-weight: 700;
margin-bottom: 12px;
letter-spacing: 0.5px;
font-family: var(--mont);
}
p {
color: rgba(255, 255, 255, 0.8);
font-size: 16px;
margin-bottom: 24px;
line-height: 1.5;
}
.contact-methods {
display: flex;
flex-direction: column;
gap: 16px;
.contact-item {
display: flex;
align-items: center;
gap: 12px;
color: white;
text-decoration: none;
padding: 12px 16px;
background-color: rgba(255, 255, 255, 0.1);
border-radius: 8px;
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.1);
i {
font-size: 16px;
color: white;
width: 20px;
text-align: center;
}
span {
font-size: 14px;
font-weight: 500;
color: white;
}
&:hover {
background-color: rgba(255, 255, 255, 0.15);
border-color: var(--enterprise-blue);
transform: translateX(4px);
}
}
}
}
}
.enterprise-social {
position: fixed;
bottom: 20%;
left: 100px;
display: flex;
flex-direction: column;
gap: 20px;
z-index: 2;
li {
a {
display: flex;
align-items: center;
justify-content: center;
width: 50px;
height: 50px;
background-color: rgba(255, 255, 255, 0.1);
color: white;
border-radius: 50%;
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
i {
font-size: 18px;
}
&:hover {
background-color: var(--enterprise-gold);
border-color: var(--enterprise-gold);
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(212, 175, 55, 0.3);
}
}
}
}
.anime {
position: fixed;
bottom: 10%;
left: 0px;
display: flex;
align-items: center;
gap: 30px;
z-index: 2;
span {
width: 156px;
height: 156px;
border-radius: 50%;
background-image: linear-gradient(
to right,
#d4af3750 50%,
transparent 50%
);
margin-left: -80px;
display: inline-block;
&:nth-of-type(1) {
margin-left: 20px;
background-image: linear-gradient(
to right,
#d4af3720 50%,
transparent 50%
);
}
&:nth-of-type(2) {
background-image: linear-gradient(
to right,
#d4af3730 50%,
transparent 50%
);
}
&:nth-of-type(3) {
background-image: linear-gradient(
to right,
#d4af3740 50%,
transparent 50%
);
}
&:nth-of-type(4) {
background-image: linear-gradient(
to right,
#d4af3750 50%,
transparent 50%
);
}
&:nth-of-type(6) {
background-image: linear-gradient(
to right,
#d4af3780 50%,
transparent 50%
);
}
}
}
.offcanvas-menu__list {
max-width: 500px;
margin-left: auto;
margin-right: 160px;
}
.show-offcanvas-menu {
transform: translateX(0px);
opacity: 1;
visibility: visible;
.offcanvas-menu__wrapper {
transform: translateY(0px);
opacity: 1;
visibility: visible;
}
.nav-fade {
animation: navLinkFade 0.5s ease forwards;
transition: all 0.7s ease-in-out !important;
}
}
.nav-fade-active {
animation: navLinkFade 1s ease reverse !important;
}
}
.offcanvas-menu__header {
animation-delay: 1.8s !important;
}
.navbar__menu {
.nav-fade {
&:nth-of-type(1) {
animation-delay: 2s;
}
&:nth-of-type(2) {
animation-delay: 2.2s;
}
&:nth-of-type(3) {
animation-delay: 2.4s;
}
&:nth-of-type(4) {
animation-delay: 2.6s;
}
&:nth-of-type(5) {
animation-delay: 2.8s;
}
&:nth-of-type(6) {
animation-delay: 3s;
}
&:nth-of-type(7) {
animation-delay: 3.2s;
}
}
}
.offcanvas-menu__enterprise-info {
animation-delay: 3.4s !important;
}
.enterprise-social {
animation-delay: 3.6s !important;
}
.anime {
span {
&:nth-of-type(1) {
animation-delay: 3.8s !important;
}
&:nth-of-type(2) {
animation-delay: 4s !important;
}
&:nth-of-type(3) {
animation-delay: 4.2s !important;
}
&:nth-of-type(4) {
animation-delay: 4.4s !important;
}
&:nth-of-type(5) {
animation-delay: 4.6s !important;
}
&:nth-of-type(6) {
animation-delay: 4.8s !important;
}
}
}
@keyframes navLinkFade {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes navLinkFadeReverse {
from {
opacity: 0;
transform: translateY(0px);
}
to {
opacity: 0;
transform: translateY(100%);
}
}
@keyframes stickyNavbar {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(0px);
}
}
.navbar-active {
position: fixed;
top: 0px;
left: 0px;
right: 0px;
width: 100%;
background-color: rgba(0, 0, 0, 0.98);
animation: stickyNavbar 0.9s ease-in-out;
border-bottom: 1px solid rgba(212, 175, 55, 0.3);
backdrop-filter: blur(15px);
.primary-navbar {
padding: 15px 0px;
height: 70px;
}
}
.active-current-link {
color: var(--enterprise-gold) !important;
}
.active-current-sub {
color: var(--enterprise-gold) !important;
}
.active-current-parent > button {
color: var(--enterprise-gold) !important;
}
// Responsive styles for enterprise header
@media (max-width: 991.98px) {
.tp-header {
.navbar__menu {
display: none !important;
}
.navbar__options {
gap: 20px;
.btn {
padding: 10px 20px;
font-size: 12px;
}
}
}
}
@media (max-width: 991.98px) {
.offcanvas-nav {
.offcanvas-menu__enterprise-info {
left: 40px;
top: 20%;
max-width: 250px;
.enterprise-contact {
h4 {
font-size: 20px;
}
p {
font-size: 14px;
}
.contact-methods .contact-item {
padding: 10px 12px;
span {
font-size: 13px;
}
}
}
}
.enterprise-social {
left: 40px;
bottom: 15%;
li a {
width: 45px;
height: 45px;
i {
font-size: 16px;
}
}
}
}
}
@media (max-width: 767.98px) {
.tp-header {
.logo-img img {
max-height: 68px !important;
height: 68px !important;
}
.primary-navbar {
padding: 15px 0px;
}
.navbar__options {
gap: 15px;
.btn {
padding: 8px 16px;
font-size: 11px;
display: none !important;
}
}
.open-offcanvas-nav {
span {
height: 2px;
&.top-bar {
width: 25px;
}
&.middle-bar {
width: 28px;
}
&.bottom-bar {
width: 14px;
}
}
}
}
.offcanvas-nav {
.offcanvas-menu {
&::before {
font-size: 4vw;
top: 10%;
left: 5%;
}
.offcanvas-menu__wrapper {
padding: 0px 40px 40px;
}
}
.offcanvas-menu__enterprise-info {
left: 30px;
top: 15%;
max-width: 200px;
.enterprise-contact {
h4 {
font-size: 18px;
margin-bottom: 8px;
}
p {
font-size: 13px;
margin-bottom: 16px;
}
.contact-methods {
gap: 12px;
.contact-item {
padding: 8px 10px;
i {
font-size: 14px;
}
span {
font-size: 12px;
}
}
}
}
}
.enterprise-social {
left: 30px;
bottom: 12%;
gap: 15px;
li a {
width: 40px;
height: 40px;
i {
font-size: 14px;
}
}
}
.navbar__item {
a, button {
font-size: 24px;
padding: 20px 40px 20px 15px;
}
}
.navbar__sub-menu {
margin-left: 15px;
padding-right: 30px;
a, button {
font-size: 14px;
padding: 15px 15px;
}
}
}
}
@media (max-width: 575.98px) {
.tp-header {
.logo-img img {
max-height: 58px !important;
height: 58px !important;
}
.primary-navbar {
padding: 12px 0px;
}
}
.offcanvas-nav {
.offcanvas-menu {
&::before {
font-size: 3.5vw;
top: 8%;
left: 4%;
}
.offcanvas-menu__wrapper {
padding: 0px 20px 30px;
gap: 40px;
}
}
.offcanvas-menu__enterprise-info {
left: 20px;
top: 12%;
max-width: 180px;
.enterprise-contact {
h4 {
font-size: 16px;
margin-bottom: 6px;
}
p {
font-size: 12px;
margin-bottom: 12px;
}
.contact-methods {
gap: 10px;
.contact-item {
padding: 6px 8px;
i {
font-size: 12px;
width: 16px;
}
span {
font-size: 11px;
}
}
}
}
}
.enterprise-social {
left: 20px;
bottom: 10%;
gap: 12px;
li a {
width: 35px;
height: 35px;
i {
font-size: 12px;
}
}
}
.navbar__item {
a, button {
font-size: 20px;
padding: 16px 30px 16px 12px;
}
}
.navbar__sub-menu {
margin-left: 12px;
padding-right: 25px;
a, button {
font-size: 13px;
padding: 12px 12px;
}
}
}
}
/* ====
--------- (4.01) header styles end ---------
==== */