/* ИИ: порядок <link> — docs/css-cascade-order.md · ур.4 компонент: badges. */
/* ==========================================================================
 * BADGES-UNI — status badges, chips и компактные label-компоненты
 * Техническая логика для ИИ-ассистента:
 * - хранить здесь статусы, бейджи, tag/chip визуал и их состояния;
 * - не смешивать с button/form/table layout правилами;
 * - не создавать дубли в `student.css`, если стиль относится к badge/status ownership.
 * ========================================================================== */

.status-icon
{
    font-size: 28px;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    margin-bottom: 5px;
    transition: color 0.3s, transform 0.3s;
}.status-new
{ color: #32CD32; }.status-studying
{ color: #1E90FF; }.status-academic-leave
{ color: #FFD700; }.status-graduated
{ color: #8A2BE2; }.status-expelled
{ color: #DC143C; }.status-new:hover
{ color: #228B22; }.status-studying:hover
{ color: #4169E1; }.status-academic-leave:hover
{ color: #DAA520; }.status-graduated:hover
{ color: #6A0DAD; }.status-expelled:hover
{ color: #B22222; }.status-icon:hover
{
    transform: scale(1.2);
}/* === 🔔 Badge для меню === */.menu-badge
{
    display: inline-block;
    padding: var(--badge-menu-pad-y) var(--badge-menu-pad-x);
    margin-left: var(--badge-menu-margin-left);
    border-radius: var(--badge-menu-radius);
    background: linear-gradient(135deg, #f39c12 0%, #e74c3c 100%);
    color: white;
    font-size: var(--badge-menu-font-size);
    font-weight: 700;
    min-width: var(--badge-menu-min-width);
    text-align: center;
    box-shadow: 0 2px 8px rgba(231, 76, 60, 0.3);
    animation: pulse 2s infinite;
}.head-icon-menu li a:hover .menu-badge
{
    background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
    transform: scale(1.1);
}.request-detail-item .status-processing
{
    color: #fd7e14;
    font-weight: 500;
}.status-verified
{
    background: #d4edda;
    color: #155724;
}.status-admin-verified
{
    background: #d1ecf1;
    color: #0c5460;
}.admin-apostille-filter-indicator
{
    background: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);
    backdrop-filter: blur(10px);
    padding: 15px 20px;
    border-radius: 12px;
    margin-top: 20px;
    border: 1px solid rgba(102, 126, 234, 0.3);
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.1);
    display: none;
}.admin-apostille-filter-indicator.show
{
    display: block;
    animation: admin-apostille-slideInUp 0.3s ease-out;
}.admin-apostille-completed-count-badge
{
    background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
    color: white;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 0.8em;
    font-weight: 700;
    margin-left: 12px;
    box-shadow: 0 4px 15px rgba(40, 167, 69, 0.3);
    animation: admin-apostille-glow-success 2s ease-in-out infinite alternate;
    position: relative;
    overflow: hidden;
}/* Бейджи статуса */.admin-status-badge
{
    padding: 4px 12px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}/* === css_split_uni.py append @ 2026-04-03 10:10:51 === */.status-paid
{
    background-color: #d1f0e1;
    color: #2e7d32;
    padding: 3px 6px;
    border-radius: var(--main-space-xs);
    font-weight: 500;
}.status-waiting
{
    background-color: #fde8e8;
    color: #d32f2f;
    padding: 3px 6px;
    border-radius: var(--main-space-xs);
    font-weight: 500;
}.status-processing
{
    background-color: #fff3e0;
    color: #ef6c00;
    padding: 3px 6px;
    border-radius: var(--main-space-xs);
    font-weight: 500;
}.status-badge
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: var(--badge-status-min-width);
    min-height: var(--badge-status-height);
    font-size: var(--badge-status-font-size);
    color: white;
    text-align: center;
    margin: var(--main-space-xs) 0;
    padding: var(--badge-status-pad-y) var(--badge-status-pad-x);
    border-radius: var(--badge-status-radius);
    font-weight: bold;
}.status-info
{
    font-weight: bold;
    color: #000;
}.status-ready
{
    background-color: var(--main-success-dark);
}.status-waiting
{
    background-color: #FFC107;
    color: var(--main-text-dark);
}.status-error
{
    background-color: #F44336;
}.status-optional
{
    background-color: var(--text-muted);
    color: white;
}/* ===== BADGE УВЕДОМЛЕНИЙ ===== */.notification-badge
{
    position: absolute;
    top: -var(--main-space-xs);
    right: -var(--main-space-xs);
    background: #dc3545;
    color: white;
    border-radius: 50%;
    padding: var(--badge-notification-pad-y) var(--badge-notification-pad-x);
    font-size: var(--badge-notification-font-size);
    font-weight: bold;
    min-width: var(--badge-notification-size);
    height: var(--badge-notification-size);
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}/* === teams styles merged into *-uni @ 2026-04-03 10:23:03 === */.teams-delivery-badge
{
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 3px 8px;
            background: rgba(16, 185, 129, 0.1);
            color: #059669;
            border-radius: 12px;
            font-size: 10px;
            font-weight: 500;
            border: 1px solid rgba(16, 185, 129, 0.2);
        }.teams-status-badge
{
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 6px 12px;
            border-radius: 8px;
            font-size: 12px;
            font-weight: 600;
            text-align: center;
            white-space: nowrap;
        }.teams-count-badge
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    background: var(--teams-white);
    border-radius: 50%;
    font-weight: 600;
    color: var(--teams-text-muted);
    font-size: var(--teams-font-size-sm);
    transition: all 0.2s ease;
}.teams-count-badge.teams-count-active
{
    background: var(--teams-primary-color);
    color: var(--teams-white);
    box-shadow: var(--teams-shadow-sm);
}.teams-student-id-badge
{
    display: inline-flex;
    align-items: center;
    padding: 2px var(--teams-space-xs);
    background: var(--teams-light-bg);
    border-radius: var(--teams-radius-sm);
    font-size: var(--teams-font-size-xs);
    color: var(--teams-text-muted);
    font-weight: normal;
    line-height: 1;
    white-space: nowrap;
}.teams-alert-student-badge
{
    display: inline-flex;
    align-items: center;
    gap: var(--teams-space-xs);
    padding: var(--teams-space-xs) var(--teams-space-sm);
    background: rgba(245, 127, 23, 0.1);
    border: 1px solid rgba(245, 127, 23, 0.3);
    border-radius: var(--teams-radius-sm);
    color: #f57f17;
    font-size: var(--teams-font-size-xs);
    font-weight: 500;
}/* === css_split_uni.py append @ 2026-04-03 10:24:52 === */.online-indicator
{
    display: inline-block; border-radius: 50%; background: var(--accent-green); animation: pulse-online 2s ease-in-out infinite;
}.translation-complete-badge
{
    display: inline-flex; align-items: center; background: var(--success-light); color: var(--success-dark); border-radius: var(--radius-sm); font-size: var(--text-sm); font-weight: 600;
}.translation-partial-badge
{
    display: inline-flex; align-items: center; background: var(--warning-light); color: var(--warning-dark); border-radius: var(--radius-sm); font-size: var(--text-sm); font-weight: 600;
}.badge
{
    display: inline-flex; align-items: center; padding: var(--space-1) var(--space-3); font-size: var(--text-xs); font-weight: 600; line-height: 1.4; border-radius: var(--radius-sm); white-space: nowrap;
}.badge-success
{
    background: var(--success); color: var(--text-white);
}.badge-warning
{
    background: var(--warning); color: var(--text-dark);
}.badge-danger
{
    background: var(--danger); color: var(--text-white);
}.badge-info
{
    background: var(--info); color: var(--text-white);
}.badge-count
{
    position: absolute; z-index: 10; background: linear-gradient(180deg, var(--success) 0%, var(--success-dark) 100%); color: var(--text-white); font-size: var(--badge-count-font-size); font-weight: 700; line-height: var(--badge-count-size); text-align: center; border-radius: var(--badge-count-radius); transition: all var(--transition-base); display: inline-flex; align-items: center; justify-content: center;
}.badge-count.badge-online, .badge-count.badge-success
{
    background: linear-gradient(180deg, var(--success) 0%, var(--success-dark) 100%);
}.badge-count.badge-danger, .badge-count.badge-urgent
{
    background: linear-gradient(180deg, var(--danger) 0%, var(--danger-dark) 100%);
}.badge-count.badge-warning
{
    background: linear-gradient(180deg, var(--warning) 0%, var(--warning-dark) 100%);
}.badge-count.badge-info, .badge-count.badge-primary
{
    background: linear-gradient(180deg, var(--info) 0%, var(--info-dark) 100%);
}.badge-count.badge-purple, .badge-count.badge-special
{
    background: var(--accent-purple-gradient);
}.badge-count.badge-secondary, .badge-count.badge-neutral
{
    background: var(--secondary-gradient-180);
}.badge-count.badge-sm
{
    font-size: var(--badge-count-sm-font-size); line-height: var(--badge-count-sm-size); border-radius: var(--badge-count-sm-radius);
}.badge-count.badge-lg
{
    font-size: var(--badge-count-lg-font-size); line-height: var(--badge-count-lg-size); border-radius: var(--badge-count-lg-radius);
}.badge-count.badge-pulse
{
    animation: badge-pulse-animation 2s ease-in-out infinite;
}.badge-container
{
    position: relative; display: inline-block;
}.status-present
{
    color: var(--success); font-weight: 600; display: inline-flex; align-items: center;
}.status-late
{
    color: var(--warning); font-weight: 600; display: inline-flex; align-items: center;
}.status-absent
{
    color: var(--danger); font-weight: 600; display: inline-flex; align-items: center;
}.status-icon
{
    font-size: var(--text-xl); line-height: 1; display: inline-flex; align-items: center; justify-content: center; transition: transform var(--transition-fast);
}.status-new
{
    color: var(--success);
}.status-new:hover
{
    color: var(--success); filter: brightness(0.9);
}.status-studying
{
    color: var(--info);
}.status-studying:hover
{
    color: var(--info); filter: brightness(0.9);
}.status-academic-leave
{
    color: var(--warning);
}.status-academic-leave:hover
{
    color: var(--warning); filter: brightness(0.9);
}.status-graduated
{
    color: var(--accent-purple);
}.status-graduated:hover
{
    color: var(--accent-purple); filter: brightness(0.9);
}.status-expelled
{
    color: var(--danger);
}.status-expelled:hover
{
    color: var(--danger); filter: brightness(0.9);
}.status-waiting
{
    color: var(--text-light);
}.status-waiting:hover
{
    color: var(--text-medium);
}.section-title .badge-container
{
    position: relative; display: inline-flex; align-items: center;
}.section-title .badge-count
{
    position: static;
}.slot-badge
{
    border-radius: var(--radius-full); font-weight: 600;
}.slot-badge.free
{
    background: var(--success); color: var(--text-white);
}.slot-badge.partially
{
    background: var(--warning); color: var(--text-white);
}.slot-badge.busy
{
    background: var(--danger); color: var(--text-white);
}.exam-status-badge
{
    display: inline-block; border-radius: var(--radius-sm); font-size: var(--text-xs); font-weight: 500; white-space: nowrap;
}.exam-type-badge
{
    display: inline-flex; align-items: center; border-radius: var(--radius-md); font-size: var(--text-sm); font-weight: 500; white-space: nowrap; line-height: 1.2;
}.exam-type-badge.exam-type-entrance
{
    background-color: rgba(220, 53, 69, 0.15); color: #dc3545;
}.exam-type-badge.exam-type-one-time
{
    background-color: rgba(0, 123, 255, 0.15); color: #007bff;
}.exam-type-badge.exam-type-regular
{
    background-color: rgba(108, 117, 125, 0.15); color: #6c757d;
}.status-pending
{
    background-color: var(--warning); color: var(--text-dark);
}.status-added
{
    background-color: var(--success); color: var(--text-white);
}.curator-status-badge
{
    background: #7b1fa2; color: white; border-radius: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px;
}.receipt-missing-indicator
{
    display: inline-flex; align-items: center; justify-content: center;
}.receipt-missing-indicator .sr-only
{
    position: absolute; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap;
}.standard-badge
{
    font-family: Arial, sans-serif;
}.request-status-badge
{
    display: inline-flex;
    align-items: center;
    gap: var(--badge-request-gap);
    padding: var(--badge-request-pad-y) var(--badge-request-pad-x);
    border-radius: var(--badge-request-radius);
    font-size: var(--badge-request-font-size);
    font-weight: 600;
}.request-status-badge.pending
{
    background: var(--warning-gradient);
    color: var(--text-white);
    animation: apostille-pulse-badge 2s infinite;
}.request-status-badge.created, .request-status-badge.processing, .request-status-badge.shipped, .request-status-badge.delivered, .request-status-badge.collected, .request-status-badge.rejected
{
    padding: var(--badge-request-compact-pad-y) var(--badge-request-compact-pad-x);
    border-radius: var(--badge-request-compact-radius);
    font-size: var(--badge-request-compact-font-size);
    display: inline-block;
    margin-top: var(--badge-request-compact-margin-top);
}.request-status-badge.created
{
    background: var(--warning);
    color: var(--text-dark);
}.request-status-badge.processing
{
    background: var(--info);
    color: var(--text-white);
}.request-status-badge.shipped
{
    background: var(--accent-purple-dark);
    color: var(--text-white);
}.request-status-badge.delivered
{
    background: var(--success);
    color: var(--text-white);
}.request-status-badge.collected
{
    background: var(--success-light);
    color: var(--success-dark);
}.request-status-badge.rejected
{
    background: var(--danger);
    color: var(--text-white);
}/* === source: badges.css === *//**
 * ════════════════════════════════════════════════════════════════════════════════
 * 📁 БЕЙДЖИ И СТАТУСЫ
 * ════════════════════════════════════════════════════════════════════════════════
 * 
 * Этот файл содержит все стили бейджей:
 * - Базовые бейджи (.badge-count)
 * - Статус бейджи (.status-badge)
 * - Модификаторы статус бейджей
 * - Размеры бейджей
 * - Пульсирующие бейджи
 * 
 * ⚠️ ВАЖНО: Не содержит медиа-запросов (они в отдельных файлах)
 *//* ═══════════════════════════════════════════════════════════════════════════════
 * МОДИФИКАТОРЫ СТАТУС БЕЙДЖЕЙ
 * ═══════════════════════════════════════════════════════════════════════════════ */.status-badge.status-ready
{
    background: var(--success-light);
    color: var(--success);
    border: 1px solid var(--success);
}.status-badge.status-error
{
    background: var(--danger-light);
    color: var(--danger);
    border: 1px solid var(--danger);
}.status-badge.status-optional
{
    background: var(--warning-light);
    color: var(--warning);
    border: 1px solid var(--warning);
}.status-badge.status-processing
{
    background: #eff6ff;
    color: #1d4ed8;
    border: 1px solid #93c5fd;
}.status-badge.status-waiting
{
    background: #fff7ed;
    color: #c2410c;
    border: 1px solid #fdba74;
}.status-badge.status-verification
{
    background: #f5f3ff;
    color: #6d28d9;
    border: 1px solid #c4b5fd;
}#student-nostrification-root .status-badge
{
    min-width: 0;
    text-transform: none;
    letter-spacing: 0.01em;
    box-shadow: 0 6px 16px rgba(37, 99, 235, 0.12);
}/* ═══════════════════════════════════════════════════════════════════════════════
 * СТАТУС БЕЙДЖИ
 * ═══════════════════════════════════════════════════════════════════════════════ */.status-badge
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-1);
    min-width: var(--badge-status-min-width);
    min-height: var(--badge-status-height);
    padding: var(--badge-status-pad-y) var(--badge-status-pad-x);
    border-radius: var(--badge-status-radius);
    font-size: var(--badge-status-font-size);
    font-weight: 600;
    line-height: 1;
    text-transform: uppercase;
    transition: all var(--transition-fast);
}.status-badge.active
{
    background: var(--success-light);
    color: var(--success);
}.status-badge.pending
{
    background: var(--warning-light);
    color: var(--warning);
}.status-badge.inactive
{
    background: var(--danger-light);
    color: var(--danger);
}.status-badge:hover
{
    transform: scale(1.05);
    box-shadow: var(--shadow-sm);
}/* Статусы настроек — вариант для крупных блоков (настройки сайта) */.setting-status-badge.status-enabled
{
    background: var(--success-light);
    color: var(--success-dark);
}.setting-status-badge.status-disabled
{
    background: var(--danger-light);
    color: var(--danger-dark);
}.setting-status-badge.status-warning
{
    background: var(--warning-light);
    color: var(--warning-dark);
}/* ═══════════════════════════════════════════════════════════════════════════════
 * БАЗОВЫЙ КЛАСС BADGE - 3D СТИЛЬ С ГРАДИЕНТОМ
 * ═══════════════════════════════════════════════════════════════════════════════ */.badge-count
{
    /* Позиционирование */
    position: absolute;
    top: var(--badge-count-top);
    right: var(--badge-count-right);
    z-index: 10;
    
    /* Размеры */
    min-width: var(--badge-count-min-width);
    height: var(--badge-count-size);
    padding: 0 var(--badge-count-pad-x);
    
    /* Визуальный стиль */
    background: linear-gradient(180deg, var(--success) 0%, var(--success-dark) 100%);
    color: var(--text-white);
    font-size: var(--badge-count-font-size);
    font-weight: 700;
    line-height: var(--badge-count-size);
    text-align: center;
    border-radius: var(--badge-count-radius);
    border: 2px solid var(--bg-primary);
    
    /* 3D эффект */
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(16, 185, 129, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
    
    /* Анимация */
    transition: all var(--transition-base);
    
    /* Флексбокс для центрирования */
    display: inline-flex;
    align-items: center;
    justify-content: center;
}/* Hover эффект - легкое увеличение */.badge-count:hover
{
    transform: scale(1.1);
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(16, 185, 129, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* ═══════════════════════════════════════════════════════════════════════════════
 * ЦВЕТОВЫЕ МОДИФИКАТОРЫ
 * ═══════════════════════════════════════════════════════════════════════════════ *//* Зеленый - для онлайн, успеха */.badge-count.badge-online, .badge-count.badge-success
{
    background: linear-gradient(180deg, var(--success) 0%, var(--success-dark) 100%);
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(16, 185, 129, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}.badge-count.badge-online:hover, .badge-count.badge-success:hover
{
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(16, 185, 129, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* Красный - для срочных, опасных */.badge-count.badge-danger, .badge-count.badge-urgent
{
    background: linear-gradient(180deg, var(--danger) 0%, var(--danger-dark) 100%);
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(239, 68, 68, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}.badge-count.badge-danger:hover, .badge-count.badge-urgent:hover
{
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(239, 68, 68, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* Оранжевый - для предупреждений */.badge-count.badge-warning
{
    background: linear-gradient(180deg, var(--warning) 0%, var(--warning-dark) 100%);
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(245, 158, 11, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}.badge-count.badge-warning:hover
{
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(245, 158, 11, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* Синий - для информации */.badge-count.badge-info, .badge-count.badge-primary
{
    background: linear-gradient(180deg, var(--info) 0%, var(--info-dark) 100%);
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(59, 130, 246, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}.badge-count.badge-info:hover, .badge-count.badge-primary:hover
{
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(59, 130, 246, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* Фиолетовый - для особых */.badge-count.badge-purple, .badge-count.badge-special
{
    background: var(--accent-purple-gradient);
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(139, 92, 246, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}.badge-count.badge-purple:hover, .badge-count.badge-special:hover
{
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(139, 92, 246, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* Серый - для нейтральных */.badge-count.badge-secondary, .badge-count.badge-neutral
{
    background: var(--secondary-gradient-180);
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(107, 114, 128, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}.badge-count.badge-secondary:hover, .badge-count.badge-neutral:hover
{
    box-shadow: 
        0 3px 6px rgba(0, 0, 0, 0.15),
        0 6px 16px rgba(107, 114, 128, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}/* ═══════════════════════════════════════════════════════════════════════════════
 * РАЗМЕРНЫЕ МОДИФИКАТОРЫ
 * ═══════════════════════════════════════════════════════════════════════════════ *//* Маленький badge */.badge-count.badge-sm
{
    min-width: var(--badge-count-sm-min-width);
    height: var(--badge-count-sm-size);
    padding: 0 var(--badge-count-sm-pad-x);
    font-size: var(--badge-count-sm-font-size);
    line-height: var(--badge-count-sm-size);
    border-radius: var(--badge-count-sm-radius);
    top: var(--badge-count-sm-top);
    right: var(--badge-count-sm-right);
}/* Большой badge */.badge-count.badge-lg
{
    min-width: var(--badge-count-lg-min-width);
    height: var(--badge-count-lg-size);
    padding: 0 var(--badge-count-lg-pad-x);
    font-size: var(--badge-count-lg-font-size);
    line-height: var(--badge-count-lg-size);
    border-radius: var(--badge-count-lg-radius);
    top: var(--badge-count-lg-top);
    right: var(--badge-count-lg-right);
}/* ═══════════════════════════════════════════════════════════════════════════════
 * СПЕЦИАЛЬНЫЕ ЭФФЕКТЫ
 * ═══════════════════════════════════════════════════════════════════════════════ *//* Пульсирующий badge для важных уведомлений */.badge-count.badge-pulse
{
    animation: badge-pulse-animation 2s ease-in-out infinite;
}/* Badge без анимации при hover (если нужно) */.badge-count.badge-no-hover:hover
{
    transform: none;
    box-shadow: 
        0 2px 4px rgba(0, 0, 0, 0.1),
        0 4px 12px rgba(16, 185, 129, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
}/* ═══════════════════════════════════════════════════════════════════════════════
 * КОНТЕЙНЕР ДЛЯ BADGE (если нужно обернуть элемент)
 * ═══════════════════════════════════════════════════════════════════════════════ *//* Класс для родительского элемента, который содержит badge */.badge-container
{
    position: relative;
    display: inline-block;
}/* ═══════════════════════════════════════════════════════════════════════════════
 * ДОБАВЛЕНО ИЗ БЕКАПА
 * ═══════════════════════════════════════════════════════════════════════════════ *//* ═══════════════════════════════════════════════════════════════════════════════════
 * БЕЙДЖИ ТИПОВ ЭКЗАМЕНОВ
 * ═══════════════════════════════════════════════════════════════════════════════════ */.exam-type-badge
{
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: 500;
    white-space: nowrap;
    line-height: 1.2;
}/* Статус с фоном: Отчислен (restore_student context) */.status-badge.status-expelled
{
    background: var(--danger-light);
    color: var(--danger-dark);
}/* Статус: Выпускник */.status-graduated, .status-badge.status-graduated
{
    background: var(--success-light);
    color: var(--success-dark);
}/* Бейдж количества (management page) */.count-badge
{
    background: linear-gradient(135deg, var(--info), var(--info-dark));
    color: var(--text-white);
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-full);
    font-size: var(--text-sm);
    font-weight: 600;
    margin-left: auto;
}/* ═══════════════════════════════════════════════════════════════════════════════
 * Curator reports (.reports-*) — бейджи, индикаторы, легенда
 * Размеры: desktop.css / tablet.css / mobile.css / mobile-small.css
 * ═══════════════════════════════════════════════════════════════════════════════ */.reports-badge
{
    font-weight: bold;
    text-align: center;
}.reports-badge-success
{
    background-color: #d4edda;
    color: #155724;
    border-style: solid;
    border-color: #c3e6cb;
}.reports-badge-warning
{
    background-color: #fff3cd;
    color: #856404;
    border-style: solid;
    border-color: #ffeaa7;
}.reports-badge-danger
{
    background-color: #f8d7da;
    color: #721c24;
    border-style: solid;
    border-color: #f5c6cb;
}.reports-badge-info
{
    background-color: #d1ecf1;
    color: #0c5460;
    border-style: solid;
    border-color: #bee5eb;
}.tbl--smart-cells .tbl__cell--status.status-active
{
    color: #16a34a;
}.tbl--smart-cells .tbl__cell--status.status-inactive
{
    color: #dc2626;
}.tbl--smart-cells .tbl__cell--status.status-pending
{
    color: #f59e0b;
}/* Индикатор «квитанция не загружена» (размер иконок как у compact-кнопок / tbl update .btn) */.receipt-missing-indicator
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
}.setting-status-badge
{
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-1) var(--space-3);
    border-radius: var(--form-radius-sm);
    font-size: var(--form-label-font-size);
    font-weight: 600;
}.status-icon
{
    font-size: var(--text-2xl);
}.translation-complete-badge, .translation-partial-badge
{
    padding: var(--badge-translation-pad-y) var(--badge-translation-pad-x);
    font-size: var(--badge-translation-font-size);
    margin-left: var(--badge-translation-margin-left);
}/* === css_split_uni.py append @ 2026-04-03 10:27:32 === *//* Индикатор «квитанция не загружена» (0.875rem как у .student-btn-view i; портал не грузит buttons.css) */.receipt-missing-indicator
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
}.receipt-missing-indicator .sr-only
{
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
    white-space: nowrap;
}/* ===== СТУДЕНТСКИЕ БЕЙДЖИ И СТАТУСЫ ===== *//* Бейдж для общих уроков */.lesson-shared-badge
{
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white !important;
    padding: var(--badge-lesson-shared-pad-y) var(--badge-lesson-shared-pad-x);
    border-radius: var(--badge-lesson-shared-radius);
    font-size: var(--badge-lesson-shared-font-size);
    font-weight: 600;
    margin-left: var(--badge-lesson-shared-margin-left);
    display: inline-block;
    text-transform: uppercase;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    animation: pulse 2s ease-in-out infinite;
}/* === css_split_uni.py append @ 2026-04-03 10:39:40 === */.amount-currency-badge
{
    background: linear-gradient(135deg, #2792ae 0%, #3ba3c7 100%);
    color: white;
    padding: 15px 18px;
    font-weight: 600;
    font-size: 16px;
    border-left: 1px solid #1a6d8a;
    white-space: nowrap;
}.security-mini-badge
{
    background: linear-gradient(135deg, #28a745 0%, #34ce57 100%);
    color: white;
    padding: var(--badge-security-pad-y) var(--badge-security-pad-x);
    border-radius: var(--badge-security-radius);
    font-size: var(--badge-security-font-size);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: var(--badge-security-gap);
    box-shadow: 0 2px 4px rgba(40, 167, 69, 0.2);
}.payment-status-badge
{
    padding: var(--badge-payment-pad-y) var(--badge-payment-pad-x);
    border-radius: var(--badge-payment-radius);
    font-size: var(--badge-payment-font-size);
    font-weight: 500;
    background: rgba(255, 193, 7, 0.9);
    color: #212529;
    display: flex;
    align-items: center;
    gap: var(--badge-payment-gap);
}.status-mini-badge
{
    padding: var(--badge-mini-pad-y) var(--badge-mini-pad-x);
    border-radius: var(--badge-mini-radius);
    font-size: var(--badge-mini-font-size);
    font-weight: 500;
    text-transform: uppercase;
    white-space: nowrap;
}/* === css_split_uni.py append @ 2026-04-03 10:48:52 === */.method-badge
{
    width: var(--badge-method-size);
    height: var(--badge-method-size);
    background: var(--primary-color);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
}

/* === css_split_uni.py append @ 2026-04-03 21:34:32 === */

.mail-badge {
    background-color: var(--success);
    color: var(--text-white);
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-lg);
    font-size: var(--text-xs);
    font-weight: bold;
    text-transform: uppercase;
}.mail-badge-unread {
    background-color: var(--warning);
}







/* === 📊 Счетчик непрочитанных === */
.mail-count-badge {
    background-color: var(--danger);
    color: var(--text-white);
    padding: var(--space-0) var(--space-2);
    border-radius: var(--radius-lg);
    font-size: var(--text-xs);
    font-weight: bold;
    margin-left: var(--space-1);
}









/* Индикаторы типа сообщения */
.mail-type-indicator {
    display: inline-block;
    padding: var(--space-1) var(--space-2);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-left: var(--space-2);
}.mail-type-indicator.sent {
    background: var(--warning);
    color: var(--text-white);
}.mail-type-indicator.received {
    background: var(--info);
    color: var(--text-white);
}
