<!doctype html>
<html lang="de"
  domain="retrocomputer-dresden.de"
>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">

    

    <!-- RCD-Signet: skalierbar zuerst, klassische Fallbacks danach.
         ?v= ist Pflicht: /img/* wird ein Jahr lang "immutable" gecacht
         (_headers) und unter denselben Pfaden lag bis 09/2026 die alte
         Diskette. Bei einem neuen Icon faviconVersion in metadata.json erhöhen. -->
    <link rel="icon" href="/img/favicon/favicon.svg?v=2026-09" type="image/svg+xml">
    <link rel="icon" href="/favicon.ico?v=2026-09" sizes="32x32">

    <!-- wichtig für Google Search (48×48!) -->
    <link rel="icon" type="image/png" sizes="48x48" href="/img/favicon/favicon-48x48.png?v=2026-09">

    <!-- normale Tab-Icons (optional) -->
    <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png?v=2026-09">
    <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png?v=2026-09">

    <!-- Apple Touch Icon + Android (Manifest) -->
    <link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png?v=2026-09">
    <link rel="manifest" href="/site.webmanifest?v=2026-09">

    <meta name="theme-color" content="#111111">

<meta name="robots" content="max-snippet:-1, max-image-preview: large, max-video-preview: -1">
    

    <title>Retro Computer Dresden e.V.</title>
<meta name="description" content="BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Retro Computer Dresden e.V.//Events//DE CALSCALE:GREGORIAN METHOD:PUBLISH BEGIN:VEVENT...">
    
    <link rel="canonical" href="https://www.retrocomputer-dresden.de/events/retroparty-april-2026.ics">

    
    <meta property="og:type" content="website">
    <meta property="og:site_name" content="Retro Computer Dresden e.V.">
    <meta property="og:title" content="Retro Computer Dresden e.V.">
    <meta property="og:url" content="https://www.retrocomputer-dresden.de/events/retroparty-april-2026.ics">
    <meta property="og:locale" content="de_DE">
<meta property="og:description" content="BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Retro Computer Dresden e.V.//Events//DE CALSCALE:GREGORIAN METHOD:PUBLISH BEGIN:VEVENT..."><meta property="og:image" content="https://www.retrocomputer-dresden.de/img/bg.webp">
    

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Retro Computer Dresden e.V.">
<meta name="twitter:description" content="BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Retro Computer Dresden e.V.//Events//DE CALSCALE:GREGORIAN METHOD:PUBLISH BEGIN:VEVENT..."><meta name="twitter:image" content="https://www.retrocomputer-dresden.de/img/bg.webp">
    

    
    <link rel="alternate" href="/feed/feed.xml" type="application/atom+xml" title="Retro Computer Dresden e.V.">

    
    <meta name="referrer" content="no-referrer-when-downgrade">

    
    <link rel="preload" href="/fonts/Inter-3.19.var.woff2" as="font" type="font/woff2" crossorigin>
    <link rel="preload" href="/fonts/PressStart2P-Regular.woff2" as="font" type="font/woff2" crossorigin>
    <link rel="preload"
      href="/css/main.css?v=519e0afc72"
      as="style"
      onload="this.onload=null;this.rel='stylesheet'">
    <noscript>
      <link rel="stylesheet" href="/css/main.css?v=519e0afc72">
    </noscript>

    
    <script defer src="/js/min.js?hash=8732573db3"></script>

    <!-- Notably iOS UAs also contain Mac OS X -->
    <script csp-hash>if (/Mac OS X/.test(navigator.userAgent))document.documentElement.classList.add('apple')</script>

    <!-- css is inserted by optimize-html custom plugin -->
    
    <!-- Lightbox functionality -->
    <script>
      document.addEventListener('DOMContentLoaded', function() {
        // Create lightbox HTML
        const lightbox = document.createElement('div');
        lightbox.className = 'lightbox';
        lightbox.innerHTML = `
          <span class="lightbox-close">&times;</span>
          <img src="" alt="" width="1440" height="960">
        `;
        document.body.appendChild(lightbox);
        
        const lightboxImg = lightbox.querySelector('img');
        const lightboxClose = lightbox.querySelector('.lightbox-close');
        
        // Use event delegation to support thumbnails generated by shortcode and regular images
        document.addEventListener('click', function(ev) {
          const clickable = ev.target.closest('.clickable-image');
          if (clickable) {
            const fullSrc = clickable.getAttribute('data-full-src');
            if (fullSrc) {
              lightboxImg.src = fullSrc;
              const imgEl = clickable.querySelector('img');
              lightboxImg.alt = imgEl ? imgEl.alt : '';
              lightbox.classList.add('active');
              document.body.style.overflow = 'hidden';
              ev.preventDefault();
              return;
            }
          }

          // Fallback: any other image inside article (skip images already wrapped in links)
          const img = ev.target.closest('article img');
          if (img && !img.closest('a')) {
            let originalSrc = img.src;
            
            // If the image has srcset, use the largest available version
            if (img.srcset) {
              const srcsetEntries = img.srcset.split(',').map(entry => {
                const parts = entry.trim().split(' ');
                const url = parts[0];
                const width = parseInt(parts[1]) || 1;
                return { url, width };
              });
              
              // Sort by width and take the largest
              const largestImage = srcsetEntries.sort((a, b) => b.width - a.width)[0];
              if (largestImage) {
                originalSrc = largestImage.url;
              }
            }
            
            // If this is a processed Eleventy image URL, try to find a larger version
            if (originalSrc.includes('/img/built/')) {
              // Get the largest available size from the srcset attribute
              const srcset = img.getAttribute('srcset');
              if (srcset) {
                // Parse srcset to find the largest available size
                const sources = srcset.split(',').map(src => {
                  const parts = src.trim().split(' ');
                  const url = parts[0];
                  const sizeMatch = url.match(/-(\d+)\.(webp|jpeg)$/);
                  return sizeMatch ? { url, size: parseInt(sizeMatch[1]) } : null;
                }).filter(Boolean);
                
                if (sources.length > 0) {
                  // Sort by size (largest first) and use the largest
                  sources.sort((a, b) => b.size - a.size);
                  originalSrc = sources[0].url;
                }
              } else {
                // Fallback: Try to find a larger version by replacing the width in the filename
                const currentSize = originalSrc.match(/-(\d+)\.(webp|jpeg)$/);
                if (currentSize) {
                  const baseUrl = originalSrc.replace(/-\d+\.(webp|jpeg)$/, '');
                  const extension = currentSize[2];
                  // Try larger sizes, but in a smarter way
                  const sizesToTry = [1920, 1748, 1440, 1024, 768, 640];
                  for (const size of sizesToTry) {
                    const testUrl = `${baseUrl}-${size}.${extension}`;
                    // Just use the first one we try (fallback behavior)
                    originalSrc = testUrl;
                    break;
                  }
                }
              }
            }
            
            lightboxImg.src = originalSrc;
            lightboxImg.alt = img.alt;
            lightbox.classList.add('active');
            document.body.style.overflow = 'hidden';
            ev.preventDefault();
          }
        });
        
        // Close lightbox
        function closeLightbox() {
          lightbox.classList.remove('active');
          document.body.style.overflow = '';
        }
        
        lightboxClose.addEventListener('click', closeLightbox);
        lightbox.addEventListener('click', function(e) {
          if (e.target === lightbox) {
            closeLightbox();
          }
        });
        
        // Close with Escape key
        document.addEventListener('keydown', function(e) {
          if (e.key === 'Escape' && lightbox.classList.contains('active')) {
            closeLightbox();
          }
        });
      });
    </script>
  </head>
  <body class="page">
    <a href="#main-content" class="skip-link">Zum Hauptinhalt springen</a>

    
<nav id="hamnav" role="navigation" aria-label="Hauptnavigation">
  <a class="rcd-logo" href="/" aria-label="Retro Computer Dresden e.V. – Startseite">
    
    <span class="rcd-mark" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></span>
    <span class="rcd-logo__word">RCD</span>
  </a>
  <label for="hamburger"  aria-label="Menü öffnen" aria-controls="hamitems" aria-expanded="false">&#9776;</label>
  <input type="checkbox" id="hamburger" style="display:none;">
  <div id="hamitems">
    <!-- Events Dropdown -->
    <div class="nav-dropdown">
      <a href="/eventsOverview/" class="nav-main-link">Events</a>
      <div class="nav-submenu">
        <a href="/eventsOverview/">Alle Veranstaltungen</a>
        <a href="/events/retroMittwoch/">Retro Mittwoch</a>
        <a href="/events/Retroparty20252/">Retroparties</a>
      </div>
    </div>
    
    <!-- Beiträge Dropdown -->
    <div class="nav-dropdown">
      <a href="/postsOverview/" class="nav-main-link">Beiträge</a>
      <div class="nav-submenu">
        <a href="/postsOverview/">Alle Beiträge</a>        <a href="/tags/commodore/">Commodore</a>        <a href="/tags/retroparty/">Retroparty</a>        <a href="/tags/vereinsleben/">Vereinsleben</a>        <a href="/tags/retro-gaming/">Retro-gaming</a>      </div>
    </div>
    
    <!-- Verein Dropdown -->
    <div class="nav-dropdown">
      <a href="/posts/Wer sind wir/" class="nav-main-link">Verein</a>
      <div class="nav-submenu">
        <a href="/posts/Wer sind wir/">Über uns</a>
        <a href="/satzung/">Satzung</a>
        <a href="/about/">Kontakt & Impressum</a>
        <a href="/kontakt/">Kontaktformular</a>
        <a href="https://members.retrocomputer-dresden.de" target="_blank" rel="noopener">Mitglied werden</a>
        <a href="/spenden/">Spenden</a>
      </div>
    </div>

    <a href="/#besuch">Anfahrt</a>

    
    <a class="btn btn--chip-red nav-cta" href="/events/retroparty20262/" title="Retroparty November 21.11.2026 – Retro Computer Dresden e.V.">
      <span class="nav-cta__label" data-fallback="Nächstes Event">Retroparty November 21.11.2026 – Retro Computer Dresden e.V.</span>
    </a>
    <a class="btn btn--primary nav-cta" href="/game-development-mit-dem-sega-megadrive/" title="Mega Drive programmieren – Teil 1: Erstes ROM mit SGDK">
      <span class="nav-cta__label" data-fallback="Neuester Artikel">Mega Drive programmieren – Teil 1: Erstes ROM mit SGDK</span>
    </a>
  </div>
</nav>
<script>
  const dropdowns = [];

  const registerDropdown = (dropdown) => {
    if (!dropdown || dropdowns.includes(dropdown)) {
      return;
    }
    dropdowns.push(dropdown);
    const mainLink = dropdown.querySelector('.nav-main-link');
    mainLink?.addEventListener('click', (e) => {
      if (window.innerWidth <= 700) {
        e.preventDefault();
        const parentDropdown = e.target.closest('.nav-dropdown');
        parentDropdown.classList.toggle('active');

        // Close other dropdowns
        dropdowns.forEach((other) => {
          if (other !== parentDropdown) {
            other.classList.remove('active');
          }
        });
      }
    });
  };

  document.addEventListener('DOMContentLoaded', () => {
    const nav = document.getElementById('hamnav');
    const hamburger = document.getElementById('hamburger');
    const label = nav.querySelector('label[for="hamburger"]');

    document.querySelectorAll('.nav-dropdown').forEach(registerDropdown);

    // Kurzlinks: Label darf 2 Zeilen nutzen; braucht es mehr, Kurzlabel setzen.
    // Erst nach Font-Load messen (Press Start 2P lädt asynchron), bei Resize
    // und beim Öffnen des Overlays neu (versteckte Elemente messen 0 Höhe).
    const fitNavCta = (cta) => {
      const lbl = cta.querySelector('.nav-cta__label');
      if (!lbl || !lbl.dataset.fallback) return;
      if (!lbl.dataset.full) lbl.dataset.full = lbl.textContent;
      lbl.textContent = lbl.dataset.full;
      if (lbl.scrollHeight > lbl.clientHeight + 1) {
        lbl.textContent = lbl.dataset.fallback;
      }
    };
    const fitNavCtas = () => document.querySelectorAll('.nav-cta').forEach(fitNavCta);
    fitNavCtas();
    if (document.fonts && document.fonts.ready) document.fonts.ready.then(fitNavCtas);

    label.addEventListener('click', (e) => {
        // This just triggers the checkbox, which is the source of truth
    });

    hamburger.addEventListener('change', () => {
        const isOpen = hamburger.checked;
        nav.classList.toggle('menu-open', isOpen);
        label.setAttribute('aria-expanded', isOpen);
        if (isOpen) {
            label.innerHTML = '✕';
            // Overlay ist erst jetzt sichtbar – erst jetzt lässt sich der
            // Platz der Kurzlink-Labels zuverlässig messen.
            fitNavCtas();
        } else {
            label.innerHTML = '☰';
        }
    });

    // Reset on resize
    let resizeTimer;
    window.addEventListener('resize', () => {
      if (window.innerWidth > 700) {
        hamburger.checked = false;
        nav.classList.remove('menu-open');
        label.innerHTML = '☰';
        label.setAttribute('aria-expanded', 'false');
        dropdowns.forEach(d => d.classList.remove('active'));
      }
      window.clearTimeout(resizeTimer);
      resizeTimer = window.setTimeout(fitNavCtas, 150);
    });
  });
</script>

    <header>
      

<div class="page-hero detail-hero scanlines">
  <div class="page-hero__wash" aria-hidden="true"></div>
  <span class="crt-sweep" aria-hidden="true"></span>
  <div class="detail-hero__grid">
    <div class="page-hero__inner detail-hero__text">
      <div class="section-head section-head--red">
        <span class="section-head__kicker">Veranstaltung</span>
      </div>
      <h1 class="page-hero__title detail-hero__title" id="page-title"></h1>
    <div class="event-facts">
      <div class="event-facts__date">
      </div>
      <dl class="fact-rows event-facts__rows">
        <div class="fact-rows__row"><dt>Ort</dt><dd>Zwinglistr. 25, 01277 Dresden</dd></div>
      </dl>
      <div class="event-facts__actions">
        <a class="btn btn--primary btn--chip-red" href="/#besuch">Anfahrt</a>
<a class="btn btn--chip-teal" href="/events/event.ics.ics">In den Kalender</a>      </div>
    </div>
    </div>
  </div>
</div>
    </header>

    <main id="main-content">
      <article>
<div class="page-body">
  <div class="prose prose--event">









BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Retro Computer Dresden e.V.//Events//DE
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:retroparty-april-2026@retrocomputer-dresden.de
DTSTAMP:20260925T221544Z
DTSTART:20260925T221544Z
DTEND:20260418T180000ZSTATUS:CONFIRMED
TRANSP:OPAQUE
SUMMARY:Retroparty 18. April 2026 15:00
DESCRIPTION:Erlebe Retro zum ausprobieren: Über 30 spielbare Klassiker\, Arcade-Games und Retrocomputer. Gratis Eintritt\, Familiengeeignet.
LOCATION:Retro Computer Dresden e.V. Zwinglistraße 25 01277 Dresden
URL:https://www.retrocomputer-dresden.de/events/retroparty-april-2026/
END:VEVENT
END:VCALENDAR

  </div>
  <div class="post-footer">
    <a class="post-footer__back" href="/eventsOverview/">← Alle Veranstaltungen</a>
  </div>
</div>

<section class="page-band page-band--deep" aria-label="Weitere Termine">
  <div class="page-body">
    <div class="page-section__head">
      <div>
        <div class="section-head section-head--teal">
          <span class="section-head__kicker">Termine</span>
        </div>
        <h2 class="page-section__title">Weitere Termine</h2>
      </div>
      <a class="home-section__more" href="/eventsOverview/">Alle Veranstaltungen →</a>
    </div>

<div class="event-rows">
    <a class="event-row" href="/events/retroMittwoch/">
      <time class="event-row__date" datetime="2026-09-30">
          <span class="event-row__day">Mittwochs</span>
          <span class="event-row__year">ab 18:00</span>
      </time>
      <span class="event-row__text">
        <span class="event-row__title">Retro Mittwoch – Offener Vereinsabend | Retro Computer Dresden</span>
<span class="event-row__desc">Jeden Mittwoch lädt der Retro Computer Dresden e.V. zum offenen Retroabend ein – Computer, Konsolen und Spieleklassiker live erleben.</span>      </span>
      <span class="event-row__arrow" aria-hidden="true">→</span>
    </a>
    <a class="event-row" href="/events/retroparty20262/">
      <time class="event-row__date" datetime="2026-11-21">
          <span class="event-row__day">21.11.</span>
          <span class="event-row__year">2026</span>
      </time>
      <span class="event-row__text">
        <span class="event-row__title">Retroparty November 21.11.2026 – Retro Computer Dresden e.V.</span>
<span class="event-row__desc">Retroparty am 21.11.2026 im Retro Computer Dresden e.V. – kostenloser Eintritt, Retro-Gaming, klassische Computer und Konsolen in Dresden.</span>      </span>
      <span class="event-row__arrow" aria-hidden="true">→</span>
    </a>
</div>
  </div>
</section>


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "",
  "startDate": "Invalid DateTime",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "location": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
    }
  },
  "organizer": {
    "@type": "Organization",
    "name": "Retro Computer Dresden e.V.",
    "url": "https://www.retrocomputer-dresden.de"
  },
  "url": "https://www.retrocomputer-dresden.de/events/retroparty-april-2026.ics",
  "mainEntityOfPage": "https://www.retrocomputer-dresden.de/events/retroparty-april-2026.ics",
  "description": ""
}
</script>


      </article>
    </main>

<footer>
  <div class="footer-inner">
    <div class="footer-col">
      <div class="footer-col__title">RCD e.V.</div>
      <p class="footer-address">
        Retro Computer Dresden e.V.<br>
        Zwinglistr. 25 · 01277 Dresden<br>
        Als gemeinnützig anerkannt
      </p>
    </div>

    <nav aria-label="Verein" class="footer-col">
      <span class="footer-col__title">Verein</span>
      <a href="/posts/Wer sind wir/">Über uns</a>
      <a href="/satzung/">Satzung</a>
      <a href="https://members.retrocomputer-dresden.de" target="_blank" rel="noopener">Mitglied werden</a>
      <a href="/spenden/">Spenden</a>
    </nav>

    <nav aria-label="Rechtliches" class="footer-col footer-nav">
      <span class="footer-col__title">Rechtliches</span>
      <a href="/kontakt/">Kontakt</a>
      <a href="/about/">Impressum</a>
      <a href="/about/Datenschutz">Datenschutz</a>
      <a href="/about/Haftung">Haftungsausschluss</a>
    </nav>

    <nav aria-label="Social Media" class="footer-col footer-social">
      <span class="footer-col__title">Community</span>
      <div class="footer-social__keys">
        <a class="footer-key footer-key--orange" href="https://discord.gg/nn3TDSTnHF" target="_blank" rel="noopener noreferrer">
          <img src="/img/discord-icon.svg" alt="" class="social-icon" width="20" height="20" aria-hidden="true"> Discord
        </a>
        <a class="footer-key footer-key--red" href="https://www.instagram.com/retrocomputerdresden" target="_blank" rel="noopener noreferrer">
          <img src="/img/Instagram_Glyph_White.svg" alt="" class="social-icon" width="20" height="20" aria-hidden="true"> Instagram
        </a>
        <a class="footer-key footer-key--teal" href="https://chaos.social/@RetroComputerDD" target="_blank" rel="noopener noreferrer me">
          <img src="/img/mastodon-logo-white.svg" alt="" class="social-icon" width="20" height="20" aria-hidden="true"> Mastodon
        </a>
      </div>
    </nav>
  </div>

  <div class="footer-meta">
    <small>Game over? Insert Coin — mittwochs ab 18 Uhr</small>
  </div>
</footer>

    <!-- Simple Analytics - 100% privacy-first analytics -->
    <script async src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
  </body>
</html>
