<?xml version="1.0" encoding="utf-8"?>
<xml><title>Zapraszamy na ekoPiknik!</title><content>&lt;style type="text/css"&gt;.um-container {&#13;
  font-family: system-ui, -apple-system, sans-serif;&#13;
  line-height: 1.7;&#13;
  color: #222;&#13;
  max-width: 850px; &#13;
  margin: 0 auto;&#13;
  text-align: left; &#13;
}&#13;
.um-countdown-card {&#13;
  background: #ffffff;&#13;
  border: 1px solid #e1e8f0;&#13;
  border-left: 6px solid #f20000;&#13;
  border-radius: 8px;&#13;
  padding: 20px 25px;&#13;
  margin: 0 0 25px 0;&#13;
  box-shadow: 0 4px 15px rgba(0, 38, 114, 0.08);&#13;
  display: flex;&#13;
  align-items: center;&#13;
  justify-content: space-between;&#13;
  flex-wrap: wrap;&#13;
  gap: 20px;&#13;
}&#13;
.countdown-info {&#13;
  flex: 1 1 250px;&#13;
}&#13;
.countdown-info p {&#13;
  margin: 0 !important; &#13;
  padding: 0;&#13;
}&#13;
.countdown-lead {&#13;
  font-size: 1.2em;&#13;
  font-weight: bold;&#13;
  color: #002672;&#13;
  margin-bottom: 4px !important;&#13;
}&#13;
.countdown-sub {&#13;
  font-size: 0.95em;&#13;
  color: #555;&#13;
}&#13;
&#13;
/* KARTKA Z KALENDARZA – UKŁAD DLA CYFR */&#13;
.countdown-value-box {&#13;
  background: #ffffff;&#13;
  padding: 15px 20px;&#13;
  border-radius: 12px;&#13;
  border: 2px solid #e1e8f0;&#13;
  border-bottom: 4px solid #f20000;&#13;
  display: flex;&#13;
  justify-content: center;&#13;
  align-items: center;&#13;
  gap: 12px;&#13;
  box-shadow: 0 4px 10px rgba(0,0,0,0.04);&#13;
}&#13;
&#13;
.countdown-timer-group {&#13;
  display: flex;&#13;
  flex-direction: column;&#13;
  align-items: center;&#13;
  min-width: 45px;&#13;
}&#13;
&#13;
.countdown-timer-separator {&#13;
  font-size: 28px;&#13;
  font-weight: 700;&#13;
  color: #002672;&#13;
  margin-top: -10px;&#13;
}&#13;
&#13;
/* TARCZA ANTY-CMS: Silne selektory z #ID oraz !important */&#13;
#umOdliczanieWrapper .countdown-value {&#13;
  font-size: 32px !important;&#13;
  font-weight: 900 !important;&#13;
  color: #f20000 !important;&#13;
  line-height: 1 !important;&#13;
  display: block !important;&#13;
  margin: 0 !important;&#13;
}&#13;
#umOdliczanieWrapper .countdown-label {&#13;
  font-size: 11px !important;&#13;
  text-transform: uppercase !important;&#13;
  font-weight: bold !important;&#13;
  color: #002672 !important;&#13;
  letter-spacing: 1px !important;&#13;
  margin-top: 5px !important;&#13;
  display: block !important;&#13;
}&#13;
&#13;
.sr-only {&#13;
  position: absolute;&#13;
  width: 1px;&#13;
  height: 1px;&#13;
  padding: 0;&#13;
  margin: -1px;&#13;
  overflow: hidden;&#13;
  clip: rect(0,0,0,0);&#13;
  border: 0;&#13;
}&#13;
.expired-msg {&#13;
  font-size: 1.2em;&#13;
  font-weight: bold;&#13;
  color: #f20000;&#13;
  display: none;&#13;
  width: 100%;&#13;
  text-align: center;&#13;
  padding: 10px;&#13;
}&#13;
&#13;
/* Listy warsztatowe */&#13;
.eko-list {&#13;
  list-style: none;&#13;
  padding-left: 0;&#13;
  margin: 15px 0 20px 0;&#13;
}&#13;
.eko-list li {&#13;
  padding: 8px 12px;&#13;
  margin-bottom: 6px;&#13;
  background-color: #f4f6f8;&#13;
  border-left: 4px solid #047cc1;&#13;
  border-radius: 0 4px 4px 0;&#13;
  font-size: 1rem;&#13;
}&#13;
&#13;
/* Kafelki info oraz pogoda z API */&#13;
.um-info-grid {&#13;
  display: flex;&#13;
  flex-wrap: wrap;&#13;
  gap: 15px;&#13;
  margin: 20px 0;&#13;
}&#13;
.um-info-card {&#13;
  flex: 1 1 250px;&#13;
  background-color: #f0f7ff;&#13;
  border: 1px solid #d0e3ff;&#13;
  border-radius: 6px;&#13;
  padding: 15px;&#13;
  display: flex;&#13;
  align-items: center;&#13;
  gap: 12px;&#13;
}&#13;
.um-weather-card {&#13;
  flex: 1 1 100%;&#13;
  background-color: #fff9e6;&#13;
  border: 1px solid #ffe8b3;&#13;
  border-left: 4px solid #f8ce00;&#13;
  border-radius: 6px;&#13;
  padding: 15px 20px;&#13;
  display: flex;&#13;
  align-items: center;&#13;
  justify-content: space-between;&#13;
  flex-wrap: wrap;&#13;
  gap: 15px;&#13;
}&#13;
.um-info-icon {&#13;
  font-size: 1.8rem;&#13;
  line-height: 1;&#13;
}&#13;
.um-info-text strong {&#13;
  display: block;&#13;
  color: #002672;&#13;
  font-size: 0.9rem;&#13;
  text-transform: uppercase;&#13;
}&#13;
.um-info-text span {&#13;
  font-size: 1rem;&#13;
  color: #222222;&#13;
}&#13;
.um-weather-temp {&#13;
  font-weight: 700;&#13;
  color: #002672;&#13;
}&#13;
.um-weather-btn {&#13;
  background: #002672;&#13;
  color: #ffffff !important;&#13;
  padding: 8px 16px;&#13;
  text-decoration: none;&#13;
  border-radius: 4px;&#13;
  font-size: 0.9rem;&#13;
  font-weight: bold;&#13;
  transition: background 0.2s ease;&#13;
}&#13;
.um-weather-btn:hover {&#13;
  background: #f20000;&#13;
}&#13;
&#13;
.eko-title {&#13;
  color: #002672;&#13;
  font-size: 1.4rem;&#13;
  font-weight: 700;&#13;
  margin-top: 25px;&#13;
  margin-bottom: 15px;&#13;
  border-bottom: 3px solid #f20000;&#13;
  padding-bottom: 6px;&#13;
}&#13;
&lt;/style&gt;&#13;
&lt;div class="um-container"&gt;&#13;
&lt;p&gt;Zapraszamy na ekoPiknik! 🍂&lt;/p&gt;&#13;
&lt;!-- Karta Odliczania --&gt;&#13;
&#13;
&lt;div class="um-countdown-card" id="umOdliczanieWrapper"&gt;&#13;
&lt;div class="countdown-info"&gt;&#13;
&lt;p class="countdown-lead"&gt;⏳ Startujemy już za:&lt;/p&gt;&#13;
&#13;
&lt;p class="countdown-sub"&gt;Wydarzenie: 17 października 2026 r.&lt;/p&gt;&#13;
&lt;/div&gt;&#13;
&lt;span class="sr-only"&gt;Odliczanie do wydarzenia: 17 października 2026, godzina 12:00.&lt;/span&gt;&#13;
&#13;
&lt;div aria-hidden="true" class="countdown-value-box" id="umKafelkiLlicznika"&gt;&#13;
&lt;div class="countdown-timer-group"&gt;&lt;span class="countdown-value" id="umDni"&gt;00&lt;/span&gt; &lt;span class="countdown-label"&gt;Dni&lt;/span&gt;&lt;/div&gt;&#13;
&#13;
&lt;div class="countdown-timer-separator"&gt;:&lt;/div&gt;&#13;
&#13;
&lt;div class="countdown-timer-group"&gt;&lt;span class="countdown-value" id="umGodziny"&gt;00&lt;/span&gt; &lt;span class="countdown-label"&gt;Godz.&lt;/span&gt;&lt;/div&gt;&#13;
&#13;
&lt;div class="countdown-timer-separator"&gt;:&lt;/div&gt;&#13;
&#13;
&lt;div class="countdown-timer-group"&gt;&lt;span class="countdown-value" id="umMinuty"&gt;00&lt;/span&gt; &lt;span class="countdown-label"&gt;Min.&lt;/span&gt;&lt;/div&gt;&#13;
&lt;/div&gt;&#13;
&#13;
&lt;div class="expired-msg" id="umOdliczanieKoniec" role="status"&gt;EkoPiknik właśnie się odbywa lub dobiegł końca!&lt;/div&gt;&#13;
&lt;/div&gt;&#13;
&#13;
&lt;p&gt;Już 17 października zapraszamy na skwer przy ul. Niedurnego/Łagiewnickiej w Chorzowie na popołudnie pełne ekologicznych inspiracji, kreatywnej zabawy i atrakcji dla całych rodzin!&lt;/p&gt;&#13;
&#13;
&lt;p&gt;Na uczestników czekają m.in. konkursy, ekologiczne quizy oraz darmowe eko warsztaty dla dzieci i dorosłych! 🎨🌱&lt;/p&gt;&#13;
&#13;
&lt;h2 class="eko-title"&gt;Program warsztatów&lt;/h2&gt;&#13;
&#13;
&lt;p&gt;W ramach warsztatów będzie można przygotować:&lt;/p&gt;&#13;
&#13;
&lt;ul class="eko-list" role="list"&gt;&#13;
	&lt;li&gt;🍄 druk botaniczny na eko torbie,&lt;/li&gt;&#13;
	&lt;li&gt;🌸 magiczne miasto kwiatów,&lt;/li&gt;&#13;
	&lt;li&gt;🌿 las w słoiku,&lt;/li&gt;&#13;
	&lt;li&gt;🍁 jesienne wrzosy.&lt;/li&gt;&#13;
