<commit_before>.o_form_view {
    background-color: @odoo-view-background-color;

    // Utility classes (+ oe_edit_only, oe_read_only, o_label_nowrap, o_text_overflow)
    .o_form_invisible, .o_form_field_empty {
        display: none!important;
    }
    .oe_form_box_info {
        .bg-info;
        .o-webclient-padding(@top: 5px, @bottom: 5px);
        > p {
            margin: auto;
        }
    }
    .oe_text_center {
        text-align: center;
    }
    .oe_link {
        .btn-link;
    }
    .oe_grey {
        opacity: 0.5;
    }

    // Readonly specific rules
    &.o_form_readonly {
        .oe_edit_only {
            .o_form_invisible;
        }

        .o_form_uri { // FIXME maybe global?
            display: inline-block;

            color: @odoo-main-text-color;
            &:first-line {
                color: @link-color;
            }
            &:hover {
                color: darken(@odoo-main-text-color, 1%); // hack required on chrome
                &:first-line {
                    color: darken(@link-color, 15%);
                }
            }
        }
    }

    // Editable specific rules
    &.o_form_editable {
        .oe_read_only {
            .o_form_invisible;
        }

        .o_form_field_many2manytags {
            .o-input();

            > .o_form_field {
                .o-flex(1, 0, 100px);
                position: initial;
                max-width: 100%;

                > .o_form_input_dropdown > .o_form_input {
                    border-style: none!important;
                }
            }
        }

        .o_form_field_monetary {
            .o-input();
            .o-align-items(baseline);

            > .o_form_input {
                border-style: none!important;
                width: 100px;
                .o-flex(1, 0, auto);
            }
        }
    }

    // Button box
    .oe_button_box {
        .oe_stat_button {
            &:not(:hover) .o_stat_info > .o_hover {
                display: none !important;
            }
            &:hover .o_stat_info > .o_not_hover {
                display: none !important
            }
        }
    }

    // Title
    .oe_title {
        .o_priority > .o_priority_star {
            font-size: inherit;
        }
    }  

    // Groups
    .o_group {
        &.o_label_nowrap {
            .o_form_label {
                white-space: nowrap;
            }
        }

        .o_form_label {
            font-weight: normal;
        }
        .o_td_label .o_form_label {
            font-weight: bold;
            margin-right: 0px;
        }
    }
    &.oe_form_configuration {
        .o_group .o_form_label {
            white-space: nowrap;
        }
    }

    // Separators
    .o_horizontal_separator {
        font-size: @font-size-h2;
        margin: @odoo-form-spacing-unit 0;
        &:empty {
            height: @odoo-form-spacing-unit * 2;
        }
    }

    // Labels
    .o_form_label {
        font-size: @font-size-base; // The label muse have the same size whatever their position
        line-height: @line-height-base;
        margin-right: @odoo-form-spacing-unit;
        &.o_form_invalid {
            color: @brand-danger;
        }
    }

    // Tags
    .o_form_field_many2manytags {
        .badge {
            cursor: pointer;
            color: white;
            font-size: 12px;
            border: 0;

            > ul {
                @colored-tag-width: 45px;
                width: 5*@colored-tag-width + 3px;
                > li {
                    float: left;
                    color: black;
                    > span {
                        border-radius: 6px;
                        width: @colored-tag-width;
                        height: 30px;
                        display: inline-block;
                        border: 2px solid white;
                        cursor: pointer;
                        padding: 0;

                        &:hover {
                            opacity: 0.8;
                        }
                    }
                }
                > li:last-child {
                    margin-top: 7px;
                    cursor: auto;
                }
            }
        }
    }

    .o_form_invalid {
        &.o_form_input, .o_form_input, &.o_form_textarea, .o_form_textarea {
            border-color: @brand-danger;
        }
    }

    // Boolean
    .o_form_field_boolean {
        margin: 0 @odoo-form-spacing-unit 0 0;
    }

    // Numbers
    .o_form_field_number {
        white-space: nowrap;
    }

    // Radio buttons
    .o_form_field_radio .o_form_radio {
        outline: none;
    }
    
    // Translate icon
    .o_field_translate {
        padding: 0;
        display: none;
        cursor: pointer;
        width: 12px;
        vertical-align: top;<commit_msg>[FIX] web: force red color for invalid form elements<commit_after>.o_form_view {
    background-color: @odoo-view-background-color;

    // Utility classes (+ oe_edit_only, oe_read_only, o_label_nowrap, o_text_overflow)
    .o_form_invisible, .o_form_field_empty {
        display: none!important;
    }
    .oe_form_box_info {
        .bg-info;
        .o-webclient-padding(@top: 5px, @bottom: 5px);
        > p {
            margin: auto;
        }
    }
    .oe_text_center {
        text-align: center;
    }
    .oe_link {
        .btn-link;
    }
    .oe_grey {
        opacity: 0.5;
    }

    // Readonly specific rules
    &.o_form_readonly {
        .oe_edit_only {
            .o_form_invisible;
        }

        .o_form_uri { // FIXME maybe global?
            display: inline-block;

            color: @odoo-main-text-color;
            &:first-line {
                color: @link-color;
            }
            &:hover {
                color: darken(@odoo-main-text-color, 1%); // hack required on chrome
                &:first-line {
                    color: darken(@link-color, 15%);
                }
            }
        }
    }

    // Editable specific rules
    &.o_form_editable {
        .oe_read_only {
            .o_form_invisible;
        }

        .o_form_field_many2manytags {
            .o-input();

            > .o_form_field {
                .o-flex(1, 0, 100px);
                position: initial;
                max-width: 100%;

                > .o_form_input_dropdown > .o_form_input {
                    border-style: none!important;
                }
            }
        }

        .o_form_field_monetary {
            .o-input();
            .o-align-items(baseline);

            > .o_form_input {
                border-style: none!important;
                width: 100px;
                .o-flex(1, 0, auto);
            }
        }
    }

    // Button box
    .oe_button_box {
        .oe_stat_button {
            &:not(:hover) .o_stat_info > .o_hover {
                display: none !important;
            }
            &:hover .o_stat_info > .o_not_hover {
                display: none !important
            }
        }
    }

    // Title
    .oe_title {
        .o_priority > .o_priority_star {
            font-size: inherit;
        }
    }  

    // Groups
    .o_group {
        &.o_label_nowrap {
            .o_form_label {
                white-space: nowrap;
            }
        }

        .o_form_label {
            font-weight: normal;
        }
        .o_td_label .o_form_label {
            font-weight: bold;
            margin-right: 0px;
        }
    }
    &.oe_form_configuration {
        .o_group .o_form_label {
            white-space: nowrap;
        }
    }

    // Separators
    .o_horizontal_separator {
        font-size: @font-size-h2;
        margin: @odoo-form-spacing-unit 0;
        &:empty {
            height: @odoo-form-spacing-unit * 2;
        }
    }

    // Labels
    .o_form_label {
        font-size: @font-size-base; // The label muse have the same size whatever their position
        line-height: @line-height-base;
        margin-right: @odoo-form-spacing-unit;
        &.o_form_invalid {
            color: @brand-danger;
        }
    }

    // Tags
    .o_form_field_many2manytags {
        .badge {
            cursor: pointer;
            color: white;
            font-size: 12px;
            border: 0;

            > ul {
                @colored-tag-width: 45px;
                width: 5*@colored-tag-width + 3px;
                > li {
                    float: left;
                    color: black;
                    > span {
                        border-radius: 6px;
                        width: @colored-tag-width;
                        height: 30px;
                        display: inline-block;
                        border: 2px solid white;
                        cursor: pointer;
                        padding: 0;

                        &:hover {
                            opacity: 0.8;
                        }
                    }
                }
                > li:last-child {
                    margin-top: 7px;
                    cursor: auto;
                }
            }
        }
    }

    .o_form_invalid {
        &.o_form_input, .o_form_input, &.o_form_textarea, .o_form_textarea {
            border-color: @brand-danger!important; // enterprise o_form_required rule overrides this without !important
        }
    }

    // Boolean
    .o_form_field_boolean {
        margin: 0 @odoo-form-spacing-unit 0 0;
    }

    // Numbers
    .o_form_field_number {
        white-space: nowrap;
    }

    // Radio buttons
    .o_form_field_radio .o_form_radio {
        outline: none;
    }
    
    // Translate icon
    .o_field_translate {
        padding: 0;
        display: none;
        cursor: pointer;
        width: 12px;
        vertical-align: top;
{'fraction_non_alphanumeric': 0.10219352193521936, 'fraction_numerical': 0.00963509635096351, 'mean_word_length': 1.0606124604012672, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3004285', 'n_tokens_mistral': 3140, 'n_tokens_neox': 2901, 'n_words': 510}