﻿/* ============================================================================
   Утилитарные классы
   ============================================================================ */

.fade-in {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s var(--transition-smooth), transform 0.8s var(--transition-smooth);
}

    .fade-in.visible {
        opacity: 1;
        transform: translateY(0);
    }

/* Кастомный скроллбар */
::-webkit-scrollbar {
    width: 12px;
}

::-webkit-scrollbar-track {
    background: rgba(255,255,255,0.05);
}

::-webkit-scrollbar-thumb {
    background: linear-gradient( to bottom, var(--color-accent-blue), var(--color-accent-pink) );
    border-radius: 6px;
}

/* Универсальный тултип */
.tooltip {
    position: relative;
    cursor: help;
}

    .tooltip:hover::after {
        content: attr(data-tooltip);
        position: absolute;
        bottom: 100%;
        left: 50%;
        transform: translateX(-50%);
        background: var(--color-surface);
        color: var(--color-text-primary);
        padding: 8px 12px;
        border-radius: var(--radius-sm);
        font-size: 0.85rem;
        white-space: nowrap;
        z-index: 1000;
        border: 1px solid rgba(255,255,255,0.1);
        box-shadow: var(--shadow-lg);
        margin-bottom: 5px;
    }

/* Анимация пульсации для загрузки */
.loading-pulse {
    animation: pulse 1.5s ease-in-out infinite;
}

/* Классы для производительности */
.will-change-transform {
    will-change: transform;
}

.backface-hidden {
    backface-visibility: hidden;
}
