health: fix broken pages, add image dimensions, a11y & SEO wins

Site-wide health pass (excludes in-progress blog work). Verified with a
local server + headless browser: Timeline, homepage and gallery pages load
with zero console errors and no layout distortion.

Render bugs
- Timeline page (en/mk/si): fix ../../../ paths that overshot the site root,
  so the main stylesheet and hero image load again.
- Meet Student Slovenia 2023 (en/mk/si): remove a <figure> referencing
  event3-photo-11.png, an image that was never uploaded (broken image).

Performance
- Add intrinsic width/height to 1039 raster <img> tags to prevent layout
  shift (CLS); 450 SVGs correctly skipped. Add a global
  `img { max-width:100%; height:auto }` safety net so aspect ratio is
  preserved and images never overflow.
- Preload the homepage hero (LCP) image on en/mk/si.
- Load Font Awesome non-blocking (media=print/onload swap) with a <noscript>
  fallback, on 225 pages.

Accessibility
- Add aria-label to 57 unlabeled newsletter email inputs.
- Add an sr-only <h1> to the three "My Route" pages (had no h1).
- Add an .sr-only utility class.

SEO
- Add meta descriptions to legal/msos-hub/support pages (en/mk/si).

Note: MK/SI meta descriptions are machine-drafted and should be proofread
by a native speaker before considering them final.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
popovskikandClaude Opus 4.8 committed 2026-08-04 00:31:27 +02:00
1 parent 168e4ce378
commit 9ce7450aa1
209 files changed
+1289 -1267

No files matched your search

