<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
        <title>Studies - 1</title>
        <link>http://studies.mozellosite.com/1/</link>
        <description>Studies - 1</description>
                    <item>
                <title>зміст підручника 2</title>
                <link>http://studies.mozellosite.com/1/params/post/5229174/zmst-pdruchnika-2</link>
                <pubDate>Wed, 25 Mar 2026 18:07:00 +0000</pubDate>
                <description>Уроки 9-16&lt;hr class=&quot;moze-more-divider&quot;&gt;&lt;p&gt;2&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;



&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Зміст підручника A0 – Німецька мова&lt;/title&gt;

&lt;style&gt;

body{
font-family: Arial, sans-serif;
background:#f5f7fa;
margin:0;
padding:40px;
line-height:1.6;
}

.container{
max-width:1000px;
margin:auto;
background:white;
padding:40px;
box-shadow:0 0 15px rgba(0,0,0,0.1);
}

h1{
text-align:center;
color:#2c3e50;
margin-bottom:40px;
}

.accordion{
margin-bottom:10px;
border-radius:6px;
overflow:hidden;
}

.accordion-header{
padding:16px;
cursor:pointer;
font-weight:bold;
color:white;
}

.accordion-content{
display:none;
padding:20px;
background:#fafafa;
border-left:4px solid #ddd;
}

