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
@@ -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='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>
|
||||
|
||||
<!-- Поврзување до главната CSS-датотека -->
|
||||
<link rel="stylesheet" href="../../css/main.css">
|
||||
@@ -197,7 +197,7 @@
|
||||
<h1>Запознај ја Македонија</h1>
|
||||
<p class="page-description">Македонија не е само место на картата. Таа е трпеза на која секогаш има место за уште еден човек, музика што нè зближува, планини на хоризонтот и разговори што продолжуваат долго по последното кафе. Ова се местата, традициите, вкусовите и приказните што ги носиме со себе и сакаме да ги споделиме со вас.</p>
|
||||
<form class="subscribe-form">
|
||||
<input type="email" placeholder="Внесете ја вашата е-пошта">
|
||||
<input type="email" placeholder="Внесете ја вашата е-пошта" aria-label="Е-пошта">
|
||||
<button type="submit" class="btn btn-primary-orange">Претплати се</button>
|
||||
</form>
|
||||
<p class="privacy-note">Ние се грижиме за вашите податоци во нашата <a href="../../mk/privacy-policy/">политика за приватност</a></p>
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Story: Добредојдовте во Македонија -->
|
||||
<article class="post-card" data-category="identity">
|
||||
<a href="welcome-to-macedonia/" class="post-link">
|
||||
<img loading="lazy" decoding="async" src="../../images/macedonia-welcome-skopje-square-hero.webp" alt="Macedonia Square in central Skopje" class="post-image">
|
||||
<img width="810" height="540" loading="lazy" decoding="async" src="../../images/macedonia-welcome-skopje-square-hero.webp" alt="Macedonia Square in central Skopje" class="post-image">
|
||||
<div class="post-content">
|
||||
<p class="post-meta">Тим на МСОС • Луѓе и идентитет</p>
|
||||
<h3 class="post-title">Добредојдовте во Македонија</h3>
|
||||
@@ -233,7 +233,7 @@
|
||||
<!-- Story: Охрид, повеќе од разгледница -->
|
||||
<article class="post-card" data-category="places">
|
||||
<a href="ohrid-more-than-a-postcard/" class="post-link">
|
||||
<img loading="lazy" decoding="async" src="../../images/macedonia-ohrid-kaneo-hero.webp" alt="The Church of St. John at Kaneo above Lake Ohrid" class="post-image">
|
||||
<img width="750" height="500" loading="lazy" decoding="async" src="../../images/macedonia-ohrid-kaneo-hero.webp" alt="The Church of St. John at Kaneo above Lake Ohrid" class="post-image">
|
||||
<div class="post-content">
|
||||
<p class="post-meta">Тим на МСОС • Места и природа</p>
|
||||
<h3 class="post-title">Охрид, повеќе од разгледница</h3>
|
||||
@@ -244,7 +244,7 @@
|
||||
<!-- Story: Скопје, град со многу слоеви -->
|
||||
<article class="post-card" data-category="places">
|
||||
<a href="skopje-a-city-of-many-layers/" class="post-link">
|
||||
<img loading="lazy" decoding="async" src="../../images/macedonia-skopje-stone-bridge-hero.webp" alt="The Stone Bridge over the Vardar in Skopje" class="post-image">
|
||||
<img width="810" height="540" loading="lazy" decoding="async" src="../../images/macedonia-skopje-stone-bridge-hero.webp" alt="The Stone Bridge over the Vardar in Skopje" class="post-image">
|
||||
<div class="post-content">
|
||||
<p class="post-meta">Тим на МСОС • Места и природа</p>
|
||||
<h3 class="post-title">Скопје, град со многу слоеви</h3>
|
||||
@@ -255,7 +255,7 @@
|
||||
<!-- Story: Македонија на полна трпеза -->
|
||||
<article class="post-card" data-category="food">
|
||||
<a href="a-table-full-of-macedonia/" class="post-link">
|
||||
<img loading="lazy" decoding="async" src="../../images/macedonia-food-shared-table-hero.webp" alt="A shared Macedonian table with salads, bread, beans, and other dishes" class="post-image">
|
||||
<img width="1209" height="806" loading="lazy" decoding="async" src="../../images/macedonia-food-shared-table-hero.webp" alt="A shared Macedonian table with salads, bread, beans, and other dishes" class="post-image">
|
||||
<div class="post-content">
|
||||
<p class="post-meta">Тим на МСОС • Храна и вкусови</p>
|
||||
<h3 class="post-title">Македонија на полна трпеза</h3>
|
||||
@@ -266,7 +266,7 @@
|
||||
<!-- Story: Музика, оро и моментите што нè спојуваат -->
|
||||
<article class="post-card" data-category="culture">
|
||||
<a href="music-dance-and-the-moments-that-bring-us-together/" class="post-link">
|
||||
<img loading="lazy" decoding="async" src="../../images/macedonia-culture-oro-celebration-hero.webp" alt="Several generations joining the same oro at a Macedonian celebration" class="post-image">
|
||||
<img width="1400" height="933" loading="lazy" decoding="async" src="../../images/macedonia-culture-oro-celebration-hero.webp" alt="Several generations joining the same oro at a Macedonian celebration" class="post-image">
|
||||
<div class="post-content">
|
||||
<p class="post-meta">Тим на МСОС • Култура и традиции</p>
|
||||
<h3 class="post-title">Музика, оро и моментите што нè спојуваат</h3>
|
||||
@@ -277,7 +277,7 @@
|
||||
<!-- Story: Историја низ која сè уште можеме да чекориме -->
|
||||
<article class="post-card" data-category="heritage">
|
||||
<a href="history-you-can-still-walk-through/" class="post-link">
|
||||
<img loading="lazy" decoding="async" src="../../images/macedonia-heritage-stobi-street-hero.webp" alt="An ancient street and building remains at the archaeological site of Stobi" class="post-image">
|
||||
<img width="1050" height="700" loading="lazy" decoding="async" src="../../images/macedonia-heritage-stobi-street-hero.webp" alt="An ancient street and building remains at the archaeological site of Stobi" class="post-image">
|
||||
<div class="post-content">
|
||||
<p class="post-meta">Тим на МСОС • Историја и наследство</p>
|
||||
<h3 class="post-title">Историја низ која сè уште можеме да чекориме</h3>
|
||||
|
||||
Reference in new issue
Block a user