/* ベースとなる共通設定 */
.hvr-common {
  display: inline-block;
  vertical-align: middle;
  transform: perspective(1px) translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  transition-duration: 0.3s;
}

/* 拡大 */
.hvr-grow {
  display: inline-block; vertical-align: middle;
  transform: perspective(1px) translateZ(0);
  transition-duration: .3s; transition-property: transform;
}
.hvr-grow:hover, .hvr-grow:focus, .hvr-grow:active { transform: scale(1.1); }

/* 縮小 */
.hvr-shrink {
  display: inline-block; vertical-align: middle;
  transform: perspective(1px) translateZ(0);
  transition-duration: .3s; transition-property: transform;
}
.hvr-shrink:hover, .hvr-shrink:focus, .hvr-shrink:active { transform: scale(0.9); }

/* 回転 */
.hvr-rotate {
  display: inline-block; vertical-align: middle;
  transform: perspective(1px) translateZ(0);
  transition-duration: .3s; transition-property: transform;
}
.hvr-rotate:hover { transform: rotate(4deg); }

/* 歪み（スキュー） */
.hvr-skew:hover { transform: skew(-10deg); }

/* パルス（鼓動のような動き） */
@keyframes hvr-pulse {
  25% { transform: scale(1.1); }
  75% { transform: scale(0.9); }
}
.hvr-pulse:hover {
  animation-name: hvr-pulse;
  animation-duration: 1s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
}

/* ウォブル（揺れ） */
@keyframes hvr-wobble-vertical {
  16.65% { transform: translateY(8px); }
  33.3%  { transform: translateY(-6px); }
  49.95% { transform: translateY(4px); }
  66.6%  { transform: translateY(-2px); }
  83.25% { transform: translateY(1px); }
  100%   { transform: translateY(0); }
}
.hvr-wobble-vertical:hover {
  animation-name: hvr-wobble-vertical;
  animation-duration: 1s;
  animation-iteration-count: 1;
}

/* Sweep To Right（左から右へ背景が流れる） */
.hvr-sweep-to-right {
  display: inline-block; vertical-align: middle;
  position: relative;
  transition-property: color; transition-duration: .3s;
}
.hvr-sweep-to-right:before {
  content: "";
  position: absolute; z-index: -1;
  top: 0; left: 0; right: 0; bottom: 0;
  background: #2098D1;
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition-property: transform;
  transition-duration: 0.3s;
  transition-timing-function: ease-out;
}
.hvr-sweep-to-right:hover { color: white; }
.hvr-sweep-to-right:hover:before { transform: scaleX(1); }