/* ── Global flash messages ── */
.flash-messages {
    transition: opacity 0.35s ease;
}

.flash-messages.is-auto-dismissed {
    opacity: 0;
    pointer-events: none;
}

.messages {
    list-style: none;
    margin: 0 0 var(--space-5);
    padding: 0;
}

.alert {
    padding: var(--space-3) var(--space-4);
    margin-bottom: var(--space-3);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: 500;
    border: 1px solid transparent;
}

.alert--with-dismiss {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    padding-right: var(--space-2);
}

.alert__icon {
    flex-shrink: 0;
    margin-top: 0.1rem;
    opacity: 0.85;
}

.alert__body {
    flex: 1;
    min-width: 0;
}

.alert__dismiss {
    flex-shrink: 0;
    margin: -0.15rem -0.25rem 0 0;
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: var(--radius-sm);
    background: transparent;
    color: inherit;
    opacity: 0.55;
    cursor: pointer;
    font-size: 1.25rem;
    line-height: 1;
}

.alert__dismiss:hover,
.alert__dismiss:focus-visible {
    opacity: 1;
    background: rgba(0, 0, 0, 0.06);
    outline: none;
}

.alert--success,
.alert.success {
    background: #ecfdf5;
    border-color: #6ee7b7;
    color: #14532d;
}

.alert--danger,
.alert.error,
.alert.danger {
    background: #fef2f2;
    border-color: #fca5a5;
    color: #7f1d1d;
}

.alert--warning,
.alert.warning {
    background: #fffbeb;
    border-color: #fcd34d;
    color: #78350f;
}

.alert--info,
.alert.info,
.alert.debug {
    background: #eff6ff;
    border-color: #93c5fd;
    color: #1e3a8a;
}

