Files
bmp-website-2026/navigation.html
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

568 lines
16 KiB
HTML
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.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BMP Navigation — Prototype</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--navy: #101828;
--gold: #C9A227;
--muted: #D0D5DD;
--white: #FFFFFF;
--blue: #0B4DA2;
--blue-h: #6FB6E9;
--sep: rgba(201, 162, 39, 0.25);
}
body {
font-family: Georgia, serif;
background: #0A192F;
overflow-x: hidden;
}
body.overlay-open {
overflow: hidden;
}
/* ─────────────────────────────────────────
SIDEBAR
───────────────────────────────────────── */
#sidebar {
position: fixed;
top: 0; left: 0;
width: 72px;
height: 100vh;
background: var(--navy);
border-right: 1px solid rgba(201, 162, 39, 0.3);
display: flex;
flex-direction: column;
align-items: center;
z-index: 100;
padding: 24px 0;
}
/* Logo */
#sidebar .s-logo {
display: flex;
flex-direction: column;
align-items: center;
gap: 3px;
text-decoration: none;
flex-shrink: 0;
}
#sidebar .s-logo span {
font-size: 8px;
font-weight: 700;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--gold);
line-height: 1.2;
text-align: center;
writing-mode: horizontal-tb;
}
#sidebar .s-logo .logo-bmp {
font-size: 16px;
font-weight: 900;
letter-spacing: 0.05em;
color: var(--gold);
}
/* Spacer that pushes hamburger to center */
#sidebar .s-spacer { flex: 1; }
/* Hamburger */
#sidebar .s-hamburger {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
cursor: pointer;
background: none;
border: none;
padding: 10px 0;
flex-shrink: 0;
}
#sidebar .s-hamburger .bars {
display: flex;
flex-direction: column;
gap: 4px;
width: 22px;
}
#sidebar .s-hamburger .bars span {
display: block;
height: 1.5px;
background: var(--muted);
transition: all 0.3s ease;
transform-origin: center;
}
#sidebar .s-hamburger .menu-label {
font-family: Georgia, serif;
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--muted);
writing-mode: horizontal-tb;
}
/* Social icons */
#sidebar .s-social {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
margin-top: 28px;
flex-shrink: 0;
}
#sidebar .s-social a {
color: var(--muted);
text-decoration: none;
transition: color 0.2s;
display: flex;
align-items: center;
}
#sidebar .s-social a:hover { color: var(--gold); }
#sidebar .s-social svg { width: 18px; height: 18px; }
/* Language switcher */
#sidebar .s-lang {
margin-top: 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
flex-shrink: 0;
}
#sidebar .s-lang button {
font-family: Georgia, serif;
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.1em;
background: none;
border: none;
cursor: pointer;
color: var(--muted);
padding: 2px 0;
transition: color 0.2s;
line-height: 1;
}
#sidebar .s-lang button.active { color: var(--gold); }
#sidebar .s-lang button:hover:not(.active) { color: var(--white); }
#sidebar .s-lang .lang-sep {
width: 1px;
height: 10px;
background: rgba(201,162,39,0.3);
}
/* ─────────────────────────────────────────
OVERLAY
───────────────────────────────────────── */
#overlay {
position: fixed;
inset: 0;
background: var(--navy);
z-index: 200;
display: flex;
flex-direction: column;
padding: 32px 48px 36px;
/* closed state */
opacity: 0;
pointer-events: none;
transform: translateX(-20px);
transition: opacity 0.3s ease, transform 0.3s ease;
}
#overlay.is-open {
opacity: 1;
pointer-events: all;
transform: translateX(0);
}
/* Overlay top bar */
.ov-top {
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-shrink: 0;
margin-bottom: 48px;
}
/* Close button */
.ov-close {
display: flex;
align-items: center;
gap: 10px;
background: none;
border: none;
cursor: pointer;
padding: 0;
}
.ov-close .x-icon {
width: 32px;
height: 32px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.ov-close .x-icon::before,
.ov-close .x-icon::after {
content: '';
position: absolute;
width: 22px;
height: 1.5px;
background: var(--muted);
transition: background 0.2s;
}
.ov-close .x-icon::before { transform: rotate(45deg); }
.ov-close .x-icon::after { transform: rotate(-45deg); }
.ov-close:hover .x-icon::before,
.ov-close:hover .x-icon::after { background: var(--white); }
.ov-close .x-label {
font-family: Georgia, serif;
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--muted);
transition: color 0.2s;
}
.ov-close:hover .x-label { color: var(--white); }
/* Overlay logo (top right) */
.ov-logo {
text-align: right;
text-decoration: none;
}
.ov-logo .ov-logo-bmp {
font-size: 13px;
font-weight: 900;
letter-spacing: 0.12em;
color: var(--gold);
display: block;
}
.ov-logo .ov-logo-sub {
font-size: 8px;
letter-spacing: 0.2em;
text-transform: uppercase;
color: rgba(201,162,39,0.5);
display: block;
margin-top: 2px;
}
/* Nav list */
.ov-nav {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
list-style: none;
padding-left: 48px;
}
.ov-nav li {
border-top: 1px solid var(--sep);
}
.ov-nav li:last-child {
border-bottom: 1px solid var(--sep);
}
.ov-nav a {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 0;
text-decoration: none;
color: var(--white);
font-family: Georgia, serif;
font-size: clamp(22px, 3vw, 32px);
font-weight: bold;
text-transform: uppercase;
letter-spacing: 0.04em;
transition: color 0.15s, transform 0.15s;
}
.ov-nav a:hover {
color: var(--gold);
transform: translateX(8px);
}
.ov-nav a .nav-arrow {
color: var(--gold);
font-size: 1.2em;
font-style: normal;
margin-left: 16px;
flex-shrink: 0;
}
/* Overlay bottom bar */
.ov-bottom {
display: flex;
justify-content: flex-end;
align-items: center;
gap: 32px;
flex-shrink: 0;
flex-wrap: wrap;
}
/* Bottom lang */
.ov-lang {
display: flex;
align-items: center;
gap: 8px;
}
.ov-lang button {
font-family: Georgia, serif;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.1em;
background: none;
border: none;
cursor: pointer;
color: var(--muted);
transition: color 0.2s;
padding: 0;
}
.ov-lang button.active { color: var(--gold); }
.ov-lang button:hover:not(.active) { color: var(--white); }
.ov-lang .lang-pipe {
color: rgba(201,162,39,0.3);
font-size: 14px;
}
/* Bottom social */
.ov-social {
display: flex;
align-items: center;
gap: 20px;
}
.ov-social a {
color: var(--muted);
text-decoration: none;
transition: color 0.2s;
display: flex;
}
.ov-social a:hover { color: var(--gold); }
.ov-social svg { width: 18px; height: 18px; }
/* CTA button */
.ov-cta {
background: var(--blue);
color: var(--white);
font-family: Georgia, serif;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.1em;
border: none;
border-radius: 3px;
padding: 10px 20px;
cursor: pointer;
transition: background 0.2s;
text-decoration: none;
white-space: nowrap;
}
.ov-cta:hover { background: var(--blue-h); }
/* ─────────────────────────────────────────
DEMO CONTENT
───────────────────────────────────────── */
#demo-content {
margin-left: 72px;
min-height: 100vh;
background: #8B0020;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
padding: 60px;
text-align: center;
}
#demo-content h1 {
font-family: Georgia, serif;
font-size: clamp(32px, 6vw, 72px);
font-weight: 900;
color: rgba(255,255,255,0.15);
text-transform: uppercase;
letter-spacing: 0.08em;
line-height: 1;
}
#demo-content p {
font-family: Georgia, serif;
font-size: 13px;
color: rgba(255,255,255,0.2);
letter-spacing: 0.15em;
text-transform: uppercase;
}
</style>
</head>
<body>
<!-- ═══════════════════ SIDEBAR ═══════════════════ -->
<aside id="sidebar">
<!-- Logo -->
<a href="/" class="s-logo">
<span class="logo-bmp">BMP</span>
<span>Bayerischer<br/>Mittelstands<br/>preis</span>
</a>
<div class="s-spacer"></div>
<!-- Hamburger -->
<button class="s-hamburger" id="hamburger" aria-label="Menü öffnen" aria-expanded="false">
<div class="bars">
<span id="bar1"></span>
<span id="bar2"></span>
<span id="bar3"></span>
</div>
<span class="menu-label" id="menu-label">Menü</span>
</button>
<!-- Social -->
<div class="s-social">
<a href="https://instagram.com" target="_blank" rel="noopener" aria-label="Instagram">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r=".8" fill="currentColor" stroke="none"/>
</svg>
</a>
<a href="https://linkedin.com" target="_blank" rel="noopener" aria-label="LinkedIn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/>
</svg>
</a>
<a href="https://facebook.com" target="_blank" rel="noopener" aria-label="Facebook">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/>
</svg>
</a>
</div>
<!-- Language -->
<div class="s-lang">
<button class="active" onclick="setLang('de')">DE</button>
<div class="lang-sep"></div>
<button onclick="setLang('en')">EN</button>
</div>
</aside>
<!-- ═══════════════════ OVERLAY ═══════════════════ -->
<div id="overlay" role="dialog" aria-modal="true" aria-label="Navigation">
<!-- Top bar -->
<div class="ov-top">
<button class="ov-close" id="overlay-close" aria-label="Menü schließen">
<div class="x-icon"></div>
<span class="x-label">Menü</span>
</button>
<a href="/" class="ov-logo">
<span class="ov-logo-bmp">BMP</span>
<span class="ov-logo-sub">Bayerischer Mittelstandspreis</span>
</a>
</div>
<!-- Nav items -->
<nav>
<ul class="ov-nav">
<li><a href="/preistraeger">Preisträger:innen <span class="nav-arrow"></span></a></li>
<li><a href="/teilnahme">Teilnahme <span class="nav-arrow"></span></a></li>
<li><a href="/kategorien">Kategorien <span class="nav-arrow"></span></a></li>
<li><a href="/netzwerk">Netzwerk <span class="nav-arrow"></span></a></li>
<li><a href="/presse">Presse <span class="nav-arrow"></span></a></li>
</ul>
</nav>
<!-- Bottom bar -->
<div class="ov-bottom">
<div class="ov-lang">
<button class="active" onclick="setLang('de')">DE</button>
<span class="lang-pipe">|</span>
<button onclick="setLang('en')">EN</button>
</div>
<div class="ov-social">
<a href="https://instagram.com" target="_blank" rel="noopener" aria-label="Instagram">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r=".8" fill="currentColor" stroke="none"/>
</svg>
</a>
<a href="https://linkedin.com" target="_blank" rel="noopener" aria-label="LinkedIn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/>
</svg>
</a>
<a href="https://facebook.com" target="_blank" rel="noopener" aria-label="Facebook">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/>
</svg>
</a>
</div>
<a href="/login" class="ov-cta">Login Datenbank</a>
</div>
</div>
<!-- ═══════════════════ DEMO CONTENT ═══════════════════ -->
<main id="demo-content">
<h1>Bayerischer<br/>Mittelstandspreis</h1>
<p>Exzellenz seit 2005</p>
</main>
<script>
const hamburger = document.getElementById('hamburger');
const overlay = document.getElementById('overlay');
const overlayClose = document.getElementById('overlay-close');
const menuLabel = document.getElementById('menu-label');
const bar1 = document.getElementById('bar1');
const bar2 = document.getElementById('bar2');
const bar3 = document.getElementById('bar3');
function openOverlay() {
overlay.classList.add('is-open');
document.body.classList.add('overlay-open');
hamburger.setAttribute('aria-expanded', 'true');
// Morph bars to X
bar1.style.transform = 'translateY(5.5px) rotate(45deg)';
bar2.style.opacity = '0';
bar3.style.transform = 'translateY(-5.5px) rotate(-45deg)';
menuLabel.style.opacity = '0';
// Focus trap: first nav link
setTimeout(() => overlay.querySelector('.ov-nav a')?.focus(), 310);
}
function closeOverlay() {
overlay.classList.remove('is-open');
document.body.classList.remove('overlay-open');
hamburger.setAttribute('aria-expanded', 'false');
// Restore bars
bar1.style.transform = '';
bar2.style.opacity = '1';
bar3.style.transform = '';
menuLabel.style.opacity = '1';
hamburger.focus();
}
hamburger.addEventListener('click', () => {
overlay.classList.contains('is-open') ? closeOverlay() : openOverlay();
});
overlayClose.addEventListener('click', closeOverlay);
// Close on Escape
document.addEventListener('keydown', e => {
if (e.key === 'Escape' && overlay.classList.contains('is-open')) closeOverlay();
});
// Language switcher (shared state)
let currentLang = 'de';
function setLang(lang) {
currentLang = lang;
document.querySelectorAll('.s-lang button, .ov-lang button').forEach(btn => {
btn.classList.toggle('active', btn.textContent.trim().toLowerCase() === lang);
});
}
</script>
</body>
</html>