@charset "UTF-8";

/*!
Animate.css - http://daneden.me/animate
Licensed under the MIT license - Copyright (c) 2013 Daniel Eden
*/

.animated {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.animated.infinite {
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
}

.animated.hinge {
  -webkit-animation-duration: 2s;
  animation-duration: 2s;
}

/* ===== FADE IN ===== */
@-webkit-keyframes fadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes fadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}
.fadeIn {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@-webkit-keyframes fadeInDown {
  0% { opacity: 0; -webkit-transform: translateY(-30px); transform: translateY(-30px); }
  100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes fadeInDown {
  0% { opacity: 0; transform: translateY(-30px); }
  100% { opacity: 1; transform: translateY(0); }
}
.fadeInDown {
  -webkit-animation-name: fadeInDown;
  animation-name: fadeInDown;
}

@-webkit-keyframes fadeInUp {
  0% { opacity: 0; -webkit-transform: translateY(30px); transform: translateY(30px); }
  100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes fadeInUp {
  0% { opacity: 0; transform: translateY(30px); }
  100% { opacity: 1; transform: translateY(0); }
}
.fadeInUp {
  -webkit-animation-name: fadeInUp;
  animation-name: fadeInUp;
}

@-webkit-keyframes fadeInLeft {
  0% { opacity: 0; -webkit-transform: translateX(-30px); transform: translateX(-30px); }
  100% { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes fadeInLeft {
  0% { opacity: 0; transform: translateX(-30px); }
  100% { opacity: 1; transform: translateX(0); }
}
.fadeInLeft {
  -webkit-animation-name: fadeInLeft;
  animation-name: fadeInLeft;
}

@-webkit-keyframes fadeInRight {
  0% { opacity: 0; -webkit-transform: translateX(30px); transform: translateX(30px); }
  100% { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes fadeInRight {
  0% { opacity: 0; transform: translateX(30px); }
  100% { opacity: 1; transform: translateX(0); }
}
.fadeInRight {
  -webkit-animation-name: fadeInRight;
  animation-name: fadeInRight;
}

/* ===== FADE OUT ===== */
@-webkit-keyframes fadeOut {
  0% { opacity: 1; }
  100% { opacity: 0; }
}
@keyframes fadeOut {
  0% { opacity: 1; }
  100% { opacity: 0; }
}
.fadeOut {
  -webkit-animation-name: fadeOut;
  animation-name: fadeOut;
}

/* ===== ZOOM IN ===== */
@-webkit-keyframes zoomIn {
  0% { opacity: 0; -webkit-transform: scale(.3); transform: scale(.3); }
  50% { opacity: 1; }
}
@keyframes zoomIn {
  0% { opacity: 0; transform: scale(.3); }
  50% { opacity: 1; }
}
.zoomIn {
  -webkit-animation-name: zoomIn;
  animation-name: zoomIn;
}

/* ===== SLIDE IN ===== */
@-webkit-keyframes slideInDown {
  0% { opacity: 0; -webkit-transform: translateY(-2000px); transform: translateY(-2000px); }
  100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes slideInDown {
  0% { opacity: 0; transform: translateY(-2000px); }
  100% { transform: translateY(0); }
}
.slideInDown {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

@-webkit-keyframes slideInUp {
  0% { opacity: 0; -webkit-transform: translateY(2000px); transform: translateY(2000px); }
  100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes slideInUp {
  0% { opacity: 0; transform: translateY(2000px); }
  100% { opacity: 1; transform: translateY(0); }
}
.slideInUp {
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

@-webkit-keyframes slideInLeft {
  0% { opacity: 0; -webkit-transform: translateX(-2000px); transform: translateX(-2000px); }
  100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes slideInLeft {
  0% { opacity: 0; transform: translateX(-2000px); }
  100% { transform: translateX(0); }
}
.slideInLeft {
  -webkit-animation-name: slideInLeft;
  animation-name: slideInLeft;
}

@-webkit-keyframes slideInRight {
  0% { opacity: 0; -webkit-transform: translateX(2000px); transform: translateX(2000px); }
  100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes slideInRight {
  0% { opacity: 0; transform: translateX(2000px); }
  100% { transform: translateX(0); }
}
.slideInRight {
  -webkit-animation-name: slideInRight;
  animation-name: slideInRight;
}

/* ===== BOUNCE ===== */
@-webkit-keyframes bounceIn {
  0% { opacity: 0; -webkit-transform: scale(.3); transform: scale(.3); }
  50% { opacity: 1; -webkit-transform: scale(1.05); transform: scale(1.05); }
  70% { -webkit-transform: scale(.9); transform: scale(.9); }
  100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes bounceIn {
  0% { opacity: 0; transform: scale(.3); }
  50% { opacity: 1; transform: scale(1.05); }
  70% { transform: scale(.9); }
  100% { opacity: 1; transform: scale(1); }
}
.bounceIn {
  -webkit-animation-name: bounceIn;
  animation-name: bounceIn;
}

/* ===== PULSE ===== */
@-webkit-keyframes pulse {
  0% { -webkit-transform: scale(1); transform: scale(1); }
  50% { -webkit-transform: scale(1.05); transform: scale(1.05); }
  100% { -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes pulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}
.pulse {
  -webkit-animation-name: pulse;
  animation-name: pulse;
}

/* ===== CUSTOM ANIMATIONS FOR LIBRARY SITE ===== */

/* Ken Burns zoom effect for hero backgrounds */
@keyframes kenburns {
  0% { transform: scale(1); }
  100% { transform: scale(1.15); }
}

/* Slow fade for slideshow */
@keyframes heroFadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes heroFadeOut {
  0% { opacity: 1; }
  100% { opacity: 0; }
}

/* Text reveal animation */
@keyframes textReveal {
  0% {
    opacity: 0;
    transform: translateY(40px);
    letter-spacing: 8px;
  }
  100% {
    opacity: 1;
    transform: translateY(0);
    letter-spacing: 2px;
  }
}

/* Scroll indicator bounce */
@keyframes scrollBounce {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0) translateX(-50%); }
  40% { transform: translateY(-10px) translateX(-50%); }
  60% { transform: translateY(-5px) translateX(-50%); }
}
