/* v17: motion only — no geometry changes to header/footer or content layout. */
.nav a, .footer-links a, .nc387-footer-channels a {transition: color .25s ease, opacity .25s ease;}
.nav a:hover, .footer-links a:hover, .nc387-footer-channels a:hover {color:var(--green,#a7ff58);}
.btn, .text-link {transition:transform .32s cubic-bezier(.2,.8,.2,1), background-color .3s ease, box-shadow .3s ease, color .3s ease;}
.btn:hover {transform:translateY(-4px);box-shadow:0 12px 35px rgba(167,255,88,.19);}
.btn:active {transform:translateY(-1px) scale(.98);}
.text-link:hover {transform:translateX(5px);}
.work {transition:box-shadow .4s ease;}
.work:hover {box-shadow:0 18px 65px rgba(0,0,0,.32);}
.work img {transition:transform .9s cubic-bezier(.22,1,.36,1),filter .65s ease;}
.work:hover img {transform:scale(1.075);filter:brightness(.92);}
.service-visual .visual-label {transition:transform .35s ease, background .35s ease;}
.service-visual:hover .visual-label {transform:translateY(-5px);background:rgba(8,18,10,.95);}
.nc387-contact-form-wrap input, .nc387-contact-form-wrap select, .nc387-contact-form-wrap textarea {transition:border-color .25s ease,box-shadow .25s ease;}
.nc387-contact-form-wrap input:focus, .nc387-contact-form-wrap select:focus, .nc387-contact-form-wrap textarea:focus {box-shadow:0 0 0 3px rgba(167,255,88,.09);}
@media(prefers-reduced-motion:reduce){.btn,.text-link,.work,.work img,.service-visual .visual-label,.nav a,.footer-links a,.nc387-footer-channels a{transition:none!important;animation:none!important;}}

/* v18 safety: content is never hidden while waiting for animations. */
.reveal, .hero .reveal, .service-copy .reveal, .about .reveal,
.works .reveal, .contact .reveal {opacity:1!important;visibility:visible!important;transform:none!important;}
.nc387-motion-off .btn,.nc387-motion-off .text-link,.nc387-motion-off .work img,.nc387-motion-off .service-visual img {transition:none!important;animation:none!important;}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;visibility:visible!important;transform:none!important;}}

/* v19: content never hidden, even if scripts fail */
.reveal{opacity:1!important;visibility:visible!important;transform:none!important}
.nc387-motion-off .btn:hover,.nc387-motion-off .work:hover img,.nc387-motion-off .service-visual:hover img{transform:none!important}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important}}

/* v20: keyframe motion works even with legacy reveal overrides; content never fades out. */
@keyframes nc387-safe-rise{from{translate:0 var(--nc387-rise,23px)}to{translate:0 0}}
.nc387-rise-now{animation:nc387-safe-rise var(--nc387-duration,850ms) cubic-bezier(.18,.8,.2,1) both!important;}
@media(prefers-reduced-motion:reduce){.nc387-rise-now{animation:none!important;}}
