/* ============================================================
   V2 — Alerts (banners)
   ============================================================
   Контейнерні повідомлення (info/success/warn/danger).
   Можуть мати іконку, тайтл+опис, action-кнопки, × dismiss.

   Структура:
     <div class="v2-alert v2-alert-warn" role="alert">
       <svg class="v2-alert-icon"><use href="#i-warn"/></svg>
       <div class="v2-alert-body">
         <div class="v2-alert-title">Незбережені зміни</div>
         <div class="v2-alert-text">У формі є 3 поля з помилками…</div>
         <div class="v2-alert-actions">
           <button class="v2-btn v2-btn-sm v2-btn-secondary">Зберегти</button>
         </div>
       </div>
       <button class="v2-alert-dismiss" type="button" aria-label="Закрити">
         <svg class="v2-i v2-i-sm"><use href="#i-x"/></svg>
       </button>
     </div>
   ============================================================ */

/* box-sizing reset */
.v2-alert,
.v2-alert *,
.v2-alert *::before,
.v2-alert *::after {
    box-sizing: border-box;
}

/* === Container === */
.v2-alert {
    display: flex;
    align-items: flex-start;
    gap: var(--s-4);
    padding: var(--s-5) var(--s-5);
    border: 1px solid var(--border-light);
    border-radius: var(--r-md);
    background: var(--bg-card);
    color: var(--text-primary);
    font-size: var(--text-md);
    line-height: var(--leading-normal);
    margin-bottom: var(--s-5);
}

/* === Icon column === */
.v2-alert-icon {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    margin-top: 1px;
    color: inherit;
}

/* === Body column === */
.v2-alert-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--s-3);
}

.v2-alert-title {
    font-weight: var(--weight-semibold);
    color: var(--text-primary);
    line-height: var(--leading-tight);
}

.v2-alert-text {
    color: var(--text-secondary);
}

.v2-alert-text > p {
    margin: 0 0 var(--s-3);
}
.v2-alert-text > p:last-child {
    margin-bottom: 0;
}

.v2-alert-text a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.v2-alert-list {
    margin: var(--s-2) 0 0;
    padding-left: 18px;
    color: var(--text-secondary);
}

.v2-alert-list li + li {
    margin-top: 2px;
}

/* Action кнопки знизу тіла */
.v2-alert-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-3);
    margin-top: var(--s-3);
}

/* === Dismiss × кнопка === */
.v2-alert-dismiss {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    margin: -2px -2px 0 0;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: var(--r-xs);
    background: transparent;
    color: inherit;
    opacity: 0.6;
    cursor: pointer;
    transition: opacity 0.12s, background 0.12s;
}
.v2-alert-dismiss:hover {
    opacity: 1;
    background: rgba(0, 0, 0, 0.06);
}
.v2-alert-dismiss:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
}

/* === Color variants === */
.v2-alert-info {
    background: var(--info-bg);
    border-color: var(--info);
    color: var(--info);
}
.v2-alert-info .v2-alert-title { color: var(--info); }

.v2-alert-success {
    background: var(--success-bg);
    border-color: var(--success);
    color: var(--success);
}
.v2-alert-success .v2-alert-title { color: var(--success); }

.v2-alert-warn {
    background: var(--warning-bg);
    border-color: var(--warning);
    color: var(--warning);
}
.v2-alert-warn .v2-alert-title { color: var(--warning); }

.v2-alert-danger {
    background: var(--danger-bg);
    border-color: var(--danger);
    color: var(--danger);
}
.v2-alert-danger .v2-alert-title { color: var(--danger); }

/* Soft варіанти — без рамки, лише фон-тинт. Зручно для inline-форм-помилок. */
.v2-alert-soft {
    border-color: transparent;
}

/* === Inline variant — full-bleed banner для верху сторінки === */
.v2-alert-inline {
    border-radius: 0;
    border-left: none;
    border-right: none;
    margin-bottom: 0;
    padding: var(--s-4) var(--s-7);
}

/* === Compact size === */
.v2-alert-sm {
    padding: var(--s-3) var(--s-4);
    font-size: var(--text-sm);
    gap: var(--s-3);
}
.v2-alert-sm .v2-alert-icon { width: 14px; height: 14px; }
.v2-alert-sm .v2-alert-dismiss { width: 20px; height: 20px; }

/* === Density === */
[data-v2-density="compact"] .v2-alert {
    padding: var(--s-4) var(--s-5);
    font-size: var(--text-sm);
}
[data-v2-density="compact"] .v2-alert-title { font-size: var(--text-md); }
