/* Ambient motion only: the portrait and entire scene never follow input. */
.orbit-scene{position:absolute;inset:0}
.hero-visual .satellite-lectory{animation:satellite-float 9s ease-in-out infinite;--drift:12px;--sway:3px}
.hero-visual .satellite-books{animation:satellite-float 10s -3s ease-in-out infinite;--drift:10px;--sway:-3px}
.hero-visual .satellite-fund{animation:satellite-float 8s -2s ease-in-out infinite;--drift:9px;--sway:2px}
.hero-visual .ring-a{animation:ring-breathe-a 20s ease-in-out infinite}
.hero-visual .ring-b{animation:ring-breathe-b 23s -7s ease-in-out infinite}
.hero-visual .light-orb{animation:orb-breathe 14s -4s ease-in-out infinite}
.motion-on .orbit-brand:hover,.motion-on .orbit-brand:focus-visible,.hero-visual:focus-within .orbit-brand{animation-play-state:paused}
.english-art>span:first-child{animation:hello-float 9s ease-in-out infinite}
.english-art>span:nth-child(2){animation:greeting-float 10s -3s ease-in-out infinite}
.english-art .hello-spark{animation:spark-turn 28s linear infinite}
.contact-primary{animation:contact-glow 7s ease-in-out infinite}
.contact-primary:hover,.contact-primary:focus-visible{animation-play-state:paused}
.motion-on .reveal-target{transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}
.motion-on .reveal-target:not(.is-visible){opacity:0;transform:translateY(24px)}
@keyframes satellite-float{0%,100%{translate:0 0}50%{translate:var(--sway,0px) calc(-1 * var(--drift))}}
@keyframes ring-breathe-a{0%,100%{transform:rotate(-32deg)}50%{transform:rotate(-24deg)}}
@keyframes ring-breathe-b{0%,100%{transform:rotate(25deg)}50%{transform:rotate(18deg)}}
@keyframes orb-breathe{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-4px,-6px) scale(1.018)}}
@keyframes hello-float{0%,100%{translate:0 0}50%{translate:-3px -5px}}
@keyframes greeting-float{0%,100%{translate:0 0}50%{translate:3px 4px}}
@keyframes spark-turn{to{rotate:360deg}}
@keyframes contact-glow{0%,100%{box-shadow:0 0 22px -20px #b8a2ef33,inset 0 1px 0 #ffffff20}50%{box-shadow:0 0 35px -14px #b8a2ef57,inset 0 1px 0 #ffffff40}}
@media(max-width:800px){.hero-visual .satellite-lectory{--drift:8px;--sway:2px}.hero-visual .satellite-books{--drift:7px;--sway:-2px}.hero-visual .satellite-fund{--drift:6px;--sway:1.5px}}
@media(max-width:600px){.motion-on .reveal-target:not(.is-visible){transform:translateY(16px)}}
@media(prefers-reduced-motion:reduce){.reveal-target{opacity:1!important;transform:none!important;transition:none!important}}
.hero-visual:not(.in-view) .orbit-brand,.hero-visual:not(.in-view) .light-orb,.hero-visual:not(.in-view) .ring-a,.hero-visual:not(.in-view) .ring-b,.english-art:not(.in-view) *, .contact-primary:not(.in-view), body:not(.motion-on) .hero-visual *,body:not(.motion-on) .english-art *,body:not(.motion-on) .contact-primary{animation-play-state:paused!important}
