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
+15
-14
@@ -4,6 +4,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>МСОС Хаб - Македонска студентска организација во Словенија</title>
|
||||
<meta name="description" content="Запознајте го MSOS Hub во Љубљана — просторот на заедницата на Македонската студентска организација во Словенија за настани и студентски живот.">
|
||||
<!-- SEO:START -->
|
||||
<!-- Google tag (gtag.js) with Consent Mode v2 (default: denied) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-WVYV807VSS"></script>
|
||||
@@ -51,7 +52,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>
|
||||
|
||||
<!-- Link to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../css/main.css">
|
||||
@@ -208,7 +209,7 @@
|
||||
<!-- Story: a space we built together -->
|
||||
<!-- NOTE: hub-story-bg is a temporary placeholder. Replace with the wide shot of the renovated Hub. -->
|
||||
<section class="hub-story">
|
||||
<img class="hub-story-bg" loading="lazy" decoding="async" src="../../images/event3-photo-6.webp" alt="Реновираниот простор на Хабот">
|
||||
<img width="1920" height="1239" class="hub-story-bg" loading="lazy" decoding="async" src="../../images/event3-photo-6.webp" alt="Реновираниот простор на Хабот">
|
||||
<div class="hub-story-overlay"></div>
|
||||
<div class="hub-story-inner">
|
||||
<div class="hub-story-text">
|
||||
@@ -232,42 +233,42 @@
|
||||
<div class="hub-group">
|
||||
<!-- NOTE: hub-use-img src values are temporary placeholders. Replace with the final photos. -->
|
||||
<div class="hub-use">
|
||||
<img class="hub-use-img" loading="lazy" decoding="async" src="../../images/event3-photo-2.webp" alt="Културна вечер во Hub">
|
||||
<img width="1920" height="1317" class="hub-use-img" loading="lazy" decoding="async" src="../../images/event3-photo-2.webp" alt="Културна вечер во Hub">
|
||||
<div class="hub-use-body">
|
||||
<h3>Културни и специфични настани</h3>
|
||||
<p>Мали културни вечери, предавања, изложби и настани на заедницата.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hub-use">
|
||||
<img class="hub-use-img" loading="lazy" decoding="async" src="../../images/event4-image1.webp" alt="Прослава во Hub">
|
||||
<img width="1920" height="1280" class="hub-use-img" loading="lazy" decoding="async" src="../../images/event4-image1.webp" alt="Прослава во Hub">
|
||||
<div class="hub-use-body">
|
||||
<h3>Родендени и прослави</h3>
|
||||
<p>Организирај роденден, имен ден или каква било прослава со твоите пријатели.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hub-use">
|
||||
<img class="hub-use-img" loading="lazy" decoding="async" src="../../images/event3-photo-5.webp" alt="Заедничко гледање спорт во Hub">
|
||||
<img width="1920" height="1337" class="hub-use-img" loading="lazy" decoding="async" src="../../images/event3-photo-5.webp" alt="Заедничко гледање спорт во Hub">
|
||||
<div class="hub-use-body">
|
||||
<h3>Гледање спорт</h3>
|
||||
<p>Соберете се да навивате за натпреварот заедно на платното на проекторот.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hub-use">
|
||||
<img class="hub-use-img" loading="lazy" decoding="async" src="../../images/event3-photo-8.webp" alt="Музика и танцување во Hub">
|
||||
<img width="1920" height="1341" class="hub-use-img" loading="lazy" decoding="async" src="../../images/event3-photo-8.webp" alt="Музика и танцување во Hub">
|
||||
<div class="hub-use-body">
|
||||
<h3>Пеење и танцување</h3>
|
||||
<p>Вечер на музика, пеење и танцување, а пијаното е токму тука.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hub-use">
|
||||
<img class="hub-use-img" loading="lazy" decoding="async" src="../../images/event4-image3.webp" alt="Состанок во Hub">
|
||||
<img width="1920" height="1280" class="hub-use-img" loading="lazy" decoding="async" src="../../images/event4-image3.webp" alt="Состанок во Hub">
|
||||
<div class="hub-use-body">
|
||||
<h3>Состаноци</h3>
|
||||
<p>Тивка, опремена просторија за состаноци на клубови, друштва или тимови.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hub-use">
|
||||
<img class="hub-use-img" loading="lazy" decoding="async" src="../../images/event4-image5.webp" alt="Проектна работа во Hub">
|
||||
<img width="1317" height="877" class="hub-use-img" loading="lazy" decoding="async" src="../../images/event4-image5.webp" alt="Проектна работа во Hub">
|
||||
<div class="hub-use-body">
|
||||
<h3>Проектна работа</h3>
|
||||
<p>Простор за фокусирање, размислување на белата табла и заедничко завршување на работите.</p>
|
||||
@@ -307,10 +308,10 @@
|
||||
</div>
|
||||
<!-- NOTE: hub-shot images are temporary placeholders. Replace with the final Hub photos. -->
|
||||
<div class="hub-gallery">
|
||||
<figure class="hub-shot"><img loading="lazy" decoding="async" src="../../images/event3-photo-1.webp" alt="Собир во Хабот"></figure>
|
||||
<figure class="hub-shot"><img loading="lazy" decoding="async" src="../../images/event3-photo-3.webp" alt="Настан во просторот на Хабот"></figure>
|
||||
<figure class="hub-shot"><img loading="lazy" decoding="async" src="../../images/event4-image2.webp" alt="Луѓе заедно во Хабот"></figure>
|
||||
<figure class="hub-shot"><img loading="lazy" decoding="async" src="../../images/event3-photo-9.webp" alt="Момент од настан во Хабот"></figure>
|
||||
<figure class="hub-shot"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../images/event3-photo-1.webp" alt="Собир во Хабот"></figure>
|
||||
<figure class="hub-shot"><img width="1920" height="1280" loading="lazy" decoding="async" src="../../images/event3-photo-3.webp" alt="Настан во просторот на Хабот"></figure>
|
||||
<figure class="hub-shot"><img width="1425" height="950" loading="lazy" decoding="async" src="../../images/event4-image2.webp" alt="Луѓе заедно во Хабот"></figure>
|
||||
<figure class="hub-shot"><img width="960" height="540" loading="lazy" decoding="async" src="../../images/event3-photo-9.webp" alt="Момент од настан во Хабот"></figure>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -323,8 +324,8 @@
|
||||
</div>
|
||||
<!-- Partner logos (community credited below) -->
|
||||
<div class="hub-logos">
|
||||
<div class="hub-logo"><img loading="lazy" decoding="async" src="../../images/partners/kdm-makedonija.png" alt="Македонско културно друштво Македонија во Љубљана"></div>
|
||||
<div class="hub-logo"><img loading="lazy" decoding="async" src="../../images/partners/mzzt-mk.png" alt="Министерство за надворешни работи и трговија на Северна Македонија"></div>
|
||||
<div class="hub-logo"><img width="400" height="403" loading="lazy" decoding="async" src="../../images/partners/kdm-makedonija.png" alt="Македонско културно друштво Македонија во Љубљана"></div>
|
||||
<div class="hub-logo"><img width="622" height="281" loading="lazy" decoding="async" src="../../images/partners/mzzt-mk.png" alt="Министерство за надворешни работи и трговија на Северна Македонија"></div>
|
||||
</div>
|
||||
<p class="hub-community"><i class="fas fa-heart" aria-hidden="true"></i> И заедницата на МСОС.</p>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user