/* REVEAL — load het noi dung roi an san (opacity 0), keo dung toi moi hien nhe
   mot lan (one-shot) qua IntersectionObserver trong site.js. Stagger card qua
   --reveal-delay. site.js gắn .js lên <html> ngay khi chạy: thiếu .js nghĩa là
   JS không tải/chạy được, lúc đó cấm ẩn để trang server-render (NewsListing)
   không trắng xóa. */
html:not(.js) [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
}
[data-reveal] {
    opacity: 0;
    transform: translateY(20px);
    /* !important de thang transition rieng cua card (vd .fd-rail-card) —
       khong thi transition/delay cua reveal bi de, card bat dong loat.
       JS don attribute sau khi hien xong nen hover goc khong anh huong. */
    transition: opacity .8s ease, transform .8s cubic-bezier(.22, .61, .36, 1) !important;
    transition-delay: var(--reveal-delay, 0ms) !important;
}
[data-reveal].is-visible {
    opacity: 1;
    transform: none;
}
