Files
bmp-website-2026/css/base.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

342 lines
6.2 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 Base Styles & Reset
=================================== */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700&display=swap');
/* ── Reset ── */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
scroll-padding-top: var(--nav-height);
}
body {
font-family: var(--font-body);
font-size: var(--fs-body);
font-weight: var(--fw-regular);
line-height: var(--lh-normal);
color: var(--color-dark);
background-color: var(--color-white);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
}
img {
max-width: 100%;
height: auto;
display: block;
}
a {
color: var(--color-primary);
text-decoration: none;
transition: color var(--transition-fast);
}
a:hover {
color: var(--color-accent);
}
ul, ol {
list-style: none;
}
button {
cursor: pointer;
border: none;
background: none;
font-family: inherit;
font-size: inherit;
}
input, textarea, select {
font-family: inherit;
font-size: inherit;
}
/* ── Typography (Editorial Refinement) ── */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-display);
line-height: var(--lh-tight);
letter-spacing: var(--ls-tight);
color: var(--color-primary);
font-weight: var(--fw-bold);
}
h1 { font-size: var(--fs-hero); font-weight: var(--fw-black); }
h2 { font-size: var(--fs-h1); }
h3 { font-size: var(--fs-h2); }
h4 { font-size: var(--fs-h3); }
p {
margin-bottom: var(--space-md);
color: var(--color-gray-dark);
font-size: var(--fs-body);
max-width: 65ch; /* Optimal line length for readability */
}
.text-accent {
color: var(--color-accent);
}
/* ── Container ── */
.container {
width: 100%;
max-width: var(--container-xl);
margin: 0 auto;
padding: 0 var(--space-lg);
}
/* ── Sections (Generous Spacing) ── */
.section {
padding: var(--space-4xl) 0;
}
.section--dark {
background-color: var(--color-primary);
color: var(--color-white);
}
.section--dark h1,
.section--dark h2,
.section--dark h3,
.section--dark h4 {
color: var(--color-white);
}
/* ── Gold Divider (Minimal & Elegant) ── */
.gold-divider {
width: 80px;
height: 2px;
background: var(--color-accent);
margin: var(--space-md) auto;
position: relative;
}
.gold-divider::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 6px;
height: 6px;
background: var(--color-accent);
border-radius: 50%;
}
.gold-divider--left {
margin-left: 0;
}
/* ── Grid ── */
.grid {
display: grid;
gap: var(--space-xl);
}
.grid--2 { grid-template-columns: repeat(2, 1fr); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1024px) {
.grid--4 { grid-template-columns: repeat(2, 1fr); }
.grid--3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
.grid--4,
.grid--3,
.grid--2 {
grid-template-columns: 1fr;
}
}
/* ── Animations ── */
.reveal {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.revealed {
opacity: 1;
transform: translateY(0);
}
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-40px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
@keyframes pulse-gold {
0%, 100% { box-shadow: 0 0 0 0 rgba(201, 162, 39, 0.4); }
50% { box-shadow: 0 0 0 12px rgba(201, 162, 39, 0); }
}
/* ── Utility ── */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.flex {
display: flex;
}
.flex-center {
display: flex;
align-items: center;
justify-content: center;
}
.flex-between {
display: flex;
align-items: center;
justify-content: space-between;
}
.gap-sm { gap: var(--space-sm); }
.gap-md { gap: var(--space-md); }
.gap-lg { gap: var(--space-lg); }
.gap-xl { gap: var(--space-xl); }
/* ── Missing utilities ── */
.text-center { text-align: center; }
.italic { font-style: italic; }
.text-muted {
color: var(--color-gray-dark);
}
.overline {
font-size: var(--fs-xs);
font-weight: var(--fw-bold);
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--color-accent);
display: block;
margin-bottom: var(--space-sm);
}
.section-header {
text-align: center;
max-width: 640px;
margin: 0 auto var(--space-3xl);
}
.section--light {
background-color: var(--color-gray-lighter);
}
.section--pale-blue {
background-color: var(--color-secondary-pale);
}
.section--primary {
background-color: var(--color-primary);
}
.section--primary h1,
.section--primary h2,
.section--primary h3,
.section--primary h4 {
color: var(--color-white);
}
/* ── [data-reveal] animation system ── */
[data-reveal] {
opacity: 0;
transform: translateY(44px);
transition:
opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1),
transform 0.85s cubic-bezier(0.16, 1, 0.3, 1),
filter 0.85s cubic-bezier(0.16, 1, 0.3, 1);
}
[data-reveal="left"] {
transform: translateX(-56px);
}
[data-reveal="right"] {
transform: translateX(56px);
}
[data-reveal="scale"] {
transform: scale(0.88);
}
[data-reveal="blur"] {
transform: translateY(24px);
filter: blur(10px);
}
[data-reveal].revealed {
opacity: 1;
transform: none;
filter: none;
}
/* ── Stagger items ── */
.stagger-item {
opacity: 0;
transform: translateY(32px);
transition:
opacity 0.75s cubic-bezier(0.16, 1, 0.3, 1),
transform 0.75s cubic-bezier(0.16, 1, 0.3, 1);
}
.stagger-item.revealed {
opacity: 1;
transform: none;
}