header.wp-block-template-part,
footer.wp-block-template-part,
.wp-block-post-title,
.wp-block-spacer,
.entry-header,
.site-header,
.site-footer,
#masthead,
#colophon,
.ast-breadcrumbs-wrapper,
.wp-block-navigation {
display: none !important;
}
html, body {
margin: 0 !important;
padding: 0 !important;
width: 100% !important;
max-width: 100% !important;
overflow-x: hidden !important;
background-color: #f0f2f5 !important;
font-family: ‘Inter’, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif !important;
color: #050505 !important;
}
.wp-site-blocks,
.wp-block-post-content,
.entry-content,
.is-layout-constrained,
.is-layout-flow,
.wp-block-group,
main,
#wp–skip-link–target,
.entry-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
.ast-container,
#primary,
#content,
.site-content {
padding: 0 !important;
margin: 0 !important;
max-width: 100% !important;
width: 100% !important;
}
h1, h2, h3, h4, h5, h6 {
font-family: ‘Manrope’, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif !important;
letter-spacing: -0.01em !important;
}
:root {
–fb-blue: #1877f2;
–fb-blue-hover: #166fe5;
–fb-bg: #f0f2f5;
–fb-card: #ffffff;
–fb-text-primary: #050505;
–fb-text-secondary: #65676b;
–fb-border: #cbd5e1;
–fb-hover: #f2f2f2;
–fb-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.mm-fb-wrapper {
background-color: var(–fb-bg);
min-height: 100vh;
display: flex;
flex-direction: column;
}
.mm-fb-topbar {
position: sticky;
top: 0;
z-index: 1000;
height: 56px;
background: var(–fb-card);
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 16px;
box-sizing: border-box;
}
.mm-fb-top-left { display: flex; align-items: center; }
.mm-fb-top-brand-box {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-decoration: none;
width: 260px;
}
.mm-logo-row { display: flex; align-items: center; justify-content: center; gap: 4px; }
.mm-logo-moe {
font-family: ‘PT Serif’, Georgia, serif;
font-size: 20px;
font-weight: 700;
color: #1877f2;
letter-spacing: 0.04em;
text-transform: uppercase;
line-height: 1.1;
}
.mm-logo-misto {
font-family: ‘PT Serif’, Georgia, serif;
font-size: 19px;
font-weight: 700;
color: #0f172a;
letter-spacing: 0.04em;
text-transform: uppercase;
border: 1.5px solid #0f172a;
padding: 0 5px;
border-radius: 2px;
line-height: 1.1;
display: inline-block;
}
.mm-logo-sub-tag {
font-size: 9.5px;
font-weight: 700;
color: #65676b;
letter-spacing: 0.08em;
text-transform: uppercase;
margin-top: 2px;
text-align: center;
font-family: ‘Inter’, sans-serif;
display: block;
}
.mm-fb-top-center { display: flex; align-items: center; gap: 6px; height: 100%; }
.mm-fb-tab-item {
display: flex;
align-items: center;
justify-content: center;
padding: 0 16px;
height: 100%;
color: var(–fb-text-secondary);
text-decoration: none;
font-size: 14.5px;
font-weight: 700;
border-bottom: 3px solid transparent;
transition: all 0.15s ease;
}
.mm-fb-tab-item:hover { background-color: var(–fb-hover); color: var(–fb-text-primary); }
.mm-fb-tab-item.active { color: var(–fb-blue); border-bottom: 3px solid var(–fb-blue); }
.mm-fb-top-right { display: flex; align-items: center; gap: 8px; }
.mm-fb-action-btn {
display: inline-flex;
align-items: center;
gap: 6px;
height: 36px;
padding: 0 12px;
border-radius: 6px;
font-size: 13px;
font-weight: 700;
text-decoration: none;
}
.mm-fb-container {
max-width: 1360px;
width: 100%;
margin: 16px auto;
padding: 0 16px;
display: grid;
grid-template-columns: 280px 1fr 300px;
gap: 16px;
align-items: start;
box-sizing: border-box;
}
.mm-fb-sidebar-left {
display: flex;
flex-direction: column;
gap: 12px;
position: sticky;
top: 72px;
}
.mm-fb-main {
display: flex;
flex-direction: column;
gap: 16px;
min-width: 0;
}
.mm-fb-sidebar-right {
display: flex;
flex-direction: column;
gap: 12px;
position: sticky;
top: 72px;
}
.mm-fb-card {
background: var(–fb-card);
border-radius: 8px;
box-shadow: var(–fb-shadow);
border: 1px solid var(–fb-border);
box-sizing: border-box;
}
@media (max-width: 1200px) and (min-width: 981px) {
.mm-fb-container {
grid-template-columns: 250px 1fr 270px;
gap: 12px;
padding: 0 10px;
}
}
@media (max-width: 980px) {
.mm-fb-topbar {
height: 52px !important;
padding: 0 10px !important;
gap: 6px !important;
}
.mm-fb-top-left {
flex-shrink: 0 !important;
}
.mm-fb-top-brand-box {
width: auto !important;
align-items: flex-start !important;
}
.mm-logo-moe {
font-size: 16px !important;
}
.mm-logo-misto {
font-size: 15px !important;
padding: 0 3px !important;
}
.mm-logo-sub-tag {
display: none !important;
}
.mm-fb-top-center {
gap: 4px !important;
flex-shrink: 0 !important;
margin: 0 auto !important;
display: flex !important;
}
.mm-fb-tab-item {
padding: 0 12px !important;
font-size: 14px !important;
display: flex !important;
align-items: center !important;
}
.mm-fb-top-right {
gap: 4px !important;
flex-shrink: 0 !important;
}
.mm-fb-action-btn {
height: 30px !important;
padding: 0 8px !important;
font-size: 11.5px !important;
}
.mm-fb-action-btn:last-child {
display: none !important;
}
.mm-fb-container {
display: flex !important;
flex-direction: column !important;
padding: 0 10px !important;
margin: 10px auto !important;
gap: 12px !important;
}
.mm-fb-sidebar-left, .mm-fb-sidebar-right {
width: 100% !important;
position: static !important;
display: flex !important;
}
}
@media (max-width: 480px) {
.mm-fb-topbar {
padding: 0 6px !important;
}
.mm-fb-tab-item {
padding: 0 8px !important;
font-size: 13px !important;
}
.mm-fb-action-btn {
padding: 0 6px !important;
font-size: 11px !important;
}
}
@media (min-width: 821px) {
#mm-daily-extended-details > summary {
display: none !important;
}
#mm-daily-extended-details > div {
border-top: none !important;
}
}
МОЄ МІСТО — інформаційний портал міста Глобине
💡 Маєте новину чи пропозицію для громади?
Написати ▾
function submitFeedback_mm_fb() {
var msgEl = document.getElementById(‘mm-fb-msg’);
var contactEl = document.getElementById(‘mm-fb-contact’);
var btn = document.getElementById(‘mm-fb-btn’);
var msg = msgEl ? msgEl.value.trim() : ”;
var contact = contactEl ? contactEl.value.trim() : ”;
if (!msg) {
alert(‘Будь ласка, напишіть текст повідомлення.’);
if (msgEl) msgEl.focus();
return;
}
btn.disabled = true;
btn.textContent = ‘Надсилаємо…’;
fetch(‘/wp-json/mm/v1/submit-feedback’, {
method: ‘POST’,
headers: { ‘Content-Type’: ‘application/json’ },
body: JSON.stringify({ message: msg, contact: contact, page: ‘Головна сторінка’ })
})
.then(function(res) { return res.json(); })
.then(function(data) {
btn.disabled = false;
btn.textContent = ‘Надіслати’;
if (msgEl) msgEl.value = ”;
if (contactEl) contactEl.value = ”;
var box = document.getElementById(‘mm-quick-feedback-box’);
if (box) box.style.display = ‘none’;
alert(‘✅ Дякуємо! Ваше повідомлення успішно надіслано.’);
})
.catch(function(err) {
btn.disabled = false;
btn.textContent = ‘Надіслати’;
alert(‘Повідомлення надіслано. Дякуємо!’);
});
}
🇺🇦 Важливо
Підтримка Сил Оборони — справа щодня
🤝 Армія тримає фронт. Тил тримає армію. Кожен внесок — це наближення нашої перемоги.
Знайдіть свій спосіб допомогти через перевірені благодійні фонди та офіційні рахунки Збройних Сил.
⚔️
Як захищалася Україна
ДЕНЬ …
🗓 Завантаження… • Щоденний оперативний аналіз
Всі дні ➔
(function () {
function decodeHtml(html) {
var txt = document.createElement(‘textarea’);
txt.innerHTML = html || ”;
return txt.value;
}
function cleanExcerpt(raw) {
if (!raw) return ”;
var decoded = decodeHtml(raw);
var div = document.createElement(‘div’);
div.innerHTML = decoded;
var text = (div.textContent || div.innerText || ”).replace(/s+/g, ‘ ‘).trim();
if (text.length > 220) {
text = text.substring(0, 217).replace(/s+S*$/, ”) + ‘…’;
}
return text;
}
function extractDay(title, slug) {
var m = (title || ”).match(/[Дд]еньs*(d+)/i) ||
(slug || ”).match(/den[-_]?(d+)/i) ||
(slug || ”).match(/(d{3,4})/);
return m ? parseInt(m[1], 10) : null;
}
function formatUaDate(iso) {
try {
var d = new Date(iso);
return d.toLocaleDateString(‘uk-UA’, {
day: ‘numeric’,
month: ‘long’,
year: ‘numeric’
});
} catch (e) {
return ”;
}
}
function txt(id, v) {
var el = document.getElementById(id);
if (el && v != null) el.textContent = v;
}
function href(id, v) {
var el = document.getElementById(id);
if (el && v) {
el.setAttribute(‘href’, v);
el.setAttribute(‘target’, ‘_blank’);
el.setAttribute(‘rel’, ‘noopener’);
}
}
function apply(post) {
if (!post) return;
var title = decodeHtml(post.title && post.title.rendered ? post.title.rendered : ”);
var day = extractDay(title, post.slug);
var dateStr = formatUaDate(post.date);
var excerpt = cleanExcerpt(post.excerpt && post.excerpt.rendered ? post.excerpt.rendered : ”);
var url = post.link || ‘/war-chronicle/’;
var media = post._embedded && post._embedded[‘wp:featuredmedia’] && post._embedded[‘wp:featuredmedia’][0];
var img = document.getElementById(‘mm-home-img’);
if (img) {
if (media && media.source_url) {
img.src = media.source_url + (media.source_url.indexOf(‘?’) !== -1 ? ‘&’ : ‘?’) + ‘v=’ + Date.now();
}
img.alt = title || ‘Хроніка війни’;
}
if (day) {
txt(‘mm-home-day-badge’, ‘ДЕНЬ ‘ + day);
txt(‘mm-home-prev’, ‘← День ‘ + (day – 1));
var prevUrl = url.replace(/den[-_]?(d+)/i, function (m, n) {
return m.replace(n, String(parseInt(n, 10) – 1));
}).replace(/(d{3,4})(?!.*d)/, function (m) {
return String(parseInt(m, 10) – 1);
});
if (prevUrl === url) prevUrl = ‘/war-chronicle/?day=’ + (day – 1);
href(‘mm-home-prev’, prevUrl);
var ar = document.getElementById(‘mm-home-archive’);
if (ar) ar.textContent = ‘Архів хроніки (‘ + day + ‘ днів)’;
}
if (dateStr) {
txt(‘mm-home-date-str’, ‘🗓 ‘ + dateStr + ‘ • Щоденний оперативний аналіз’);
}
if (excerpt) {
txt(‘mm-home-excerpt’, excerpt);
}
href(‘mm-home-img-link’, url);
href(‘mm-home-read-link’, url);
href(‘mm-home-archive’, ‘/war-chronicle/’);
}
function load() {
fetch(‘/wp-json/wp/v2/posts?categories=3&per_page=1&orderby=date&order=desc&_embed=1&_t=’ + Date.now(), {
cache: ‘no-store’
})
.then(function (r) {
if (!r.ok) throw new Error(‘HTTP ‘ + r.status);
return r.json();
})
.then(function (posts) {
if (posts && posts.length) {
apply(posts[0]);
}
})
.catch(function (err) {
console.warn(‘War chronicle load error:’, err);
txt(‘mm-home-day-badge’, ‘ДЕНЬ 1640’);
txt(‘mm-home-date-str’, ‘🗓 22 серпня 2026 • Щоденний оперативний аналіз’);
txt(‘mm-home-excerpt’, ‘Протягом минулої доби Сили оборони знешкодили штурмові групи окупантів на Покровському, Торецькому та інших напрямках, завдали нищівних ударів по пунктах управління та скупченнях живої сили ворога…’);
href(‘mm-home-read-link’, ‘/2026/08/22/yak-zahyshhalasya-ukrayina-den-1640/’);
href(‘mm-home-img-link’, ‘/2026/08/22/yak-zahyshhalasya-ukrayina-den-1640/’);
href(‘mm-home-prev’, ‘/2026/08/21/yak-zahyshhalasya-ukrayina-den-1639/’);
var ar = document.getElementById(‘mm-home-archive’);
if (ar) ar.textContent = ‘Архів хроніки (1640 днів)’;
});
}
load();
function kyivNow() {
try {
return new Date(new Date().toLocaleString(‘en-US’, { timeZone: ‘Europe/Kyiv’ }));
} catch (e) {
return new Date();
}
}
setInterval(function () {
var now = kyivNow();
if (now.getHours() >= 8 && now.getMinutes() % 10 === 0) {
load();
}
}, 60000);
})();
📰
Стрічка новин громади
Громада та місто
Показати ще публікації ▼
⏳
(function () {
var list = document.getElementById(‘mm-news-feed-list’);
var button = document.getElementById(‘mm-load-more-btn’);
var text = document.getElementById(‘mm-load-more-text’);
var spinner = document.getElementById(‘mm-load-more-spinner’);
if (!list || !button) return;
var page = 1;
var totalPages = 1;
var loading = false;
function clean(value) {
var el = document.createElement(‘div’);
el.innerHTML = value || ”;
return el.textContent || ”;
}
function createCard(post) {
var article = document.createElement(‘article’);
article.className = ‘mm-fb-card’;
article.style.cssText = ‘padding:14px 16px;background:#fff;’;
var link = post.link;
var title = clean(post.title.rendered);
var excerpt = clean(post.excerpt.rendered);
var date = new Date(post.date).toLocaleDateString(‘uk-UA’, {
day: ‘numeric’,
month: ‘long’,
year: ‘numeric’
});
var media = post._embedded &&
post._embedded[‘wp:featuredmedia’] &&
post._embedded[‘wp:featuredmedia’][0];
var imageBox = document.createElement(‘div’);
imageBox.style.cssText =
‘flex:0 0 110px;width:110px;height:85px;border-radius:6px;overflow:hidden;background:#f1f5f9;border:1px solid #e2e8f0;’;
// ФІКС: fallback на inline-зображення з post.content.rendered, якщо немає featured_media.
// Давні публікації (до 22.08.2026) не мають featured_media, але мають inline-зображення.
var imgUrl = (media && media.source_url) ? media.source_url : ”;
if (!imgUrl && post.content && post.content.rendered) {
var m = post.content.rendered.match(/
]+src=[“‘]([^”‘]+)[“‘]/i);
if (m) imgUrl = m[1];
}
// ФІКС: fallback на _mm_image_url meta (інфографіки в archive_images/) —
// для публікацій без featured_media і без inline-зображень.
if (!imgUrl && post.meta && post.meta._mm_image_url) {
imgUrl = post.meta._mm_image_url;
}
if (imgUrl) {
var image = document.createElement(‘img’);
image.src = imgUrl;
image.alt = title;
image.style.cssText = ‘width:100%;height:100%;object-fit:cover;display:block;’;
imageBox.appendChild(image);
} else {
imageBox.style.display = ‘flex’;
imageBox.style.alignItems = ‘center’;
imageBox.style.justifyContent = ‘center’;
imageBox.textContent = ‘Новина’;
}
var imageLink = document.createElement(‘a’);
imageLink.href = link;
imageLink.style.textDecoration = ‘none’;
imageLink.appendChild(imageBox);
var content = document.createElement(‘div’);
content.style.cssText = ‘flex:1 1 0;min-width:0;’;
var meta = document.createElement(‘div’);
meta.style.cssText =
‘display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;flex-wrap:wrap;gap:4px;’;
var category = document.createElement(‘span’);
category.textContent = ‘Міський архів’;
category.style.cssText =
‘font-size:11px;font-weight:700;color:#1877f2;background:#f0f7ff;padding:1px 6px;border-radius:4px;border:1px solid #dbeafe;’;
var dateEl = document.createElement(‘span’);
dateEl.textContent = date;
dateEl.style.cssText = ‘font-size:11.5px;color:#64748b;’;
meta.appendChild(category);
meta.appendChild(dateEl);
var heading = document.createElement(‘h3’);
heading.style.cssText =
‘font-family:Manrope,sans-serif;font-size:15.5px;font-weight:800;line-height:1.35;margin:0 0 6px;’;
var titleLink = document.createElement(‘a’);
titleLink.href = link;
titleLink.textContent = title;
titleLink.style.cssText = ‘color:#0f172a;text-decoration:none;’;
heading.appendChild(titleLink);
var paragraph = document.createElement(‘p’);
paragraph.textContent = excerpt;
paragraph.style.cssText =
‘font-size:13px;color:#334155;line-height:1.45;margin:0 0 8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;’;
var readLink = document.createElement(‘a’);
readLink.href = link;
readLink.textContent = ‘Читати повністю’;
readLink.style.cssText =
‘font-size:12.5px;font-weight:700;color:#1877f2;text-decoration:none;’;
content.appendChild(meta);
content.appendChild(heading);
content.appendChild(paragraph);
content.appendChild(readLink);
var row = document.createElement(‘div’);
row.style.cssText = ‘display:flex;gap:14px;align-items:flex-start;’;
row.appendChild(imageLink);
row.appendChild(content);
article.appendChild(row);
return article;
}
function setLoading(value) {
loading = value;
button.disabled = value;
text.textContent = value ? ‘Завантаження…’ : ‘Показати ще публікації’;
spinner.style.display = value ? ‘inline’ : ‘none’;
}
function loadPosts() {
if (loading || page > totalPages) return;
setLoading(true);
fetch(‘/wp-json/wp/v2/categories?slug=miskyj-arhiv’)
.then(function (response) {
if (!response.ok) throw new Error(‘Категорію не знайдено’);
return response.json();
})
.then(function (categories) {
if (!categories.length) throw new Error(‘Категорія порожня’);
return fetch(
‘/wp-json/wp/v2/posts?categories=’ +
categories[0].id +
‘&per_page=6&page=’ +
page +
‘&_embed=1’
);
})
.then(function (response) {
if (!response.ok && response.status !== 400) {
throw new Error(‘Не вдалося завантажити публікації’);
}
totalPages = parseInt(
response.headers.get(‘X-WP-TotalPages’) || ‘1’,
10
);
return response.json();
})
.then(function (posts) {
posts.forEach(function (post) {
list.appendChild(createCard(post));
});
page += 1;
if (page > totalPages || !posts.length) {
button.style.display = ‘none’;
}
})
.catch(function () {
if (!list.children.length) {
list.textContent = ‘Не вдалося завантажити публікації.’;
}
})
.finally(function () {
setLoading(false);
});
}
button.addEventListener(‘click’, loadPosts);
loadPosts();
})();