/* Styling for core.widgets.password.JMSPasswordInput (the Show/Hide eye button).
 *
 * Bootstrap reveals a field's error message with `.form-control.is-invalid ~ .invalid-feedback`
 * - a SIBLING selector, so it only matches while the input and the message sit side by side.
 * The eye button needs the input inside `.jms-password > .input-group`, which drops the input
 * two levels below the message crispy renders after it, and the rule stops matching: the error
 * is still in the page, still correct, and invisible. Mirror the validation state onto the
 * wrapper (see JMSPasswordInput.get_context) and put the rule back.
 *
 * Not the first widget to hit this: main.css has `.jms-file-input .invalid-feedback` for the
 * same reason. Any widget that wraps its input needs a rule like one of these.
 */
.jms-password.is-invalid ~ .invalid-feedback {
    display: block;
}
