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

+14 -14
View File
@@ -54,7 +54,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>
<!-- Povezava na glavno CSS datoteko -->
<link rel="stylesheet" href="../../css/main.css">
@@ -202,14 +202,14 @@
<a class="btn btn-secondary" href="#showcase">Poglej, kaj počnemo</a>
</div>
</div>
<div class="mm-hero-collage"><div class="mm-hero-photo mm-hero-photo--1"><img src="../../images/event4-img-1.webp" alt="Spoznaj študentsko Slovenijo 2024" loading="eager"></div><div class="mm-hero-photo mm-hero-photo--2"><img src="../../images/msnl-1.webp" alt="Makedonska študentska noč v Ljubljani" loading="eager"></div><div class="mm-hero-photo mm-hero-photo--3"><img src="../../images/handball-2025-1.webp" alt="Navijanje za Makedonijo, skupno gledanje rokometa v Sloveniji" loading="eager"></div></div>
<div class="mm-hero-collage"><div class="mm-hero-photo mm-hero-photo--1"><img width="1920" height="1280" src="../../images/event4-img-1.webp" alt="Spoznaj študentsko Slovenijo 2024" loading="eager"></div><div class="mm-hero-photo mm-hero-photo--2"><img width="1430" height="757" src="../../images/msnl-1.webp" alt="Makedonska študentska noč v Ljubljani" loading="eager"></div><div class="mm-hero-photo mm-hero-photo--3"><img width="720" height="480" src="../../images/handball-2025-1.webp" alt="Navijanje za Makedonijo, skupno gledanje rokometa v Sloveniji" loading="eager"></div></div>
</section>
<section class="mm-section">
<h2 class="mm-h2">Zakaj postati član?</h2>
<div class="mm-benefits">
<figure class="mm-benefit-photo">
<img src="../../images/event4-image2.webp" alt="Makedonski študenti zbrani v Ljubljani" loading="lazy">
<img width="1425" height="950" src="../../images/event4-image2.webp" alt="Makedonski študenti zbrani v Ljubljani" loading="lazy">
<figcaption>Pravi dogodki, prava prijateljstva</figcaption>
</figure>
<article class="mm-benefit">
@@ -241,7 +241,7 @@
<h3>Počuti se kot doma</h3><p>Pripadaj skupnosti, kjer ti nikoli ni treba pojasnjevati, od kod prihajaš.</p>
</article>
<figure class="mm-benefit-photo">
<img src="../../images/msnl-3.webp" alt="Študenti pišejo svoja imena v cirilici na makedonskem študentskem večeru" loading="lazy">
<img width="1087" height="586" src="../../images/msnl-3.webp" alt="Študenti pišejo svoja imena v cirilici na makedonskem študentskem večeru" loading="lazy">
<figcaption>Košček doma v Sloveniji</figcaption>
</figure>
</div>
@@ -293,19 +293,19 @@
<h2 class="mm-h2">Kako je v resnici biti del MSOS</h2>
<div class="mm-reals">
<a class="mm-real" href="../projects/meet-student-slovenia-2024/">
<div class="mm-real-media"><img src="../../images/event4-img-1.webp" alt="Začni na dogodku dobrodošlice" loading="lazy"></div>
<div class="mm-real-media"><img width="1920" height="1280" src="../../images/event4-img-1.webp" alt="Začni na dogodku dobrodošlice" loading="lazy"></div>
<div class="mm-real-body"><h3>Začni na dogodku dobrodošlice</h3><p>Spoznaj skupnost že v prvih tednih v Sloveniji.</p><span class="mm-real-link">Preberi zgodbo <i class="fas fa-arrow-right" aria-hidden="true"></i></span></div>
</a>
<a class="mm-real" href="../projects/macedonian-student-night-in-ljubljana/">
<div class="mm-real-media"><img src="../../images/msnl-1.webp" alt="Uživaj na študentski noči" loading="lazy"></div>
<div class="mm-real-media"><img width="1430" height="757" src="../../images/msnl-1.webp" alt="Uživaj na študentski noči" loading="lazy"></div>
<div class="mm-real-body"><h3>Uživaj na študentski noči</h3><p>Glasba, prijatelji in večer, ki je kot doma.</p><span class="mm-real-link">Preberi zgodbo <i class="fas fa-arrow-right" aria-hidden="true"></i></span></div>
</a>
<a class="mm-real" href="../projects/humanitarian-tournament-in-maribor/">
<div class="mm-real-media"><img src="../../images/maribor-tournament-1.webp" alt="Skupaj prispevaj" loading="lazy"></div>
<div class="mm-real-media"><img width="720" height="480" src="../../images/maribor-tournament-1.webp" alt="Skupaj prispevaj" loading="lazy"></div>
<div class="mm-real-body"><h3>Skupaj prispevaj</h3><p>Sodeluj v humanitarnih dejavnostih, ki pomagajo drugim.</p><span class="mm-real-link">Preberi zgodbo <i class="fas fa-arrow-right" aria-hidden="true"></i></span></div>
</a>
<a class="mm-real" href="../projects/watching-handball-together-in-slovenia/">
<div class="mm-real-media"><img src="../../images/handball-2025-1.webp" alt="Navijajte skupaj" loading="lazy"></div>
<div class="mm-real-media"><img width="720" height="480" src="../../images/handball-2025-1.webp" alt="Navijajte skupaj" loading="lazy"></div>
<div class="mm-real-body"><h3>Navijajte skupaj</h3><p>Šport, energija in pripadnost, kjer koli študiraš.</p><span class="mm-real-link">Preberi zgodbo <i class="fas fa-arrow-right" aria-hidden="true"></i></span></div>
</a>
</div>
@@ -333,27 +333,27 @@
<h2 class="mm-h2">Poglej MSOS v akciji</h2>
<div class="mm-shows">
<a class="mm-show" href="../projects/meet-student-slovenia-2024/">
<div class="mm-show-media"><img src="../../images/event4-img-1.webp" alt="Spoznaj študentsko Slovenijo 2024" loading="lazy"></div>
<div class="mm-show-media"><img width="1920" height="1280" src="../../images/event4-img-1.webp" alt="Spoznaj študentsko Slovenijo 2024" loading="lazy"></div>
<h3>Spoznaj študentsko Slovenijo 2024</h3>
</a>
<a class="mm-show" href="../projects/macedonian-student-night-in-ljubljana/">
<div class="mm-show-media"><img src="../../images/msnl-1.webp" alt="Makedonska študentska noč v Ljubljani" loading="lazy"></div>
<div class="mm-show-media"><img width="1430" height="757" src="../../images/msnl-1.webp" alt="Makedonska študentska noč v Ljubljani" loading="lazy"></div>
<h3>Makedonska študentska noč v Ljubljani</h3>
</a>
<a class="mm-show" href="../projects/humanitarian-tournament-in-maribor/">
<div class="mm-show-media"><img src="../../images/maribor-tournament-1.webp" alt="Humanitarni športni turnir: Igramo s srcem, skupaj za Kočane" loading="lazy"></div>
<div class="mm-show-media"><img width="720" height="480" src="../../images/maribor-tournament-1.webp" alt="Humanitarni športni turnir: Igramo s srcem, skupaj za Kočane" loading="lazy"></div>
<h3>Humanitarni športni turnir: Igramo s srcem, skupaj za Kočane</h3>
</a>
<a class="mm-show" href="../projects/paint-and-wine-at-sunset/">
<div class="mm-show-media"><img src="../../images/paint-wine-1.webp" alt="Slikanje in vino ob sončnem zahodu, praznovanje dneva žena z umetnostjo in glasbo" loading="lazy"></div>
<div class="mm-show-media"><img width="1600" height="1067" src="../../images/paint-wine-1.webp" alt="Slikanje in vino ob sončnem zahodu, praznovanje dneva žena z umetnostjo in glasbo" loading="lazy"></div>
<h3>Slikanje in vino ob sončnem zahodu, praznovanje dneva žena z umetnostjo in glasbo</h3>
</a>
<a class="mm-show" href="../projects/morning-coffee-in-front-of-ctk/">
<div class="mm-show-media"><img src="../../images/event4-image1.webp" alt="Jutranja kava pred CTK, 2024: Kava, burek in obilo nasmehov" loading="lazy"></div>
<div class="mm-show-media"><img width="1920" height="1280" src="../../images/event4-image1.webp" alt="Jutranja kava pred CTK, 2024: Kava, burek in obilo nasmehov" loading="lazy"></div>
<h3>Jutranja kava pred CTK, 2024: Kava, burek in obilo nasmehov</h3>
</a>
<a class="mm-show" href="../projects/watching-handball-together-in-slovenia/">
<div class="mm-show-media"><img src="../../images/handball-2025-1.webp" alt="Navijanje za Makedonijo, skupno gledanje rokometa v Sloveniji" loading="lazy"></div>
<div class="mm-show-media"><img width="720" height="480" src="../../images/handball-2025-1.webp" alt="Navijanje za Makedonijo, skupno gledanje rokometa v Sloveniji" loading="lazy"></div>
<h3>Navijanje za Makedonijo, skupno gledanje rokometa v Sloveniji</h3>
</a>
</div>