veza/apps/web/src/styles/header.css

280 lines
7.6 KiB
CSS
Raw Normal View History

/*
HEADER & NAVIGATION STYLES - FUSION DESIGN SYSTEM
*/
.header-veza {
position: fixed;
top: 0;
left: 0;
right: 0;
height: var(--header-height);
z-index: 1000;
backdrop-filter: blur(16px) saturate(180%);
background: rgba(5, 5, 8, 0.85);
border-bottom: 1px solid rgba(0, 255, 247, 0.1);
}
.header-veza::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 1px;
background: var(--gradient-neon);
opacity: 0.5;
}
.header-veza__inner {
display: flex;
align-items: center;
justify-content: space-between;
height: 100%;
padding: 0 var(--space-6);
max-width: var(--max-width);
margin: 0 auto;
}
/*
BRAND / LOGO
*/
.brand-veza {
display: flex;
align-items: center;
gap: var(--space-3);
cursor: pointer;
transition: transform var(--duration-fast) var(--ease-out);
}
.brand-veza:hover {
transform: translateY(-1px);
}
.brand-veza__logo {
width: 42px;
height: 42px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
/* Animated hexagonal logo mark */
.brand-veza__mark {
width: 100%;
height: 100%;
position: relative;
animation: logo-pulse 3s ease-in-out infinite;
}
.brand-veza__mark::before {
content: '';
position: absolute;
inset: 0;
background: conic-gradient(
from 0deg,
var(--veza-cyan),
var(--veza-magenta),
var(--veza-lime),
var(--veza-cyan)
);
clip-path: var(--clip-hex);
animation: logo-spin 10s linear infinite;
}
.brand-veza__mark::after {
content: '道';
/* "Dō" - The Way/Path */
position: absolute;
inset: 4px;
background: var(--veza-void);
clip-path: var(--clip-hex);
display: flex;
align-items: center;
justify-content: center;
font-family: var(--font-jp);
font-size: var(--text-lg);
font-weight: 700;
color: var(--veza-cyan);
text-shadow: 0 0 10px var(--veza-cyan);
}
.brand-veza__text {
display: flex;
flex-direction: column;
}
.brand-veza__name {
font-family: var(--font-display);
font-size: var(--text-lg);
font-weight: 700;
letter-spacing: 0.15em;
text-transform: uppercase;
background: var(--gradient-neon);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.brand-veza__tagline {
font-family: var(--font-mono);
font-size: var(--text-xs);
color: var(--veza-grey-300);
letter-spacing: 0.1em;
}
/*
NAVIGATION
*/
.nav-veza {
display: flex;
align-items: center;
gap: var(--space-1);
}
.nav-veza__link {
position: relative;
padding: var(--space-2) var(--space-4);
font-family: var(--font-heading);
font-size: var(--text-sm);
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--veza-grey-200);
transition: all var(--duration-fast) var(--ease-out);
overflow: hidden;
cursor: pointer;
}
.nav-veza__link::before {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 2px;
background: var(--gradient-neon);
transition: all var(--duration-normal) var(--ease-out);
transform: translateX(-50%);
}
.nav-veza__link:hover {
color: var(--veza-white);
}
.nav-veza__link:hover::before {
width: 80%;
}
.nav-veza__link--active {
color: var(--veza-cyan);
}
.nav-veza__link--active::before {
width: 80%;
}
/*
HEADER CTA
*/
.header-veza__cta {
display: flex;
align-items: center;
gap: var(--space-3);
}
/*
MOBILE MENU TOGGLE
*/
.nav-veza__toggle {
display: none;
width: 40px;
height: 40px;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 6px;
cursor: pointer;
background: transparent;
border: none;
padding: 0;
}
.nav-veza__toggle-line {
width: 24px;
height: 2px;
background: var(--veza-cyan);
transition: all var(--duration-fast) var(--ease-out);
box-shadow: 0 0 4px var(--veza-cyan);
}
.nav-veza__toggle--active .nav-veza__toggle-line:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}
.nav-veza__toggle--active .nav-veza__toggle-line:nth-child(2) {
opacity: 0;
}
.nav-veza__toggle--active .nav-veza__toggle-line:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
/*
RESPONSIVE
*/
@media (max-width: 768px) {
.nav-veza {
position: fixed;
top: var(--header-height);
left: 0;
right: 0;
flex-direction: column;
gap: 0;
background: rgba(5, 5, 8, 0.98);
backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(0, 255, 247, 0.1);
max-height: 0;
overflow: hidden;
transition: max-height var(--duration-slow) var(--ease-out);
}
.nav-veza--open {
max-height: 400px;
}
.nav-veza__link {
width: 100%;
padding: var(--space-4) var(--space-6);
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.nav-veza__toggle {
display: flex;
}
.brand-veza__tagline {
display: none;
}
}
@media (max-width: 480px) {
.header-veza__inner {
padding: 0 var(--space-4);
}
.brand-veza__logo {
width: 36px;
height: 36px;
}
.brand-veza__name {
font-size: var(--text-base);
}
}