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">
|
||||
@@ -201,14 +201,14 @@
|
||||
</header>
|
||||
|
||||
<figure class="article-main-image">
|
||||
<img fetchpriority="high" src="../../../images/handball-2025-1.webp" alt="Fan atmosphere while watching handball in Maribor">
|
||||
<img width="720" height="480" fetchpriority="high" src="../../../images/handball-2025-1.webp" alt="Fan atmosphere while watching handball in Maribor">
|
||||
</figure>
|
||||
|
||||
<div class="article-body">
|
||||
<p>In January 2025, Macedonian students in Ljubljana and Maribor turned cafés into fan zones, gathering to cheer, sing, and share the thrill of handball, proving that even far from home, the spirit of Macedonia lives loud.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/handball-2025-2.webp" alt="A snapshot of the fan atmosphere in Maribor.">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-2.webp" alt="A snapshot of the fan atmosphere in Maribor.">
|
||||
<figcaption>A snapshot of the fan atmosphere in Maribor.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -217,14 +217,14 @@
|
||||
<p>This winter, the World Handball Championship brought more than just matches on screen. It brought Macedonian students together. In Ljubljana, the initiative came from a student, Ljuben Najdovski, who suggested that MSOS host a group watch of the match against Guinea held on January 19, 2025. With quick organization and support from the local café Lepa Žoga, a space was reserved, sign-ups were collected, and soon enough 25 students filled the place with flags, chants, and laughter.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/handball-2025-3.webp" alt="Fans gathered at the Ljubljana base to cheer for Macedonia together.">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-3.webp" alt="Fans gathered at the Ljubljana base to cheer for Macedonia together.">
|
||||
<figcaption>Fans gathered at the Ljubljana base to cheer for Macedonia together.</figcaption>
|
||||
</figure>
|
||||
|
||||
<p>Just a week later, the energy carried over to Maribor, where the local MSOS team set up their own fan gathering for the match against France held on January 25, 2025. Hosted at café CLC in the city center, the event welcomed 35 students and friends, complete with snacks, music, and a proper fan atmosphere. Even though the result on the scoreboard was not in Macedonia’s favor, the night ended in celebration, with new friendships and even an after-gathering that lasted long beyond the final whistle.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/handball-2025-4.webp" alt="Fans gathered at the Maribor base to cheer for Macedonia together.">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-4.webp" alt="Fans gathered at the Maribor base to cheer for Macedonia together.">
|
||||
<figcaption>Fans gathered at the Maribor base to cheer for Macedonia together.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
<p>What made these events special was not only the sport. It was the way students created a piece of home abroad: waving flags, sharing drinks, shouting "Ајде Македонија!" at the screen, and laughing together at missed shots or brilliant saves. For newcomers, it was a chance to instantly feel part of a community. For others, it was a reminder that even hundreds of kilometers from home, they were not cheering alone.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/handball-2025-5.webp" alt="Two of our MSOS Maribor organizers enjoying the evening at the fan event.">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-5.webp" alt="Two of our MSOS Maribor organizers enjoying the evening at the fan event.">
|
||||
<figcaption>Two of our MSOS Maribor organizers enjoying the evening at the fan event.</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -242,12 +242,12 @@
|
||||
<p>From Ljubljana to Maribor, these watch parties showed that supporting the national team can be more than sports. It is a way to build friendships, strengthen community, and carry a piece of Macedonia wherever we go. With each match, the energy grows, and one thing is certain: these gatherings will continue to be part of the MSOS story.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/handball-2025-6.webp" alt="A snapshot of our team in Maribor.">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-6.webp" alt="A snapshot of our team in Maribor.">
|
||||
<figcaption>A snapshot of our team in Maribor.</figcaption>
|
||||
</figure>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/handball-2025-7.webp" alt="A snapshot of our team in Ljubljana.">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-7.webp" alt="A snapshot of our team in Ljubljana.">
|
||||
<figcaption>A snapshot of our team in Ljubljana.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
@@ -255,13 +255,13 @@
|
||||
<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/handball-2025-1.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-1.webp" alt="Watching Handball Together in Slovenia, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-2.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-2.webp" alt="Watching Handball Together in Slovenia, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-3.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-3.webp" alt="Watching Handball Together in Slovenia, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-4.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-4.webp" alt="Watching Handball Together in Slovenia, photo 4"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-5.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-5.webp" alt="Watching Handball Together in Slovenia, photo 5"><span class="eg-more">+2</span></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/handball-2025-6.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-6.webp" alt="Watching Handball Together in Slovenia, photo 6"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/handball-2025-7.webp" data-caption="Watching Handball Together in Slovenia"><img loading="lazy" decoding="async" src="../../../images/handball-2025-7.webp" alt="Watching Handball Together in Slovenia, photo 7"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-1.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-1.webp" alt="Watching Handball Together in Slovenia, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-2.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-2.webp" alt="Watching Handball Together in Slovenia, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-3.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-3.webp" alt="Watching Handball Together in Slovenia, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-4.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-4.webp" alt="Watching Handball Together in Slovenia, photo 4"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/handball-2025-5.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-5.webp" alt="Watching Handball Together in Slovenia, photo 5"><span class="eg-more">+2</span></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/handball-2025-6.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-6.webp" alt="Watching Handball Together in Slovenia, photo 6"></button>
|
||||
<button type="button" class="eg-thumb is-hidden" data-full="../../../images/handball-2025-7.webp" data-caption="Watching Handball Together in Slovenia"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/handball-2025-7.webp" alt="Watching Handball Together in Slovenia, photo 7"></button>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
@@ -272,7 +272,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