g,
path {
  transition: all 250ms ease-in-out;
}

/* background gradient */
#chart_background > path {
  fill: url(#grad-background) !important;
}

/* saturation line effects */
@keyframes color_blink {
  0% {
    opacity: 0.6;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0.6;
  }
}
#saturation_100 path {
  stroke: url(#grad-sat) !important;
  animation: color_blink 3s infinite ease;
}
#saturation_100:hover path {
  stroke-width: 9 !important;
}

/* animated points */
@keyframes scale_anim {
  0% {
    opacity: 0.5;
    -webkit-transform: scale(0.75);
    transform: scale(0.75);
  }
  100% {
    opacity: 1;
    -webkit-transform: scale(1.5);
    transform: scale(1.5);
  }
}
g[id^="point_"] {
  animation: scale_anim 2s infinite ease-in-out;
}

/* bolder lines on hover */
g[id^="constant_dry_temp"] > path:hover,
g[id^="absolute_humidity"] > path:hover,
g[id^="dry_bulb_temperature"] > path:hover,
g[id^="constant_enthalpy"] > path:hover,
g[id^="constant_specific_volume"] > path:hover,
g[id^="constant_wet_bulb_temperature"] > path:hover,
g[id^="constant_relative_humidity"] > path:hover {
  stroke-width: 5 !important;
}

/* obscure zones on hover */
g[id^="zone_"] > path:hover {
  fill-opacity: 0.95 !important;
  stroke-dasharray: none !important;
  stroke-width: 1 !important;
}

/* specific formatting for lines on hover */
#constant_relative_humidity_40:hover path,
#constant_relative_humidity_60:hover path {
  stroke: #2f2ff1 !important;
  stroke-width: 3;
}

/* bigger points on hover */
g[id^="point_"],
g[id^="connector_"] {
  transform: scale(1);
  -webkit-transform-origin: 50% 50%;
  transform-origin: 50% 50%;
  transform-box: fill-box;
}
g[id^="point_"]:hover {
  -webkit-transform: scale(1.5);
  -webkit-transform-origin: 50% 50%;
  transform: scale(1.5);
  transform-origin: 50% 50%;
}
g[id^="connector_"]:hover {
  -webkit-transform: scale(1.1);
  -webkit-transform-origin: 50% 50%;
  transform: scale(1.1);
  transform-origin: 50% 50%;
}
