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:
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='all'" /><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>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
@@ -229,7 +229,7 @@
|
||||
</header>
|
||||
|
||||
<figure class="article-main-image">
|
||||
<img fetchpriority="high" src="../../../images/msnl-1.webp" alt="Atmosphere from the Macedonian Student Night in Ljubljana">
|
||||
<img width="1430" height="757" fetchpriority="high" src="../../../images/msnl-1.webp" alt="Atmosphere from the Macedonian Student Night in Ljubljana">
|
||||
</figure>
|
||||
|
||||
<div class="article-body">
|
||||
@@ -239,7 +239,7 @@
|
||||
<p>It all began with a simple wish, to gather, get to know each other, and feel Macedonia, even though we were far from it. Kristijan Popovski, then a student at the School of Economics and Business in Ljubljana, shared his idea with a few colleagues, and the response was incredible. In less than two weeks, over 40 students joined the organizing team. Everyone contributed their enthusiasm and time, and the shared spirit and desire to connect turned this spontaneous initiative into an event we would remember for a long time.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/msnl-2.webp" alt="Preparations and meetings for the Macedonian Student Night">
|
||||
<img width="936" height="422" loading="lazy" decoding="async" src="../../../images/msnl-2.webp" alt="Preparations and meetings for the Macedonian Student Night">
|
||||
<figcaption>Photos from the preparations and meetings for organizing the Macedonian Student Night.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
<p>A week before the event, we posted interesting facts about Macedonia every day, its national treasures, music, and culture. Slowly but surely, we built the atmosphere and excitement, not only among Macedonian students but also among many others who wanted to feel our energy.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/msnl-3.webp" alt="Poster where Slovenians learn the Macedonian alphabet">
|
||||
<img width="1087" height="586" loading="lazy" decoding="async" src="../../../images/msnl-3.webp" alt="Poster where Slovenians learn the Macedonian alphabet">
|
||||
<figcaption>Poster with Cyrillic and Latin letters. Slovenians are learning the Macedonian alphabet, while Macedonians are teaching them.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -260,14 +260,14 @@
|
||||
<p>The party started at 8:00 PM and was designed in two parts. The first part was a real gastronomic and cultural journey through Macedonia. Students could try bread with ajvar and white cheese, Macedonian wine, tasty snacks, and traditional drinks. The tables were also filled with other authentic products that reminded everyone of home. All these flavors and aromas were made possible thanks to the support of the Macedonian products store <strong>“Makedonija Trade,”</strong> which selflessly contributed to making this part of the evening truly enjoyable.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/msnl-4.webp" alt="Stands with Macedonian symbols, food, and drinks">
|
||||
<img width="1430" height="641" loading="lazy" decoding="async" src="../../../images/msnl-4.webp" alt="Stands with Macedonian symbols, food, and drinks">
|
||||
<figcaption>Photos of the stands with Macedonian symbols, traditional food, and drinks.</figcaption>
|
||||
</figure>
|
||||
|
||||
<p>In addition to the food, visitors could explore interesting facts about the country, photos of famous Macedonian figures and cultural landmarks, and see traditional costumes and a <strong>gaida</strong> up close. The atmosphere was warm and full of curiosity, like a small exhibition within a large student party.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/msnl-5.webp" alt="Mini quiz about Macedonia">
|
||||
<img width="1194" height="565" loading="lazy" decoding="async" src="../../../images/msnl-5.webp" alt="Mini quiz about Macedonia">
|
||||
<figcaption>Mini quiz with questions about Macedonia, where students in one part of the club are competing.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
<p>The evening was enriched by the presence of important guests from the Macedonian community in Slovenia. <strong>The President of the Union of Macedonian Cultural Associations in Slovenia, Mr. Blagoja Nasteski</strong>, joined the event, confirming the importance of such initiatives for preserving the Macedonian spirit and tradition in the diaspora.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/msnl-6.webp" alt="Kristijan and Bisera with Ambassador Zelenkovska and Mr. Nasteski">
|
||||
<img width="856" height="452" loading="lazy" decoding="async" src="../../../images/msnl-6.webp" alt="Kristijan and Bisera with Ambassador Zelenkovska and Mr. Nasteski">
|
||||
<figcaption>Kristijan and Bisera together with Ambassador Zelenkovska and the President of the Union of Macedonian Associations, Mr. Nasteski</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
<p>This night laid the foundation for the Macedonian Student Organization in Slovenia and showed us that with enthusiasm, unity, and a bit of courage, it's possible to create something that brings people together and gives them a sense of home, even when they are far away from it.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/msnl-7.webp" alt="The dedicated team of volunteers after cleaning up the venue">
|
||||
<img width="1430" height="592" loading="lazy" decoding="async" src="../../../images/msnl-7.webp" alt="The dedicated team of volunteers after cleaning up the venue">
|
||||
<figcaption>Photo taken at 4:00 a.m., after finishing and cleaning up the venue together with the dedicated team of volunteers</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
@@ -301,20 +301,20 @@
|
||||
<section class="event-gallery">
|
||||
<h2 class="event-gallery-title">Photos from the event</h2>
|
||||
<div class="event-gallery-grid js-lightbox">
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-1.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-1.webp" alt="Macedonian Student Night in Ljubljana, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-2.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-2.webp" alt="Macedonian Student Night in Ljubljana, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-3.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-3.webp" alt="Macedonian Student Night in Ljubljana, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-4.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-4.webp" alt="Macedonian Student Night in Ljubljana, photo 4"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-5.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-5.webp" alt="Macedonian Student Night in Ljubljana, photo 5"><span class="eg-more">+2</span></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/msnl-6.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-6.webp" alt="Macedonian Student Night in Ljubljana, photo 6"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/msnl-7.webp" data-caption="Macedonian Student Night in Ljubljana"><img loading="lazy" decoding="async" src="../../../images/msnl-7.webp" alt="Macedonian Student Night in Ljubljana, photo 7"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-1.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="1430" height="757" loading="lazy" decoding="async" src="../../../images/msnl-1.webp" alt="Macedonian Student Night in Ljubljana, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-2.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="936" height="422" loading="lazy" decoding="async" src="../../../images/msnl-2.webp" alt="Macedonian Student Night in Ljubljana, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-3.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="1087" height="586" loading="lazy" decoding="async" src="../../../images/msnl-3.webp" alt="Macedonian Student Night in Ljubljana, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-4.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="1430" height="641" loading="lazy" decoding="async" src="../../../images/msnl-4.webp" alt="Macedonian Student Night in Ljubljana, photo 4"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/msnl-5.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="1194" height="565" loading="lazy" decoding="async" src="../../../images/msnl-5.webp" alt="Macedonian Student Night in Ljubljana, photo 5"><span class="eg-more">+2</span></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/msnl-6.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="856" height="452" loading="lazy" decoding="async" src="../../../images/msnl-6.webp" alt="Macedonian Student Night in Ljubljana, photo 6"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/msnl-7.webp" data-caption="Macedonian Student Night in Ljubljana"><img width="1430" height="592" loading="lazy" decoding="async" src="../../../images/msnl-7.webp" alt="Macedonian Student Night in Ljubljana, photo 7"></button>
|
||||
</div>
|
||||
</section>
|
||||
<footer class="article-footer">
|
||||
<hr>
|
||||
<div class="author-share-section">
|
||||
<div class="author-details">
|
||||
<img loading="lazy" decoding="async" src="../../../images/about_kristijan_min.webp" alt="Avatar of Kristijan Popovski">
|
||||
<img width="1083" height="1083" loading="lazy" decoding="async" src="../../../images/about_kristijan_min.webp" alt="Avatar of Kristijan Popovski">
|
||||
<div class="author-text">
|
||||
<p class="author-name">Kristijan Popovski</p>
|
||||
<p class="author-title">President and Founder</p>
|
||||
@@ -338,7 +338,7 @@
|
||||
<p>News, announcements and open calls, straight to your inbox.</p>
|
||||
<form class="subscribe-form-bottom">
|
||||
<div class="input-wrapper">
|
||||
<input type="email" placeholder="Enter your email">
|
||||
<input type="email" placeholder="Enter your email" aria-label="Email address">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary-orange">Subscribe</button>
|
||||
</form>
|
||||
|
||||
Reference in new issue
Block a user