/* ==============================================
   TM24 NOVAChild - Hilfsklassen
   Datei: base/utilities.css
   Scope: global
   UTF-8 ohne BOM
   ============================================== */

/* Text-Truncation */
.text-clamp-2 {
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}

.text-clamp-3 {
    display: -webkit-box !important;
    -webkit-line-clamp: 3 !important;
    line-clamp: 3 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}

/* Visibility */
.tm24-hidden { display: none !important; }
.tm24-visible { display: block !important; }

/* Flex-Utilities */
.tm24-flex        { display: flex !important; }
.tm24-flex-center { display: flex !important; align-items: center !important; justify-content: center !important; }
.tm24-gap-8       { gap: 8px !important; }
.tm24-gap-12      { gap: 12px !important; }
.tm24-gap-16      { gap: 16px !important; }

/* Position */
.tm24-relative { position: relative !important; }
.tm24-absolute { position: absolute !important; }

/* Animationen */
@keyframes tm24-fadeInDown {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes tm24-fadeInUp {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes tm24-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Skeleton-Loading */
.tm24-skeleton {
    background: linear-gradient(90deg, #f0f0f0 25%, #f8f8f8 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: tm24-shimmer 1.5s infinite;
    border-radius: var(--rs);
}
