diff --git a/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.html b/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.html
index c244318..23928cd 100644
--- a/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.html
+++ b/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.html
@@ -1,10 +1,12 @@
diff --git a/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.scss b/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.scss
index 5e7faf2..ac6115b 100644
--- a/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.scss
+++ b/apps/portal-shell/src/app/components/theme-switcher/theme-switcher.scss
@@ -3,6 +3,47 @@
// when the labels grow under translation. dark-mode surface mirrors
// the rest of the shell (gray-900 background, gray-800 border).
+// Trigger mirrors `.locale-switcher__trigger` — same chip shape,
+// same hover / focus tokens, same AAA-friendly 44×44 tap target
+// via vertical-padding overflow inside the thin footer. The two
+// switchers sit side-by-side in the footer's device-prefs cluster
+// (#162), so a single visual family across the pair reads as one
+// component. The leading icon stays driven by `currentIcon()` so a
+// sun / moon / monitor glyph still signals which mode is selected.
+.theme-switcher__trigger {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.375rem;
+ min-height: 2.75rem;
+ margin: -0.5rem 0;
+ padding: 0 0.5rem;
+ border-radius: 0.25rem;
+ background: transparent;
+ border: 0;
+ color: inherit;
+ font-size: inherit;
+ font-weight: 500;
+ cursor: pointer;
+ transition:
+ background-color 0.12s ease-out,
+ color 0.12s ease-out;
+
+ &:hover {
+ background-color: #f3f4f6;
+ color: var(--color-brand-primary-500);
+
+ :where(.dark) & {
+ background-color: #1f2937;
+ color: var(--color-brand-primary-300);
+ }
+ }
+
+ &:focus-visible {
+ outline: 2px solid var(--color-brand-primary-500);
+ outline-offset: 2px;
+ }
+}
+
.theme-switcher__menu {
min-width: 11rem;
margin-top: 0.25rem;