Index: src/assets/css/style.css
===================================================================
--- src/assets/css/style.css	(revision b919a67397d06a47a68126c93ca221802faa8cca)
+++ src/assets/css/style.css	(revision 2900f1d25ce25fdc389a9e786e071b96cbfca966)
@@ -296,4 +296,10 @@
 a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--rule-2); text-underline-offset: 3px; transition: color var(--transition), text-decoration-color var(--transition); }
 a:hover { color: var(--accent); text-decoration-color: var(--accent); }
+/* Knop-ankers houden hun eigen tekstkleur bij hover. Zonder dit overschrijft de
+   globale a:hover{color:accent} de knop-tekst → die wordt dezelfde kleur als de
+   accent-achtergrond en valt weg (vooral op sites met een felle accent). */
+a.btn:hover, a.epk-btn:hover { color: var(--ink); }
+a.btn-primary:hover, a.btn-danger:hover, a.btn-success:hover, a.button:hover,
+a.epk-btn-primary:hover, a.dls-btn:hover, a.sh-tix:hover, a.dl-go:hover { color: #fff; text-decoration-color: currentColor; }
 a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; text-decoration: none; }
 blockquote { margin: 2em 0; padding: .25em 0 .25em 1.25em; border-left: 2px solid var(--accent); font-family: var(--font-display); font-style: italic; font-size: 1.15em; color: var(--ink-soft); }
Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision b919a67397d06a47a68126c93ca221802faa8cca)
+++ src/views/shell.ejs	(revision 2900f1d25ce25fdc389a9e786e071b96cbfca966)
@@ -163,5 +163,5 @@
 
 <!-- v9 stylesheet (full palette system) -->
-<link rel="stylesheet" href="/assets/css/style.css?v=9">
+<link rel="stylesheet" href="/assets/css/style.css?v=10">
 
 <!-- Audio player styles: loaded on every page so the mini-player works
