I'd be careful, specifically with the "×" in the input field. Some users may be familiar with input fields that contain a "×" to clear the input.
For example, some browsers interpret a standard <input type="search"/>
as a field with a "×" to clear the input.
Seen here in Chrome:

I agree that the aesthetics are nice, but I think it could look just as nice outside, perhaps before your error message?
ⓧ The promo code you entered is invalid. Please try again.
Alternatively, you could actually wire up the "ⓧ" to clear the input, and viola, solved that problem.