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">
|
||||
@@ -231,7 +231,7 @@
|
||||
</header>
|
||||
|
||||
<figure class="article-main-image">
|
||||
<img fetchpriority="high" src="../../../images/event4-img-1.webp" alt="A group of students at the 'Meet Student Slovenia 2024' event">
|
||||
<img width="1920" height="1280" fetchpriority="high" src="../../../images/event4-img-1.webp" alt="A group of students at the 'Meet Student Slovenia 2024' event">
|
||||
</figure>
|
||||
|
||||
<div class="article-body">
|
||||
@@ -241,12 +241,12 @@
|
||||
<p>Our goal was never to create "dry presentations." Instead, we organized a panel, a real conversation with four students who are already living the Slovenian student life. Marija Koštrevska from the University of Ljubljana, Vasil Hanџiski from the University of Maribor, Sofija Matovska from the University of Nova Gorica, and Igor Arsov from the University of Primorska spoke about everything: the first days away from home, how to find accommodation, what student "boni" (subsidized meals) are, and what it's like to build a new circle of friends. Everyone shared something of their own, and the audience asked questions and participated, just like a coffee chat.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Panel discussion with speakers">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Panel discussion with speakers">
|
||||
<figcaption>Photograph of the moderator and panelists in the following order: Klimentina Čapovska (left, moderator), Vasil Hanџiski, Marija Koštrevska, Igor Arsov, and Sofija Matovska.</figcaption>
|
||||
</figure>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Marija Koštrevska and Sofija Matovska sharing their student experiences in Slovenia.">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Marija Koštrevska and Sofija Matovska sharing their student experiences in Slovenia.">
|
||||
<figcaption>Marija Koštrevska (in the upper picture) and Sofija Matovska (in the lower picture) are recounting their student experiences in Slovenia.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -254,11 +254,11 @@
|
||||
<p>This evening was not just an exchange of information. It was a moment when future students understood that they are not alone in their worries and fears. Every question received an answer from experience, every dilemma was resolved with a real-life example. Many left encouraged, with new friends, and with the feeling that Slovenia is no longer so distant and unknown.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Event host, coordinator, presenter, and representatives of the Embassy and partners.">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Event host, coordinator, presenter, and representatives of the Embassy and partners.">
|
||||
<figcaption>In the photos: Marko Ivanovski, event host (top-left), Lea Janačkovska, coordinator (top-center), Marko Arsov, presenter (top-right). The bottom picture shows representatives of the Embassy, the Management Board of NLB Bank, and the Management Board of MSOS.</figcaption>
|
||||
</figure>
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Beautiful moments captured by the photographer.">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Beautiful moments captured by the photographer.">
|
||||
<figcaption>Beautiful moments of future and current students captured by the best photographer, Hristina Trajkovska.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -266,12 +266,12 @@
|
||||
<p>"Meet Student Slovenia 2024" would not have looked this way without the help of our partners and friends. We extend great gratitude to the Embassy of the Republic of Slovenia in North Macedonia, NLB Bank Skopje as the patron and main sponsor of the entire event, and Capital Financial Center, who with their support made it possible for the event to be realized at this high level.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Newly printed MSOS stickers">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Newly printed MSOS stickers">
|
||||
<figcaption>Photograph of the newly printed MSOS stickers.</figcaption>
|
||||
</figure>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Handing over flowers as a thank you to the Embassy, Capital Financial Center and NLB Bank Skopje">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Handing over flowers as a thank you to the Embassy, Capital Financial Center and NLB Bank Skopje">
|
||||
<figcaption>Photograph from the handing over of flowers as a sign of gratitude to the Embassy, Capital Financial Center, and NLB Bank Skopje.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
<p>This time, the memories of the evening are thanks to Hristina Trakovska, who was the photographer and made sure all those moments were captured so we can relive them again through photographs.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Welcome speech by H.E. Ambassador Mr. Gregor Presker.">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Welcome speech by H.E. Ambassador Mr. Gregor Presker.">
|
||||
<figcaption>Photograph of the welcome speech by H.E. Ambassador Mr. Gregor Presker.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
<p>Because this event was not just another presentation. It was a hand extended to future students, a message that they are not alone, that a community is already waiting for them. Some left with new friends, others with concrete answers to questions that had bothered them for months. But everyone left with the same feeling: that Slovenia is no longer an unknown place, but a new home where they will be part of something bigger.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Attendees asking questions to the panelists">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Attendees asking questions to the panelists">
|
||||
<figcaption>Moments when the participants ask questions to the panelists! 😌✨</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
</div>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Poster for the 'Meet Student Slovenia' event">
|
||||
<img width="1920" height="1005" loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Poster for the 'Meet Student Slovenia' event">
|
||||
<figcaption>Photograph of the event poster!</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -309,11 +309,11 @@
|
||||
<p>P.S. Every year after a successfully organized event, the MSOS team traditionally heads to the nearest tavern, for an evening full of socializing, singing, and emotions! 😊 That's why it's worth being part of our team! Join us.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="The team behind the event.">
|
||||
<img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="The team behind the event.">
|
||||
<figcaption>Photograph of the team behind the event! This year we arranged a team photo in advance because last year we forgot to take one together! 🫣</figcaption>
|
||||
</figure>
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Team dinner after the event.">
|
||||
<img width="1200" height="1600" loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Team dinner after the event.">
|
||||
<figcaption>Photograph from the team dinner after a successfully completed event!</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -322,18 +322,18 @@
|
||||
<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/event4-img-1.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-1.webp" alt="Meet Student Slovenia 2024, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-2.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Meet Student Slovenia 2024, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-3.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Meet Student Slovenia 2024, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-4.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Meet Student Slovenia 2024, photo 4"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-5.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Meet Student Slovenia 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="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Meet Student Slovenia 2024, photo 6"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-7.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Meet Student Slovenia 2024, photo 7"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-8.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Meet Student Slovenia 2024, photo 8"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-9.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Meet Student Slovenia 2024, photo 9"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-10.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Meet Student Slovenia 2024, photo 10"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-11.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="Meet Student Slovenia 2024, photo 11"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-12.webp" data-caption="Meet Student Slovenia 2024"><img loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Meet Student Slovenia 2024, photo 12"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-1.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-1.webp" alt="Meet Student Slovenia 2024, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-2.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-2.webp" alt="Meet Student Slovenia 2024, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-3.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-3.webp" alt="Meet Student Slovenia 2024, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-4.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-4.webp" alt="Meet Student Slovenia 2024, photo 4"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/event4-img-5.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-5.webp" alt="Meet Student Slovenia 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="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-6.webp" alt="Meet Student Slovenia 2024, photo 6"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-7.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-7.webp" alt="Meet Student Slovenia 2024, photo 7"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-8.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-8.webp" alt="Meet Student Slovenia 2024, photo 8"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-9.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-9.webp" alt="Meet Student Slovenia 2024, photo 9"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-10.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1005" loading="lazy" decoding="async" src="../../../images/event4-img-10.webp" alt="Meet Student Slovenia 2024, photo 10"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-11.webp" data-caption="Meet Student Slovenia 2024"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../../images/event4-img-11.webp" alt="Meet Student Slovenia 2024, photo 11"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/event4-img-12.webp" data-caption="Meet Student Slovenia 2024"><img width="1200" height="1600" loading="lazy" decoding="async" src="../../../images/event4-img-12.webp" alt="Meet Student Slovenia 2024, photo 12"></button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -341,7 +341,7 @@
|
||||
<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>
|
||||
@@ -365,7 +365,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