/* Motion-only polish. Keep the established palette, typography and layout. */
.nav a::after{transform-origin:right;transition:transform .36s var(--ease)}
.nav a:hover::after,.nav a:focus-visible::after,.nav a[aria-current]::after{transform-origin:left;transform:scaleX(1)}
.btn,.pub-action{transition:transform .28s var(--ease),background .28s,border-color .28s,box-shadow .32s,scale .18s var(--ease)}
.hero-cta .btn>span{display:inline-block;transition:transform .32s var(--ease)}
.btn-ghost:hover>span,.btn-ghost:focus-visible>span{transform:translateY(3px)}
.live-motion .motion-magnet.btn-ghost:hover>span{transform:translateY(3px)}
.project-list li{transition:transform .45s var(--ease),border-color .3s,box-shadow .45s var(--ease)}
.focus-list li::before{transition:color .3s}
.project-list li:focus-within{border-color:#b6c8f5;box-shadow:0 10px 26px #162c5410}
.pub-list li:focus-within{background:#f8faff}
.contact-list a,.footer-links a{text-decoration-thickness:1px;text-underline-offset:.25em;transition:color .25s,text-underline-offset .25s}
.contact-list a:hover,.footer-links a:hover{text-underline-offset:.4em}
.motion-surface::after{transition:opacity .4s var(--ease)}
.reveal.is-pending{transform:translateY(16px)}
.reveal.is-visible{transition:opacity .65s var(--ease),transform .65s var(--ease),border-color .3s,box-shadow .4s;transition-delay:var(--reveal-delay,0ms),var(--reveal-delay,0ms),0ms,0ms}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .project-list li:hover{transform:translateY(-3px);box-shadow:0 12px 30px #162c5412}
 .btn-primary:hover,.btn-ghost:hover{transform:translateY(-2px)}
 .btn:active,.pub-action:active{scale:.98}
}
@media(prefers-reduced-motion:no-preference){
 .hero-content{animation:none}
 .hero-content>*{animation:detail-enter .72s var(--ease) both}
 .hero-content>:nth-child(2){animation-delay:60ms}
 .hero-content>:nth-child(3){animation-delay:120ms}
 .hero-content>:nth-child(4){animation-delay:180ms}
 .hero-content>:nth-child(5){animation-delay:220ms}
 .hero-content>:nth-child(6){animation-delay:260ms}
 .hero-portrait{animation:detail-enter .95s 140ms var(--ease) both}
 @keyframes detail-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
}
@media(hover:none){
 .btn-primary:hover,.btn-ghost:hover{transform:none}
}
@media(prefers-reduced-motion:reduce){
 .reveal.is-pending,.reveal.is-visible{opacity:1;transform:none}
 .hero-content>*,.hero-portrait{animation:none}
}
