.validating-input-field {
    .validating-input-field-color-set();

    background-color: @validating-input-field-bg-color;
    font-family: @font-family-sans-serif;
    font-size: 13px;
    font-weight: 400;
    min-height: 32px;
    line-height: 32px;
    position: relative;

    .input-icon {
        position: absolute;
        top: 2px;
        left: 8px;
        z-index: 2;
        color: @validating-input-icon-color;
    }

    //
    // validation icon
    //

    .validation-icon {
        position: absolute;
        right: 9px;
        bottom: 0;
        z-index: 3;

        &.igz-icon-verify-error {
            font-size: 13px;
            color: @validation-icon-error-color;
        }

        &.igz-icon-verify-info {
            font-size: 16px;
            color: @validation-icon-info-color;
        }

        &.borders-focus, &.borders-hover {
            visibility: hidden;
        }
    }

    .validation-icon,
    .validation-rule-icon {
        &.igz-icon-verify-ok {
            font-size: 11px;
            color: @validation-icon-ok-color;
        }

        &.ncl-icon-close {
            font-size: 10px;
            color: @validation-icon-close-color;
        }
    }

    //
    // inputs
    //

    .input-counter, .textarea-counter {
        color: @input-textarea-counter-color;
        font-size: 12px;
        font-weight: 700;
        line-height: 32px;
        position: absolute;
        right: 6px;
        bottom: -28px;
        z-index: 3;

        &.invalid {
            color: @input-textarea-counter-invalid-color;
        }

        &.borders-hover, &.borders-focus {
            visibility: hidden;
        }
    }

    .input-field, .textarea-field {
        background-color: transparent;
        border: @input-textarea-field-border;
        border-radius: 2px;
        color: @input-textarea-field-color;
        display: block;
        position: relative;
        width: 100%;
        z-index: 2;
        outline: transparent none 0;
        box-shadow: none;

        &:read-only, &.borders-hover:not(:placeholder-shown), &.borders-focus:not(:placeholder-shown) {
            border-color: transparent;
        }

        &.borders-hover:hover {
            border: @input-textarea-field-border;
        }

        &:not(:disabled):not(:read-only) {
            &:focus {
                border: @input-textarea-field-not-disabled-hover-focus-border;
            }

            &.ng-invalid.ng-dirty, &.invalid.ng-dirty {
                &:focus {
                    background-color: @input-textarea-field-not-disabled-focus-invalid-bg-color;
                    border: @input-textarea-field-not-disabled-focus-invalid-border;
                }

                &:not(:focus) {
                    background-color: @input-textarea-field-not-disabled-invalid-bg-color;
                    border: @input-textarea-field-not-disabled-invalid-border;
                }
            }
        }
    }

    .input-field {
        padding: 0 10px;
        height: 36px;
        overflow: hidden;
        text-overflow: ellipsis;

        &.with-icon {
            padding: 0 10px 0 32px;
        }

        &.with-validation-icon {
            padding: 0 32px 0 10px;
        }
    }

    .textarea-field {
        line-height: normal;
        min-height: 70px;
    }

    .clear-button {
        font-size: 10px;
        position: absolute;
        right: 6px;
        top: 9px;
        cursor: pointer;
        color: white;
        padding: 4px 5px 3px;
        opacity: 0.64;
        background-color: @validating-input-clear-button-bg-color;
        border-radius: 50%;
        line-height: initial;
        z-index: 3;

        &:hover {
            opacity: 1;
        }
    }

    /* make sure not to display built-in clear button on Internet Explorer */
    input::-ms-clear {
        display: none;
    }

    //
    // validation pop-up
    //

    .validation-pop-up-wrapper {
        position: fixed;
        z-index: 4;

        .validation-pop-up {
            position: relative;
            border-radius: 3px;
            opacity: 1;
            box-shadow: @validation-pop-up-box-shadow;
            background-color: @validation-pop-up-bg-color;
            padding: 5px 18px 5px 14px;

            &.ng-hide {
                opacity: 0;
            }

            &.ng-hide-remove {
                transition: opacity 0.1s ease-in;
            }

            &.validation-pop-up-top {
                top: calc(-100% - 38px);
            }

            &.validation-pop-up-bottom {
                top: 2px;
            }

            .validation-rule {
                margin: 10px auto;
                line-height: 1.2;
                display: flex;
                flex-flow: row nowrap;
                align-items: baseline;

                .validation-rule-icon {
                    margin-right: 8px;
                    flex: none;
                }

                .validation-rule-label {
                    flex: auto;
                }

                .validation-rule-valid {
                    color: @validation-rule-valid-color;
                }

                .validation-rule-invalid {
                    color: @validation-rule-invalid-color;
                }
            }
        }
    }

    //
    // placeholder
    //

    ::-webkit-input-placeholder {
        /* Chrome, Chromium, Edge, Safari, Opera*/
        color: @input-textarea-placeholder;
    }

    :-moz-placeholder {
        /* Firefox 4-18 */
        color: @input-textarea-placeholder;
    }

    ::-moz-placeholder {
        /* Firefox 19+ */
        color: @input-textarea-placeholder;
    }

    :-ms-input-placeholder {
        /* - Internet Explorer 10–11
           - Internet Explorer Mobile 10-11 */
        color: @input-textarea-placeholder !important;
    }

    ::placeholder {
        /* modern browser versions */
        color: @input-textarea-placeholder;
    }

    //
    // textarea
    //

    .textarea-field {
        overflow: hidden;
        padding: 7px 10px 6px 10px;
        resize: none;

        &::-webkit-scrollbar {
            width: 4px;
            height: 4px;
        }

        &::-webkit-scrollbar-thumb {
            background-color: @textarea-field-scrollbar-thumb-bg-color;
            border-radius: 16px;
        }

        &:focus::-webkit-scrollbar-thumb {
            background-color: @textarea-field-focus-scrollbar-thumb-bg-color;
        }
    }

    &.with-counter {
        margin-bottom: 20px;

        .textarea-field {
            padding: 7px 30px 6px 10px;
        }
    }

    //
    // Cron schedule
    //

    .schedule-input-wrapper {
        display: flex;
        flex-flow: row wrap;
        align-items: baseline;

        .field.invalid .cron-select {
            background-color: @input-textarea-field-not-disabled-focus-invalid-bg-color;
            border: @input-textarea-field-not-disabled-focus-invalid-border;
        }

        .clear-button {
            margin-left: 15px;
            background-color: transparent;
            font-size: 14px;
            position: static;
        }
    }
}

// an invalid input field should be displayed as invalid in case it is in a submitted form even if the field is pristine
form.ng-submitted .validating-input-field {
    .validating-input-field-color-set();

    .input-field, .textarea-field {
        &:not([disabled]):not([readonly]) {
            &.ng-invalid, &.invalid {
                &:focus {
                    background-color: @input-textarea-field-not-disabled-focus-invalid-bg-color;
                    border: @input-textarea-field-not-disabled-focus-invalid-border;
                }

                &:not(:focus) {
                    background-color: @input-textarea-field-not-disabled-invalid-bg-color;
                    border: @input-textarea-field-not-disabled-invalid-border;
                }
            }
        }
    }
}
