diff --git a/src/app/globals.css b/src/app/globals.css
index 4194d31d..786b838d 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -349,3 +349,20 @@ a {
.markdown-body [width] {
width: auto;
}
+
+/*
+ ACCESSIBILITY: Respect prefers-reduced-motion OS preference
+ WCAG 2.3.3 — Animation from Interactions
+ This is a CSS-level safety net that works even before JS loads,
+ catching Tailwind animate classes and any CSS transitions.
+ */
+@media (prefers-reduced-motion: reduce) {
+ *,
+ *::before,
+ *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ scroll-behavior: auto !important;
+ }
+}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index e9a8aeee..2593bfc8 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -15,6 +15,7 @@ import 'github-markdown-css/github-markdown.css';
import PageTrackerInit from '@/components/PageTrackerInit';
import './globals.css';
import '@/styles/resume-print.css';
+import { MotionConfig } from 'framer-motion';
const inter = Inter({ subsets: ['latin'], variable: '--font-inter' });
const spaceGrotesk = Space_Grotesk({
@@ -123,30 +124,32 @@ export default function RootLayout({
className={`${inter.variable} ${spaceGrotesk.variable} ${barlowCondensed.variable}`}
suppressHydrationWarning
>
-
-
-
-
-
-
-
-
- {/* */}
- {children}
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {/* */}
+ {children}
+
+
+
+
+
+
+