@@ -56,7 +56,7 @@
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<!-- Font Awesome (for icons) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media=&#39;all&#39;" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
<!-- Правилна патека до главната CSS-датотека -->
<link rel="stylesheet" href="../../../css/main.css">
@@ -201,7 +201,7 @@
</header>
<figure class="article-main-image">
<img fetchpriority="high" src="../../../images/event4-img-1.webp" alt="Група студенти на настанот „Запознај ја студентска Словенија 2024“">
<img width="1920" height="1280" fetchpriority="high" src="../../../images/event4-img-1.webp" alt="Група студенти на настанот „Запознај ја студентска Словенија 2024“">
</figure>
<div class="article-body">
@@ -211,12 +211,12 @@
<p>Нашата цел никогаш не била да правиме „суви презентации“. Наместо тоа, организиравме панел, вистински муабет со четворица студенти кои веќе го живеат словенечкиот студентски живот. Марија Коштревска од Универзитетот во Љубљана, Васил Ханџиски од Универзитетот во Марибор, Софија Матовска од Универзитетот во Нова Горица и Игор Арсов од Универзитетот во Приморска зборуваа за се: првите денови далеку од дома, како е да се најде сместување, што се студентските „бони“ и како изгледа да се гради нов круг на пријатели. Секој сподели нешто свое, а публиката прашуваше и се вклучуваше, баш како муабет на кафе.</p>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Панел дискусија со говорници">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Панел дискусија со говорници">
<figcaption>Фотографија од модераторот и панелистите по следниот редослед: Климентина Чаповска (лево, модератор), Васил Ханџиски, Марија Коштревска, Игор Арсов и Софија Матовска.</figcaption>
</figure>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Марија Коштревска и Софија Матовска го раскажуваат своето студентско искуство во Словенија.">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Марија Коштревска и Софија Матовска го раскажуваат своето студентско искуство во Словенија.">
<figcaption>Марија Коштревска (на горната слика) и Софија Матовска (на долната слика) го раскажуваат своето студентско искуство во Словенија.</figcaption>
</figure>
@@ -224,20 +224,20 @@
<p>Оваа вечер не беше само размена на информации. Беше момент кога идните студенти разбраа дека не се сами во своите грижи и стравови. Секое прашање доби одговор од искуство, секоја дилема беше растопена со пример од реалноста. Многумина заминаа охрабрени со нови пријатели и со чувство дека Словенија веќе не е толку далечна и непозната.</p>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Марко Ивановски, водител на настанот">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Марко Ивановски, водител на настанот">
<figcaption>Марко Ивановски, водител на настанот.</figcaption>
</figure>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Леа Јаначковска, координатор на настанот">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Леа Јаначковска, координатор на настанот">
<figcaption>Леа Јаначковска, координатор на настанот.</figcaption>
</figure>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Марко Арсов, презентер">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Марко Арсов, презентер">
<figcaption>Марко Арсов, презентер.</figcaption>
</figure>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Претставници на Амбасадата, Управниот одбор на НЛБ Банка и Управниот одбор на МСОС.">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Претставници на Амбасадата, Управниот одбор на НЛБ Банка и Управниот одбор на МСОС.">
<figcaption>На долната слика се претставниците на Амбасадата, Управниот одбор на НЛБ Банка и Управниот одбор на МСОС.</figcaption>
</figure>
@@ -245,12 +245,12 @@
<p>„Запознај ја студентска Словенија 2024" немаше да изгледа вака без помошта на нашите партнери и пријатели. Голема благодарност упатуваме до Амбасадата на Република Словенија во Северна Македонија, НЛБ Банка Скопје како покровител и главен спонзор на целиот настан и Капитал Финансиски Центар, кои со својата поддршка овозможија настанот да се реализира на ова високо ниво.</p>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Новопечатени налепници на МСОС">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Новопечатени налепници на МСОС">
<figcaption>Фотографија од новопечатените налепници на МСОС.</figcaption>
</figure>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Врачување цвеќе како благодарност до Амбасадата, Капитал Финансиски центар и НЛБ Банка Скопје">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Врачување цвеќе како благодарност до Амбасадата, Капитал Финансиски центар и НЛБ Банка Скопје">
<figcaption>Фотографија од врачувањето на цвеќиња во знак на благодарност до Амбасадата, Капитал Финансиски центар и НЛБ Банка Скопје.</figcaption>
</figure>
@@ -258,7 +258,7 @@
<p>Овојпат спомените од вечерта ги должиме на Христина Траковска, која беше фотограф и се погрижи сите тие моменти да останат забележани и да можеме повторно да ги проживуваме преку фотографии.</p>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Поздравен говор на Н.Е. амбасадор господинот Грегор Прескер.">
<img width="1920" height="1005" loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Поздравен говор на Н.Е. амбасадор господинот Грегор Прескер.">
<figcaption>Фотографија од поздравниот говор на Н.Е. амбасадор господинот Грегор Прескер.</figcaption>
</figure>
@@ -266,7 +266,7 @@
<p>Затоа што овој настан не беше само уште една презентација. Тој беше рака подадена кон идните студенти, порака дека не се сами, дека веќе постои заедница што ги чека. Некои од нив заминаа со нови пријатели, други со конкретни одговори на прашања што ги мачеле со месеци. Но сите заминаа со исто чувство: дека Словенија повеќе не е непознато место, туку нов дом во кој ќе бидат дел од нешто поголемо.</p>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="Учесниците поставуваат прашања на панелистите">
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="Учесниците поставуваат прашања на панелистите">
<figcaption>Моменти кога учесниците им поставуваат прашања на панелистите!&#128522;✨</figcaption>
</figure>
@@ -274,7 +274,7 @@
<p>Знаеме дека не секој успеа да присуствува во НЛБ Галерија, но затоа овозможивме квалитетен livestream. Настанот беше пренесуван во живо и сега е достапен за повторно гледање. Доколку сакате да ја почувствувате атмосферата и да ги чуете искрените приказни од панелот, можете да го погледнете на овој линк <a href="#">Погледни го видеото тука.</a></p>
<figure class="article-inline-image">
<img loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Постер за настанот „Запознај ја студентска Словенија“">
<img width="1200" height="1600" loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Постер за настанот „Запознај ја студентска Словенија“">
<figcaption>Фотографија од постерот за настанот!</figcaption>
</figure>
@@ -288,25 +288,25 @@
<section class="event-gallery">
<h2 class="event-gallery-title">Фотографии од настанот</h2>
<div class="event-gallery-grid js-lightbox">
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-1.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-1.webp" alt="Запознај ја студентска Словенија 2024, photo 1"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-2.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Запознај ја студентска Словенија 2024, photo 2"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-3.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Запознај ја студентска Словенија 2024, photo 3"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-4.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Запознај ја студентска Словенија 2024, photo 4"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-5.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Запознај ја студентска Словенија 2024, photo 5"><span class="eg-more">+7</span></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-6.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Запознај ја студентска Словенија 2024, photo 6"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-7.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Запознај ја студентска Словенија 2024, photo 7"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-8.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Запознај ја студентска Словенија 2024, photo 8"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-9.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Запознај ја студентска Словенија 2024, photo 9"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-10.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Запознај ја студентска Словенија 2024, photo 10"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-11.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="Запознај ја студентска Словенија 2024, photo 11"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-12.webp" data-caption="Запознај ја студентска Словенија 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Запознај ја студентска Словенија 2024, photo 12"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-1.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-1.webp" alt="Запознај ја студентска Словенија 2024, photo 1"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-2.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Запознај ја студентска Словенија 2024, photo 2"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-3.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Запознај ја студентска Словенија 2024, photo 3"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-4.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Запознај ја студентска Словенија 2024, photo 4"></button>
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-5.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Запознај ја студентска Словенија 2024, photo 5"><span class="eg-more">+7</span></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-6.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Запознај ја студентска Словенија 2024, photo 6"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-7.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Запознај ја студентска Словенија 2024, photo 7"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-8.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Запознај ја студентска Словенија 2024, photo 8"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-9.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Запознај ја студентска Словенија 2024, photo 9"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-10.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1005" loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Запознај ја студентска Словенија 2024, photo 10"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-11.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="Запознај ја студентска Словенија 2024, photo 11"></button>
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-12.webp" data-caption="Запознај ја студентска Словенија 2024"><img width="1200" height="1600" loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Запознај ја студентска Словенија 2024, photo 12"></button>
</div>
</section>
<footer class="article-footer">
<hr>
<div class="author-share-section">
<div class="author-details">
<img loading="lazy" decoding="async" src="../../../images/11-boy.webp" alt="Аватар на Кристијан Поповски">
<img width="1280" height="1920" loading="lazy" decoding="async" src="../../../images/11-boy.webp" alt="Аватар на Кристијан Поповски">
<div class="author-text">
<p class="author-name">Кристијан Поповски</p>
<p class="author-title">Претседател и основач</p>
@@ -329,7 +329,7 @@
<p>Вести, соопштенија и отворени повици, директно во вашето сандаче.</p>
<form class="subscribe-form-bottom">
<div class="input-wrapper">
<input type="email" placeholder="Внесете ја вашата е-пошта">
<input type="email" placeholder="Внесете ја вашата е-пошта" aria-label="Е-пошта">
</div>
<button type="submit" class="btn btn-primary-orange">Претплати се</button>
</form>