diff --git a/src/app/(site)/page.tsx b/src/app/(site)/page.tsx
index 9abe462e..41fc4856 100644
--- a/src/app/(site)/page.tsx
+++ b/src/app/(site)/page.tsx
@@ -228,6 +228,7 @@ export default async function Home() {
fill
priority
sizes="100vw"
+ className="ken-burns"
style={{ objectFit: "cover", objectPosition: "center 20%" }}
/>
summary .details-open\:rotate-180 {
font-weight: 900;
letter-spacing: -0.02em;
}
+
+/* ── Smooth motion (landing) ───────────────────────────────────────── */
+html {
+ scroll-behavior: smooth;
+}
+
+/* Soft, slow drift for hero artwork (Ken Burns). */
+.ken-burns {
+ animation: ken-burns 20s ease-in-out infinite alternate;
+ will-change: transform;
+}
+@keyframes ken-burns {
+ from {
+ transform: scale(1.02) translateY(0);
+ }
+ to {
+ transform: scale(1.08) translateY(-1.5%);
+ }
+}
+
+/* Gentle breathing pulse for the brand glows behind Frank / the hero. */
+.brand-halo {
+ animation: hero-halo-pulse 6s ease-in-out infinite;
+}
+@keyframes hero-halo-pulse {
+ 0%,
+ 100% {
+ opacity: 0.55;
+ transform: scale(1);
+ }
+ 50% {
+ opacity: 0.9;
+ transform: scale(1.07);
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ html {
+ scroll-behavior: auto;
+ }
+ .ken-burns,
+ .brand-halo {
+ animation: none;
+ }
+}
diff --git a/src/components/motion-reveal.tsx b/src/components/motion-reveal.tsx
index e094ec4d..ed31d947 100644
--- a/src/components/motion-reveal.tsx
+++ b/src/components/motion-reveal.tsx
@@ -18,7 +18,7 @@ export function Reveal({ children, className, delay = 0 }: RevealProps) {
initial={{ opacity: 0, y: prefersReducedMotion ? 0 : 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: "-40px" }}
- transition={{ duration: 0.45, delay, ease: [0.25, 0.1, 0.25, 1] }}
+ transition={{ duration: 0.55, delay, ease: [0.22, 1, 0.36, 1] }}
>
{children}