design optimizations.

This commit is contained in:
chriz committed 2026-10-26 20:55:59 +01:00
1 parent 1e33c525f1
commit af5177e8b1
8 files changed
+350 -16

No files matched your search

+44 -2
View File
@@ -226,6 +226,17 @@ if ($canonicalUrl && $currentAction !== 'main') {
<link rel="icon" href="/img/favicon.png?v=<?=filemtime(__DIR__ . '/../img/favicon.png')?>" type="image/png">
<link rel="apple-touch-icon" href="/img/apple-touch-icon.png?v=<?=filemtime(__DIR__ . '/../img/apple-touch-icon.png')?>">
<!-- Theme Initialization (prevents FOUC) -->
<script type="text/javascript">
(function() {
try {
if (localStorage.getItem('theme') === 'dark') {
document.documentElement.setAttribute('data-theme', 'dark');
}
} catch (e) {}
})();
</script>
<!-- Modern Stylesheets -->
<link href="/css/frontend.css?v=<?=filemtime(__DIR__ . '/../css/frontend.css')?>" rel="stylesheet" media="screen">
<link href="/css/lightbox.min.css" rel="stylesheet" media="screen">
@@ -276,7 +287,11 @@ if ($canonicalUrl && $currentAction !== 'main') {
<img src="/img/logo_dialysezentrum.png?v=<?=filemtime(__DIR__ . '/../img/logo_dialysezentrum.png')?>"
alt="<?=$isEn ? 'Dialysis Center Berlin-Mahlsdorf – Center for Nephrology & Dialysis' : 'Dialysezentrum Berlin-Mahlsdorf – Zentrum für Nephrologie & Dialyse'?>"
width="915" height="199"
class="site-logo-img">
class="site-logo-img site-logo-light">
<img src="/img/logo_dialysezentrum_dark.png?v=<?=filemtime(__DIR__ . '/../img/logo_dialysezentrum_dark.png')?>"
alt="<?=$isEn ? 'Dialysis Center Berlin-Mahlsdorf – Center for Nephrology & Dialysis' : 'Dialysezentrum Berlin-Mahlsdorf – Zentrum für Nephrologie & Dialyse'?>"
width="915" height="199"
class="site-logo-img site-logo-dark">
</a>
<!-- Navigation Menu -->
@@ -435,10 +450,15 @@ if ($canonicalUrl && $currentAction !== 'main') {
<div>
&copy; <?=date('Y')?> <?=$isEn ? 'Dialysis Center Berlin-Mahlsdorf &bull; All rights reserved.' : 'Dialysezentrum Berlin-Mahlsdorf &bull; Alle Rechte vorbehalten.'?>
</div>
<div>
<div class="footer-bottom-links">
<a href="<?=Helper::url('/impressum.html')?>"><?=$isEn ? 'Legal Notice' : 'Impressum'?></a>
<a href="<?=Helper::url('/datenschutz.html')?>"><?=$isEn ? 'Privacy Policy' : 'Datenschutz'?></a>
<a href="<?=Helper::url('/kontakt.html')?>"><?=$isEn ? 'Contact' : 'Kontakt'?></a>
<button type="button" id="themeToggle" class="theme-toggle-btn" aria-pressed="false" title="<?=$isEn ? 'Toggle color scheme (Dark / Light)' : 'Farbschema umschalten (Dunkel / Hell)'?>">
<svg class="theme-icon-moon" aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M12 3a9 9 0 1 0 9 9c0-.46-.04-.92-.1-1.36a5.389 5.389 0 0 1-4.4 2.26 5.403 5.403 0 0 1-3.14-9.8c-.44-.06-.9-.1-1.36-.1z"/></svg>
<svg class="theme-icon-sun" aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M6.76 4.84l-1.8-1.79-1.41 1.41 1.79 1.79 1.42-1.41zM4 10.5H1v2h3v-2zm9-9.95h-2V3.5h2V.55zm7.45 3.91l-1.41-1.41-1.79 1.79 1.41 1.41 1.79-1.79zm-3.21 13.7l1.79 1.8 1.41-1.41-1.8-1.79-1.4 1.4zM20 10.5v2h3v-2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm-1 16.95h2V19.5h-2v2.95zm-7.45-3.91l1.41 1.41 1.79-1.8-1.41-1.41-1.79 1.8z"/></svg>
<span id="themeToggleLabel"><?=$isEn ? 'Dark Mode' : 'Dunkelmodus'?></span>
</button>
</div>
</div>
</footer>
@@ -452,6 +472,28 @@ if ($canonicalUrl && $currentAction !== 'main') {
var labelOpen = isEn ? 'Open menu' : 'Menü öffnen';
var labelClose = isEn ? 'Close menu' : 'Menü schließen';
// Unobtrusive Footer Dark Mode Toggle
var $themeToggle = $('#themeToggle');
var $themeLabel = $('#themeToggleLabel');
function syncThemeButton() {
var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
$themeToggle.attr('aria-pressed', isDark ? 'true' : 'false');
$themeLabel.text(isDark ? (isEn ? 'Light Mode' : 'Hellmodus') : (isEn ? 'Dark Mode' : 'Dunkelmodus'));
}
syncThemeButton();
$themeToggle.on('click', function() {
var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
if (isDark) {
document.documentElement.removeAttribute('data-theme');
try { localStorage.setItem('theme', 'light'); } catch (e) {}
} else {
document.documentElement.setAttribute('data-theme', 'dark');
try { localStorage.setItem('theme', 'dark'); } catch (e) {}
}
syncThemeButton();
});
// Anti-Spam Email De-Obfuscation
$('.mail-obf').each(function() {
var $el = $(this);