/* =========================================================
   UTILITIES — clase helper reutilizabile
   ========================================================= */

/* ── Text align ─────────────────────────────────────────── */
.text-center { text-align: center; }
.text-left   { text-align: left; }
.text-right  { text-align: right; }

/* ── Font weight ────────────────────────────────────────── */
.font-medium   { font-weight: var(--weight-medium); }
.font-bold     { font-weight: var(--weight-bold); }
.font-extrabold{ font-weight: var(--weight-extrabold); }

/* ── Badge ──────────────────────────────────────────────── */
.badge {
    display: inline-flex;
    align-self: flex-start;
    align-items: center;
    gap: var(--sp-1);
    padding: 0.25rem 0.75rem;
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    border-radius: var(--radius-badge);
    background-color: var(--color-pink-10);
    color: var(--color-pink);
    border: 1px solid var(--color-pink-20);
    line-height: 1.4;
}

.badge--navy {
    background-color: var(--color-navy-08);
    color: var(--color-navy);
    border-color: var(--color-navy-15);
}

/* ── Card generic ───────────────────────────────────────── */
.card {
    background-color: var(--color-white);
    border-radius: var(--radius-card);
    border: 1px solid var(--color-navy-08);
    padding: var(--sp-8);
    transition: box-shadow var(--trans-base), border-color var(--trans-base), transform var(--trans-base);
}

.card:hover {
    box-shadow: var(--shadow-lg);
    border-color: transparent;
    transform: translateY(-3px);
}

/* ── Divider ────────────────────────────────────────────── */
.divider {
    height: 1px;
    background-color: var(--color-navy-08);
    border: none;
    margin-block: var(--sp-8);
}

/* ── Stars ──────────────────────────────────────────────── */
.stars {
    display: flex;
    gap: 2px;
}

.stars__star {
    color: var(--color-navy-08);
}

.stars__star--filled {
    color: #F59E0B;
}

/* ── Aspect ratio helper ────────────────────────────────── */
.aspect-video  { aspect-ratio: 16 / 9; }
.aspect-square { aspect-ratio: 1 / 1; }
.aspect-4-3    { aspect-ratio: 4 / 3; }

.img-cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ── Visibility ─────────────────────────────────────────── */
.hidden { display: none; }

/* ── Skip link ──────────────────────────────────────────── */
.skip-link {
    position: fixed;
    top: var(--sp-3);
    left: var(--sp-3);
    z-index: var(--z-modal);
    transform: translateY(-140%);
    border-radius: var(--radius-btn);
    background-color: var(--color-navy);
    color: var(--color-white);
    padding: var(--sp-3) var(--sp-4);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    transition: transform var(--trans-fast);
}

.skip-link:focus {
    transform: translateY(0);
}

/* ── Animații scroll (data-animate) ────────────────────── */

[data-animate] {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.5s var(--ease), transform 0.5s var(--ease);
}

[data-animate].is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Delay-uri pentru carduri în grid */
[data-animate]:nth-child(2) { transition-delay: 80ms; }
[data-animate]:nth-child(3) { transition-delay: 160ms; }
[data-animate]:nth-child(4) { transition-delay: 240ms; }
[data-animate]:nth-child(5) { transition-delay: 320ms; }
[data-animate]:nth-child(6) { transition-delay: 400ms; }

/* Fără animații dacă utilizatorul preferă reduced motion */
@media (prefers-reduced-motion: reduce) {
    [data-animate] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}
