
html { scroll-behavior: smooth; }

/* Page fade */
body { opacity:0; transition:opacity .6s ease; }
body.page-loaded { opacity:1; }

/* Fade In */
.fade-in { opacity:0; animation:fadeIn .8s ease forwards; }
@keyframes fadeIn { to{opacity:1;} }

/* Slide Up */
.slide-up {
  opacity:0;
  transform:translateY(40px);
  transition:all .8s cubic-bezier(0.19,1,0.22,1);
}
.slide-up.visible {
  opacity:1;
  transform:translateY(0);
}

/* Hover */
a,button { transition:transform .3s ease,color .3s ease; }
a:hover,button:hover { transform:scale(1.08); }

/* Images */
img { transition:transform .4s ease; }
img:hover { transform:scale(1.08); }

/* Typing cursor */
.typing::after {
  content:"|";
  animation:blink 1s infinite;
}
@keyframes blink { 50%{opacity:0;} }
