From e93f5593e268cab77984fc98913728d22e0ceb4c Mon Sep 17 00:00:00 2001 From: Christian Gick Date: Sat, 4 Apr 2026 16:59:57 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20final=20map=20implementation=20=E2=80=94?= =?UTF-8?q?=20iframe=20+=20style.json=20+=20fill-antialias:false?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three-part fix for retina tile seam artifacts: 1. iframe isolation from Hugo Tailwind CSS (box-sizing interference) 2. Use tileserver style.json URL (not inline style — different layer configs) 3. fill-antialias: false on choropleth layer Shortcode is now a thin iframe wrapper. Map logic in static/map-embed.html. Co-Authored-By: Claude Opus 4.6 (1M context) --- .ip-exposure-whitelist | 1 + layouts/shortcodes/world-map.html | 130 +----------------------------- static/map-embed.html | 9 +-- 3 files changed, 9 insertions(+), 131 deletions(-) create mode 100644 .ip-exposure-whitelist diff --git a/.ip-exposure-whitelist b/.ip-exposure-whitelist new file mode 100644 index 0000000..7bdeba9 --- /dev/null +++ b/.ip-exposure-whitelist @@ -0,0 +1 @@ +127.05.131.05 # False positive in mermaid.min.js (numeric pattern, not IP) diff --git a/layouts/shortcodes/world-map.html b/layouts/shortcodes/world-map.html index c5d10a7..69689d7 100644 --- a/layouts/shortcodes/world-map.html +++ b/layouts/shortcodes/world-map.html @@ -1,7 +1,5 @@ {{ $lang := .Page.Language.Lang }} -{{ $countries := hugo.Data.countries }} - @@ -27,124 +19,10 @@

{{ if eq $lang "de" }}Klicken Sie auf ein Land für Details{{ else if eq $lang "fr" }}Cliquez sur un pays pour plus de détails{{ else }}Click a country for details{{ end }}

-
{{ if eq $lang "de" }}In Kraft{{ else if eq $lang "fr" }}En vigueur{{ else }}Enforced{{ end }}
-
{{ if eq $lang "de" }}Verabschiedet{{ else if eq $lang "fr" }}Adopté{{ else }}Passed{{ end }}
-
{{ if eq $lang "de" }}In Bearbeitung{{ else if eq $lang "fr" }}En cours{{ else }}In Progress{{ end }}
-
{{ if eq $lang "de" }}Richtlinien{{ else if eq $lang "fr" }}Directives{{ else }}Guidelines{{ end }}
+
{{ if eq $lang "de" }}In Kraft{{ else if eq $lang "fr" }}En vigueur{{ else }}Enforced{{ end }}
+
{{ if eq $lang "de" }}Verabschiedet{{ else if eq $lang "fr" }}Adopté{{ else }}Passed{{ end }}
+
{{ if eq $lang "de" }}In Bearbeitung{{ else if eq $lang "fr" }}En cours{{ else }}In Progress{{ end }}
+
{{ if eq $lang "de" }}Richtlinien{{ else if eq $lang "fr" }}Directives{{ else }}Guidelines{{ end }}
{{ if eq $lang "de" }}Keine Daten{{ else if eq $lang "fr" }}Pas de données{{ else }}No Data{{ end }}
- - - - diff --git a/static/map-embed.html b/static/map-embed.html index a1118b8..eec50da 100644 --- a/static/map-embed.html +++ b/static/map-embed.html @@ -24,8 +24,7 @@ body { margin: 0; overflow: hidden; } var LANG = 'en'; try { var m = parent.location.pathname.match(/^\/(de|fr|en)\//); if (m) LANG = m[1]; } catch(e) {} - var STATUS_COLORS = { enforced: '#9cabf1', passed: '#a68ac3', progress: '#c5cefd', guidelines: '#ebefff' }; - var POPUP_COLORS = { enforced: '#667eea', passed: '#764ba2', progress: '#a5b4fc', guidelines: '#e0e7ff' }; + var STATUS_COLORS = { enforced: '#667eea', passed: '#764ba2', progress: '#a5b4fc', guidelines: '#e0e7ff' }; var STATUS_LABELS = { en: { enforced: 'Enforced', passed: 'Passed', progress: 'In Progress', guidelines: 'Guidelines' }, de: { enforced: 'In Kraft', passed: 'Verabschiedet', progress: 'In Bearbeitung', guidelines: 'Richtlinien' }, @@ -65,8 +64,8 @@ body { margin: 0; overflow: hidden; } geo.features.forEach(function(f) { var id = String(f.id).padStart(3, '0'); var c = byIsoNum[id]; - f.properties.fillColor = c ? STATUS_COLORS[c.status] : 'transparent'; - f.properties.fillOpacity = c ? 1 : 0; + f.properties.fillColor = c ? STATUS_COLORS[c.status] : '#dce4ec'; + f.properties.fillOpacity = c ? 0.65 : 0.1; f.properties.isoNum = id; }); @@ -112,7 +111,7 @@ body { margin: 0; overflow: hidden; } var ageLabel = AGE_LABELS[LANG] || AGE_LABELS.en; var html = '' + c.flag + ' ' + loc.name + '
' + '' + loc.law + '
' + - '' + labels[c.status] + ' (' + c.year + ')' + + '' + labels[c.status] + ' (' + c.year + ')' + '
👤 ' + ageLabel + ': ' + c.ageLimitSocial + '+
' + '
' + loc.detail + '
'; var anchor = ARTICLE_ANCHORS[c.iso3];