.alert {
    margin: 0;
    padding: 1rem;
    z-index: 10;
    display: flex;
    align-items: center;
    gap: 1rem;
    border-radius: 0.5rem;
    border: 1px solid;
    line-height: 1.5;
    background-color: var(--base-color);
    color: white;
    font-weight: 500;

    svg { height: 1.5em; }

    .type {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
    }

    main { flex: 1; }

    .closer {
        display: grid;
        place-items: center;
        background: none;
        border: none;
        padding: 0.25rem;
        border-radius: 0.25rem;
        color: inherit;
        transition: background-color 0.2s ease, opacity 0.2s ease;
        will-change: background-color, opacity;

        &:hover { background-color: var(--accent-color); }

        &:focus-visible {
            outline: 2px solid currentColor;
            outline-offset: 2px;
        }

        @media (prefers-reduced-motion: reduce) { transition: none; }
    }

    &.alert--success { --base-color: var(--color-flash-success-background); }
    &.alert--error   { --base-color: var(--color-flash-error-background); }
    &.alert--warning { --base-color: var(--color-flash-warning-background); }
    &.alert--info    { --base-color: var(--color-flash-info-background); }

    --accent-color: color-mix(in oklab, var(--base-color) 80%, black 20%);
    border-color: var(--accent-color);
}
