Files
bmp-website-2026/css/layout.css
Sebastian Pachon Araque fea7998835 Initial commit — BMP Website 2026
Vollständiges Redesign mit Gold-Formularen, BMP-Logo, multi-step Forms (Bewerbung, Kontakt, Sponsoring), Netlify-Deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 09:01:20 +02:00

399 lines
8.5 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===================================
BMP Layout (Nav + Footer)
=================================== */
/* ── Navigation (Floating Glass Effect) ── */
.nav {
position: fixed;
top: var(--space-md);
left: 50%;
transform: translateX(-50%);
width: calc(100% - var(--space-xl));
max-width: var(--container-xl);
height: 64px;
background: rgba(10, 25, 47, 0.75);
backdrop-filter: blur(16px) saturate(180%);
-webkit-backdrop-filter: blur(16px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: var(--radius-lg);
z-index: var(--z-nav);
transition:
top 0.4s cubic-bezier(0.16, 1, 0.3, 1),
width 0.4s cubic-bezier(0.16, 1, 0.3, 1),
border-radius 0.4s cubic-bezier(0.16, 1, 0.3, 1),
background 0.4s ease,
height 0.4s ease;
}
.nav.scrolled {
top: 0;
width: 100%;
max-width: 100%;
border-radius: 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
border-top: none;
border-left: none;
border-right: none;
background: rgba(6, 14, 27, 0.95);
height: 72px;
}
.nav__inner {
height: 100%;
padding: 0 var(--space-lg);
display: flex;
align-items: center;
justify-content: space-between;
}
.nav__brand {
display: flex;
align-items: center;
gap: var(--space-md);
text-decoration: none;
}
.nav__brand-name {
font-family: var(--font-display);
font-size: 1.15rem;
font-weight: var(--fw-bold);
color: var(--color-white);
letter-spacing: -0.01em;
line-height: 1.1;
display: block;
}
.nav__brand-sub {
font-size: 9px;
color: var(--color-accent);
text-transform: uppercase;
letter-spacing: 0.25em;
margin-top: 3px;
opacity: 0.9;
display: block;
}
.nav__links {
display: flex;
align-items: center;
gap: var(--space-xs);
}
.nav__link {
color: rgba(255, 255, 255, 0.65);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.15em;
font-weight: var(--fw-bold);
padding: 0.75rem 1.25rem;
transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
position: relative;
display: flex;
align-items: center;
border-radius: var(--radius-sm);
}
.nav__link:hover {
color: var(--color-white);
background: rgba(255, 255, 255, 0.05);
}
.nav__link.active {
color: var(--color-accent);
background: rgba(201, 162, 39, 0.08); /* Subtle gold tint */
}
/* Dots indicator for active state */
.nav__link::after {
content: '';
position: absolute;
bottom: 0.4rem;
left: 50%;
width: 3px;
height: 3px;
background: var(--color-accent);
border-radius: 50%;
transform: translateX(-50%) scale(0);
transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.nav__link.active::after {
transform: translateX(-50%) scale(1);
}
.nav__cta {
margin-left: var(--space-lg);
padding: 0.75rem 1.5rem;
font-size: 11px;
}
/* ── Page Hero (Depth & Atmosphere) ── */
.page-hero {
padding: calc(var(--nav-height) + var(--space-5xl)) 0 var(--space-4xl);
background: var(--color-primary);
position: relative;
overflow: hidden;
text-align: center;
}
.page-hero::before {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(circle at 50% 0%, var(--color-primary-light) 0%, transparent 70%);
opacity: 0.5;
}
/* ── Footer (Executive Style) ── */
.footer {
background: var(--color-dark);
padding: var(--space-5xl) 0 var(--space-xl);
border-top: 1px solid rgba(255, 255, 255, 0.05);
}
.footer__grid {
display: grid;
grid-template-columns: 1.5fr 1fr 1fr 1fr;
gap: var(--space-3xl);
margin-bottom: var(--space-4xl);
}
.footer__heading {
font-size: var(--fs-xs);
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--color-accent);
margin-bottom: var(--space-xl);
font-weight: var(--fw-bold);
}
.footer__link {
color: var(--color-gray);
font-size: var(--fs-small);
margin-bottom: var(--space-sm);
transition: color var(--transition-fast);
}
.footer__link:hover {
color: var(--color-white);
}
.footer__bottom {
border-top: 1px solid rgba(255, 255, 255, 0.05);
padding-top: var(--space-xl);
font-size: var(--fs-xs);
color: var(--color-gray-dark);
}
@media (max-width: 768px) {
.footer__grid {
grid-template-columns: 1fr 1fr;
gap: var(--space-2xl);
}
.footer__brand {
grid-column: 1 / -1;
}
}
/* ── Spacer ── */
.nav-spacer {
height: var(--nav-height);
}
/* ── Scroll Progress Bar ── */
.scroll-progress {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, var(--color-accent), var(--color-accent-light));
transform: scaleX(0);
transform-origin: left center;
z-index: calc(var(--z-nav) + 1);
pointer-events: none;
}
/* ── Nav: Mobile Toggle ── */
.nav__toggle {
display: none;
flex-direction: column;
justify-content: center;
gap: 6px;
padding: var(--space-xs);
background: none;
border: none;
cursor: pointer;
z-index: 10;
}
.nav__toggle-bar {
display: block;
width: 24px;
height: 2px;
background: var(--color-white);
border-radius: 2px;
transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease;
transform-origin: center;
}
.nav__toggle.open .nav__toggle-bar:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}
.nav__toggle.open .nav__toggle-bar:nth-child(2) {
opacity: 0;
transform: scaleX(0);
}
.nav__toggle.open .nav__toggle-bar:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
@media (max-width: 900px) {
.nav__toggle {
display: flex;
}
.nav__links {
position: fixed;
inset: 0;
background: rgba(6, 14, 27, 0.97);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
flex-direction: column;
align-items: center;
justify-content: center;
gap: var(--space-xl);
opacity: 0;
pointer-events: none;
transform: translateY(-16px);
transition:
opacity 0.35s cubic-bezier(0.16, 1, 0.3, 1),
transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
.nav__links.open {
opacity: 1;
pointer-events: all;
transform: translateY(0);
}
.nav__link {
font-size: var(--fs-h3);
letter-spacing: 0.05em;
}
.nav__cta {
margin-top: var(--space-sm);
}
}
/* ── Page Hero: text colors fix ── */
.page-hero h1,
.page-hero h2,
.page-hero h3,
.page-hero p {
color: var(--color-white);
}
.page-hero .hero-title,
.page-hero__title {
font-size: var(--fs-hero);
font-weight: var(--fw-black);
color: var(--color-white);
line-height: var(--lh-tight);
letter-spacing: var(--ls-tight);
margin-bottom: var(--space-xl);
text-wrap: balance;
}
.page-hero__subtitle {
font-size: var(--fs-body-lg);
color: rgba(255, 255, 255, 0.72);
max-width: 600px;
margin: 0 auto;
line-height: var(--lh-relaxed);
}
/* ── Page Hero: animated orbs ── */
.page-hero__orbs {
position: absolute;
inset: 0;
pointer-events: none;
overflow: hidden;
}
.page-hero__orb {
position: absolute;
border-radius: 50%;
filter: blur(90px);
}
.page-hero__orb--1 {
width: 700px;
height: 700px;
background: rgba(201, 162, 39, 0.08);
top: -300px;
right: -150px;
animation: orbFloat 14s ease-in-out infinite;
}
.page-hero__orb--2 {
width: 500px;
height: 500px;
background: rgba(111, 182, 233, 0.07);
bottom: -200px;
left: -100px;
animation: orbFloat 18s ease-in-out infinite reverse;
}
.page-hero__orb--3 {
width: 300px;
height: 300px;
background: rgba(201, 162, 39, 0.05);
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: orbFloat 10s ease-in-out infinite;
animation-delay: -5s;
}
@keyframes orbFloat {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(30px, -25px) scale(1.06); }
66% { transform: translate(-20px, 15px) scale(0.94); }
}
/* ── Scroll Indicator ── */
.scroll-indicator {
position: absolute;
bottom: var(--space-xl);
left: 50%;
transform: translateX(-50%);
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-xs);
color: rgba(255, 255, 255, 0.35);
font-size: 9px;
letter-spacing: 0.25em;
text-transform: uppercase;
font-family: var(--font-body);
font-weight: var(--fw-semibold);
}
.scroll-indicator__line {
width: 1px;
height: 48px;
background: linear-gradient(to bottom, rgba(201, 162, 39, 0.5), transparent);
animation: scrollLine 2.2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes scrollLine {
0% { transform: scaleY(0); transform-origin: top; opacity: 1; }
50% { transform: scaleY(1); transform-origin: top; opacity: 1; }
100% { transform: scaleY(1); transform-origin: bottom; opacity: 0; }
}