Index: src/views/partials/shared-styles.ejs
===================================================================
--- src/views/partials/shared-styles.ejs	(revision d9ad6c564eccd0e4c23c3d8c2c8a32334f2443bc)
+++ src/views/partials/shared-styles.ejs	(revision 2d2fd8c352950d0d5ff366c901fb7e2e0cf6d614)
@@ -27,5 +27,6 @@
   padding: 0.15rem;
 }
-.view-switch-btn {
+.view-switch-btn,
+.view-switch-link {
   display: inline-flex; align-items: center; gap: 0.35rem;
   padding: 0.35rem 0.85rem;
@@ -35,9 +36,12 @@
   transition: background 120ms, color 120ms;
 }
-.view-switch-btn:hover { color: var(--ink); }
+.view-switch-btn:hover,
+.view-switch-link:hover { color: var(--ink); }
+.view-switch-link { text-decoration: none; }
 /* Active = white (light background, dark text). Via aria-selected (element
    attribute, set by syncAria + on htmx:afterSettle) → htmx-robust. On non-
    feed pages syncAria sets aria-selected=false → both grey. */
-.view-switch-btn[aria-selected="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
+.view-switch-btn[aria-selected="true"],
+.view-switch-link[aria-selected="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
 
 /* Agenda = its OWN pill (separate from Timeline/Grid, so the feed-toggle is never
