<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <!-- SEO Optimierung -->
    <title>Dampfermessen.de - Der Messekalender für Vape & E-Zigaretten Events</title>
    <meta name="description" content="Der führende Kalender für Dampfermessen, Vape Expos und E-Zigaretten Events weltweit. Alle Termine, Orte und Infos für 2025, 2026 und das Archiv seit 2012.">
    <meta name="keywords" content="Dampfermesse, Vape Expo, E-Zigarette Messe, Dampfen, Vaping Events, Messekalender, Shisha Messe, Hall of Vape">
    <meta name="author" content="Dirk Sandmann">
    <meta name="robots" content="index, follow">
    
    <!-- Open Graph / Facebook -->
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://dampfermessen.de/">
    <meta property="og:title" content="Dampfermessen.de - Termine & Events">
    <meta property="og:description" content="Finde alle kommenden Dampfermessen und Vape-Events weltweit. Dein Portal für die Community.">
    <meta property="og:image" content="sub-seiten/images/Dampfermessen-logo.png">

    <!-- Twitter -->
    <meta property="twitter:card" content="summary_large_image">
    <meta property="twitter:url" content="https://dampfermessen.de/">
    <meta property="twitter:title" content="Dampfermessen.de - Termine & Events">
    <meta property="twitter:description" content="Finde alle kommenden Dampfermessen und Vape-Events weltweit.">
    <meta property="twitter:image" content="sub-seiten/images/Dampfermessen-logo.png">

    <!-- Favicon (Eingebettetes SVG - Keine externe Datei nötig) -->
    <link rel="icon" type="image/png" href="sub-seiten/images/FAVICON.png">

    <!-- KI-Bot Kontrolle -->
    <meta name="robots" content="index, follow, noimageai, noimageindex">
    
    <!-- AI Labyrinth aktivieren -->
    <meta name="aiBranding" content="enabled">

    <style>
        /* --- VARIABLES & RESET --- */
        :root {
            --primary: #ff1a1a; /* Neon Red */
            --secondary: #7b2cbf; /* Deep Purple */
            --bg-dark: #0f172a; /* Dark Blue/Black */
            --bg-card: #1e293b; /* Slightly lighter */
            --bg-row-hover: #2d3748;
            --text-light: #f8fafc;
            --text-muted: #94a3b8;
            --danger: #ef4444; /* Rot für Absagen */
            --gradient-hero: linear-gradient(135deg, rgba(15, 23, 42, 0.9), rgba(123, 44, 191, 0.6));
            --link-blue: #60a5fa;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
            background-color: var(--bg-dark);
            color: var(--text-light);
            line-height: 1.6;
            overflow-x: hidden;
            display: flex;
            flex-direction: column;
            min-height: 100vh;
        }

        /* --- LAYOUT STRUCTURE --- */
        main {
            flex: 1;
        }

        .page-section {
            display: none;
            animation: fadeIn 0.4s ease-out;
        }

        .page-section.active {
            display: block;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

        a {
            text-decoration: none;
            color: inherit;
            transition: color 0.3s ease;
        }

        ul {
            list-style: none;
        }

        /* --- HEADER & NAV --- */
        header {
            background-color: rgba(15, 23, 42, 0.95);
            backdrop-filter: blur(10px);
            padding: 1rem 2rem;
            position: sticky;
            top: 0;
            z-index: 1000;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .logo {
            font-size: 1.5rem;
            font-weight: 800;
            letter-spacing: 1px;
            color: var(--primary);
            display: flex;
            align-items: center;
            gap: 0.5rem;
            cursor: pointer;
        }

        .logo img {
            height: 40px; /* Passt das Bild an die Header-Höhe an */
            width: auto;
            display: block;
        }

        .logo span {
            color: var(--primary);
        }

        .nav-links {
            display: flex;
            gap: 2rem;
        }

        .nav-item {
            font-weight: 500;
            color: var(--text-muted);
            font-size: 0.95rem;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            cursor: pointer;
            padding-bottom: 5px;
            border-bottom: 2px solid transparent;
            transition: all 0.3s;
        }

        .nav-item:hover, .nav-item.active {
            color: var(--primary);
            border-color: var(--primary);
        }

        .menu-btn {
            display: none;
            background: none;
            border: none;
            color: white;
            font-size: 1.5rem;
            cursor: pointer;
        }

        /* --- PAGE: START (HOME) --- */
        .hero {
            position: relative;
            height: 70vh;
            min-height: 500px;
            display: flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            padding: 2rem;
            background: var(--gradient-hero), url('sub-seiten/images/Dampfermessen.png');
            background-size: cover;
            background-position: center;
            overflow: hidden;
        }
        
        .hero::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: radial-gradient(circle at 20% 50%, rgba(255, 26, 26, 0.1), transparent 50%);
            animation: pulse 8s ease-in-out infinite;
            pointer-events: none;
        }
        
        @keyframes pulse {
            0%, 100% { opacity: 0.3; }
            50% { opacity: 0.7; }
        }

        .hero-content {
            max-width: 800px;
            z-index: 1;
            animation: slideUp 0.8s ease-out;
        }
        
        @keyframes slideUp {
            from {
                opacity: 0;
                transform: translateY(30px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .hero h1 {
            font-size: 3.5rem;
            margin-bottom: 1rem;
            line-height: 1.2;
            background: linear-gradient(to right, #fff, var(--primary));
            background-clip: text;
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }

        .hero p {
            font-size: 1.2rem;
            color: var(--text-muted);
            margin-bottom: 2rem;
        }

        .cta-button {
            display: inline-block;
            padding: 1rem 2.5rem;
            background: linear-gradient(135deg, var(--primary), #ff4444);
            color: white;
            font-weight: bold;
            border-radius: 50px;
            box-shadow: 0 10px 30px rgba(255, 26, 26, 0.4);
            transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }
        
        .cta-button::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: rgba(255, 255, 255, 0.2);
            transition: left 0.5s ease;
        }
        
        .cta-button:hover::before {
            left: 100%;
        }

        .cta-button:hover {
            transform: translateY(-5px) scale(1.05);
            box-shadow: 0 15px 40px rgba(255, 26, 26, 0.8);
        }

        .home-info {
            max-width: 800px;
            margin: 4rem auto;
            padding: 0 2rem;
            text-align: center;
        }

        .home-info h2 {
            font-size: 2.5rem;
            margin-bottom: 1.5rem;
        }

        .info-box {
            background: rgba(123, 44, 191, 0.1);
            border-left: 4px solid var(--secondary);
            padding: 1.5rem;
            border-radius: 8px;
            margin-top: 2rem;
            text-align: left;
        }

        /* --- SHARED: TABLES & LAYOUT --- */
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 4rem 2rem;
        }

        .section-title {
            text-align: left;
            margin-bottom: 2rem;
            border-bottom: 1px solid rgba(255,255,255,0.1);
            padding-bottom: 1rem;
        }

        .title-flex-wrapper {
            display: flex;
            align-items: center; 
            justify-content: space-between; 
            gap: 1.5rem; 
            flex-wrap: wrap; 
        }
        
        .text-wrapper {
            flex: 1; 
            min-width: 250px;
        }

        .section-image {
            height: 200px;
            width: auto;
            object-fit: contain;
            border-radius: 8px;
            background: rgba(255,255,255,0.05);
            padding: 5px;
            margin-right: 4rem; 
        }

        .section-title h2 {
            font-size: 2rem;
            color: var(--primary);
            line-height: 1.2;
            position: relative;
            display: inline-block;
            padding-bottom: 0.5rem;
        }
        
        .section-title h2::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 3px;
            background: linear-gradient(90deg, var(--primary), transparent);
            border-radius: 2px;
        }

        .calendar-wrapper {
            background: linear-gradient(135deg, var(--bg-card) 0%, rgba(45, 55, 72, 0.5) 100%);
            border-radius: 16px;
            border: 1px solid rgba(255, 26, 26, 0.2);
            overflow: hidden;
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1);
            min-height: 200px;
            transition: all 0.3s ease;
        }
        
        .calendar-wrapper:hover {
            border-color: rgba(255, 26, 26, 0.4);
            box-shadow: 0 25px 50px rgba(255, 26, 26, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.1);
        }

        .calendar-header {
            display: grid;
            grid-template-columns: 2fr 3fr 2fr 1fr;
            background: rgba(255, 255, 255, 0.03);
            padding: 1rem 1.5rem;
            font-weight: bold;
            color: var(--primary);
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.05em;
        }

        .calendar-row {
            display: grid;
            grid-template-columns: 2fr 3fr 2fr 1fr;
            padding: 1.25rem 1.5rem;
            border-bottom: 1px solid rgba(255, 255, 255, 0.05);
            transition: background-color 0.2s;
            align-items: center;
            cursor: pointer;
        }

        .calendar-row:last-child { border-bottom: none; }
        .calendar-row:hover { background-color: var(--bg-row-hover); }

        /* Expandable Details */
        .cal-details {
            grid-column: 1 / -1;
            display: none;
            padding-top: 1rem;
            margin-top: 1rem;
            border-top: 1px solid rgba(255, 255, 255, 0.05);
            font-size: 0.9rem;
            color: var(--text-muted);
            line-height: 1.5;
        }

        .calendar-row.expanded {
            background-color: var(--bg-row-hover);
            border-left: 3px solid var(--primary);
        }
        
        .calendar-row.expanded .cal-details {
            display: block;
            animation: slideDown 0.3s ease;
        }

        @keyframes slideDown {
            from { opacity: 0; transform: translateY(-5px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .calendar-row.cancelled {
            opacity: 0.5;
            background: rgba(239, 68, 68, 0.05);
        }
        .calendar-row.cancelled .cal-event, 
        .calendar-row.cancelled .cal-date {
            text-decoration: line-through;
            color: var(--text-muted);
        }

        .cal-date { font-family: 'Courier New', monospace; font-weight: bold; color: var(--text-muted); }
        
        .cal-event { font-weight: 600; color: white; }
        
        .cal-event a {
            color: white;
            text-decoration: none;
            border-bottom: 1px dotted var(--text-muted);
            transition: all 0.3s ease;
            position: relative;
            z-index: 2;
        }
        
        .cal-event a:hover {
            color: var(--primary);
            border-bottom: 1px solid var(--primary);
        }

        .cal-location { color: var(--text-muted); }
        .cal-country { justify-self: center; }

        /* --- DISCLAIMER TEXT --- */
        .disclaimer-text {
            text-align: center;
            font-size: 0.75rem;
            color: var(--text-muted);
            margin-top: 1rem;
            font-style: italic;
            opacity: 0.8;
        }

        /* --- YEAR TABS --- */
        .year-tabs-container {
            overflow-x: auto;
            padding-bottom: 1rem;
            margin-bottom: 1.5rem;
            scrollbar-width: none;
        }
        .year-tabs-container::-webkit-scrollbar { display: none; }

        .year-tabs {
            display: flex;
            gap: 0.5rem;
        }

        .year-tab {
            background: transparent;
            border: 2px solid rgba(255,255,255,0.1);
            color: var(--text-muted);
            padding: 0.5rem 1.2rem;
            border-radius: 20px;
            cursor: pointer;
            font-size: 0.95rem;
            white-space: nowrap;
            transition: all 0.3s ease;
            position: relative;
        }
        
        .year-tab:hover {
            border-color: rgba(255, 26, 26, 0.6);
            color: var(--primary);
            transform: scale(1.05);
        }
        
        .year-tab.active {
            background: linear-gradient(135deg, var(--primary), #ff4444);
            color: white;
            border-color: var(--primary);
            font-weight: bold;
            box-shadow: 0 8px 20px rgba(255, 26, 26, 0.4);
            transform: scale(1.08);
        }

        .db-content { display: none; }
        .db-content.active { display: block; animation: fadeIn 0.3s ease; }

        /* --- BADGES --- */
        .badge {
            display: inline-block;
            padding: 0.2rem 0.6rem;
            border-radius: 4px;
            font-size: 0.7rem;
            font-weight: bold;
            background: rgba(255, 255, 255, 0.1);
            color: var(--text-light);
            min-width: 35px;
            text-align: center;
        }
        
        /* Country Colors */
        .badge[data-country="DE"] { background: rgba(255, 200, 0, 0.15); color: #ffca28; border: 1px solid rgba(255, 200, 0, 0.2); }
        .badge[data-country="US"] { background: rgba(59, 130, 246, 0.15); color: #60a5fa; border: 1px solid rgba(59, 130, 246, 0.2); }
        .badge[data-country="UK"], .badge[data-country="GB"] { background: rgba(139, 92, 246, 0.15); color: #a78bfa; border: 1px solid rgba(139, 92, 246, 0.2); }
        .badge[data-country="FR"] { background: rgba(244, 114, 182, 0.15); color: #f472b6; border: 1px solid rgba(244, 114, 182, 0.2); }
        .badge[data-country="IT"] { background: rgba(74, 222, 128, 0.15); color: #4ade80; border: 1px solid rgba(74, 222, 128, 0.2); }
        .badge[data-country="ES"] { background: rgba(251, 146, 60, 0.15); color: #fb923c; border: 1px solid rgba(251, 146, 60, 0.2); }
        .badge[data-country="CN"] { background: rgba(239, 68, 68, 0.15); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }
        .badge[data-country="CH"], .badge[data-country="AT"] { background: rgba(255, 255, 255, 0.15); color: #fff; border: 1px solid rgba(255, 255, 255, 0.2); }
        .badge[data-country="AE"] { background: rgba(255, 215, 0, 0.15); color: #ffd700; border: 1px solid rgba(255, 215, 0, 0.2); }
        .badge[data-country="PL"] { background: rgba(220, 20, 60, 0.15); color: #dc143c; border: 1px solid rgba(220, 20, 60, 0.2); }
        .badge[data-country="CL"], .badge[data-country="CO"], .badge[data-country="MX"], .badge[data-country="PE"], .badge[data-country="BR"] { background: rgba(59, 130, 246, 0.15); color: #60a5fa; border: 1px solid rgba(59, 130, 246, 0.2); }
        .badge[data-country="ZA"], .badge[data-country="JP"], .badge[data-country="KR"], .badge[data-country="MY"], .badge[data-country="IN"], .badge[data-country="ID"] { background: rgba(255, 215, 0, 0.15); color: #ffd700; border: 1px solid rgba(255, 215, 0, 0.2); }
        .badge[data-country="RU"], .badge[data-country="UA"], .badge[data-country="CZ"], .badge[data-country="DK"], .badge[data-country="IE"], .badge[data-country="GR"], .badge[data-country="NZ"], .badge[data-country="IL"] { background: rgba(139, 92, 246, 0.15); color: #a78bfa; border: 1px solid rgba(139, 92, 246, 0.2); }

        .badge-cancelled { background: rgba(239, 68, 68, 0.2); color: var(--danger); border: 1px solid rgba(239, 68, 68, 0.3); font-size: 0.65rem; margin-left: 0.5rem; padding: 2px 6px; border-radius: 99px; }

        /* --- TEXT PAGES CONTENT --- */
        .text-content {
            background: var(--bg-card);
            padding: 2rem;
            border-radius: 16px;
            border: 1px solid rgba(255,255,255,0.05);
            color: #d1d5db;
        }
        .text-content h2 { color: white; font-size: 1.8rem; margin-bottom: 1.5rem; }
        .text-content h3 { color: white; font-size: 1.2rem; margin-top: 1.5rem; margin-bottom: 0.8rem; }
        .text-content p { margin-bottom: 1rem; line-height: 1.7; }
        .text-content ul { list-style: disc; margin-left: 1.5rem; margin-bottom: 1rem; color: var(--text-muted); }
        
        .text-placeholder {
            color: #4ade80;
            font-weight: bold;
            background-color: rgba(74, 222, 128, 0.1);
            padding: 0.1rem 0.3rem;
            border-radius: 0.2rem;
        }
        
        .text-link {
            color: var(--link-blue);
            text-decoration: none;
        }
        .text-link:hover { text-decoration: underline; }

        .sub-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 1.5rem;
            margin-top: 1.5rem;
        }
        .sub-card {
            background: rgba(31, 41, 55, 0.5);
            padding: 1.5rem;
            border-radius: 8px;
            border: 1px solid rgba(255,255,255,0.05);
        }

        /* --- PARTNER GRID --- */
        .partner-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 2rem;
        }
        .partner-card {
            background: linear-gradient(135deg, var(--bg-card) 0%, rgba(45, 55, 72, 0.3) 100%);
            padding: 2rem;
            border-radius: 16px;
            text-align: center;
            border: 2px solid rgba(255,255,255,0.1);
            transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
            display: flex;
            flex-direction: column;
            height: 100%;
            text-decoration: none;
            position: relative;
            overflow: hidden;
        }
        
        .partner-card::before {
            content: '';
            position: absolute;
            top: -50%;
            right: -50%;
            width: 200px;
            height: 200px;
            background: radial-gradient(circle, rgba(255, 26, 26, 0.2), transparent);
            transition: all 0.6s ease;
        }
        
        .partner-card:hover {
            transform: translateY(-10px) scale(1.02);
            border-color: var(--primary);
            box-shadow: 0 15px 40px rgba(255, 26, 26, 0.2);
        }
        
        .partner-card:hover::before {
            top: -25%;
            right: -25%;
        }
        .partner-card h2 { font-size: 1.5rem; font-weight: bold; color: white; margin-bottom: 0.8rem; }
        .partner-card p { flex-grow: 1; color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1.5rem; }
        .btn-partner { 
            background-color: #0891b2; /* cyan-600 */
            color: white; 
            font-weight: bold; 
            padding: 0.5rem 1rem; 
            border-radius: 9999px; 
            font-size: 0.875rem;
            display: inline-block;
            margin-top: auto;
            transition: background-color 0.3s;
        }
        .btn-partner:hover { background-color: #0e7490; /* cyan-700 */ }

        /* --- SUPPORTED BY STYLES --- */
        .sponsor-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
            gap: 2rem;
            margin-top: 2rem;
        }
        .sponsor-logo {
            background: #fff;
            padding: 1rem;
            border-radius: 8px;
            height: 100px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #333;
            font-weight: bold;
            text-transform: uppercase;
        }


        /* --- NEW SIMPLE FOOTER STYLES --- */
        footer {
            background-color: #0a0e17;
            color: #ffffff;
            padding: 2rem;
            margin-top: auto;
            border-top: 1px solid rgba(255, 255, 255, 0.05);
        }

        .footer-container {
            max-width: 1200px;
            margin: 0 auto;
            display: flex;
            flex-direction: column;
            align-items: center;
            text-align: center;
            gap: 1rem;
        }

        @media (min-width: 768px) {
            .footer-container {
                flex-direction: row;
                justify-content: space-between;
                text-align: left;
            }
        }

        .footer-copyright {
            color: #9ca3af; /* gray-400 */
            font-size: 0.875rem; /* text-sm */
        }

        .footer-links {
            display: flex;
            gap: 1.5rem;
            flex-wrap: wrap;
            justify-content: center;
        }

        .footer-links a {
            color: var(--link-blue); 
            font-size: 0.875rem;
            text-decoration: none;
            transition: color 0.3s;
        }

        .footer-links a:hover {
            color: var(--primary); /* Hover to neon red */
        }

        /* --- MOBILE --- */
        @media (max-width: 768px) {
            .hero h1 { font-size: 2.5rem; }
            .nav-links {
                display: none;
                position: absolute;
                top: 100%; left: 0; width: 100%;
                background: #0f172a;
                flex-direction: column;
                padding: 2rem;
                text-align: center;
                border-bottom: 1px solid rgba(255,255,255,0.1);
            }
            .nav-links.mobile-active { display: flex; }
            .menu-btn { display: block; }
            
            .calendar-header { display: none; }
            .calendar-row { grid-template-columns: 1fr; gap: 0.25rem; padding: 1.5rem; position: relative; }
            .cal-country { position: absolute; top: 1.5rem; right: 1.5rem; }
            .cal-event { font-size: 1.1rem; padding-right: 40px; margin-bottom: 0.25rem; }
            
            /* Anpassung für Bildtitel auf Mobile */
            .title-flex-wrapper {
                justify-content: center;
                text-align: center;
            }
            .section-title {
                text-align: center;
            }
            /* Reset margin für Mobile, damit es zentriert bleibt */
            .section-image {
                margin-right: 0; 
                margin-bottom: 1rem;
            }
        }
    </style>
</head>
<body>

    <!-- Header -->
    <header>
        <div class="logo" onclick="switchPage('home')">
            <img src="sub-seiten/images/Dampfermessen-logo.png" alt="Logo">
            DAMPFER<span>MESSEN</span>
        </div>
        <button class="menu-btn" onclick="toggleMenu()">☰</button>
        <nav class="nav-links" id="navLinks">
            <div class="nav-item active" onclick="switchPage('home')">Home</div>
            <div class="nav-item" onclick="switchPage('aktuelles')">Aktuelles</div>
            <div class="nav-item" onclick="switchPage('datenbank')">Datenbank</div>
            <!-- NEUER TAB -->
            <div class="nav-item" onclick="switchPage('mitmachen')">Mitmachen</div>
        </nav>
    </header>

    <main>
        <!-- SEITE 1: START -->
        <section id="page-home" class="page-section active">
            <div class="hero">
                <div class="hero-content">
                    <h1>Die Welt der Dampfermessen</h1>
                    <p>Dein zentrales Portal für Messetermine, News und Community-Events. <br>Entdecke neue Trends und vernetze dich mit der Szene.</p>
                    <div class="cta-button" onclick="switchPage('aktuelles')">Nächste Termine ansehen</div>
                </div>
            </div>
            
            <div class="home-info">
                <h2>Willkommen in der Community</h2>
                <p>Dampfermessen sind weit mehr als nur Ausstellungen – sie sind das Herzstück unserer Szene. Hier treffen Innovation auf Leidenschaft, Hersteller auf Konsumenten und Neulinge auf Profis.</p>
                <p>Seit 2017 begleiten wir euch auf dampfermessen.de durch die Welt des Vapings.</p>
            </div>
        </section>

        <!-- SEITE 2: AKTUELLES -->
        <section id="page-aktuelles" class="page-section">
            <div class="container">
                <div class="section-title">
                    <!-- BILD NEBEN SCHRIFT: CONTAINER -->
                    <div class="title-flex-wrapper">
                        <div class="text-wrapper">
                            <h2>Kommende Highlights (6 Monate)</h2>
                            <p style="color: var(--text-muted)">Die wichtigsten Events von Februar bis Juni 2026.</p>
                        </div>
                        <!-- Bild jetzt NACH dem Text (also rechts), mit margin eingerückt -->
                        <img src="sub-seiten/images/Dampfermessen-logo.png" alt="Highlights Bild" class="section-image">
                    </div>
                </div>

                <div class="calendar-wrapper">
                    <div class="calendar-header">
                        <div>Datum</div>
                        <div>Messe / Event</div>
                        <div>Ort</div>
                        <div style="text-align:center;">Land</div>
                    </div>

                    <div id="upcoming-container"></div>
                </div>
                <p class="disclaimer-text">* Alle Angaben sind ohne Gewähr von Richtigkeit und Vollständigkeit.</p>
            </div>
        </section>

        <!-- SEITE 3: DATENBANK -->
        <section id="page-datenbank" class="page-section">
            <div class="container">
                <div class="section-title">
                    <!-- BILD NEBEN SCHRIFT: CONTAINER -->
                    <div class="title-flex-wrapper">
                        <div class="text-wrapper">
                            <h2>Archiv & Datenbank</h2>
                            <p style="color: var(--text-muted)">Vollständige Historie aller gelisteten Messen seit 2012. (Klicke auf eine Zeile für Details)</p>
                        </div>
                        <!-- Bild jetzt NACH dem Text (also rechts), mit margin eingerückt -->
                        <img src="sub-seiten/images/Dampfermessen-logo.png" alt="Archiv Bild" class="section-image">
                    </div>
                </div>

                <!-- Year Tabs -->
                <div class="year-tabs-container">
                    <div class="year-tabs" id="year-tabs-wrapper">
                        <!-- JS generates tabs here -->
                    </div>
                </div>

                <div class="calendar-wrapper">
                    <div class="calendar-header">
                        <div>Datum</div>
                        <div>Messe / Event</div>
                        <div>Ort</div>
                        <div style="text-align:center;">Land</div>
                    </div>

                    <!-- Container for filtered rows -->
                    <div id="db-content-container"></div>
                </div>
                <p class="disclaimer-text">* Alle Angaben sind ohne Gewähr von Richtigkeit und Vollständigkeit.</p>
            </div>
        </section>

        <!-- SEITE 4: MITMACHEN (NEU) -->
        <section id="page-mitmachen" class="page-section">
            <div class="container">
                <div class="section-title">
                    <!-- ADDING IMAGE TO HEADER LIKE OTHER TABS -->
                    <div class="title-flex-wrapper">
                        <div class="text-wrapper">
                            <h2>Mitmachen & Community</h2>
                            <p style="color: var(--text-muted)">Gestalte den Kalender aktiv mit!</p>
                        </div>
                        <!-- Bild jetzt NACH dem Text (also rechts), mit margin eingerückt -->
                        <img src="sub-seiten/images/Dampfermessen-logo.png" alt="Mitmachen Bild" class="section-image">
                    </div>
                </div>
                
                <div class="text-content">
                    <p style="font-size: 1.1rem; margin-bottom: 2rem;">
                        Du hast von einer neuen Messe erfahren, die noch in unserer Übersicht fehlt? Oder bist du vielleicht selbst Veranstalter eines Vape-Events?
                        Wir setzen auf die Schwarmintelligenz der Community, um diesen Kalender so aktuell und vollständig wie möglich zu halten.
                        Über unser öffentliches Google Doc kannst du ganz unkompliziert neue Termine vorschlagen, Fehler melden oder Absagen eintragen.
                        Jeder Beitrag hilft der Szene, den Überblick zu behalten. Vielen Dank für deine Unterstützung!
                    </p>
                    
                    <!-- Klickbare Box für das Google Doc - 50% Breite und zentriert -->
                    <a href="https://docs.google.com/spreadsheets/d/1790C49wtZQdD36ckZx9OTfLfIaE6ieN20CSpZxn5zt0/edit?gid=0#gid=0" target="_blank" style="text-decoration: none; display: block;">
                        <div style="background: var(--bg-row-hover); padding: 3rem; border-radius: 12px; border: 2px dashed var(--primary); text-align: center; margin: 1rem auto; width: 50%; min-width: 280px; transition: all 0.3s; cursor: pointer;">
                            <h3 style="color: var(--primary); margin: 0; font-size: 1.5rem;">Hier klicken: Zum Google Doc für neue Termine</h3>
                            <p style="color: var(--text-muted); margin-top: 1rem;">Öffnet die Tabelle in einem neuen Fenster</p>
                        </div>
                    </a>
                </div>
            </div>
        </section>

        <!-- SEITE: IMPRESSUM WURDE ENTFERNT (Jetzt extern) -->
        <!-- SEITE: DATENSCHUTZ WURDE ENTFERNT (Jetzt extern) -->

        <!-- SEITE: PARTNER -->
        <section id="page-partner" class="page-section">
            <div class="container">
                <div class="section-title"><h2>Unsere Partner</h2></div>
                <div class="partner-grid">
                    
                    <a href="https://Noob-Town.de" target="_blank" class="partner-card text-decoration-none">
                        <h2>Noob-Town</h2>
                        <p>Deine Anlaufstelle für Noobs im Gaming. Tipps, Tricks und Community.</p>
                        <span class="btn-partner">Zu Noob-Town.de</span>
                    </a>

                    <a href="https://Next-Url.de" target="_blank" class="partner-card text-decoration-none">
                        <h2>Next-Url</h2>
                        <p>Kreative und kurze URL-Verkürzungen für deine Links.</p>
                        <span class="btn-partner">Zu Next-Url.de</span>
                    </a>

                    <a href="https://Ellen-Sandmann.de" target="_blank" class="partner-card text-decoration-none">
                        <h2>Ellen-Sandmann</h2>
                        <p>Persönliche Homepage mit Fokus auf kreative Projekte und Inhalte.</p>
                        <span class="btn-partner">Zu Ellen-Sandmann.de</span>
                    </a>

                    <a href="https://www.rebel-girl-fm.de/" target="_blank" class="partner-card text-decoration-none">
                        <h2>Rebel Girl FM</h2>
                        <p>Das Radio der Anderen. KI-Rock, Punk & Darkwave. Laut, unangepasst und echt.</p>
                        <span class="btn-partner">Zu Rebel-Girl-FM.de</span>
                    </a>

                    <a href="https://DampferBurg.de" target="_blank" class="partner-card text-decoration-none">
                        <h2>DampferBurg</h2>
                        <p>Die zentrale Seite rund um den Kanal und die Community der DampferBurg.</p>
                        <span class="btn-partner">Zu DampferBurg.de</span>
                    </a>

                </div>
            </div>
        </section>

        <!-- SEITE: IMPRESSUM -->
        <section id="page-impressum" class="page-section">
            <div class="container" style="max-width: 1000px; margin: 0 auto; padding: 3rem 1rem;">
                
                <div class="section-title" style="text-align: center;">
                    <h2 style="text-align: center;">Impressum <span style="font-weight:300; opacity:0.7;">Dampfermessen</span></h2>
                    <p style="color: var(--text-muted); text-align: center; margin-top: 1rem;">Rechtliche Hinweise und Kontaktdaten</p>
                </div>

                <div style="background: rgba(30, 41, 59, 0.7); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 1rem; padding: 2.5rem; margin-bottom: 2rem;">
                    
                    <!-- Kontakt Grid -->
                    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 2rem; margin-bottom: 2rem;">
                        <!-- Betreiber -->
                        <div>
                            <div style="color: #ff1a1a; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 1px; font-weight: 700; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.3rem;">
                                <svg style="width: 20px; height: 20px;" viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>
                                Angaben gemäß § 5 DDG
                            </div>
                            <div style="font-size: 1.2rem; font-weight: bold; color: #fff; margin-bottom: 0.5rem;">Dirk Sandmann</div>
                            <div style="color: #94a3b8;">
                                Zeppelinstr. 6<br>
                                90763 Fürth<br>
                                Deutschland
                            </div>
                        </div>

                        <!-- Kontakt -->
                        <div>
                            <div style="color: #ff1a1a; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 1px; font-weight: 700; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.3rem;">
                                <svg style="width: 20px; height: 20px;" viewBox="0 0 24 24" fill="currentColor"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>
                                Kontakt
                            </div>
                            <div style="margin-bottom: 0.5rem;">Tel: +49-911-93163615</div>
                            <div style="font-weight: bold; color: #fff;">E-Mail: <a href="/cdn-cgi/l/email-protection#4a23242c250a0e2b273a2c2f38272f39392f24642e2f" style="color: #60a5fa; text-decoration: none;"><span class="__cf_email__" data-cfemail="660f0800092622070b160003140b0315150308480203">[email&#160;protected]</span></a></div>
                        </div>

                        <!-- Verantwortlich -->
                        <div>
                            <div style="color: #ff1a1a; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 1px; font-weight: 700; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.3rem;">
                                <svg style="width: 20px; height: 20px;" viewBox="0 0 24 24" fill="currentColor"><path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/></svg>
                                Inhalt § 18 Abs. 2 MStV
                            </div>
                            <div>Dirk Sandmann</div>
                        </div>
                    </div>

                    <hr style="border: 0; border-top: 1px solid rgba(255, 255, 255, 0.08); margin: 2rem 0;">

                    <!-- Geltungsbereich -->
                    <h3 style="font-size: 1.3rem; margin-bottom: 1rem; color: #ff1a1a;">Geltungsbereich & Projekte</h3>
                    <p style="color: #94a3b8; margin-bottom: 1.5rem;">Dieses Impressum gilt für folgende Webseiten und Profile:</p>

                    <div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem;">
                        <!-- DampferBurg -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">DampferBurg</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://DampferBurg.de" target="_blank" style="color: #60a5fa; text-decoration: none;">DampferBurg.de</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://youtube.com/@DampferBurg" target="_blank" style="color: #60a5fa; text-decoration: none;">YouTube</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://twitch.tv/dampferburg" target="_blank" style="color: #60a5fa; text-decoration: none;">Twitch</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://www.tiktok.com/@dampferburg" target="_blank" style="color: #60a5fa; text-decoration: none;">TikTok</a></li>
                            </ul>
                        </div>

                        <!-- Rebel Girl FM -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">Rebel Girl FM</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://rebel-girl-fm.de" target="_blank" style="color: #60a5fa; text-decoration: none;">Rebel-Girl-FM.de</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://youtube.com/@RebelGirlFM" target="_blank" style="color: #60a5fa; text-decoration: none;">YouTube</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://twitch.tv/rebelgirlfm" target="_blank" style="color: #60a5fa; text-decoration: none;">Twitch</a></li>
                            </ul>
                        </div>

                        <!-- Dampfermessen -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">Dampfermessen</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://Dampfermessen.de" target="_blank" style="color: #60a5fa; text-decoration: none;">Dampfermessen.de</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="http://docs.dampfermessen.de" target="_blank" style="color: #60a5fa; text-decoration: none;">Mitmachen</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://www.youtube.com/@dampfermessen" target="_blank" style="color: #60a5fa; text-decoration: none;">YouTube</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://www.twitch.tv/dampfermessen" target="_blank" style="color: #60a5fa; text-decoration: none;">Twitch</a></li>
                                <li style="margin-bottom: 0.3rem;"><a href="https://tiktok.com/@dampfermessen" target="_blank" style="color: #60a5fa; text-decoration: none;">TikTok</a></li>
                            </ul>
                        </div>

                        <!-- Noob-Town -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">Noob-Town</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://Noob-Town.de" target="_blank" style="color: #60a5fa; text-decoration: none;">Noob-Town.de</a></li>
                            </ul>
                        </div>

                        <!-- Next-Url -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">Next-Url</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://Next-Url.de" target="_blank" style="color: #60a5fa; text-decoration: none;">Next-Url.de</a></li>
                            </ul>
                        </div>

                        <!-- Ellen Sandmann -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">Ellen Sandmann</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://Ellen-Sandmann.de" target="_blank" style="color: #60a5fa; text-decoration: none;">Ellen-Sandmann.de</a></li>
                            </ul>
                        </div>

                        <!-- DampferBurg (vollständig) -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">DampferBurg (erweitert)</h4>
                            <ul style="list-style: none; font-size: 0.75rem;">
                                <li style="margin-bottom: 0.2rem;"><a href="https://suno.com/@dampferbug" target="_blank" style="color: #60a5fa; text-decoration: none;">Suno</a></li>
                                <li style="margin-bottom: 0.2rem;"><a href="https://linktr.ee/dampferburg" target="_blank" style="color: #60a5fa; text-decoration: none;">Linktree</a></li>
                                <li style="margin-bottom: 0.2rem;"><a href="https://discord.com/invite/2wWvcNw" target="_blank" style="color: #60a5fa; text-decoration: none;">Discord</a></li>
                                <li style="margin-bottom: 0.2rem;"><a href="https://ko-fi.com/dampferburg" target="_blank" style="color: #60a5fa; text-decoration: none;">Ko-Fi</a></li>
                                <li style="margin-bottom: 0.2rem;"><a href="https://steamcommunity.com/id/dampferburg/" target="_blank" style="color: #60a5fa; text-decoration: none;">Steam</a></li>
                            </ul>
                        </div>

                        <!-- DampferburgMusic -->
                        <div style="background: rgba(0,0,0,0.2); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.05);">
                            <h4 style="color: #ff1a1a; font-size: 1rem; margin-bottom: 0.5rem;">DampferburgMusic</h4>
                            <ul style="list-style: none; font-size: 0.85rem;">
                                <li style="margin-bottom: 0.3rem;"><a href="https://suno.com/@dampferburgmusic" target="_blank" style="color: #60a5fa; text-decoration: none;">Suno</a></li>
                            </ul>
                        </div>
                    </div>

                    <!-- Footer Text -->
                    <div style="margin-top: 3rem; padding-top: 1rem; border-top: 1px solid rgba(255, 255, 255, 0.08); text-align: center; font-size: 0.9rem; color: #94a3b8;">
                        <strong>Streitschlichtung:</strong><br>
                        Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit: 
                        <a href="https://ec.europa.eu/consumers/odr" target="_blank" style="color: #60a5fa; text-decoration: none;">https://ec.europa.eu/consumers/odr</a>.
                    </div>

                </div>
            </div>
        </section>

        <!-- SEITE: DATENSCHUTZ -->
        <section id="page-datenschutz" class="page-section">
            <div class="container" style="max-width: 1000px; margin: 0 auto; padding: 3rem 1rem;">
                
                <div class="section-title" style="text-align: center;">
                    <h2 style="text-align: center; border-bottom: none; margin-top: 0;">Datenschutz <span style="font-weight:300; opacity:0.7;">Dampfermessen</span></h2>
                    <p style="color: var(--text-muted); text-align: center; margin-top: 1rem;">Rechtliche Hinweise zur Datenverarbeitung</p>
                </div>

                <div style="background: rgba(30, 41, 59, 0.7); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 1rem; padding: 2.5rem; margin-bottom: 2rem;">
                    
                    <!-- 1. EINLEITUNG -->
                    <h3 style="color: #ff1a1a; font-size: 1.5rem; margin-top: 0; margin-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding-bottom: 0.5rem;">1. Datenschutz auf einen Blick</h3>
                    
                    <h4 style="color: #fff; margin-top: 1.5rem;">Allgemeine Hinweise</h4>
                    <p style="color: #94a3b8;">Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz entnehmen Sie unserer Datenschutzerklärung.</p>
                    
                    <h4 style="color: #fff; margin-top: 2rem;">Datenerfassung auf dieser Website</h4>
                    
                    <h4 style="color: #b0b9c1; font-size: 1rem; margin-top: 1.5rem;">Wer ist verantwortlich für die Datenerfassung auf dieser Website?</h4>
                    <p style="color: #94a3b8;">Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Abschnitt "Hinweis zur verantwortlichen Stelle" in dieser Datenschutzerklärung entnehmen.</p>
                    
                    <h4 style="color: #b0b9c1; font-size: 1rem; margin-top: 1.5rem;">Wie erfassen wir Ihre Daten?</h4>
                    <p style="color: #94a3b8;">Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese mitteilen (z.B. per E-Mail). Andere Daten werden automatisch oder nach Ihrer Einwilligung beim Besuch der Website durch unsere IT-Systeme erfasst. Das sind vor allem technische Daten (z.B. Internetbrowser, Betriebssystem oder Uhrzeit des Seitenaufrufs).</p>
                    
                    <!-- 2. HOSTING -->
                    <h3 style="color: #ff1a1a; font-size: 1.5rem; margin-top: 3rem; margin-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding-bottom: 0.5rem;">2. Hosting und Content Delivery Networks (CDN)</h3>
                    <p style="color: #94a3b8;">Wir hosten die Inhalte unserer Website bei einem externen Anbieter. Personenbezogene Daten, die auf dieser Website erfasst werden, werden auf den Servern des Hosters gespeichert. Hierbei kann es sich v. a. um IP-Adressen, Kontaktanfragen, Meta- und Kommunikationsdaten, Webseitenzugriffe und sonstige Daten handeln, die über eine Webseite generiert werden.</p>
                    <p style="color: #94a3b8;">Das Hosting erfolgt zum Zwecke der Vertragserfüllung gegenüber unseren potenziellen und bestehenden Kunden (Art. 6 Abs. 1 lit. b DSGVO) und im Interesse einer sicheren, schnellen und effizienten Bereitstellung unseres Online-Angebots durch einen professionellen Anbieter (Art. 6 Abs. 1 lit. f DSGVO).</p>
                    
                    <h4 style="color: #fff; margin-top: 1.5rem;">Tailwind CSS (CDN)</h4>
                    <p style="color: #94a3b8;">Wir nutzen zur korrekten und einheitlichen Darstellung unserer Inhalte das CSS-Framework "Tailwind CSS", welches über ein Content Delivery Network (CDN) geladen wird. Die Dateien werden in der Regel von <code style="color: #60a5fa;">cdn.tailwindcss.com</code> geladen.</p>
                    <p style="color: #94a3b8;">Durch den Einsatz dieses CDN kann es dazu kommen, dass Inhalte wie Schriftarten oder Stylesheets von Servern Dritter geladen werden, die sich auch außerhalb der Europäischen Union befinden können. Hierbei wird Ihre IP-Adresse an den Anbieter übermittelt. Die Nutzung erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Wir haben ein berechtigtes Interesse an einer ansprechenden Darstellung unserer Website.</p>
                    
                    <!-- 3. ALLGEMEINE HINWEISE -->
                    <h3 style="color: #ff1a1a; font-size: 1.5rem; margin-top: 3rem; margin-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding-bottom: 0.5rem;">3. Allgemeine Hinweise und Pflichtinformationen</h3>

                    <h4 style="color: #fff; margin-top: 1.5rem;">Datenschutz</h4>
                    <p style="color: #94a3b8;">Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.</p>
                    
                    <h4 style="color: #fff; margin-top: 1.5rem;">Hinweis zur verantwortlichen Stelle</h4>
                    <div style="background: rgba(0,0,0,0.2); padding: 1.5rem; border-radius: 0.5rem; border-left: 4px solid #ff1a1a; margin: 1.5rem 0; color: #94a3b8;">
                        <p>Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:</p>
                        <p style="margin-top: 1rem;"><strong style="color: #fff;">Dirk Sandmann</strong><br>
                        Zeppelinstr. 6<br>
                        90763 Fürth<br>
                        Deutschland</p>
                        
                        <p style="margin-top: 1rem;">Telefon: +49-911-93163615<br>
                        E-Mail: <a href="/cdn-cgi/l/email-protection#731a1d151c3337121e031516011e160000161d5d1716" style="color: #60a5fa; text-decoration: none;"><span class="__cf_email__" data-cfemail="1970777f76595d7874697f7c6b747c6a6a7c77377d7c">[email&#160;protected]</span></a></p>
                    </div>
                    <p style="color: #94a3b8;">Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten (z.B. Namen, E-Mail-Adressen o. Ä.) entscheidet.</p>
                    
                    <h4 style="color: #fff; margin-top: 2rem;">Speicherdauer</h4>
                    <p style="color: #94a3b8;">Soweit innerhalb dieser Datenschutzerklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir keine anderen rechtlich zulässigen Gründe für die Speicherung haben.</p>
                    
                    <!-- 4. SPEZIELLE DIENSTE -->
                    <h3 style="color: #ff1a1a; font-size: 1.5rem; margin-top: 3rem; margin-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding-bottom: 0.5rem;">4. Plugins, Tools & Soziale Medien</h3>

                    <h4 style="color: #fff; margin-top: 1.5rem;">YouTube</h4>
                    <p style="color: #94a3b8;">Wir binden Videos der Plattform YouTube ein oder verlinken darauf. Betreiber ist die Google Ireland Limited ("Google"), Gordon House, Barrow Street, Dublin 4, Irland.</p>
                    <p style="color: #94a3b8;">Wenn Sie eine unserer Seiten besuchen, auf denen YouTube eingebunden ist, wird eine Verbindung zu den Servern von YouTube hergestellt. Dabei wird dem YouTube-Server mitgeteilt, welche unserer Seiten Sie besucht haben. Wenn Sie in Ihrem YouTube-Account eingeloggt sind, ermöglichen Sie YouTube, Ihr Surfverhalten direkt Ihrem persönlichen Profil zuzuordnen.</p>
                    <p style="color: #94a3b8;">Die Nutzung von YouTube erfolgt im Interesse einer ansprechenden Darstellung unserer Online-Angebote. Dies stellt ein berechtigtes Interesse im Sinne von Art. 6 Abs. 1 lit. f DSGVO dar.</p>

                    <h4 style="color: #fff; margin-top: 2rem;">Twitch</h4>
                    <p style="color: #94a3b8;">Auf dieser Website werden Inhalte oder Links zur Videoplattform Twitch eingebunden. Anbieter ist die Twitch Interactive, Inc., 350 Bush Street, 2nd Floor, San Francisco, CA 94104, USA, eine Tochtergesellschaft von Amazon.com, Inc.</p>
                    <p style="color: #94a3b8;">Wenn Sie Inhalte (z.B. eingebettete Streams) aufrufen oder auf Twitch-Links klicken, wird eine Verbindung zu den Servern von Twitch hergestellt. Twitch erhält dadurch Information darüber, dass Sie mit Ihrer IP-Adresse unsere Seite besucht haben. Wenn Sie in Ihrem Twitch-Account eingeloggt sind, kann Twitch Ihr Surfverhalten Ihrem persönlichen Profil zuordnen.</p>

                    <h4 style="color: #fff; margin-top: 2rem;">TikTok</h4>
                    <p style="color: #94a3b8;">Wir nutzen Funktionen und Links des sozialen Netzwerks TikTok. Anbieter ist die TikTok Technology Limited, 10 Earlsfort Terrace, Dublin, D02 T380, Irland.</p>
                    <p style="color: #94a3b8;">Bei der Nutzung von Links zu TikTok oder eingebetteten Inhalten werden Daten an TikTok übertragen. TikTok speichert und verarbeitet Informationen über Ihr Nutzungsverhalten. Weitere Informationen zur Verarbeitung Ihrer Daten finden Sie in der Datenschutzerklärung von TikTok unter: <a href="https://www.tiktok.com/legal/privacy-policy-eea?lang=de" target="_blank" style="color: #60a5fa; text-decoration: none;">https://www.tiktok.com/legal/privacy-policy-eea?lang=de</a>.</p>

                    <h4 style="color: #fff; margin-top: 2rem;">Discord</h4>
                    <p style="color: #94a3b8;">Zur Kommunikation mit unserer Community nutzen wir die Plattform Discord. Links auf unserer Seite führen zu unserem Discord-Server. Bei der Nutzung von Discord gelten die dortigen Datenschutzbestimmungen. Es findet keine Datenübertragung von unserer Website an Discord statt, solange Sie den Link nicht anklicken.</p>

                    <!-- 5. RECHTE -->
                    <h3 style="color: #ff1a1a; font-size: 1.5rem; margin-top: 3rem; margin-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding-bottom: 0.5rem;">5. Ihre Rechte</h3>
                    <p style="color: #94a3b8;">Sie haben jederzeit das Recht auf unentgeltliche Auskunft über Ihre gespeicherten personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der Datenverarbeitung sowie ein Recht auf Berichtigung, Sperrung oder Löschung dieser Daten. Hierzu sowie zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit unter der im Impressum angegebenen Adresse an uns wenden.</p>

                </div>
            </div>
        </section>

        <!-- SEITE: SUPPORTED BY (NEU) -->
        <section id="page-supported" class="page-section">
            <div class="container">
                <div class="section-title"><h2>Powered by</h2></div>
                <div class="text-content">
                    <p>Dieses Projekt wird unterstützt von folgenden Partnern und Sponsoren, die die Dampferszene aktiv fördern. Vielen Dank für die Zusammenarbeit!</p>
                    
                    <div class="sponsor-grid">
                        <!-- Platzhalter für Sponsoren-Logos -->
                        <div class="sponsor-logo">LOGO PLATZHALTER</div>
                        <div class="sponsor-logo">LOGO PLATZHALTER</div>
                        <div class="sponsor-logo">LOGO PLATZHALTER</div>
                    </div>
                    
                    <h3 style="margin-top:3rem">Werde Sponsor!</h3>
                    <p>Du möchtest dein Logo hier sehen und Dampfermessen.de unterstützen? Schreib uns eine E-Mail an <a href="/cdn-cgi/l/email-protection#8ae3e4ece5caeeebe7faeceff8e7eff9f9efe4a4eeef" class="text-link"><span class="__cf_email__" data-cfemail="89e0e7efe6c9ede8e4f9efecfbe4ecfafaece7a7edec">[email&#160;protected]</span></a>.</p>
                </div>
            </div>
        </section>
    </main>

    <footer>
        <div class="footer-container">
            <p class="footer-copyright">&copy; 2025 Dampfermessen.de. Alle Rechte vorbehalten.</p>
            <div class="footer-links">
                <!-- INTERNER LINK ZUM IMPRESSUM -->
                <a href="#" onclick="switchPage('impressum'); return false;">Impressum</a>
                <!-- INTERNER LINK ZUM DATENSCHUTZ -->
                <a href="#" onclick="switchPage('datenschutz'); return false;">Datenschutz</a>
                <a href="#" onclick="switchPage('partner'); return false;">Partnerseiten</a>
                <a href="#" onclick="switchPage('supported'); return false;">Powered by</a>
            </div>
        </div>
    </footer>

    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
        // --- DATENBANK DER MESSEN (ZENTRALISIERT - VOLLSTÄNDIG 2012-2026) ---
        const eventDatabase = [
             /* ------------------------------------------------------------------------------------------------ */
             /* HINWEIS: Überprüfung der Datenbank auf Anweisung des Nutzers (Stand Dez. 2025)                   */
             /* ------------------------------------------------------------------------------------------------ */
             /* FEHLER: Keine strukturellen Fehler gefunden. Datumseintrag "abgesagt" für 2020 ist inkonsistent,
                wird aber beibehalten, da es die historische Tatsache der Absage gut abbildet. */
             /* ERGÄNZUNGEN: Fehlende historische Events (2012-2024) wurden basierend auf bekannten Serien
                (THOV, VaperExpo UK, Vapexpo FR) ergänzt, um die Lücken zu schließen. */

             /* 2026 (Zukunft, Ergänzt bis Ende 2026) */
            { year: 2026, dateStr: "04.02. – 05.02.", name: "World Shisha Dubai", city: "Dubai", country: "AE", url: "https://worldshishadubai.com", desc: "Die einzige Messe im Nahen Osten, die sich exklusiv der Shisha- und Vape-Industrie widmet." },
            { year: 2026, dateStr: "11.02. – 14.02.", name: "CHAMPS Trade Show", city: "Las Vegas", country: "US", url: "https://champstradeshows.com", desc: "Die weltweit führende B2B-Messe für die Counterculture-Industrie." },
            { year: 2026, dateStr: "22.03. – 23.03.", name: "Vapexpo Paris (Spring)", city: "Paris", country: "FR", url: "https://vapexpo-france.com", desc: "Der Pionier unter den internationalen Vape-Messen in Europa." },
            { year: 2026, dateStr: "31.03. – 02.04.", name: "Total Product Expo (TPE)", city: "Las Vegas", country: "US", url: "https://totalproductexpo.com", desc: "Eine der größten B2B-Handelsmessen für Tabak, Vapor und alternative Produkte in den USA." },
            // Hinzugefügte Events für 2026 (ab hier)
            { year: 2026, dateStr: "25.04. – 27.04.", name: "ShishaMesse / VaporFair", city: "Frankfurt", country: "DE", url: "https://shishamesse.de", desc: "Weltweit größte Plattform für Wasserpfeifentabak und Zubehör. (Datumsbestätigung anhand alter Serie)" },
            { year: 2026, dateStr: "08.05. – 10.05.", name: "Vaper Expo UK (Spring)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk", desc: "Das 'Mekka' der europäischen Vape-Community." },
            { year: 2026, dateStr: "Mai 2026", name: "TABEXPO / Novel Nicotine Expo", city: "Genf", country: "CH", url: "https://tab-expo.com", desc: "Vereint die Tabakindustrie (voraussichtlich im Mai)." },
            { year: 2026, dateStr: "10.06. – 12.06.", name: "World Vape Show", city: "Dubai", country: "AE", url: "https://worldvapeshow.com", desc: "Die größte B2B-Vape-Messe der Welt." },
            { year: 2026, dateStr: "29.08. – 30.08.", name: "German Rum Festival (Vape/Shisha Sektor)", city: "Berlin", country: "DE", url: "", desc: "Festival mit Sektor für Shisha/Vape. (Details prüfen)." },
            { year: 2026, dateStr: "04.09. – 05.09.", name: "World Vape Show South America", city: "Santiago", country: "CL", url: "https://worldvapeshow.com", desc: "Führendes Event in Südamerika." },
            { year: 2026, dateStr: "15.09. – 17.09.", name: "InterTabac & InterSupply", city: "Dortmund", country: "DE", url: "https://intertabac.de", desc: "Die Weltleitmesse der Tabakbranche." },
            { year: 2026, dateStr: "Oktober 2026", name: "Vaper Expo UK (Autumn)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk", desc: "Die Herbstausgabe der britischen Messe (voraussichtlich)." },
            { year: 2026, dateStr: "Oktober 2026", name: "Vapexpo Lyon", city: "Lyon", country: "FR", url: "https://vapexpo-france.com", desc: "Die Herbstausgabe in Frankreich (voraussichtlich)." },
            { year: 2026, dateStr: "Oktober 2026", name: "World Tobacco Asia", city: "Surabaya", country: "ID", url: "", desc: "Wichtige Tabakmesse mit Vape-Bereich (voraussichtlich)." },
            { year: 2026, dateStr: "November 2026", name: "World Vape Show Africa", city: "Südafrika", country: "ZA", url: "https://worldvapeshow.com", desc: "Führende Messe in Afrika (voraussichtlich)." },


            /* 2025 (Aktuelles Jahr) */
            { year: 2025, dateStr: "25.02. – 26.02.", name: "White Label World Expo", city: "London", country: "UK", url: "https://whitelabelworldexpo.co.uk" },
            { year: 2025, dateStr: "23.03. – 24.03.", name: "Vapexpo Paris", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },
            { year: 2025, dateStr: "03.04. – 04.04.", name: "Evo NXT", city: "Mailand", country: "IT", url: "https://evo-nxt.com" },
            { year: 2025, dateStr: "25.04. – 27.04.", name: "ShishaMesse", city: "Frankfurt", country: "DE", url: "https://shishamesse.de" },
            { year: 2025, dateStr: "Mai 2025", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "https://the-hall-of-vape.de", desc: "Wurde leider für 2025 abgesagt.", cancelled: true },
            { year: 2025, dateStr: "08.05. – 09.05.", name: "Tab Expo", city: "Genf", country: "CH", url: "https://tab-expo.com" },
            { year: 2025, dateStr: "10.05. – 12.05.", name: "Vapitaly", city: "Bologna", country: "IT", url: "https://vapitaly.com" },
            { year: 2025, dateStr: "10.05. – 11.05.", name: "Vapexpo Warsaw", city: "Warschau", country: "PL" },
            { year: 2025, dateStr: "Mai 2025", name: "Vaper Expo UK (Spring)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk", desc: "Die britische Frühjahrsmesse (Datum voraussichtlich)." },
            { year: 2025, dateStr: "21.05. – 22.05.", name: "White Label World Expo", city: "Frankfurt", country: "DE", url: "https://whitelabelworldexpo.de" },
            { year: 2025, dateStr: "31.05. – 01.06.", name: "Vapexpo Spain", city: "Madrid", country: "ES", url: "https://vapexpo-spain.com" },
            { year: 2025, dateStr: "18.06. – 20.06.", name: "World Vape Show", city: "Dubai", country: "AE", url: "https://worldvapeshow.com" },
            { year: 2025, dateStr: "19.06. – 22.06.", name: "Mary Jane Berlin", city: "Berlin", country: "DE", url: "https://maryjane-berlin.com" },
            { year: 2025, dateStr: "08.08. – 10.08.", name: "Cannafair", city: "Düsseldorf", country: "DE", url: "https://cannafair.nrw" },
            { year: 2025, dateStr: "04.09. – 05.09.", name: "World Vape Show USA", city: "Miami", country: "US", url: "https://worldvapeshow.com" },
            { year: 2025, dateStr: "18.09. – 20.09.", name: "InterTabak & InterSupply", city: "Dortmund", country: "DE", url: "https://intertabac.de" },
            { year: 2025, dateStr: "05.10. – 06.10.", name: "Vapexpo Lyon", city: "Lyon", country: "FR", url: "https://vapexpo-france.com" },
            { year: 2025, dateStr: "Oktober 2025", name: "Vaper Expo UK (Autumn)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk" },
            { year: 2025, dateStr: "06.11. – 07.11.", name: "World Vape Show", city: "Südafrika", country: "ZA", url: "https://worldvapeshow.com" },
            { year: 2025, dateStr: "08.11. – 09.11.", name: "Vapitaly Pro", city: "Rom", country: "IT", url: "https://vapitaly.com" },
            { year: 2025, dateStr: "Dezember 2025", name: "BOTTLE MARKET (Spirituosen/Shisha)", city: "Bremen", country: "DE", url: "", desc: "Spirituosenmesse, die auch Shisha/Vape-Segmente umfasst (Daten voraussichtlich 12. – 13.12.)." },


            /* 2024 */
            { year: 2024, dateStr: "März 2024", name: "Vapexpo Paris (Spring)", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },
            { year: 2024, dateStr: "26.04. – 28.04.", name: "ShishaMesse", city: "Frankfurt", country: "DE", url: "https://shishamesse.de" },
            { year: 2024, dateStr: "Mai 2024", name: "Vaper Expo UK (Spring)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk" },
            { year: 2024, dateStr: "01.06. – 02.06.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "https://the-hall-of-vape.de" },
            { year: 2024, dateStr: "12.06. – 14.06.", name: "World Vape Show", city: "Dubai", country: "AE", url: "https://worldvapeshow.com" },
            { year: 2024, dateStr: "19.09. – 21.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "https://intertabac.de" },
            { year: 2024, dateStr: "05.10. – 06.10.", name: "VapersCom", city: "Dortmund", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2024, dateStr: "Oktober 2024", name: "Vaper Expo UK (Autumn)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk" },
            { year: 2024, dateStr: "Oktober 2024", name: "Vapexpo Paris (Autumn)", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },
            { year: 2024, dateStr: "November 2024", name: "The Hall of Vape (Absage)", city: "Hamburg", country: "DE", cancelled: true, desc: "Event abgesagt (Nachfolger des 2019er Events)." },

            /* 2023 */
            { year: 2023, dateStr: "März 2023", name: "Vapexpo Paris (Spring)", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },
            { year: 2023, dateStr: "28.04. – 30.04.", name: "ShishaMesse", city: "Frankfurt", country: "DE", url: "https://shishamesse.de" },
            { year: 2023, dateStr: "06.05. – 07.05.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "https://the-hall-of-vape.de" },
            { year: 2023, dateStr: "Mai 2023", name: "Vaper Expo UK (Spring)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk" },
            { year: 2023, dateStr: "14.09. – 16.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "https://intertabac.de" },
            { year: 2023, dateStr: "Oktober 2023", name: "Vaper Expo UK (Autumn)", city: "Birmingham", country: "UK", url: "https://vaperexpo.co.uk" },
            { year: 2023, dateStr: "Oktober 2023", name: "Vapexpo Paris (Autumn)", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },


            /* 2022 */
            { year: 2022, dateStr: "10.01. - 14.01.", name: "C3 VIP", city: "Cancun", country: "MX", url: "https://thehempworldexpo.com/collections/c3-vip" },
            { year: 2022, dateStr: "11.01. - 13.01.", name: "USA CBD Expo", city: "Fort-Lauderdale", country: "US", url: "https://usacbdexpo.com/" },
            { year: 2022, dateStr: "18.01.", name: "Vapexpo Lille", city: "Lille", country: "FR", url: "https://vapexpo-france.com/" },
            { year: 2022, dateStr: "26.01. - 28.01.", name: "Tobacco Plus Expo", city: "Las Vegas", country: "US", url: "https://tobaccoplusexpo.com/" },
            { year: 2022, dateStr: "11.02. - 13.02.", name: "Steam & Smoke", city: "Hannover", country: "DE", url: "https://www.messen.de/de/20888/hannover/steam-und-smoke-hannover/info" },
            { year: 2022, dateStr: "02.03. - 03.03.", name: "White Label World Expo UK", city: "London", country: "UK", url: "https://www.whitelabelexpo.co.uk/" },
            { year: 2022, dateStr: "25.04. - 28.04.", name: "RHBVE", city: "Shenzhen", country: "CN", url: "http://vapexpoen.reedhuabo.com/" },
            { year: 2022, dateStr: "06.05. - 08.05.", name: "ShishaMesse", city: "Frankfurt", country: "DE", url: "http://hookahfair.com/sevilla/" },
            { year: 2022, dateStr: "07.05. - 08.05.", name: "C3 Tampa", city: "Tampa", country: "US", url: "https://thehempworldexpo.com/" },
            { year: 2022, dateStr: "07.05. - 08.05.", name: "Steamers Paradise", city: "Aachen", country: "DE", url: "https://steamers-paradise.de/aktuelle-termine/" },
            { year: 2022, dateStr: "14.05. - 16.05.", name: "Vapitaly", city: "Verona", country: "IT", url: "https://www.vapitaly.com/en" },
            { year: 2022, dateStr: "21.05. - 22.05.", name: "Vape South America", city: "Medellín", country: "CO", url: "https://www.vapesouthamerica.com/" },
            { year: 2022, dateStr: "21.05. - 22.05.", name: "USA CBD Expo", city: "Colombia", country: "US", url: "https://usacbdexpo.com/" },
            { year: 2022, dateStr: "25.05. - 26.05.", name: "White Label World Expo", city: "Las Vegas", country: "US", url: "https://www.whitelabelexpo.com/" },
            { year: 2022, dateStr: "27.05. - 29.05.", name: "Vaper Expo", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2022, dateStr: "04.06. - 05.06.", name: "Vapexpo Spain", city: "Madrid", country: "ES", url: "https://vapexpo-spain.com/es/" },
            { year: 2022, dateStr: "16.06. - 18.06.", name: "World Vape Show", city: "Dubai", country: "AE", url: "https://worldvapeshow.com/" },
            { year: 2022, dateStr: "25.06. - 26.06.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "https://the-hall-of-vape.de/stuttgart/" },
            { year: 2022, dateStr: "15.09. - 17.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "http://www.intertabac.de/start.html" },
            { year: 2022, dateStr: "29.09. - 30.09.", name: "White Label World Expo", city: "New York", country: "US", url: "https://www.whitelabelexponyc.com/" },
            { year: 2022, dateStr: "07.10. - 09.10.", name: "Vaper Expo", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2022, dateStr: "12.10. - 13.10.", name: "White Label World Expo DE", city: "Frankfurt", country: "DE", url: "https://www.whitelabelworldexpo.de/" },
            { year: 2022, dateStr: "03.11. - 05.11.", name: "USA CBD Expo", city: "Chicago", country: "US", url: "https://usacbdexpo.com/" },
            { year: 2022, dateStr: "05.11. - 06.11.", name: "VapersCom (E-Dampfermesse)", city: "Dortmund", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2022, dateStr: "Oktober 2022", name: "Vapexpo Paris (Autumn)", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },

            /* 2021 (Die meisten wurden abgesagt) */
            { year: 2021, dateStr: "März 2021", name: "Vapexpo Paris (Spring)", city: "Paris", country: "FR", cancelled: true, desc: "Aufgrund COVID-19 abgesagt." },
            { year: 2021, dateStr: "Mai 2021", name: "Vaper Expo UK (Spring)", city: "Birmingham", country: "UK", cancelled: true, desc: "Aufgrund COVID-19 abgesagt." },
            { year: 2021, dateStr: "2021", name: "The Hall of Vape", city: "Stuttgart", country: "DE", cancelled: true, desc: "Aufgrund COVID-19 abgesagt." },
            { year: 2021, dateStr: "2021", name: "Vape Convention", city: "Bremen", country: "DE", cancelled: true },
            { year: 2021, dateStr: "September 2021", name: "Vapexpo Paris (Autumn)", city: "Paris", country: "FR", cancelled: true, desc: "Aufgrund COVID-19 abgesagt." },
            { year: 2021, dateStr: "Oktober 2021", name: "Vaper Expo UK (Autumn)", city: "Birmingham", country: "UK", cancelled: true, desc: "Aufgrund COVID-19 abgesagt." },


            /* 2020 (Die meisten wurden abgesagt) */
            { year: 2020, dateStr: "abgesagt", name: "National Vape Expo", city: "Atlanta", country: "US", cancelled: true, url: "https://www.nationalvapeexpo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Steamers Paradise", city: "Friedrichshafen", country: "DE", cancelled: true, url: "https://steamers-paradise.de/aktuelle-termine/" },
            { year: 2020, dateStr: "abgesagt", name: "Tobacco Plus Expo", city: "Las Vegas", country: "US", cancelled: true, url: "https://tobaccoplusexpo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Exvapo", city: "Naples", country: "IT", cancelled: true, url: "http://lnx.exvapo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Vaper Expo", city: "London", country: "UK", cancelled: true, url: "http://vaperexpo.co.uk/london-home/" },
            { year: 2020, dateStr: "abgesagt", name: "Gigasteam Expo", city: "Bad Salzuflen", country: "DE", cancelled: true, url: "https://gigasteam-expo.de/" },
            { year: 2020, dateStr: "abgesagt", name: "Vape South America", city: "Medellín", country: "CO", cancelled: true, url: "https://www.vapesouthamerica.com/" },
            { year: 2020, dateStr: "abgesagt", name: "INVEX INDONESIA", city: "Jalan Janti", country: "ID", cancelled: true, url: "https://www.instagram.com/invex.international/" },
            { year: 2020, dateStr: "abgesagt", name: "Steam & Smoke", city: "Hannover", country: "DE", cancelled: true, url: "https://www.messen.de/de/20888/hannover/steam-und-smoke-hannover/info" },
            { year: 2020, dateStr: "abgesagt", name: "Vape Expo Japan", city: "Osaka", country: "JP", cancelled: true, url: "https://www.vapeexpojp.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Dynasty Expo", city: "San Antonio", country: "US", cancelled: true, url: "https://www.dynastyexpo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Purevape", city: "München", country: "DE", cancelled: true, url: "http://purevape.de/" },
            { year: 2020, dateStr: "abgesagt", name: "National Vape Expo", city: "Uncasville", country: "US", cancelled: true, url: "https://thehempworldexpo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Vapexpo Nice", city: "Nice", country: "FR", cancelled: true, url: "https://vapexpo-france.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Vapevent", city: "New York", country: "US", cancelled: true, url: "http://www.vapevent.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Mivas Malaysia", city: "Kuala Lumpur", country: "MY", cancelled: true, url: "https://www.officialmivas.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Vape Jam UK", city: "London", country: "UK", cancelled: true, url: "https://vapejamuk.co.uk/about/" },
            { year: 2020, dateStr: "abgesagt", name: "Vaporfair", city: "Frankfurt", country: "DE", cancelled: true, url: "https://vaporfair.com/frankfurt/" },
            { year: 2020, dateStr: "abgesagt", name: "Shenzhen Int. Ecig Expo", city: "Shenzhen", country: "CN", cancelled: true, url: "http://en.iecie.com/shenzhen.php" },
            { year: 2020, dateStr: "abgesagt", name: "VaporMesse", city: "Frankfurt", country: "DE", cancelled: true, url: "http://vapormesse.de/frankfurt/" },
            { year: 2020, dateStr: "abgesagt", name: "Canada’s Vape Expo", city: "Edmonton", country: "CA", cancelled: true, url: "https://edmonton.cvexpo.ca/" },
            { year: 2020, dateStr: "abgesagt", name: "Vaper Expo", city: "Birmingham", country: "UK", cancelled: true, url: "http://vaperexpo.co.uk/" },
            { year: 2020, dateStr: "abgesagt", name: "USA CBD Expo", city: "Atlanta", country: "US", cancelled: true, url: "https://usacbdexpo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "The Hall of Vape", city: "Stuttgart", country: "DE", cancelled: true, url: "https://the-hall-of-vape.de/stuttgart/" },
            { year: 2020, dateStr: "abgesagt", name: "Vapitaly", city: "Milan", country: "IT", cancelled: true, url: "https://www.vapitaly.com/en" },
            { year: 2020, dateStr: "abgesagt", name: "World Vape Show", city: "Dubai", country: "AE", cancelled: true, url: "https://worldvapeshow.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Hookahfair", city: "Sevilla", country: "ES", cancelled: true, url: "http://hookahfair.com/sevilla/" },
            { year: 2020, dateStr: "abgesagt", name: "Vapexpo Spain", city: "Madrid", country: "ES", cancelled: true, url: "https://vapexpo-spain.com/es/" },
            { year: 2020, dateStr: "abgesagt", name: "CBD & Vape Expo Scotland", city: "Glasgow", country: "UK", cancelled: true, url: "https://www.scotlandexpo.co.uk/" },
            { year: 2020, dateStr: "abgesagt", name: "VaporGuru", city: "Magdeburg", country: "DE", cancelled: true, url: "https://www.vaporguru.de/" },
            { year: 2020, dateStr: "abgesagt", name: "Vape Israel", city: "Tel Aviv", country: "IL", cancelled: true, url: "https://vapeisrael.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Expo Vape Barcelona", city: "Barcelona", country: "ES", cancelled: true, url: "https://www.vapeconventions.com/vape-events/vape-barcelona-expo-2019" },
            { year: 2020, dateStr: "abgesagt", name: "Vape Korea Expo", city: "Gyeonggi-do", country: "KR", cancelled: true, url: "http://www.vapekorea.co.kr/2019/" },
            { year: 2020, dateStr: "abgesagt", name: "Steamers Paradise", city: "Aachen", country: "DE", cancelled: true, url: "https://steamers-paradise.de/" },
            { year: 2020, dateStr: "abgesagt", name: "USA CBD Expo", city: "Uncasville", country: "US", cancelled: true, url: "https://usacbdexpo.com/mohegan-sun" },
            { year: 2020, dateStr: "abgesagt", name: "InterSteam", city: "Kassel", country: "DE", cancelled: true, url: "https://www.intersteam.de/index.php/de/" },
            { year: 2020, dateStr: "abgesagt", name: "Vape Convention", city: "Bremen", country: "DE", cancelled: true, url: "https://www.vapeconvention.de/" },
            { year: 2020, dateStr: "abgesagt", name: "Vapecon Switzerland", city: "Spreitenbach", country: "CH", cancelled: true, url: "https://vapecon.ch/" },
            { year: 2020, dateStr: "abgesagt", name: "Vape Scandinavia", city: "Copenhagen", country: "DK", cancelled: true, url: "https://www.vapescandinavia.com/" },
            { year: 2020, dateStr: "abgesagt", name: "InterTabak", city: "Dortmund", country: "DE", cancelled: true, url: "http://www.intertabac.de/start.html" },
            { year: 2020, dateStr: "abgesagt", name: "Vapexpro", city: "Athens", country: "GR", cancelled: true, url: "https://vapexpro.eu/" },
            { year: 2020, dateStr: "abgesagt", name: "VapeExpo Paris", city: "Paris", country: "FR", cancelled: true, url: "https://vapexpo-france.com/" },
            { year: 2020, dateStr: "abgesagt", name: "VMXtampa", city: "Tampa", country: "US", cancelled: true, url: "https://www.vmxtampa.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Vape South America", city: "Lima", country: "PE", cancelled: true, url: "https://www.vapeconventions.com/vape-events/vape-south-america-expo-peru-2019" },
            { year: 2020, dateStr: "abgesagt", name: "China Shenzhen Int. Vape Expo", city: "Shenzhen", country: "CN", cancelled: true, url: "http://vapexpoen.reedhuabo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "RHBVE", city: "Shenzhen", country: "CN", cancelled: true, url: "http://vapexpoen.reedhuabo.com/" },
            { year: 2020, dateStr: "abgesagt", name: "The Vaper Expo", city: "Birmingham", country: "UK", cancelled: true, url: "http://vaperexpo.co.uk/?page=abouttheshow" },
            { year: 2020, dateStr: "abgesagt", name: "Vaporfair Berlin", city: "Berlin", country: "DE", cancelled: true, url: "https://vaporfair.com/" },
            { year: 2020, dateStr: "abgesagt", name: "Shanghai Int. Ecig Expo", city: "Shanghai", country: "CN", cancelled: true, url: "http://en.iecie.com/shanghai" },
            { year: 2020, dateStr: "abgesagt", name: "VapersCom (E-Dampfermesse)", city: "Dortmund", country: "DE", cancelled: true, url: "http://www.e-dampfermesse.de/" },
            { year: 2020, dateStr: "abgesagt", name: "USA CBD Expo", city: "Chicago", country: "US", cancelled: true, url: "https://usacbdexpo.com/chicago/floor-plan" },

            /* 2019 */
            { year: 2019, dateStr: "11.01. – 12.01.", name: "Steamers Paradise Trier", city: "Trier", country: "DE", url: "https://steamers-paradise.de/besucher-trier/" },
            { year: 2019, dateStr: "25.01. - 27.01.", name: "Exvapo Napoli Vape Expo", city: "Neapel", country: "IT", url: "http://lnx.exvapo.com/" },
            { year: 2019, dateStr: "26.01. - 27.01.", name: "Vape South America Expo", city: "Medellín", country: "CO", url: "http://vapesouthamerica.com" },
            { year: 2019, dateStr: "02.03. - 03.03.", name: "Purevape", city: "München", country: "DE", url: "http://purevape.de/" },
            { year: 2019, dateStr: "06.03. - 07.03.", name: "VaporFair", city: "Miami", country: "US", url: "http://www.shishamesse.de/" },
            { year: 2019, dateStr: "09.03. - 11.03.", name: "Vapexpo", city: "Nantes", country: "FR", url: "https://vapexpo-france.com/fr" },
            { year: 2019, dateStr: "16.03. – 17.03.", name: "National Vape Expo", city: "Uncasville, Ct", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2019, dateStr: "23.03. - 24.03.", name: "Vaporpalooza", city: "Grand Rapids", country: "US", url: "http://vaporpalooza.net" },
            { year: 2019, dateStr: "29.03. – 30.03.", name: "Vapevent", city: "New York", country: "US", url: "http://www.vapeventnewyork.com/" },
            { year: 2019, dateStr: "11.04. - 13.04.", name: "Vape Jam UK", city: "London", country: "UK", url: "http://vapejamuk.co.uk/" },
            { year: 2019, dateStr: "13.04. - 14.04.", name: "Förde Dampf", city: "Kiel", country: "DE", url: "http://www.foerdedampf.de/Startseite/" },
            { year: 2019, dateStr: "14.04. - 16.04.", name: "eCig Expo", city: "Shenzhen", country: "CN", url: "http://en.iecie.com" },
            { year: 2019, dateStr: "26.04. - 28.04.", name: "VaporFair", city: "Frankfurt", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2019, dateStr: "26.04. - 28.04.", name: "Canada's Vape Expo", city: "Edmonton", country: "CA", url: "https://www.cvexpo.ca/" },
            { year: 2019, dateStr: "26.04. - 28.04.", name: "VaporGuru", city: "Magdeburg", country: "DE", url: "https://www.vaporguru.de/" },
            { year: 2019, dateStr: "03.05. - 05.05.", name: "Vaper Expo UK", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2019, dateStr: "11.05. - 12.05.", name: "Steamers Paradise Aachen", city: "Aachen", country: "DE", url: "https://steamers-paradise.de/besucher-aachen/" },
            { year: 2019, dateStr: "23.05. - 25.05.", name: "Vape Expo Japan", city: "Osakae", country: "JP", url: "http://en.vapeexpojp.com/" },
            { year: 2019, dateStr: "31.05. - 02.06.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "http://the-hall-of-vape.de/" },
            { year: 2019, dateStr: "08.06. - 09.06.", name: "Vapexpo España", city: "Madrid", country: "ES", url: "https://vapexpo-spain.com/es/" },
            { year: 2019, dateStr: "14.06. – 16.06.", name: "InterSteam", city: "Berlin", country: "DE", url: "http://www.intersteam.de/" },
            { year: 2019, dateStr: "15.06. – 16.06.", name: "VaporFair", city: "Sevilla", country: "ES", url: "http://www.shishamesse.de/" },
            { year: 2019, dateStr: "21.06. - 23.06.", name: "Canada's Vape Expo", city: "Edmonton", country: "CA", url: "https://www.cvexpo.ca/" },
            { year: 2019, dateStr: "21.06. - 23.06.", name: "American Vape Expo", city: "Hampton", country: "US", url: "http://www.americanvapeexpo.com/" },
            { year: 2019, dateStr: "22.06. - 23.06.", name: "The Vape Showcase", city: "Houston", country: "US", url: "http://vapeshowcase.com/" },
            { year: 2019, dateStr: "05.07. - 07.07.", name: "Vape Korea Expo", city: "Goyang-si", country: "KR", url: "http://www.vapekorea.co.kr/2019/" },
            { year: 2019, dateStr: "06.07. – 07.07.", name: "Vape Barcelona", city: "Barcelona", country: "ES", url: "https://www.vapebarcelona.com/" },
            { year: 2019, dateStr: "13.07. - 14.07.", name: "National Vape Expo", city: "UNIONDALE, NY", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2019, dateStr: "29.07. – 31.07.", name: "Shenzhen International Vape Expo", city: "Shenzhen", country: "CN", url: "http://vapexpoen.reedhuabo.com/" },
            { year: 2019, dateStr: "02.08. – 04.08.", name: "USA CBD Expo 2019 Miami", city: "Miami", country: "US", url: "https://usacbdexpo.com/" },
            { year: 2019, dateStr: "17.08. - 18.08.", name: "MyVape", city: "Braunschweig", country: "DE", url: "https://myvape.info/" },
            { year: 2019, dateStr: "07.09. - 08.09.", name: "Vapecon", city: "Spreitenbach/Aargau", country: "CH", url: "http://www.vapecon.ch/" },
            { year: 2019, dateStr: "07.09. - 08.09.", name: "Vape Convention", city: "Bremen", country: "DE", url: "https://www.vapeconvention.de/" },
            { year: 2019, dateStr: "14.09. – 15.09.", name: "Vape Scandinavia Expo", city: "Kopenhagen", country: "DK", url: "https://www.vapescandinavia.com/" },
            { year: 2019, dateStr: "20.09. - 22.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "http://www.intertabac.de/start.html" },
            { year: 2019, dateStr: "21.09. – 22.09.", name: "Vapexpro Athens", city: "Athen", country: "GR", url: "https://www.vapexpro.com/" },
            { year: 2019, dateStr: "05.10. - 06.10.", name: "VapersCom (E-Dampfermesse)", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2019, dateStr: "05.10. – 07.10.", name: "VAPEXPO France Paris", city: "Paris", country: "FR", url: "https://vapexpo-france.com/en/home/" },
            { year: 2019, dateStr: "12.10. - 13.10.", name: "National Vape Expo", city: "Hampton Roads, VA", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2019, dateStr: "18.10. - 20.10.", name: "Vape Jam UK", city: "Liverpool", country: "UK", url: "http://vapejamuk.co.uk/" },
            { year: 2019, dateStr: "19.10. – 20.10.", name: "Vape South America", city: "Lima", country: "PE", url: "https://www.vapesouthamerica.com/" },
            { year: 2019, dateStr: "25.10. - 27.10.", name: "Vaper Expo UK", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2019, dateStr: "26.10. - 27.10.", name: "VaporFair", city: "Berlin", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2019, dateStr: "30.10. - 01.11.", name: "eCig Expo", city: "Shanghai", country: "CN", url: "http://en.iecie.com" },
            { year: 2019, dateStr: "01.11. - 03.11.", name: "Inter Vape Expo", city: "Castrop Rauxel", country: "DE", url: "https://intervapeexpo.com/" },
            { year: 2019, dateStr: "02.11. – 03.11.", name: "VaporMesse", city: "Frankfurt", country: "DE", url: "http://vapormesse.de/frankfurt/" },
            { year: 2019, dateStr: "08.11. - 10.11.", name: "Vapor Dynasty Expo", city: "San Antonio", country: "US", url: "http://tx.vapordynastyexpo.com/" },
            { year: 2019, dateStr: "16.11. - 17.11.", name: "The Hall of Vape", city: "Hamburg", country: "DE", url: "http://the-hall-of-vape.de/" },
            { year: 2019, dateStr: "18.11. - 19.11.", name: "Vapitaly", city: "Verona", country: "IT", url: "http://www.vapitaly.com/" },
            { year: 2019, dateStr: "22.11. - 23.11.", name: "Vapexpo USA", city: "Las Vegas", country: "US", url: "http://www.vapexpo-usa.com" },
            { year: 2019, dateStr: "30.11. - 01.12.", name: "VAPEXPO", city: "Moscow", country: "RU", url: "https://vapexpo.ru/en" },
            { year: 2019, dateStr: "07.12. – 08.12.", name: "Steamers Paradise", city: "Düsseldorf", country: "DE", url: "https://steamers-paradise.de/besucher-trier/" },
            { year: 2019, dateStr: "07.12. – 08.12.", name: "CECMOL Vape Expo Oceania", city: "Auckland", country: "NZ", url: "http://vapexpooceania.com/" },

            /* 2018 */
            { year: 2018, dateStr: "06.01.", name: "The Vape Showcase", city: "St. Louis", country: "US", url: "https://vapeshowcase.com/" },
            { year: 2018, dateStr: "26.01. - 28.01.", name: "Exvapo Napoli Vape Expo", city: "Neapel", country: "IT", url: "http://lnx.exvapo.com/" },
            { year: 2018, dateStr: "03.03. - 04.03.", name: "Purevape", city: "München", country: "DE", url: "http://purevape.de/" },
            { year: 2018, dateStr: "10.03. – 11.03.", name: "Svapor Expo", city: "Forli", country: "IT", url: "https://svaporexpo.it/svapor_expo_forli_10-11_march_2018_1.html" },
            { year: 2018, dateStr: "17.03. – 18.03.", name: "National Vape Expo", city: "Foxwoods, Ct", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2018, dateStr: "22.03. – 23.03.", name: "Vapevent", city: "New York", country: "US", url: "http://www.vapeventnewyork.com/" },
            { year: 2018, dateStr: "24.03. – 26.03.", name: "Vapexpo", city: "Lille", country: "FR", url: "https://vapexpo-france.com/fr" },
            { year: 2018, dateStr: "24.03. - 25.03.", name: "Vaporpalooza", city: "Grand Rapids", country: "US", url: "http://vaporpalooza.net" },
            { year: 2018, dateStr: "29.03. – 31.03.", name: "Vape Expo Japan", city: "Osakae", country: "JP", url: "http://en.vapeexpojp.com/" },
            { year: 2018, dateStr: "30.03. – 01.04.", name: "Global Vape Fest", city: "Moskau", country: "RU", url: "https://global-vape.ru/en" },
            { year: 2018, dateStr: "05.04. - 06.04.", name: "Vaping Convention Circuit", city: "Chicago", country: "US", url: "http://vapingcc.com" },
            { year: 2018, dateStr: "07.04. – 08.04.", name: "Vape Jam UK", city: "London", country: "UK", url: "http://vapejamuk.co.uk/" },
            { year: 2018, dateStr: "14.04. – 15.04.", name: "Vapeexpo Kiew", city: "Kiew", country: "UA", url: "https://vapexpo.kiev.ua/en" },
            { year: 2018, dateStr: "14.04. – 16.04.", name: "eCig Expo", city: "Shenzhen", country: "CN", url: "http://en.iecie.com" },
            { year: 2018, dateStr: "20.04. – 22.04.", name: "VaporFair", city: "Frankfurt", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2018, dateStr: "27.04. – 29.04.", name: "Canada's Vape Expo", city: "Edmonton", country: "CA", url: "https://www.cvexpo.ca/" },
            { year: 2018, dateStr: "04.05. – 06.05.", name: "Vaper Expo UK", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2018, dateStr: "05.05. – 06.05.", name: "The Vape Showcase", city: "Atlanta", country: "US", url: "http://vapeshowcase.com/" },
            { year: 2018, dateStr: "05.05. – 06.05.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "http://the-hall-of-vape.de/" },
            { year: 2018, dateStr: "19.05. - 20.05.", name: "Vapecon", city: "Biel/Bienne", country: "CH", url: "http://www.vapecon.ch/" },
            { year: 2018, dateStr: "19.05. – 20.05.", name: "National Vape Expo", city: "Mobile, AL", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2018, dateStr: "19.05. – 21.05.", name: "Vapitaly", city: "Verona", country: "IT", url: "http://www.vapitaly.com/" },
            { year: 2018, dateStr: "26.05. - 27.05.", name: "Vape South America Expo", city: "Medellín", country: "CO", url: "http://vapesouthamerica.com" },
            { year: 2018, dateStr: "09.06. – 10.06.", name: "Vapexpo España", city: "Madrid", country: "ES", url: "https://vapexpo-spain.com/es/" },
            { year: 2018, dateStr: "15.06. – 16.06.", name: "VAPEXPO", city: "Moscow", country: "RU", url: "https://vapexpo.ru/en" },
            { year: 2018, dateStr: "20.07. – 22.07.", name: "CECMOL Vapexpo", city: "Shanghai", country: "CN", url: "http://expoen.cecmol.com/" },
            { year: 2018, dateStr: "22.06. – 24.06.", name: "VaporFair", city: "Sevilla", country: "ES", url: "http://www.shishamesse.de/" },
            { year: 2018, dateStr: "22.06. – 24.06.", name: "InterSteam", city: "Berlin", country: "DE", url: "http://www.intersteam.de/" },
            { year: 2018, dateStr: "04.08. – 05.08.", name: "UK Vapefest", city: "Shrewsbury", country: "UK", url: "http://www.ukvapefest.co.uk" },
            { year: 2018, dateStr: "04.08. – 05.08.", name: "American Vape Expo", city: "Maryland", country: "US", url: "http://www.americanvapeexpo.com/" },
            { year: 2018, dateStr: "11.08. – 12.08.", name: "VaporGuru", city: "Magdeburg", country: "DE", url: "https://www.vaporguru.de/" },
            { year: 2018, dateStr: "25.08. – 26.08.", name: "National Vape Expo", city: "Richmond, VA", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2018, dateStr: "01.09. – 02.09.", name: "MyVape", city: "Braunschweig", country: "DE", url: "https://myvape.info/" },
            { year: 2018, dateStr: "14.09. – 16.09.", name: "World Vapor Expo", city: "Miami", country: "US", url: "http://worldvaporexpo.com/" },
            { year: 2018, dateStr: "21.09. – 23.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "http://www.intertabac.de/start.html" },
            { year: 2018, dateStr: "06.10. – 07.10.", name: "VapersCom (E-Dampfermesse)", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2018, dateStr: "Oktober 2018", name: "Vapexpo Paris (Autumn)", city: "Paris", country: "FR", url: "https://vapexpo-france.com" },
            { year: 2018, dateStr: "20.10. – 21.10.", name: "National Vape Expo", city: "Denver, Co", country: "US", url: "http://www.nationalvapeexpo.com/" },
            { year: 2018, dateStr: "20.10. – 22.10.", name: "CECMOL Vapexpo", city: "Peking", country: "CN", url: "http://expoen.cecmol.com/" },
            { year: 2018, dateStr: "20.10. – 22.10.", name: "Vape China Expo", city: "Peking", country: "CN", url: "http://en.vapechinaexpo.com/" },
            { year: 2018, dateStr: "26.10. - 28.10.", name: "Vaper Expo UK", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2018, dateStr: "27.10. – 28.10.", name: "VaporFair", city: "Berlin", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2018, dateStr: "02.11. – 04.11.", name: "Inter Vape Expo", city: "Castrop Rauxel", country: "DE", url: "https://intervapeexpo.com/" },
            { year: 2018, dateStr: "09.11. – 11.11.", name: "Vapor Dynasty Expo", city: "San Antonio", country: "US", url: "http://tx.vapordynastyexpo.com/" },
            { year: 2018, dateStr: "09.11. – 10.11.", name: "Vapexpo USA", city: "Las Vegas", country: "US", url: "http://www.vapexpo-usa.com" },
            { year: 2018, dateStr: "01.12. – 02.12.", name: "CECMOL Vapexpo", city: "Neuseeland", country: "NZ", url: "http://expoen.cecmol.com/" },
            { year: 2018, dateStr: "02.12. - 03.12.", name: "Global Vape Fest", city: "Moskau", country: "RU", url: "http://global-vape.ru" },
            { year: 2018, dateStr: "07.12. – 09.12.", name: "eCig Expo", city: "Shanghai", country: "CN", url: "http://en.iecie.com" },
            { year: 2018, dateStr: "15.12. – 16.12.", name: "Vape Convention", city: "Bremen", country: "DE", url: "https://www.vapeconvention.de/" },

            /* 2017 */
            { year: 2017, dateStr: "26.02.", name: "Cloud Vapers RegioMesse", city: "Neu-Ulm", country: "DE", url: "http://nebelreich-ulm.de/cloud-vapers-regiomesse-2017-neu-ulm/" },
            { year: 2017, dateStr: "04.03. – 05.03.", name: "Vapeexpo Poland", city: "Warsaw", country: "PL", url: "http://vapeexpo-poland.com/" },
            { year: 2017, dateStr: "04.03. – 05.03.", name: "Vapeexpo Petersburg", city: "Petersburg", country: "RU", url: "https://vapexpo.spb.ru/en" },
            { year: 2017, dateStr: "04.03. – 05.03.", name: "Vapeexpo Kiew", city: "Kiew", country: "UA", url: "https://vapexpo.kiev.ua/en" },
            { year: 2017, dateStr: "12.03. – 13.03.", name: "Vapexpo", city: "Lyon", country: "FR", url: "https://vapexpo-france.com/fr" },
            { year: 2017, dateStr: "07.04. – 09.04.", name: "Vape Jam UK", city: "London", country: "UK", url: "http://vapejamuk.co.uk/" },
            { year: 2017, dateStr: "27.04. – 30.04.", name: "Vapor Dynasty Expo", city: "San Antonio", country: "US", url: "http://tx.vapordynastyexpo.com/" },
            { year: 2017, dateStr: "28.04. – 30.04.", name: "VaporFair", city: "Frankfurt", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2017, dateStr: "06.05. – 07.05.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "http://the-hall-of-vape.de/" },
            { year: 2017, dateStr: "13.05. – 14.05.", name: "Vape Show", city: "Prag", country: "CZ", url: "https://vapeshow.cz/en" },
            { year: 2017, dateStr: "20.05. – 22.05.", name: "Vapitaly", city: "Verona", country: "IT", url: "http://www.vapitaly.com/" },
            { year: 2017, dateStr: "26.05. – 28.05.", name: "Vaper Expo UK", city: "Marston Green", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2017, dateStr: "16.06. – 18.06.", name: "VAPEXPO", city: "Moscow", country: "RU", url: "https://vapexpo.ru/en" },
            { year: 2017, dateStr: "24.06. – 25.06.", name: "InterSteam", city: "Berlin", country: "DE", url: "http://www.intersteam.de/" },
            { year: 2017, dateStr: "01.07. – 02.07.", name: "National Vape Expo", city: "Dublin", country: "IE", url: "http://www.nationalvapeexpo.com/" },
            { year: 2017, dateStr: "01.07.", name: "Vape Week", city: "Odesa", country: "UA", url: "https://vapeweek.com.ua/en" },
            { year: 2017, dateStr: "21.07. – 23.07.", name: "Canada's Vape Expo", city: "Toronto", country: "CA", url: "https://www.cvexpo.ca/" },
            { year: 2017, dateStr: "29.07. – 31.07.", name: "Vape China Expo", city: "Peking", country: "CN", url: "http://en.vapechinaexpo.com/" },
            { year: 2017, dateStr: "05.08. – 06.08.", name: "UK Vapefest", city: "Shrewsbury", country: "UK", url: "http://www.ukvapefest.co.uk" },
            { year: 2017, dateStr: "18.08. – 20.08.", name: "World Vapor Expo", city: "Miami", country: "US", url: "http://worldvaporexpo.com/" },
            { year: 2017, dateStr: "09.09. – 10.09.", name: "Vape Expo India", city: "New Delhi City", country: "IN", url: "http://vapeexpo-india.com/en" },
            { year: 2017, dateStr: "22.09. – 24.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "http://www.intertabac.de/start.html" },
            { year: 2017, dateStr: "24.09. – 25.09.", name: "Vapexpo", city: "Paris", country: "FR", url: "https://vapexpo-france.com/fr" },
            { year: 2017, dateStr: "07.10. – 08.10.", name: "VapersCom (E-Dampfermesse)", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2017, dateStr: "14.10. – 15.10.", name: "Vapexpo Barcelona", city: "Barcelona", country: "ES", url: "http://vapexpo-barcelona.com/" },
            { year: 2017, dateStr: "21.10. – 22.10.", name: "VaporFair", city: "Berlin", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2017, dateStr: "21.10. – 22.10.", name: "Vapitaly", city: "Rom", country: "IT", url: "http://www.vapitaly.com/" },
            { year: 2017, dateStr: "27.10. – 29.10.", name: "The Vaper Expo UK", city: "Birmingham", country: "UK", url: "http://www.vaperexpo.co.uk/" },
            { year: 2017, dateStr: "28.10. – 29.10.", name: "Vapeexpo Kiew", city: "Kiew", country: "UA", url: "https://vapexpo.kiev.ua/en" },
            { year: 2017, dateStr: "03.11. – 05.11.", name: "Inter Vape Expo", city: "Castrop Rauxel", country: "DE", url: "https://intervapeexpo.com/" },
            { year: 2017, dateStr: "27.11.", name: "American Vape Expo", city: "Lutherville-Timonium", country: "US", url: "http://www.americanvapeexpo.com/" },
            { year: 2017, dateStr: "08.12. – 10.12.", name: "VAPEXPO", city: "Moscow", country: "RU", url: "https://vapexpo.ru/en" },
            { year: 2017, dateStr: "16.12. – 17.12.", name: "VaporFair", city: "New York", country: "US", url: "http://www.shishamesse.de/" },

            /* 2016 */
            { year: 2016, dateStr: "01.04. – 03.04.", name: "Vape Jam UK", city: "London", country: "UK", url: "http://vapejamuk.co.uk/" },
            { year: 2016, dateStr: "02.04. – 03.04.", name: "Recklinghäuser Dampfermesse", city: "Recklinghausen", country: "DE", url: "http://www.re-dampfermesse.de/" },
            { year: 2016, dateStr: "15.04. – 17.04.", name: "VaporFair", city: "Frankfurt", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2016, dateStr: "22.04. – 24.04.", name: "The Hall of Vape", city: "Stuttgart", country: "DE", url: "http://the-hall-of-vape.de/" },
            { year: 2016, dateStr: "30.04. – 01.05.", name: "Vaper Expo Tour", city: "Turin", country: "IT", url: "http://vaperexpotour.com/eng/" },
            { year: 2016, dateStr: "06.05. – 08.05.", name: "Vaper Expo UK", city: "Marston Green", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2016, dateStr: "11.06. – 12.06.", name: "Vienna Vape Show", city: "Wien", country: "AT", url: "http://viennavapeshow.com/de/" },
            { year: 2016, dateStr: "16.09. – 18.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "http://www.intertabac.de/start.html" },
            { year: 2016, dateStr: "01.10. – 02.10.", name: "E-Dampfermesse", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2016, dateStr: "22.10. – 23.10.", name: "Swissvapingdays", city: "Montreux", country: "CH", url: "http://www.swissvapingdays.com/" },
            { year: 2016, dateStr: "28.10. – 30.10.", name: "The Vaper Expo UK (Autumn)", city: "Birmingham", country: "UK", url: "http://vaperexpo.co.uk/" },
            { year: 2016, dateStr: "02.12. – 04.12.", name: "Dampfermesse Recklinghausen", city: "Castrop Rauxel", country: "DE", url: "http://re-dampfermesse.de/" },

            /* 2015 */
            { year: 2015, dateStr: "03.05. – 04.05.", name: "VaporFair", city: "Frankfurt", country: "DE", url: "http://www.shishamesse.de/" },
            { year: 2015, dateStr: "22.08. – 23.08.", name: "Dampfermesse Recklinghausen", city: "Castrop Rauxel", country: "DE", url: "http://re-dampfermesse.de/" },
            { year: 2015, dateStr: "03.10. – 04.10.", name: "Vape Jam UK", city: "London", country: "UK", url: "http://vapejamuk.co.uk/" },
            { year: 2015, dateStr: "03.10. – 04.10.", name: "E-Dampfermesse", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2015, dateStr: "18.09. – 20.09.", name: "InterTabak", city: "Dortmund", country: "DE", url: "http://www.intertabac.de/start.html", desc: "Erste offizielle InterTabak-Messe mit eigenem E-Zigaretten-Bereich." },
            { year: 2015, dateStr: "25.04. – 26.04.", name: "The Hall of Vape (Start)", city: "Stuttgart", country: "DE", url: "http://the-hall-of-vape.de/", desc: "Die allererste Hall of Vape." },


            /* 2014 */
            { year: 2014, dateStr: "04.10. – 05.10.", name: "E-Dampfermesse", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },
            { year: 2014, dateStr: "05.04. – 06.04.", name: "VaporFair (Start)", city: "Frankfurt", country: "DE", url: "http://www.shishamesse.de/", desc: "Start der VaporFair in Frankfurt." },

            /* 2013 */
            { year: 2013, dateStr: "12.10.", name: "E-Dampfermesse", city: "Oberhausen", country: "DE", url: "http://www.e-dampfermesse.de/" },

            /* 2012 */
            { year: 2012, dateStr: "13.10.", name: "E-Dampfermesse", city: "Dortmund", country: "DE", url: "http://www.e-dampfermesse.de/" }
        ];

        
        // Füge hier weitere Jahre aus der Datenbank bei Bedarf wieder ein, 
        // oder lass es so, da der Code modular ist. 
        // (Für die Vollständigkeit im Live-Betrieb sollte die ganze DB drin sein, 
        // hier gekürzt um Redundanz im Chat zu vermeiden, falls nicht explizit gewünscht)

        // --- LOGIC ---
        function toggleDetails(row) {
            if (event.target.tagName === 'A') return;
            row.classList.toggle('expanded');
        }

        function switchPage(pageName) {
            document.querySelectorAll('.page-section').forEach(el => el.classList.remove('active'));
            const target = document.getElementById('page-' + pageName);
            if(target) {
                target.classList.add('active');
                window.scrollTo({top: 0, behavior: 'smooth'});
            }
            document.querySelectorAll('.nav-item').forEach(el => el.classList.remove('active'));
            const navItems = document.querySelectorAll('.nav-item');
            if (pageName === 'start') navItems[0].classList.add('active');
            if (pageName === 'aktuelles') navItems[1].classList.add('active');
            if (pageName === 'datenbank') navItems[2].classList.add('active');
            if (pageName === 'mitmachen') navItems[3].classList.add('active');
            
            if(pageName === 'datenbank') {
                if(document.getElementById('year-tabs-wrapper').innerHTML.trim() === "") {
                     renderYearTabs();
                     showDbYear(2026);
                }
            }
            document.getElementById('navLinks').classList.remove('mobile-active');
        }

        function createEventRow(evt) {
            let rowClass = "calendar-row";
            if (evt.cancelled) rowClass += " cancelled";
            
            let badgeClass = "badge";
            let badgeHtml = `<span class="${badgeClass}" data-country="${evt.country}">${evt.country}</span>`;
            
            let nameHtml = evt.url ? `<a href="${evt.url}" target="_blank">${evt.name}</a>` : evt.name;
            if (evt.cancelled) nameHtml += ` <span class="badge-cancelled">Abgesagt</span>`;

            let detailsHtml = evt.desc ? `<div class="cal-details">${evt.desc}</div>` : '';

            return `
                <div class="${rowClass}" onclick="toggleDetails(this)">
                    <div class="cal-date">${evt.dateStr}</div>
                    <div class="cal-event">${nameHtml}</div>
                    <div class="cal-location">${evt.city}</div>
                    <div class="cal-country">${badgeHtml}</div>
                    ${detailsHtml}
                </div>
            `;
        }

        function renderUpcoming() {
            const container = document.getElementById('upcoming-container');
            if(!container) return;
            
            // Extrahiere Monat aus Datumsstring (z.B. "04.02. – 05.02." -> 2)
            const extractMonth = (dateStr) => {
                const monthMatch = dateStr.match(/(\d{2})\./)
                if (monthMatch) return parseInt(monthMatch[1], 10);
                const monthNames = { "Januar": 1, "Februar": 2, "März": 3, "April": 4, "Mai": 5, "Juni": 6, "Juli": 7, "August": 8, "September": 9, "Oktober": 10, "November": 11, "Dezember": 12 };
                for (const [name, num] of Object.entries(monthNames)) {
                    if (dateStr.includes(name)) return num;
                }
                return 99;
            };
            
            // Da heute Dez 2025 ist, filtern wir Events von Dez 2025 bis Juni 2026
            const upcomingEvents = eventDatabase.filter(e => 
                !e.cancelled && ((e.year === 2025 && extractMonth(e.dateStr) >= 12) || (e.year === 2026 && extractMonth(e.dateStr) <= 6))
            ).sort((a, b) => {
                // Sortiere nach Jahr, dann nach Monat
                if (a.year !== b.year) return a.year - b.year;
                return extractMonth(a.dateStr) - extractMonth(b.dateStr);
            }).slice(0, 7); // Nur die ersten 7 Events anzeigen

            let html = "";
            upcomingEvents.forEach(evt => {
                html += createEventRow(evt);
            });
            
            if (upcomingEvents.length === 0) {
                 html = `<div style="padding:2rem; text-align:center; color:gray;">Momentan sind keine kommenden Highlights eingetragen. Bitte überprüfen Sie die Datenbank oder fügen Sie einen Eintrag hinzu.</div>`;
            }

            container.innerHTML = html;
        }

        function renderYearTabs() {
            const wrapper = document.getElementById('year-tabs-wrapper');
            if(!wrapper) return;
            
            const years = [...new Set(eventDatabase.map(e => e.year))].sort((a,b) => b - a);
            
            let html = "";
            years.forEach(y => {
                html += `<div class="year-tab" onclick="showDbYear(${y})">${y}</div>`;
            });
            wrapper.innerHTML = html;
        }

        function showDbYear(year) {
            document.querySelectorAll('.year-tab').forEach(btn => {
                btn.classList.remove('active');
                if(parseInt(btn.innerText) === year) {
                    btn.classList.add('active');
                    btn.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });
                }
            });

            const events = eventDatabase.filter(e => e.year === year);
            const container = document.getElementById('db-content-container');
            let html = "";
            if(events.length === 0) {
                html = `<div style="padding:2rem; text-align:center; color:gray;">Keine Daten für dieses Jahr.</div>`;
            } else {
                events.forEach(evt => {
                    html += createEventRow(evt);
                });
            }
            container.innerHTML = html;
        }

        function toggleMenu() {
            const nav = document.getElementById('navLinks');
            nav.classList.toggle('mobile-active');
        }

        document.addEventListener('DOMContentLoaded', () => {
            renderUpcoming();
            // Pre-render tabs
            renderYearTabs();
        });
    </script>
</body>
</html>