.modal.o_technical_modal {
    --o-control-panel-breadcrumbs-display: none;
    --formView-sheetBg-padding-x: var(--modal-padding);

    backdrop-filter: grayscale(50%);

    .modal-content {
        .modal-header .modal-title {
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
        }
    }

    &.o_modal_no_body_padding .modal-body {
        padding: 0;
    }

    .modal-footer {
        text-align: left;

        button {
            margin: 0; // Reset boostrap.
        }

        button.o-default-button:not(:only-child) {
            display: none;
        }

        @include media-breakpoint-down(md) {
            .btn, .o_file_input {
                width: 100%;
            }

            .btn {
                text-overflow: ellipsis;
                white-space: inherit;
            }
        }

        @include media-breakpoint-down(sm) {
            --btn-padding-y: #{map-get($spacers, 2)};
        }
    }

    &.o_modal_design_minimal {
        --modal-header-border-width: 0;
        --modal-footer-border-width: 0;

        $_halfPadding: calc(var(--modal-padding) * 0.5);

        --modal-padding: var(--Dialog-padding, #{map-get($spacers, 3)});
        --modal-header-padding-x: var(--modal-padding);
        --modal-header-padding-y: var(--modal-padding);
        --modal-header-padding: var(--modal-padding) var(--modal-padding) #{$_halfPadding};
        
        &.o_modal_no_body_padding .modal-body {
            padding: 0;

            .o_form_sheet_bg {
                --formView-sheetBg-padding-x: var(--modal-padding);
            }
        }

        &.o_modal_body_padding {
            .modal-body {
                padding: #{$_halfPadding} var(--modal-padding);
            }

            @include media-breakpoint-up(sm) {
                --Dialog-padding: #{map-get($spacers, 4)};
            }
        }

        @include media-breakpoint-down(sm) {
            .modal-dialog {
                --modal-margin: #{$modal-dialog-margin * 4 $modal-dialog-margin * 2};

                display: flex;
                margin: 0;
                padding: var(--modal-margin);
                height: 100vh;
            }

            .modal-content {
                max-height: calc(100vh - #{$modal-dialog-margin * 8});
            }
        }

        @include media-breakpoint-up(sm) {
            .btn-close.position-sm-absolute {
                margin: map-get($spacers, 2);
            }
        }
    }

    @include media-breakpoint-down(sm) {
        &.o_modal_full {
            --modal-margin: 0;
            --modal-border-width: 0;
            --modal-border-radius: 0;
            --modal-box-shadow: #{$border-width * -1 0 0 $border-color};

            overflow: visible;

            .modal-dialog, .modal-content, .modal-body {
                height: 100%;
            }

            .modal-header {
                button.oi-arrow-left, .o_expand_button {
                    // Use BS default btn-close padding logic
                    padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
                }

                .o_expand_button {
                    // Use BS default btn-close margin logic
                    margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
                }

                button.oi-arrow-left {
                    // Invert BS default btn-close margin logic
                    margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x));
                }
            }

            .modal-body {
                overflow-y: auto;
            }

            @media (prefers-reduced-motion: no-preference) {
                .modal-content {
                    animation: modal-in-sm $o-modal-animation-duration $o-easing-enter;
                }
            }
        }
    }
}

.modal.o_inactive_modal {
    z-index: $zindex-modal-backdrop - 1;
}

.o_dialog > .modal {
    display: block;
    overflow: hidden;
}

.modal-body:focus-visible {
    outline: none;
}

@include media-breakpoint-up(sm) {
    .modal-content {
        .modal-header {
            cursor: grab;
        }
    }

    .modal-fs {
        width: calc(100% - #{2 * $modal-dialog-margin-y-sm-up});
        max-width: none;
    }
}

@keyframes modal-in-sm {
    from {
        transform: translateX(100%);
    }
}
