.dialog {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 50;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease-in-out;
    padding: 1rem;

    &.show {
        opacity: 1;
        pointer-events: all;

        .dialog-backdrop {
            opacity: 1;
        }

        .dialog-content {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
    }

    .dialog-backdrop {
        background-color: rgba(0, 0, 0, 0.8);
        backdrop-filter: blur(2px);
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        transition: opacity 0.25s ease-in-out;
    }

    &.dialog-alert {
        .dialog-backdrop {
            pointer-events: none;
        }
    }

    .dialog-content {
        --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
        box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
        padding: 1.5rem;
        max-height: 100%;
        overflow-y: auto;
        background-color: hsl(var(--background));
        border-width: 1px;
        z-index: 51;
        border-radius: var(--radius);
        width: 100%;
        max-width: 500px;
        transform: translateY(10px) scale(0.95);
        opacity: 0;
        transition:
            transform 0.25s ease-out,
            opacity 0.25s ease-out;
    }

    &.dialog-lg {
        .dialog-content {
            max-width: 1200px;
        }
    }
}