.lesson9{background:#2E86C1;}
.lesson10{background:#566573;}
.lesson11{background:#D35400;}
.lesson12{background:#52BE80;}
.lesson13{background:#F39C12;}
.lesson14{background:#7D3C98;}
.lesson15{background:#E67E22;}
.lesson16{background:#C0392B;}

.de{
font-weight:bold;
color:#2c3e50;
}

.ua{
color:#555;
margin-bottom:12px;
}

&lt;/style&gt;

&lt;script&gt;

function toggleAccordion(id){

let content=document.getElementById(id);

if(content.style.display===&quot;block&quot;){
content.style.display=&quot;none&quot;;
}else{
content.style.display=&quot;block&quot;;
}

}

&lt;/script&gt;





&lt;div class=&quot;container&quot;&gt;

&lt;h1&gt;Зміст підручника A0 (Німецька мова)&lt;/h1&gt;

&lt;p&gt;
Це структурований зміст підручника для початкового рівня A0.
Кожен урок можна відкрити та переглянути теми німецькою мовою
разом із перекладом українською.
&lt;/p&gt;

&lt;!-- LESSON 9 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson9&quot; onclick=&quot;toggleAccordion(&#039;l9&#039;)&quot;&gt;
Lektion 9 – Erste Kontakte
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l9&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Wie ist Ihr Name?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Як Вас звати?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Ich heiße ...&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Мене звати ...&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Woher kommen Sie?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Звідки Ви?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 10 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson10&quot; onclick=&quot;toggleAccordion(&#039;l10&#039;)&quot;&gt;
Lektion 10 – Meine Adresse
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l10&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Wie ist Ihre Adresse?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Яка Ваша адреса?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Straße / Hausnummer&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Вулиця / номер будинку&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Telefonnummer&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Номер телефону&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 11 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson11&quot; onclick=&quot;toggleAccordion(&#039;l11&#039;)&quot;&gt;
Lektion 11 – Schule
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l11&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Wo ist Ihre Schule?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Де знаходиться Ваша школа?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Ist das Ihre Schule?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Це Ваша школа?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Das ist eine Lehrerin&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Це вчителька&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 12 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson12&quot; onclick=&quot;toggleAccordion(&#039;l12&#039;)&quot;&gt;
Lektion 12 – Familie
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l12&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Er ist mein Mann&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Він мій чоловік&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Sie ist meine Frau&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Вона моя дружина&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Haben Sie Kinder?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Чи маєте Ви дітей?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 13 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson13&quot; onclick=&quot;toggleAccordion(&#039;l13&#039;)&quot;&gt;
Lektion 13 – Freizeit
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l13&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Ich schwimme gern&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Я люблю плавати&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Ich spiele Fußball&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Я граю у футбол&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Was machen Sie am Wochenende?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Що Ви робите на вихідних?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 14 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson14&quot; onclick=&quot;toggleAccordion(&#039;l14&#039;)&quot;&gt;
Lektion 14 – Einkaufen
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l14&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Ich möchte Brot kaufen&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Я хочу купити хліб&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Wie viel kostet das?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Скільки це коштує?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Im Supermarkt&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;У супермаркеті&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 15 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson15&quot; onclick=&quot;toggleAccordion(&#039;l15&#039;)&quot;&gt;
Lektion 15 – Tagesablauf
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l15&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Am Morgen&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Вранці&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Am Nachmittag&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Після обіду&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Am Abend&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Увечері&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Buchstaben / Laute&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Букви та звуки&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- LESSON 16 --&gt;

&lt;div class=&quot;accordion&quot;&gt;

&lt;div class=&quot;accordion-header lesson16&quot; onclick=&quot;toggleAccordion(&#039;l16&#039;)&quot;&gt;
Lektion 16 – Restaurant
&lt;/div&gt;

&lt;div class=&quot;accordion-content&quot; id=&quot;l16&quot;&gt;

&lt;p class=&quot;de&quot;&gt;Was möchten Sie trinken?&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Що Ви бажаєте пити?&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Ich nehme Kaffee&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Я візьму каву&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Gern / nicht gern&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Люблю / не люблю&lt;/p&gt;

&lt;p class=&quot;de&quot;&gt;Ja / Nein&lt;/p&gt;
&lt;p class=&quot;ua&quot;&gt;Так / Ні&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;</description>
            </item>
                    <item>
                <title>Архів подій — фото • календар • 2021–2025</title>
                <link>http://studies.mozellosite.com/1/params/post/5165296/gggggg</link>
                <pubDate>Tue, 04 Nov 2025 05:08:00 +0000</pubDate>
                <description>оооооооооооооооооооооооооо&lt;hr class=&quot;moze-more-divider&quot;&gt;&lt;p&gt;2&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;


  &lt;meta charset=&quot;utf-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot;&gt;
  &lt;title&gt;Архів подій — Фото | 2021–2025&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Архів фото заходів. Календар подій, колажі за роками, форма для авторів та реєстрація читачів, подкаст, блог.&quot;&gt;
  &lt;style&gt;
    /* ---- базові стилі (темна палітра) ---- */
    :root{
      --bg:#0b1220; --panel:#0f1724; --muted:#94a3b8; --accent:#ff7043; --card:#0b1420;
      --gap:14px; --radius:10px; --shadow: 0 6px 20px rgba(2,6,23,.6);
    }
    *{box-sizing:border-box}
    body{margin:0;font-family:Inter, ui-sans-serif, system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial;color:#e6eef8;background:linear-gradient(180deg,var(--bg),#06080a);-webkit-font-smoothing:antialiased}
    header{background:linear-gradient(90deg,#071126,#0b1724);padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.02)}
    .container{max-width:1200px;margin:20px auto;padding:0 18px}
    h1{margin:0;font-size:20px}
    p.lead{color:var(--muted);margin:8px 0 18px 0}
    .layout{display:grid;grid-template-columns:320px 1fr;gap:var(--gap)}
    @media (max-width:980px){ .layout{grid-template-columns:1fr; padding-bottom:20px} }

    /* ---- Ліва панель: календар + фільтри ---- */
    .panel{background:linear-gradient(180deg,var(--panel), #071226);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}
    .calendar{display:block}
    .month-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;color:#cfe7ff}
    .month-header button{background:transparent;border:0;color:var(--muted);cursor:pointer;padding:6px;border-radius:8px}
    .weekdays{display:grid;grid-template-columns:repeat(7,1fr);color:var(--muted);font-size:12px;padding:6px 0}
    .days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
    .day{
      min-height:44px;border-radius:8px;display:flex;align-items:flex-start;justify-content:flex-start;padding:6px;cursor:pointer;
      background:transparent;border:1px solid rgba(255,255,255,.02);color:#d7e9ff;font-size:13px;
    }
    .day.other{opacity:.35}
    .day.has-events{box-shadow:0 4px 14px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.03); position:relative}
    .day .dot{position:absolute;right:6px;bottom:6px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
    .day.selected{outline:2px solid rgba(255,112,67,.18)}

    .filters{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
    .chip{background:rgba(255,255,255,.03);padding:6px 8px;border-radius:999px;font-size:13px;color:var(--muted);cursor:pointer;border:1px solid rgba(255,255,255,.02)}

    /* ---- Головна область: контент ---- */
    main .top-row{display:flex;gap:12px;align-items:center;margin-bottom:14px}
    .years{display:flex;gap:8px;flex-wrap:wrap}
    .year-card{background:linear-gradient(180deg,#071323,#07101a);padding:12px;border-radius:8px;min-width:160px;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.6)}
    .year-card h3{margin:0;font-size:16px}
    .year-card p{margin:6px 0 0 0;color:var(--muted);font-size:13px}

    .content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
    .card{background:var(--card);border-radius:10px;overflow:hidden;box-shadow:var(--shadow);position:relative}
    .card img{width:100%;height:150px;object-fit:cover;display:block}
    .card .meta{padding:10px}
    .meta h4{margin:0 0 6px 0;font-size:15px}
    .meta p{margin:0;color:var(--muted);font-size:13px}

    /* колаж для року */
    .collage{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;height:200px}
    .collage img{width:100%;height:100%;object-fit:cover;border-radius:6px}

    /* lightbox */
    .lightbox{position:fixed;inset:0;background:rgba(2,6,23,.88);display:none;align-items:center;justify-content:center;z-index:9999}
    .lightbox.open{display:flex}
    .lightbox img{max-width:92%;max-height:90%;border-radius:8px;box-shadow:0 30px 80px rgba(0,0,0,.8)}

    /* Admin / Add Event UI */
    .admin-btn{display:inline-block;padding:8px 12px;border-radius:8px;background:linear-gradient(90deg,#142033,#0c1724);border:1px solid rgba(255,255,255,.03);cursor:pointer;color:#fff}
    .small{font-size:13px;color:var(--muted)}

    /* podcast &amp; blog */
    .podcast, .blog, .forms{margin-top:16px}
    .blog .post{padding:12px;border-top:1px dashed rgba(255,255,255,.03)}
    footer{margin:30px 0 80px 0;color:var(--muted);text-align:center}
  &lt;/style&gt;


  &lt;header&gt;
    &lt;div class=&quot;container&quot;&gt;
      &lt;div style=&quot;display:flex;justify-content:space-between;align-items:center&quot;&gt;
        &lt;div&gt;
          &lt;h1&gt;Архів подій — фото • календар • 2021–2025&lt;/h1&gt;
          &lt;p class=&quot;lead&quot;&gt;Клікніть дату в календарі, щоб побачити фото та події цього дня. Нові події додаються вручну, ранні — автоматично.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div style=&quot;display:flex;gap:8px;align-items:center&quot;&gt;
          &lt;button id=&quot;adminOpen&quot; class=&quot;admin-btn&quot;&gt;Додати подію (адмін)&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/header&gt;

  &lt;div class=&quot;container&quot;&gt;
    &lt;div class=&quot;layout&quot;&gt;
      &lt;!-- Ліва панель --&gt;
      &lt;aside class=&quot;panel&quot; id=&quot;leftPanel&quot; aria-label=&quot;Календар та фільтри&quot;&gt;
        &lt;div class=&quot;calendar&quot; id=&quot;calendarRoot&quot; role=&quot;application&quot; aria-label=&quot;Календар подій&quot;&gt;
          &lt;div class=&quot;month-header&quot;&gt;
            &lt;button id=&quot;prevMonth&quot; title=&quot;Попередній місяць&quot;&gt;◀&lt;/button&gt;
            &lt;div style=&quot;font-weight:600&quot; id=&quot;monthLabel&quot;&gt;Січень 2025&lt;/div&gt;
            &lt;button id=&quot;nextMonth&quot; title=&quot;Наступний місяць&quot;&gt;▶&lt;/button&gt;
          &lt;/div&gt;
          &lt;div class=&quot;weekdays&quot;&gt;
            &lt;div&gt;Пн&lt;/div&gt;&lt;div&gt;Вт&lt;/div&gt;&lt;div&gt;Ср&lt;/div&gt;&lt;div&gt;Чт&lt;/div&gt;&lt;div&gt;Пт&lt;/div&gt;&lt;div&gt;Сб&lt;/div&gt;&lt;div&gt;Нд&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class=&quot;days&quot; id=&quot;daysGrid&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filters&quot; style=&quot;margin-top:12px&quot;&gt;
          &lt;div class=&quot;chip&quot; data-filter=&quot;all&quot;&gt;Усі&lt;/div&gt;
          &lt;div class=&quot;chip&quot; data-filter=&quot;photo&quot;&gt;Фото&lt;/div&gt;
          &lt;div class=&quot;chip&quot; data-filter=&quot;event&quot;&gt;Подія&lt;/div&gt;
          &lt;div class=&quot;chip&quot; data-filter=&quot;podcast&quot;&gt;Подкаст&lt;/div&gt;
        &lt;/div&gt;

        &lt;div style=&quot;margin-top:12px;color:var(--muted);font-size:13px&quot;&gt;
          &lt;b&gt;Форми&lt;/b&gt;
          &lt;div style=&quot;margin-top:8px&quot;&gt;
            &lt;a id=&quot;authorsForm&quot; class=&quot;small&quot; target=&quot;_blank&quot; rel=&quot;noreferrer&quot;&gt;Заявка для авторів&lt;/a&gt;&lt;br&gt;
            &lt;a id=&quot;readersForm&quot; class=&quot;small&quot; target=&quot;_blank&quot; rel=&quot;noreferrer&quot;&gt;Реєстрація для читачів&lt;/a&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;small&quot; style=&quot;margin-top:12px&quot;&gt;Серверні налаштування: &lt;br&gt; `/images.json` — основний файл; &lt;br&gt;`/api/old_photos` — старі фото (серверний кеш)&lt;/div&gt;
      &lt;/aside&gt;

      &lt;!-- Головний контент --&gt;
      &lt;main&gt;
        &lt;div class=&quot;top-row&quot;&gt;
          &lt;div class=&quot;years&quot; id=&quot;yearsList&quot;&gt;
            &lt;!-- Роки 2021-2025 --&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;section&gt;
          &lt;div id=&quot;resultsInfo&quot; style=&quot;margin-bottom:10px;color:var(--muted)&quot;&gt;Поточна дата: &lt;span id=&quot;currentSelected&quot;&gt;—&lt;/span&gt;&lt;/div&gt;
          &lt;div id=&quot;contentGrid&quot; class=&quot;content-grid&quot;&gt;
            &lt;!-- тут з&#039;являються картки фото/подій --&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;!-- Подкаст --&gt;
        &lt;section class=&quot;podcast&quot;&gt;
          &lt;h3&gt;Подкаст&lt;/h3&gt;
          &lt;div class=&quot;card&quot; style=&quot;display:flex;gap:12px;align-items:center;padding:12px&quot;&gt;
            &lt;div style=&quot;flex:1&quot;&gt;
              &lt;h4 style=&quot;margin:0&quot;&gt;Наш подкаст — останній випуск&lt;/h4&gt;
              &lt;p class=&quot;small&quot; style=&quot;margin:6px 0 0 0&quot;&gt;Короткий опис епізоду.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div style=&quot;width:320px&quot;&gt;
              &lt;audio controls=&quot;&quot; preload=&quot;none&quot; style=&quot;width:100%&quot;&gt;
                &lt;source src=&quot;/media/podcast-latest.mp3&quot; type=&quot;audio/mpeg&quot;&gt;
                Ваш браузер не підтримує плеєр.
              &lt;/audio&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;!-- Блог --&gt;
        &lt;section class=&quot;blog&quot;&gt;
          &lt;h3&gt;Блог&lt;/h3&gt;
          &lt;div class=&quot;card&quot; style=&quot;padding:0&quot;&gt;
            &lt;div class=&quot;meta&quot;&gt;
              &lt;div class=&quot;post&quot;&gt;
                &lt;b&gt;Новина: запуск архіву фото&lt;/b&gt;
                &lt;div class=&quot;small&quot;&gt;03.11.2025 — Короткий анонс про запуск механізму архівування.&lt;/div&gt;
              &lt;/div&gt;
              &lt;div class=&quot;post&quot;&gt;
                &lt;b&gt;Розмова з автором&lt;/b&gt;
                &lt;div class=&quot;small&quot;&gt;28.10.2025 — Інтерв&#039;ю з фотографом.&lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;div class=&quot;forms&quot;&gt;
          &lt;h3&gt;Форми&lt;/h3&gt;
          &lt;div style=&quot;display:grid;grid-template-columns:1fr 1fr;gap:12px&quot;&gt;
            &lt;iframe id=&quot;formAuthors&quot; title=&quot;Заявка для авторів&quot; src=&quot;&quot; style=&quot;width:100%;height:360px;border-radius:8px;border:1px solid rgba(255,255,255,.03)&quot;&gt;&lt;/iframe&gt;
            &lt;iframe id=&quot;formReaders&quot; title=&quot;Реєстрація читачів&quot; src=&quot;&quot; style=&quot;width:100%;height:360px;border-radius:8px;border:1px solid rgba(255,255,255,.03)&quot;&gt;&lt;/iframe&gt;
          &lt;/div&gt;
        &lt;/div&gt;

      &lt;/main&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- Lightbox --&gt;
  &lt;div id=&quot;lightbox&quot; class=&quot;lightbox&quot; role=&quot;dialog&quot; aria-modal=&quot;true&quot;&gt;
    &lt;img id=&quot;lightboxImg&quot; alt=&quot;&quot;&gt;
  &lt;/div&gt;

  &lt;!-- Адмін-модал (додає подію локально і пропонує зберегти JSON) --&gt;
  &lt;div id=&quot;adminModal&quot; style=&quot;display:none;position:fixed;inset:0;background:rgba(2,6,23,.8);align-items:center;justify-content:center;z-index:9999&quot;&gt;
    &lt;div style=&quot;background:#071322;padding:18px;border-radius:10px;max-width:700px;width:96%;box-shadow:0 20px 60px rgba(0,0,0,.7)&quot;&gt;
      &lt;h3 style=&quot;margin-top:0&quot;&gt;Додати подію (ручне)&lt;/h3&gt;
      &lt;div style=&quot;display:grid;grid-template-columns:1fr 1fr;gap:10px&quot;&gt;
        &lt;input id=&quot;evDate&quot; type=&quot;date&quot; style=&quot;padding:8px;border-radius:6px;border:1px solid rgba(255,255,255,.04);background:#06101a;color:#e6eef8&quot;&gt;
        &lt;input id=&quot;evTitle&quot; placeholder=&quot;Заголовок події&quot; style=&quot;padding:8px;border-radius:6px;border:1px solid rgba(255,255,255,.04);background:#06101a;color:#e6eef8&quot;&gt;
        &lt;input id=&quot;evAuthor&quot; placeholder=&quot;Автор (ім&#039;я)&quot; style=&quot;padding:8px;border-radius:6px;border:1px solid rgba(255,255,255,.04);background:#06101a;color:#e6eef8&quot;&gt;
        &lt;input id=&quot;evImage&quot; placeholder=&quot;Шлях до фото (наприклад /photos/2025/ev1-1.jpg)&quot; style=&quot;padding:8px;border-radius:6px;border:1px solid rgba(255,255,255,.04);background:#06101a;color:#e6eef8&quot;&gt;
      &lt;/div&gt;
      &lt;textarea id=&quot;evDesc&quot; placeholder=&quot;Короткий опис&quot; style=&quot;width:100%;margin-top:10px;padding:8px;border-radius:6px;border:1px solid rgba(255,255,255,.04);background:#06101a;color:#e6eef8&quot; rows=&quot;4&quot;&gt;&lt;/textarea&gt;
      &lt;div style=&quot;display:flex;gap:8px;margin-top:10px;justify-content:flex-end&quot;&gt;
        &lt;button id=&quot;saveEvent&quot; class=&quot;admin-btn&quot;&gt;Додати подію (додати в локальний масив)&lt;/button&gt;
        &lt;button id=&quot;downloadJson&quot; class=&quot;admin-btn&quot; style=&quot;background:linear-gradient(90deg,#ff7043,#ff8f6b)&quot;&gt;Завантажити images.json&lt;/button&gt;
        &lt;button id=&quot;closeAdmin&quot; class=&quot;admin-btn&quot; style=&quot;background:transparent;border:1px solid rgba(255,255,255,.03)&quot;&gt;Закрити&lt;/button&gt;
      &lt;/div&gt;
      &lt;div style=&quot;color:var(--muted);margin-top:8px;font-size:13px&quot;&gt;Після натискання «Завантажити images.json» отримаєте файл з оновленим масивом — його треба завантажити на сервер у корінь сайту або замінити існуючий `/images.json`.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;script&gt;
    /***************************************************************************
     * Формат images.json (масив об&#039;єктів):
     * [
     *  {
     *    &quot;id&quot;:&quot;2025-03-15-ev1&quot;,
     *    &quot;type&quot;:&quot;photo&quot;,            // або &quot;event&quot;,&quot;podcast&quot;,&quot;blog&quot;
     *    &quot;date&quot;:&quot;2025-03-15&quot;,
     *    &quot;title&quot;:&quot;Зустріч в парку&quot;,
     *    &quot;author&quot;:&quot;Іван Петренко&quot;,
     *    &quot;src&quot;:&quot;/photos/2025/park-01.jpg&quot;,  // шлях до прев&#039;ю / фото
     *    &quot;gallery&quot;: [&quot;/photos/2025/park-01.jpg&quot;,&quot;/photos/2025/park-02.jpg&quot;], // додаткові фото
     *    &quot;year&quot;:2025,
     *    &quot;desc&quot;:&quot;Короткий опис&quot;
     *  },
     *  ...
     * ]
     *
     * Щоб реалізувати правило &quot;нові події вручну, ранні — автоматично&quot;:
     * - помістіть сучасні (нові) події у images.json вручну (через адмін-модал або редагування файлу)
     * - сервер повинен мати ендпоінт /api/old_photos, який повертає подібний масив (старі події отримані Graph API) — підвантаження цих даних робиться на стороні сервера (приклад Node.js нижче)
     *
     ***************************************************************************/

    // ----------------- Конфіг: посилання на Google Forms (вставте свої URLs) -----------------
    const AUTHORS_FORM_URL = &quot;https://docs.google.com/forms/d/e/ВАШ_ФОРМ_ID_FOR_AUTHORS/viewform?embedded=true&quot;;
    const READERS_FORM_URL = &quot;https://docs.google.com/forms/d/e/ВАШ_ФОРМ_ID_FOR_READERS/viewform?embedded=true&quot;;

    document.getElementById(&#039;formAuthors&#039;).src = AUTHORS_FORM_URL;
    document.getElementById(&#039;formReaders&#039;).src = READERS_FORM_URL;
    document.getElementById(&#039;authorsForm&#039;).href = AUTHORS_FORM_URL;
    document.getElementById(&#039;readersForm&#039;).href = READERS_FORM_URL;

    // ----------------- Основні змінні -----------------
    let items = [];           // масив подій з images.json + серверних старих
    let selectedDate = null;  // ISO yyyy-mm-dd
    let currentMonth = new Date(); // показуваний місяць

    // ----------------- ініціалізація -----------------
    document.addEventListener(&#039;DOMContentLoaded&#039;, async () =&gt; {
      await loadData();
      renderYears();
      renderMonth(currentMonth);
      attachUI();
    });

    // Завантажуємо images.json і опційно серверні старі фото
    async function loadData(){
      items = [];
      // 1) локальний основний файл
      try {
        const r = await fetch(&#039;/images.json&#039;, {cache:&#039;no-store&#039;});
        if (r.ok){
          const arr = await r.json();
          items = items.concat(arr || []);
        } else {
          console.warn(&#039;images.json не знайдено або помилка&#039;, r.status);
        }
      } catch(e){
        console.warn(&#039;Помилка завантаження images.json&#039;, e);
      }

      // 2) опційно: серверний ендпоінт, який попередньо підвантажив старі фото з Facebook
      try {
        const r2 = await fetch(&#039;/api/old_photos&#039;, {cache:&#039;no-store&#039;});
        if (r2.ok){
          const arr2 = await r2.json();
          // витримуємо правило: не перезаписувати свіжі ручні події (які вже є в items)
          const manualIds = new Set(items.map(it =&gt; it.id));
          const toAdd = (arr2 || []).filter(it =&gt; !manualIds.has(it.id));
          items = items.concat(toAdd);
        } else {
          console.info(&#039;Серверний ендпоінт /api/old_photos недоступний або повернув помилку&#039;);
        }
      } catch(e){
        // silent
      }
      // Нормалізація: переконаймося, що кожен item має рік
      items.forEach(it =&gt; {
        if (!it.year &amp;&amp; it.date) it.year = (new Date(it.date)).getFullYear();
      });
    }

    // ----------------- Рендер років (колажі) -----------------
    function renderYears(){
      const yearsRoot = document.getElementById(&#039;yearsList&#039;);
      yearsRoot.innerHTML = &#039;&#039;;
      const years = [2021,2022,2023,2024,2025];
      years.forEach(y =&gt; {
        const wrapper = document.createElement(&#039;div&#039;);
        wrapper.className = &#039;year-card&#039;;
        wrapper.innerHTML = `
          &lt;h3&gt;${y}&lt;/h3&gt;
          &lt;p class=&quot;small&quot;&gt;Кількість подій: ${items.filter(it =&gt; it.year===y).length}&lt;/p&gt;
        `;
        // додаємо колаж
        const imgs = items.filter(it =&gt; it.year===y &amp;&amp; it.src).slice(0,6).map(it =&gt; it.src);
        if (imgs.length){
          const collage = document.createElement(&#039;div&#039;);
          collage.className = &#039;collage&#039;;
          imgs.slice(0,3).forEach(src=&gt;{ const img=document.createElement(&#039;img&#039;); img.src=src; collage.appendChild(img);});
          wrapper.appendChild(collage);
        } else {
          const placeholder = document.createElement(&#039;div&#039;);
          placeholder.style.height=&#039;120px&#039;;
          placeholder.style.display=&#039;flex&#039;;
          placeholder.style.alignItems=&#039;center&#039;;
          placeholder.style.justifyContent=&#039;center&#039;;
          placeholder.style.color=&#039;var(--muted)&#039;;
          placeholder.textContent = &#039;Фото відсутні&#039;;
          wrapper.appendChild(placeholder);
        }

        wrapper.addEventListener(&#039;click&#039;, () =&gt; {
          // фільтруємо та показуємо всі елементи року
          const arr = items.filter(it =&gt; it.year===y);
          renderResults(arr, `${y} — архів`);
        });

        yearsRoot.appendChild(wrapper);
      });
    }

    // ----------------- Календар -----------------
    function renderMonth(date){
      const label = document.getElementById(&#039;monthLabel&#039;);
      const monthNames = [&#039;Січень&#039;,&#039;Лютий&#039;,&#039;Березень&#039;,&#039;Квітень&#039;,&#039;Травень&#039;,&#039;Червень&#039;,&#039;Липень&#039;,&#039;Серпень&#039;,&#039;Вересень&#039;,&#039;Жовтень&#039;,&#039;Листопад&#039;,&#039;Грудень&#039;];
      const year = date.getFullYear(); const month = date.getMonth();
      label.textContent = `${monthNames[month]} ${year}`;

      const firstDay = new Date(year, month, 1);
      const startWeekday = (firstDay.getDay() + 6) % 7; // робимо Пн=0
      const daysInMonth = new Date(year, month+1, 0).getDate();

      const daysGrid = document.getElementById(&#039;daysGrid&#039;);
      daysGrid.innerHTML = &#039;&#039;;

      // попередній місяць наповнення (порожні)
      const prevMonthDays = startWeekday;
      const totalCells = Math.ceil((prevMonthDays + daysInMonth)/7)*7;

      let dayCounter = 1;
      for (let i=0;i&lt;totalCells;i++){
        const cell = document.createElement(&#039;div&#039;);
        cell.className = &#039;day&#039;;
        // calculate corresponding date
        const cellIndex = i - prevMonthDays + 1;
        if (i &lt; prevMonthDays || cellIndex &gt; daysInMonth){
          cell.classList.add(&#039;other&#039;);
          const dummy = document.createElement(&#039;div&#039;); dummy.textContent = &#039;&#039;;
          cell.appendChild(dummy);
        } else {
          const iso = toIsoDate(new Date(year,month,cellIndex));
          cell.dataset.date = iso;
          cell.innerHTML = `&lt;div style=&quot;font-weight:600&quot;&gt;${cellIndex}&lt;/div&gt;`;
          // події цього дня?
          const evs = items.filter(it =&gt; it.date === iso);
          if (evs.length){
            cell.classList.add(&#039;has-events&#039;);
            const dot = document.createElement(&#039;div&#039;); dot.className=&#039;dot&#039;;
            cell.appendChild(dot);
          }
          cell.addEventListener(&#039;click&#039;, ()=&gt; {
            document.querySelectorAll(&#039;.day&#039;).forEach(d=&gt;d.classList.remove(&#039;selected&#039;));
            cell.classList.add(&#039;selected&#039;);
            onDateSelect(iso);
          });
        }
        daysGrid.appendChild(cell);
      }
    }

    function toIsoDate(d){
      const y=d.getFullYear(), m=(&#039;0&#039;+(d.getMonth()+1)).slice(-2), day=(&#039;0&#039;+d.getDate()).slice(-2);
      return `${y}-${m}-${day}`;
    }

    // ----------------- Показ результатів -----------------
    function renderResults(arr, infoText){
      const grid = document.getElementById(&#039;contentGrid&#039;);
      grid.innerHTML = &#039;&#039;;
      document.getElementById(&#039;resultsInfo&#039;).style.display=&#039;block&#039;;
      document.getElementById(&#039;currentSelected&#039;).textContent = infoText || &#039;Результати&#039;;

      if (!arr.length){
        grid.innerHTML = `&lt;div style=&quot;color:var(--muted)&quot;&gt;За вибраною датою/фільтром результатів немає.&lt;/div&gt;`;
        return;
      }

      arr.forEach(it =&gt; {
        const card = document.createElement(&#039;article&#039;);
        card.className = &#039;card&#039;;
        const imgSrc = it.src || (it.gallery &amp;&amp; it.gallery[0]) || &#039;/placeholder.jpg&#039;;
        card.innerHTML = `
          &lt;img loading=&quot;lazy&quot; src=&quot;${imgSrc}&quot; alt=&quot;${escapeHtml(it.title||&#039;&#039;)}&quot; /&gt;
          &lt;div class=&quot;meta&quot;&gt;
            &lt;h4&gt;${escapeHtml(it.title||&#039;Без заголовка&#039;)}&lt;/h4&gt;
            &lt;p class=&quot;small&quot;&gt;${it.date || &#039;&#039;} ${it.author? &#039; • &#039;+escapeHtml(it.author):&#039;&#039;}&lt;/p&gt;
            &lt;p class=&quot;small&quot; style=&quot;margin-top:8px&quot;&gt;${escapeHtml(it.desc||&#039;&#039;)}&lt;/p&gt;
            &lt;div style=&quot;margin-top:8px&quot;&gt;
              &lt;button class=&quot;admin-btn openGallery&quot;&gt;Переглянути галерею&lt;/button&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        `;
        card.querySelector(&#039;.openGallery&#039;).addEventListener(&#039;click&#039;, () =&gt; openGallery(it));
        grid.appendChild(card);
      });
    }

    // opens lightbox gallery (show first image, user can navigate via left/right keys if gallery exists)
    function openGallery(item){
      const light = document.getElementById(&#039;lightbox&#039;);
      const img = document.getElementById(&#039;lightboxImg&#039;);
      const gallery = item.gallery &amp;&amp; item.gallery.length ? item.gallery : (item.src ? [item.src] : []);
      if (!gallery.length) return;
      let idx = 0;
      img.src = gallery[idx];
      light.classList.add(&#039;open&#039;);

      function keyHandler(e){
        if (e.key === &#039;Escape&#039;){ close(); }
        if (e.key === &#039;ArrowRight&#039;){ idx = (idx+1)%gallery.length; img.src = gallery[idx]; }
        if (e.key === &#039;ArrowLeft&#039;){ idx = (idx-1+gallery.length)%gallery.length; img.src = gallery[idx]; }
      }
      function close(){
        light.classList.remove(&#039;open&#039;);
        img.src = &#039;&#039;;
        document.removeEventListener(&#039;keyup&#039;, keyHandler);
      }
      document.addEventListener(&#039;keyup&#039;, keyHandler);
      light.addEventListener(&#039;click&#039;, (ev) =&gt; { if (ev.target===light) close(); }, {once:true});
    }

    // ----------------- клік по даті -----------------
    function onDateSelect(isoDate){
      selectedDate = isoDate;
      const arr = items.filter(it =&gt; it.date === isoDate);
      renderResults(arr, isoDate);
    }

    // ----------------- UI handlers -----------------
    function attachUI(){
      document.getElementById(&#039;prevMonth&#039;).addEventListener(&#039;click&#039;, ()=&gt; {
        currentMonth = new Date(currentMonth.getFullYear(), currentMonth.getMonth()-1, 1);
        renderMonth(currentMonth);
      });
      document.getElementById(&#039;nextMonth&#039;).addEventListener(&#039;click&#039;, ()=&gt; {
        currentMonth = new Date(currentMonth.getFullYear(), currentMonth.getMonth()+1, 1);
        renderMonth(currentMonth);
      });

      // фільтри
      document.querySelectorAll(&#039;.chip&#039;).forEach(ch =&gt; ch.addEventListener(&#039;click&#039;, ()=&gt;{
        const f=ch.dataset.filter;
        if (f===&#039;all&#039;) renderResults(items, &#039;Усі події&#039;);
        else renderResults(items.filter(it =&gt; it.type === f), `Фільтр: ${f}`);
      }));

      // lightbox close
      const light = document.getElementById(&#039;lightbox&#039;);
      light.addEventListener(&#039;click&#039;, (e)=&gt;{ if (e.target===light) light.classList.remove(&#039;open&#039;); });

      // адмін модал
      const adminModal = document.getElementById(&#039;adminModal&#039;);
      document.getElementById(&#039;adminOpen&#039;).addEventListener(&#039;click&#039;, ()=&gt; adminModal.style.display=&#039;flex&#039;);
      document.getElementById(&#039;closeAdmin&#039;).addEventListener(&#039;click&#039;, ()=&gt; adminModal.style.display=&#039;none&#039;);

      // add event
      document.getElementById(&#039;saveEvent&#039;).addEventListener(&#039;click&#039;, ()=&gt;{
        const date = document.getElementById(&#039;evDate&#039;).value;
        const title = document.getElementById(&#039;evTitle&#039;).value.trim();
        const author = document.getElementById(&#039;evAuthor&#039;).value.trim();
        const src = document.getElementById(&#039;evImage&#039;).value.trim();
        const desc = document.getElementById(&#039;evDesc&#039;).value.trim();
        if (!date || !title || !src){ alert(&#039;Заповніть хоча б дату, заголовок і шлях до фото&#039;); return; }
        const id = `${date}-${Math.random().toString(36).slice(2,8)}`;
        const obj = { id, type: &#039;photo&#039;, date, title, author, src, gallery:[src], year: (new Date(date)).getFullYear(), desc };
        items.unshift(obj); // додаємо в масив
        renderYears();
        renderMonth(currentMonth);
        renderResults([obj], &#039;Додавання (локально)&#039;);
        alert(&#039;Подія додано локально в інтерфейс. Натисніть &quot;Завантажити images.json&quot;, щоб отримати файл для завантаження на сервер.&#039;);
      });

      // download images.json
      document.getElementById(&#039;downloadJson&#039;).addEventListener(&#039;click&#039;, ()=&gt;{
        const blob = new Blob([JSON.stringify(items, null, 2)], {type:&#039;application/json;charset=utf-8&#039;});
        const a = document.createElement(&#039;a&#039;);
        a.href = URL.createObjectURL(blob);
        a.download = &#039;images.json&#039;;
        a.click();
        URL.revokeObjectURL(a.href);
      });

      // initial labels
      document.getElementById(&#039;currentSelected&#039;).textContent = &#039;Виберіть дату&#039;;
    }

    // ----------------- дрібні утиліти -----------------
    function escapeHtml(s){ return String(s||&#039;&#039;).replace(/[&amp;&lt;&gt;&quot;]/g, c=&gt;({&#039;&amp;&#039;:&#039;&amp;amp;&#039;,&#039;&lt;&#039;:&#039;&amp;lt;&#039;,&#039;&gt;&#039;:&#039;&amp;gt;&#039;,&#039;&quot;&#039;:&#039;&amp;quot;&#039;}[c])); }

  &lt;/script&gt;</description>
            </item>
                    <item>
                <title>урок 1,1</title>
                <link>http://studies.mozellosite.com/1/params/post/5148577/urok-11</link>
                <pubDate>Wed, 08 Oct 2025 17:37:00 +0000</pubDate>
                <description>оооооооооооооооооооооооооооо&lt;hr class=&quot;moze-more-divider&quot;&gt;&lt;p&gt;1&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;



    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Урок 1: Почніть Говорити Німецькою За Годину – Австрійський Варіант Для Початківців!&lt;/title&gt;
    &lt;style&gt;
        body {
            background-color: #F0FFF0; /* Світло-зелений фон (honeydew) */
            color: #333;
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 20px;
            max-width: 1500px;
            margin: 0 auto;
        }
        h1, h2, h3 {
            color: #32CD32; /* Салатовий (lime green) для заголовків */
        }
        header {
            text-align: center;
            padding: 20px;
            background-color: #90EE90; /* Світло-зелений для хедера */
            border-radius: 10px;
            margin-bottom: 20px;
        }
        section {
            background-color: white;
            padding: 15px;
            border-radius: 8px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            margin-bottom: 20px;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }
        th, td {
            border: 1px solid #90EE90; /* Світло-зелений для кордонів таблиці */
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #32CD32; /* Салатовий для заголовків таблиці */
            color: white;
        }
        footer {
            text-align: center;
            padding: 10px;
            font-size: 0.8em;
            color: #666;
        }
    &lt;/style&gt;


    &lt;header&gt;
        &lt;h1&gt;Урок 1: Почніть Говорити Німецькою За Годину – Австрійський Варіант Для Початківців!&lt;/h1&gt;
    &lt;/header&gt;

    &lt;section id=&quot;intro&quot;&gt;
        &lt;h2&gt;Зачин: Чому Німецька – Це Ключ До Нового Світу?&lt;/h2&gt;
        &lt;p&gt;Уявіть, що ви в затишному кафе у Відні, замовляєте каву німецькою, і офіціант відповідає з усмішкою. Звучить привабливо? Цей урок – ваш перший крок до опанування німецької мови в австрійському стилі. Ми починаємо з базових слів, щоб ви могли вітатися, представлятися та спілкуватися просто. Якщо ви мрієте про подорожі, роботу чи просто нове хобі, давайте зануримося!&lt;/p&gt;
    &lt;/section&gt;

    &lt;section id=&quot;main&quot;&gt;
        &lt;h2&gt;Основна Частина&lt;/h2&gt;

        &lt;h3&gt;Що Таке Австрійська Німецька І Чому Починати З Неї?&lt;/h3&gt;
        &lt;p&gt;Австрійська німецька – це м&#039;якший варіант стандартної мови, з теплішою вимовою та деякими унікальними словами. Наприклад, замість &quot;Guten Tag&quot; австрійці кажуть &quot;Grüß Gott&quot;. Це ідеально для початківців, бо звучить дружніше. Ми фокусуємося на рівні A1 – альфа, де все просто та практично.&lt;/p&gt;

        &lt;h3&gt;Мета: 1000 Слів За Місяць&lt;/h3&gt;
        &lt;p&gt;Наш план – вивчати 30-35 слів щодня. За місяць ви матимете солідний словниковий запас для базових розмов. Цей урок базується на підручнику &quot;Linie 1&quot; від Klett, з акцентом на перші слова з розділу &quot;Herzlich willkommen!&quot;.&lt;/p&gt;

        &lt;h3&gt;Таблиця Перших Слів: Німецька З Перекладом Українською&lt;/h3&gt;
        &lt;p&gt;Ось базові слова. Вивчайте їх по 10-15 на день: повторюйте вголос, пишіть речення, використовуйте додатки як Anki.&lt;/p&gt;
        &lt;table&gt;
            &lt;thead&gt;
                &lt;tr&gt;
                    &lt;th&gt;№&lt;/th&gt;
                    &lt;th&gt;Німецьке слово / форма&lt;/th&gt;
                    &lt;th&gt;Український переклад&lt;/th&gt;
                    &lt;th&gt;Примітки (граматика/використання)&lt;/th&gt;
                &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
                &lt;tr&gt;
                    &lt;td&gt;1&lt;/td&gt;
                    &lt;td&gt;die Begrüßung, -en&lt;/td&gt;
                    &lt;td&gt;привітання&lt;/td&gt;
                    &lt;td&gt;Іменник (ж.р.), множина: -en. Використовується для вітань.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;2&lt;/td&gt;
                    &lt;td&gt;ankreuzen, kreuz an&lt;/td&gt;
                    &lt;td&gt;відзначати хрестиком, позначати&lt;/td&gt;
                    &lt;td&gt;Дієслово. Приклад: Kreuz an! (Познач хрестиком!)&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;3&lt;/td&gt;
                    &lt;td&gt;angeben, gibt an&lt;/td&gt;
                    &lt;td&gt;вказувати, давати (інформацію)&lt;/td&gt;
                    &lt;td&gt;Дієслово, неправильне (gibt у 3-й особі).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;4&lt;/td&gt;
                    &lt;td&gt;begrüßen&lt;/td&gt;
                    &lt;td&gt;вітати&lt;/td&gt;
                    &lt;td&gt;Дієслово. Австрійський варіант: Grüß dich! (Привіт!)&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;5&lt;/td&gt;
                    &lt;td&gt;Deutschland&lt;/td&gt;
                    &lt;td&gt;Німеччина&lt;/td&gt;
                    &lt;td&gt;Іменник (н.р.), власна назва.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;6&lt;/td&gt;
                    &lt;td&gt;die (die Fotos)&lt;/td&gt;
                    &lt;td&gt;ці (фото)&lt;/td&gt;
                    &lt;td&gt;Артикль (ж.р. множ.), вказує на конкретні речі.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;7&lt;/td&gt;
                    &lt;td&gt;das Foto, -s&lt;/td&gt;
                    &lt;td&gt;фото, -с&lt;/td&gt;
                    &lt;td&gt;Іменник (н.р.), множина: -s.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;8&lt;/td&gt;
                    &lt;td&gt;in&lt;/td&gt;
                    &lt;td&gt;в, у&lt;/td&gt;
                    &lt;td&gt;Прийменник. Приклад: in Deutschland (в Німеччині).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;9&lt;/td&gt;
                    &lt;td&gt;man&lt;/td&gt;
                    &lt;td&gt;людина (загальне), man (як &quot;one&quot; в англ.)&lt;/td&gt;
                    &lt;td&gt;Займенник для загальних тверджень.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;10&lt;/td&gt;
                    &lt;td&gt;sich&lt;/td&gt;
                    &lt;td&gt;себе (рефлексивний)&lt;/td&gt;
                    &lt;td&gt;Рефлексивний займенник. Приклад: sich begrüßen (вітати один одного).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;11&lt;/td&gt;
                    &lt;td&gt;Deutschland?&lt;/td&gt;
                    &lt;td&gt;Німеччина?&lt;/td&gt;
                    &lt;td&gt;Запитальна форма.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;12&lt;/td&gt;
                    &lt;td&gt;Sie&lt;/td&gt;
                    &lt;td&gt;Ви (формальне)&lt;/td&gt;
                    &lt;td&gt;Займенник (формальне звертання). Австрійці часто використовують &quot;Sie&quot; в повсякденні.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;13&lt;/td&gt;
                    &lt;td&gt;wie&lt;/td&gt;
                    &lt;td&gt;як&lt;/td&gt;
                    &lt;td&gt;Запитальне слово. Приклад: Wie heißen Sie? (Як вас звати?)&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;14&lt;/td&gt;
                    &lt;td&gt;aus&lt;/td&gt;
                    &lt;td&gt;з, із&lt;/td&gt;
                    &lt;td&gt;Прийменник. Приклад: aus Deutschland (з Німеччини).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;15&lt;/td&gt;
                    &lt;td&gt;das&lt;/td&gt;
                    &lt;td&gt;це (н.р.)&lt;/td&gt;
                    &lt;td&gt;Артикль (н.р.).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;16&lt;/td&gt;
                    &lt;td&gt;den&lt;/td&gt;
                    &lt;td&gt;цей (ч.р. знах.)&lt;/td&gt;
                    &lt;td&gt;Артикль (ч.р., знахідний відмінок).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;17&lt;/td&gt;
                    &lt;td&gt;die Frau, -en&lt;/td&gt;
                    &lt;td&gt;жінка, -и&lt;/td&gt;
                    &lt;td&gt;Іменник (ж.р.), множина: -en.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;18&lt;/td&gt;
                    &lt;td&gt;Guten Tag&lt;/td&gt;
                    &lt;td&gt;Добрий день&lt;/td&gt;
                    &lt;td&gt;Вітання. В Австрії: Grüß Gott.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;19&lt;/td&gt;
                    &lt;td&gt;Hallo&lt;/td&gt;
                    &lt;td&gt;Привіт&lt;/td&gt;
                    &lt;td&gt;Неформальне вітання.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;20&lt;/td&gt;
                    &lt;td&gt;der Herr, -en&lt;/td&gt;
                    &lt;td&gt;пан, -и&lt;/td&gt;
                    &lt;td&gt;Іменник (ч.р.), множина: -en.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;21&lt;/td&gt;
                    &lt;td&gt;herzlich willkommen&lt;/td&gt;
                    &lt;td&gt;сердечно ласкаво просимо&lt;/td&gt;
                    &lt;td&gt;Фраза привітання.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;22&lt;/td&gt;
                    &lt;td&gt;hören&lt;/td&gt;
                    &lt;td&gt;чути, слухати&lt;/td&gt;
                    &lt;td&gt;Дієслово.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;23&lt;/td&gt;
                    &lt;td&gt;oder&lt;/td&gt;
                    &lt;td&gt;або&lt;/td&gt;
                    &lt;td&gt;Сполучник.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;24&lt;/td&gt;
                    &lt;td&gt;das Rumänien (Sg.)&lt;/td&gt;
                    &lt;td&gt;Румунія (одн.)&lt;/td&gt;
                    &lt;td&gt;Іменник (н.р.), singular.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;25&lt;/td&gt;
                    &lt;td&gt;sein, ist&lt;/td&gt;
                    &lt;td&gt;бути, є&lt;/td&gt;
                    &lt;td&gt;Дієслово, неправильне (ist у 3-й особі).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;26&lt;/td&gt;
                    &lt;td&gt;das Spanien (Sg.)&lt;/td&gt;
                    &lt;td&gt;Іспанія (одн.)&lt;/td&gt;
                    &lt;td&gt;Іменник (н.р.), singular.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;27&lt;/td&gt;
                    &lt;td&gt;die Sprachblase, -n&lt;/td&gt;
                    &lt;td&gt;мовна бульбашка, -и&lt;/td&gt;
                    &lt;td&gt;Іменник (ж.р.), множина: -n. (як у коміксах).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;28&lt;/td&gt;
                    &lt;td&gt;und&lt;/td&gt;
                    &lt;td&gt;і&lt;/td&gt;
                    &lt;td&gt;Сполучник.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;29&lt;/td&gt;
                    &lt;td&gt;zuordnen, ordnet zu&lt;/td&gt;
                    &lt;td&gt;присвоювати, призначати&lt;/td&gt;
                    &lt;td&gt;Дієслово. Приклад: ordnet zu (присвоює).&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;30&lt;/td&gt;
                    &lt;td&gt;im&lt;/td&gt;
                    &lt;td&gt;в (скор. від in dem)&lt;/td&gt;
                    &lt;td&gt;Прийменник + артикль.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;31&lt;/td&gt;
                    &lt;td&gt;der Kurs, -e&lt;/td&gt;
                    &lt;td&gt;курс, -и&lt;/td&gt;
                    &lt;td&gt;Іменник (ч.р.), множина: -e.&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;32&lt;/td&gt;
                    &lt;td&gt;die Telefonnummer, -n&lt;/td&gt;
                    &lt;td&gt;телефонний номер, -и&lt;/td&gt;
                    &lt;td&gt;Іменник (ж.р.), множина: -n.&lt;/td&gt;
                &lt;/tr&gt;
            &lt;/tbody&gt;
        &lt;/table&gt;

        &lt;h3&gt;Практичні Завдання Для Закріплення&lt;/h3&gt;
        &lt;p&gt;1. Повторіть таблицю вголос тричі.&lt;br&gt;2. Створіть 5 речень: наприклад, &quot;Hallo, ich bin aus der Ukraine.&quot;&lt;br&gt;3. Використовуйте флеш-картки для щоденного повторення.&lt;/p&gt;
    &lt;/section&gt;

    &lt;section id=&quot;conclusion&quot;&gt;
        &lt;h2&gt;Висновок: Ваш Перший Крок Зроблено&lt;/h2&gt;
        &lt;p&gt;Ми познайомилися з базовими словами для вітань, представлень та простих розмов. Австрійська німецька робить процес веселим і природним. Продовжуйте щодня – і незабаром ви заговорите вільно!&lt;/p&gt;
    &lt;/section&gt;

    &lt;section id=&quot;benefits&quot;&gt;
        &lt;h2&gt;Яка Від Цього Користь Читачеві?&lt;/h2&gt;
        &lt;p&gt;Цей урок дає вам практичний інструмент для швидкого старту: базовий словник для реальних ситуацій, як подорожі чи робота. Ви заощадите час, вивчаючи тільки необхідне, і відчуєте прогрес вже після першого дня. Плюс, це мотивує продовжувати до 1000 слів за місяць, відкриваючи двері до нових можливостей у Європі.&lt;/p&gt;
    &lt;/section&gt;

    
        &lt;p&gt;Урок створено для швидкого вивчення. Наступний – завтра! © 2025&lt;/p&gt;</description>
            </item>
                    <item>
                <title>Про агресивний Хші</title>
                <link>http://studies.mozellosite.com/1/params/post/5136087/pro-agresivnij-hsh</link>
                <pubDate>Sun, 21 Sep 2025 06:14:00 +0000</pubDate>
                <description>лллллллллллллллллллллллллллллллллл
&lt;hr class=&quot;moze-more-divider&quot;&gt;
&lt;p&gt;1
  &lt;br&gt;
  &lt;img src=&quot;https://site-2456468.mozfiles.com/files/2456468/medium/Unbenannt.jpg&quot; alt=&quot;Unbenannt.jpg&quot;&gt;
  &lt;br&gt;
  &lt;br&gt;ооооооооооооооооооооо
  &lt;br&gt;
  &lt;br&gt;
&lt;/p&gt;
&lt;iframe class=&quot;moze-iframe&quot; src=&quot;https://www.youtube.com/embed/L1rBINlJ8ks?si=r2WVEnIx4jdk54DT&quot; height=&quot;315px&quot; width=&quot;560px&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;&lt;/iframe&gt;</description>
            </item>
                    <item>
                <title>🎹 Віртуальне піаніно</title>
                <link>http://studies.mozellosite.com/1/params/post/5004641/4-novina</link>
                <pubDate>Fri, 30 May 2025 19:16:00 +0000</pubDate>
                <description>гггггггггггггггг&lt;hr class=&quot;moze-more-divider&quot;&gt;&lt;p&gt;Щоб почати грати на піаніно треба натиснути кнопку &quot;почати&quot; і вибрати латиницю в переключателі мов&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;


  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;title&gt;Піаніно з нотами&lt;/title&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/tone@14.7.77/build/Tone.js&quot;&gt;&lt;/script&gt;
  &lt;style&gt;
    body {
      font-family: sans-serif;
      text-align: center;
      padding: 20px;
      background: #f0f0f0;
    }
    #startButton {
      padding: 10px 20px;
      font-size: 18px;
      margin-bottom: 20px;
    }
    .piano {
      position: relative;
      display: inline-block;
    }
    .white-key, .black-key {
      display: inline-block;
      position: relative;
      border: 1px solid black;
      cursor: pointer;
      user-select: none;
      vertical-align: top;
    }
    .white-key {
      width: 60px;
      height: 240px;
      background: white;
      z-index: 1;
    }
    .black-key {
      width: 40px;
      height: 160px;
      background: black;
      position: absolute;
      z-index: 2;
      margin-left: -20px;
    }
    .label {
      position: absolute;
      bottom: 10px;
      width: 100%;
      text-align: center;
      font-size: 14px;
      line-height: 1.2;
      color: white;
      font-weight: bold;
      pointer-events: none;
    }
    .white-key .label {
      color: darkblue;
    }
    .white-key.active {
      background: #cce6ff;
    }
    .black-key.active {
      background: #ffcc00;
      color: black;
    }
  &lt;/style&gt;



  &lt;h1&gt;🎹 Віртуальне піаніно&lt;/h1&gt;
  &lt;button id=&quot;startButton&quot; fdprocessedid=&quot;r8vt5&quot;&gt;▶️ Почати&lt;/button&gt;

  &lt;div class=&quot;piano&quot; id=&quot;piano&quot;&gt;
    &lt;!-- Білі клавіші --&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;C4&quot;&gt;&lt;div class=&quot;label&quot;&gt;A&lt;br&gt;до&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;D4&quot;&gt;&lt;div class=&quot;label&quot;&gt;S&lt;br&gt;ре&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;E4&quot;&gt;&lt;div class=&quot;label&quot;&gt;D&lt;br&gt;мі&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;F4&quot;&gt;&lt;div class=&quot;label&quot;&gt;F&lt;br&gt;фа&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;G4&quot;&gt;&lt;div class=&quot;label&quot;&gt;G&lt;br&gt;соль&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;A4&quot;&gt;&lt;div class=&quot;label&quot;&gt;H&lt;br&gt;ля&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;B4&quot;&gt;&lt;div class=&quot;label&quot;&gt;J&lt;br&gt;сі&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;white-key&quot; data-note=&quot;C5&quot;&gt;&lt;div class=&quot;label&quot;&gt;K&lt;br&gt;до&lt;/div&gt;&lt;/div&gt;

    &lt;!-- Чорні клавіші --&gt;
    &lt;div class=&quot;black-key&quot; style=&quot;left: 45px;&quot; data-note=&quot;C#4&quot;&gt;&lt;div class=&quot;label&quot;&gt;W&lt;br&gt;до♯&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;black-key&quot; style=&quot;left: 105px;&quot; data-note=&quot;D#4&quot;&gt;&lt;div class=&quot;label&quot;&gt;E&lt;br&gt;ре♯&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;black-key&quot; style=&quot;left: 225px;&quot; data-note=&quot;F#4&quot;&gt;&lt;div class=&quot;label&quot;&gt;T&lt;br&gt;фа♯&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;black-key&quot; style=&quot;left: 285px;&quot; data-note=&quot;G#4&quot;&gt;&lt;div class=&quot;label&quot;&gt;Y&lt;br&gt;соль♯&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;black-key&quot; style=&quot;left: 345px;&quot; data-note=&quot;A#4&quot;&gt;&lt;div class=&quot;label&quot;&gt;U&lt;br&gt;ля♯&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;script&gt;
    let synth;
    let готово = false;

    document.getElementById(&#039;startButton&#039;).addEventListener(&#039;click&#039;, async () =&gt; {
      await Tone.start();
      synth = new Tone.Synth().toDestination();
      готово = true;
      document.getElementById(&#039;startButton&#039;).style.display = &#039;none&#039;;
    });

    function загратиНоту(нота, елемент) {
      if (готово &amp;&amp; synth) {
        synth.triggerAttackRelease(нота, &quot;8n&quot;);
        елемент.classList.add(&#039;active&#039;);
        setTimeout(() =&gt; елемент.classList.remove(&#039;active&#039;), 150);
      }
    }

    document.querySelectorAll(&#039;.white-key, .black-key&#039;).forEach((клавіша) =&gt; {
      клавіша.addEventListener(&#039;click&#039;, () =&gt; {
        const нота = клавіша.dataset.note;
        загратиНоту(нота, клавіша);
      });
    });

    // Відповідність клавіш клавіатури до нот
    const клавіші = {
      &#039;a&#039;: &#039;C4&#039;,
      &#039;w&#039;: &#039;C#4&#039;,
      &#039;s&#039;: &#039;D4&#039;,
      &#039;e&#039;: &#039;D#4&#039;,
      &#039;d&#039;: &#039;E4&#039;,
      &#039;f&#039;: &#039;F4&#039;,
      &#039;t&#039;: &#039;F#4&#039;,
      &#039;g&#039;: &#039;G4&#039;,
      &#039;y&#039;: &#039;G#4&#039;,
      &#039;h&#039;: &#039;A4&#039;,
      &#039;u&#039;: &#039;A#4&#039;,
      &#039;j&#039;: &#039;B4&#039;,
      &#039;k&#039;: &#039;C5&#039;
    };

    document.addEventListener(&#039;keydown&#039;, (e) =&gt; {
      const нота = клавіші[e.key.toLowerCase()];
      if (нота) {
        const елемент = document.querySelector(`[data-note=&quot;${нота}&quot;]`);
        if (елемент) {
          загратиНоту(нота, елемент);
        }
      }
    });
  &lt;/script&gt;</description>
            </item>
                    <item>
                <title>Перша новина</title>
                <link>http://studies.mozellosite.com/1/params/post/5004597/persha-novina</link>
                <pubDate>Fri, 30 May 2025 18:45:00 +0000</pubDate>
                <description>&lt;p&gt;Це демо-текст, щоб продемонструвати як буде виглядати повідомлення в блозі. Видаліть цей пост і додайте свої власні повідомлення.&lt;/p&gt;&lt;hr class=&quot;moze-more-divider&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;



  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;title&gt;Віртуальне піаніно&lt;/title&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/tone@14.7.77/build/Tone.js&quot;&gt;&lt;/script&gt;
  &lt;style&gt;
    body {
      font-family: sans-serif;
      text-align: center;
      padding: 40px;
    }
    .key {
      display: inline-block;
      width: 60px;
      height: 200px;
      margin: 2px;
      background: white;
      border: 2px solid black;
      line-height: 200px;
      font-size: 20px;
      cursor: pointer;
      user-select: none;
    }
    .key.active {
      background: lightblue;
    }
  &lt;/style&gt;


  &lt;h1&gt;Віртуальне піаніно 🎹&lt;/h1&gt;
  &lt;div id=&quot;piano&quot;&gt;
    &lt;!-- Клавіші --&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;C4&quot;&gt;A&lt;/div&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;D4&quot;&gt;S&lt;/div&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;E4&quot;&gt;D&lt;/div&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;F4&quot;&gt;F&lt;/div&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;G4&quot;&gt;G&lt;/div&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;A4&quot;&gt;H&lt;/div&gt;
    &lt;div class=&quot;key&quot; data-note=&quot;B4&quot;&gt;J&lt;/div&gt;
  &lt;/div&gt;

  &lt;script&gt;
    // Синтезатор
    const synth = new Tone.Synth().toDestination();

    // Відповідність клавіш клавіатури до нот
    const клавіші = {
      &#039;a&#039;: &#039;C4&#039;,
      &#039;s&#039;: &#039;D4&#039;,
      &#039;d&#039;: &#039;E4&#039;,
      &#039;f&#039;: &#039;F4&#039;,
      &#039;g&#039;: &#039;G4&#039;,
      &#039;h&#039;: &#039;A4&#039;,
      &#039;j&#039;: &#039;B4&#039;
    };

    // Відтворення ноти
    function загратиНоту(нота) {
      synth.triggerAttackRelease(нота, &quot;8n&quot;);
    }

    // Подія натискання клавіші
    document.addEventListener(&#039;keydown&#039;, (e) =&gt; {
      const нота = клавіші[e.key];
      if (нота) {
        загратиНоту(нота);

        // Візуально виділяємо клавішу
        const клавіша = document.querySelector(`.key[data-note=&quot;${нота}&quot;]`);
        if (клавіша) {
          клавіша.classList.add(&#039;active&#039;);
          setTimeout(() =&gt; клавіша.classList.remove(&#039;active&#039;), 100);
        }
      }
    });

    // Натискання мишею по клавіші
    document.querySelectorAll(&#039;.key&#039;).forEach((ел) =&gt; {
      ел.addEventListener(&#039;click&#039;, () =&gt; {
        const нота = ел.dataset.note;
        загратиНоту(нота);
      });
    });
  &lt;/script&gt;</description>
            </item>
            </channel>
</rss>