&lt;/ul&gt;&#13;
&#13;
&lt;p&gt;Wszystkie warsztaty są bezpłatne.&lt;/p&gt;&#13;
&#13;
&lt;p&gt;Ponadto Komenda Państwowej Straży Pożarnej w Chorzowie przygotowuje stoisko Ochrony Ludności i Obrony Cywilnej.&lt;/p&gt;&#13;
&lt;!-- Kafelki ze szczegółami i pogodą z API --&gt;&#13;
&#13;
&lt;div class="um-info-grid"&gt;&#13;
&lt;div class="um-info-card"&gt;&#13;
&lt;div aria-hidden="true" class="um-info-icon"&gt;📅&lt;/div&gt;&#13;
&#13;
&lt;div class="um-info-text"&gt;&lt;strong&gt;Data i godzina&lt;/strong&gt; &lt;span&gt;17.10.2026 | 12:00–16:00&lt;/span&gt;&lt;/div&gt;&#13;
&lt;/div&gt;&#13;
&#13;
&lt;div class="um-info-card"&gt;&#13;
&lt;div aria-hidden="true" class="um-info-icon"&gt;📍&lt;/div&gt;&#13;
&#13;
&lt;div class="um-info-text"&gt;&lt;strong&gt;Lokalizacja&lt;/strong&gt; &lt;span&gt;Skwer przy ul. Niedurnego/Łagiewnickiej, Chorzów&lt;/span&gt;&lt;/div&gt;&#13;
&lt;/div&gt;&#13;
&lt;!-- Kafelek zasilany przez darmowe Open-Meteo API --&gt;&#13;
&#13;
&lt;div class="um-weather-card"&gt;&#13;
&lt;div style="display: flex; align-items: center; gap: 12px;"&gt;&#13;
&lt;div aria-hidden="true" class="um-info-icon" id="umWeatherIcon"&gt;🌡️&lt;/div&gt;&#13;
&#13;
&lt;div class="um-info-text"&gt;&lt;strong&gt;Aktualna prognoza w Chorzowie&lt;/strong&gt; &lt;span id="umWeatherText"&gt;Pobieranie danych pogodowych...&lt;/span&gt;&lt;/div&gt;&#13;
&lt;/div&gt;&#13;
&lt;a class="um-weather-btn" href="https://meteo.imgw.pl/" rel="noopener" target="_blank"&gt;Więcej na IMGW&lt;/a&gt;&lt;/div&gt;&#13;
&lt;/div&gt;&#13;
&#13;
&lt;p&gt;Wydarzenie jest częścią kampanii edukacyjnej projektu „Kompleksowe zagospodarowanie terenu zdegradowanego przy ul. Łagiewnickiej i Niedurnego w Chorzowie w celu nadania nowej wartości przyrodniczej”.&lt;/p&gt;&#13;
&#13;
&lt;p&gt;Do zobaczenia na ekoPikniku! 🌿💚&lt;/p&gt;&#13;
&lt;/div&gt;&#13;
&lt;!-- /Koniec um-container --&gt;&lt;script&gt;&#13;
document.addEventListener('DOMContentLoaded', function() {&#13;
  // 1. SKRYPT LICZNIKA&#13;
  var kafelki = document.getElementById('umKafelkiLlicznika');&#13;
  var komunikat = document.getElementById('umOdliczanieKoniec');&#13;
  var elDni = document.getElementById('umDni');&#13;
  var elGodziny = document.getElementById('umGodziny');&#13;
  var elMinuty = document.getElementById('umMinuty');&#13;
  var infoBox = document.querySelector('.countdown-info');&#13;
  &#13;
  var targetDate = new Date('2026-10-17T12:00:00').getTime();&#13;
&#13;
  function padZero(num) {&#13;
    return num &lt; 10 ? '0' + num : num;&#13;
  }&#13;
&#13;
  function updateTimer() {&#13;
    var now = new Date().getTime();&#13;
    var distance = targetDate - now;&#13;
&#13;
    if (distance &lt; 0) {&#13;
      if (kafelki) kafelki.style.display = 'none';&#13;
      if (komunikat) komunikat.style.display = 'block';&#13;
      if (infoBox) infoBox.style.display = 'none';&#13;
      return true; &#13;
    }&#13;
&#13;
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));&#13;
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));&#13;
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));&#13;
&#13;
    if (elDni) elDni.textContent = padZero(days);&#13;
    if (elGodziny) elGodziny.textContent = padZero(hours);&#13;
    if (elMinuty) elMinuty.textContent = padZero(minutes);&#13;
