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/frosina-1.webp" alt="Candles and flowers in memory of Frosina Kulakova">
|
||||
<img width="720" height="480" fetchpriority="high" src="../../../images/frosina-1.webp" alt="Candles and flowers in memory of Frosina Kulakova">
|
||||
</figure>
|
||||
|
||||
<div class="article-body">
|
||||
<p>The news of Frosina’s tragic passing on January 29, 2025, deeply shook students across Slovenia. Even though we are far from home, the pain was shared, and the need to come together was clear. Out of this feeling grew the initiative to organize a peaceful public gathering in Ljubljana, where young people could unite, light candles, lay flowers, and dedicate a moment of silence in her memory.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/frosina-2.webp" alt="Students lighting candles in memory of Frosina">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/frosina-2.webp" alt="Students lighting candles in memory of Frosina">
|
||||
</figure>
|
||||
|
||||
<h2>A message of unity</h2>
|
||||
@@ -218,7 +218,7 @@
|
||||
<p>By standing side by side in moments like these, we learn that our strength lies not only in our studies and ambitions but also in our ability to support one another when it matters most.</p>
|
||||
|
||||
<figure class="article-inline-image">
|
||||
<img loading="lazy" decoding="async" src="../../../images/frosina-3.webp" alt="Flowers and candles laid in remembrance">
|
||||
<img width="720" height="480" loading="lazy" decoding="async" src="../../../images/frosina-3.webp" alt="Flowers and candles laid in remembrance">
|
||||
</figure>
|
||||
|
||||
<h2>Closing thoughts</h2>
|
||||
@@ -233,9 +233,9 @@
|
||||
<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/frosina-1.webp" data-caption="In Memory of Frosina Kulakova"><img loading="lazy" decoding="async" src="../../../images/frosina-1.webp" alt="In Memory of Frosina Kulakova, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/frosina-2.webp" data-caption="In Memory of Frosina Kulakova"><img loading="lazy" decoding="async" src="../../../images/frosina-2.webp" alt="In Memory of Frosina Kulakova, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/frosina-3.webp" data-caption="In Memory of Frosina Kulakova"><img loading="lazy" decoding="async" src="../../../images/frosina-3.webp" alt="In Memory of Frosina Kulakova, photo 3"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/frosina-1.webp" data-caption="In Memory of Frosina Kulakova"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/frosina-1.webp" alt="In Memory of Frosina Kulakova, photo 1"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/frosina-2.webp" data-caption="In Memory of Frosina Kulakova"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/frosina-2.webp" alt="In Memory of Frosina Kulakova, photo 2"></button>
|
||||
<button type="button" class="eg-thumb" data-full="../../../images/frosina-3.webp" data-caption="In Memory of Frosina Kulakova"><img width="720" height="480" loading="lazy" decoding="async" src="../../../images/frosina-3.webp" alt="In Memory of Frosina Kulakova, photo 3"></button>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
@@ -246,7 +246,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