&#13;
    return false;&#13;
  }&#13;
&#13;
  var isExpired = updateTimer();&#13;
  if (!isExpired) {&#13;
    var timerInterval = setInterval(function() {&#13;
      if (updateTimer()) {&#13;
        clearInterval(timerInterval);&#13;
      }&#13;
    }, 1000);&#13;
  }&#13;
&#13;
  // 2. SKRYPT POGODOWY (OPEN-METEO API)&#13;
  const weatherTextEl = document.getElementById('umWeatherText');&#13;
  const weatherIconEl = document.getElementById('umWeatherIcon');&#13;
  &#13;
  // Współrzędne Chorzowa&#13;
  const lat = 50.2976;&#13;
  const lon = 18.9503;&#13;
  const apiUrl = `https://api.open-meteo.com/v1/forecast?latitude=${lat}&amp;longitude=${lon}&amp;current=temperature_2m,weather_code`;&#13;
&#13;
  fetch(apiUrl)&#13;
    .then(response =&gt; response.json())&#13;
    .then(data =&gt; {&#13;
      if (data &amp;&amp; data.current) {&#13;
        const temp = Math.round(data.current.temperature_2m);&#13;
        const code = data.current.weather_code;&#13;
        &#13;
        // Proste mapowanie kodów WMO na czytelne ikony i opisy pogodowe&#13;
        let icon = '🌡️';&#13;
        let desc = 'Zmiennie';&#13;
&#13;
        if (code === 0) { icon = '☀️'; desc = 'Bezsłonecznie / Czyste niebo'; }&#13;
        else if (code &gt;= 1 &amp;&amp; code &lt;= 3) { icon = '⛅'; desc = 'Umiarkowane zachmurzenie'; }&#13;
        else if (code &gt;= 45 &amp;&amp; code &lt;= 48) { icon = '🌫️'; desc = 'Mgła'; }&#13;
        else if (code &gt;= 51 &amp;&amp; code &lt;= 67) { icon = '🌧️'; desc = 'Opady deszczu'; }&#13;
        else if (code &gt;= 71 &amp;&amp; code &lt;= 77) { icon = '🌨️'; desc = 'Opady śniegu'; }&#13;
        else if (code &gt;= 95) { icon = '⚡'; desc = 'Burza'; }&#13;
&#13;
        if (weatherTextEl) {&#13;
          weatherTextEl.innerHTML = `&lt;span class="um-weather-temp"&gt;${temp}°C&lt;/span&gt; — ${desc}`;&#13;
        }&#13;
        if (weatherIconEl) {&#13;
          weatherIconEl.textContent = icon;&#13;
        }&#13;
      } else {&#13;
        throw new Error('Brak danych');&#13;
      }&#13;
    })&#13;
    .catch(error =&gt; {&#13;
      if (weatherTextEl) {&#13;
        weatherTextEl.textContent = 'Sprawdź aktualne warunki meteo';&#13;
      }&#13;
    });&#13;
});&#13;
&lt;/script&gt;</content><createdAt>2026-10-15 10:23:50</createdAt><updatedAt>2026-10-15 10:23:50</updatedAt></xml>
