/* ===== Berita Terkini Scroll Animations (standalone, tidak konflik dengan section lain) ===== */
@keyframes newsCardFloat {
    0%   { opacity: 0; transform: translateY(60px) scale(0.97); }
    60%  { opacity: 1; transform: translateY(-8px) scale(1.005); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes newsLeftSlide {
    0%   { opacity: 0; transform: translateX(-70px) skewX(-3deg); }
    70%  { opacity: 1; transform: translateX(6px) skewX(0.5deg); }
    100% { opacity: 1; transform: translateX(0) skewX(0); }
}
@keyframes newsRightItem {
    0%   { opacity: 0; transform: translateX(55px) rotateY(8deg); }
    65%  { opacity: 1; transform: translateX(-4px) rotateY(-1deg); }
    100% { opacity: 1; transform: translateX(0) rotateY(0); }
}
@keyframes newsHeadingPop {
    0%   { opacity: 0; transform: translateY(-28px) scaleX(0.85); letter-spacing: 0.3em; }
    70%  { opacity: 1; transform: translateY(3px) scaleX(1.02); letter-spacing: normal; }
    100% { opacity: 1; transform: translateY(0) scaleX(1); letter-spacing: normal; }
}
@keyframes newsDividerExpand {
    0%   { transform: scaleX(0); opacity: 0; }
    100% { transform: scaleX(1); opacity: 1; }
}

/* Initial hidden states */
.news-anim-card   { opacity: 0; }
.news-anim-left   { opacity: 0; }
.news-anim-heading{ opacity: 0; }
.news-anim-divider{ opacity: 0; transform: scaleX(0); transform-origin: left; }
.news-anim-item   { opacity: 0; }

/* Triggered states */
.news-anim-card.is-visible {
    animation: newsCardFloat 0.85s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
.news-anim-left.is-visible {
    animation: newsLeftSlide 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.2s forwards;
}
.news-anim-heading.is-visible {
    animation: newsHeadingPop 0.65s cubic-bezier(0.34, 1.56, 0.64, 1) 0.1s forwards;
}
.news-anim-divider.is-visible {
    animation: newsDividerExpand 0.5s ease-out 0.35s forwards;
}
.news-anim-item.is-visible {
    animation: newsRightItem 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* ===== SCROLL ANIMATIONS (semua section) ===== */
/* --- Keyframes umum --- */
@keyframes sa-fadeUp    { from { opacity:0; transform:translateY(50px); }  to { opacity:1; transform:translateY(0); } }
@keyframes sa-fadeDown  { from { opacity:0; transform:translateY(-40px); } to { opacity:1; transform:translateY(0); } }
@keyframes sa-fadeLeft  { from { opacity:0; transform:translateX(-60px); } to { opacity:1; transform:translateX(0); } }
@keyframes sa-fadeRight { from { opacity:0; transform:translateX(60px); }  to { opacity:1; transform:translateX(0); } }
@keyframes sa-zoomUp    { from { opacity:0; transform:scale(0.88) translateY(30px); } to { opacity:1; transform:scale(1) translateY(0); } }
@keyframes sa-flipUp    { from { opacity:0; transform:perspective(600px) rotateX(25deg) translateY(30px); } to { opacity:1; transform:perspective(600px) rotateX(0) translateY(0); } }

/* --- Hidden states --- */
[data-sa] { opacity: 0; }

/* --- Triggered states --- */
[data-sa].sa-visible {
    opacity: 1;
    animation-fill-mode: both;
    animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}
[data-sa="sambutan-photo"].sa-visible  { animation: sa-fadeLeft  0.8s cubic-bezier(0.22,1,0.36,1) 0.1s both; }
[data-sa="sambutan-content"].sa-visible { animation: sa-fadeRight 0.8s cubic-bezier(0.22,1,0.36,1) 0.25s both; }
[data-sa="svc-header"].sa-visible       { animation: sa-fadeDown  0.65s cubic-bezier(0.22,1,0.36,1) 0.05s both; }
[data-sa="svc-carousel"].sa-visible     { animation: sa-zoomUp    0.75s cubic-bezier(0.22,1,0.36,1) 0.2s both; }
[data-sa="svc-strip"].sa-visible        { animation: sa-fadeUp    0.65s cubic-bezier(0.22,1,0.36,1) 0.35s both; }
[data-sa="foto-header"].sa-visible      { animation: sa-fadeDown  0.6s  cubic-bezier(0.22,1,0.36,1) 0.05s both; }
[data-sa="foto-grid"].sa-visible        { animation: sa-fadeUp    0.7s  cubic-bezier(0.22,1,0.36,1) 0.2s both; }
[data-sa="video-header"].sa-visible     { animation: sa-fadeDown  0.6s  cubic-bezier(0.22,1,0.36,1) 0.05s both; }
[data-sa="info-header"].sa-visible      { animation: sa-fadeDown  0.6s  cubic-bezier(0.22,1,0.36,1) 0.05s both; }
[data-sa="svc-empty"].sa-visible        { animation: sa-fadeUp    0.6s  cubic-bezier(0.22,1,0.36,1) 0.15s both; }
[data-sa="foto-empty"].sa-visible       { animation: sa-fadeUp    0.6s  cubic-bezier(0.22,1,0.36,1) 0.15s both; }
[data-sa="video-grid"].sa-visible       { animation: sa-flipUp    0.75s cubic-bezier(0.22,1,0.36,1) 0.2s both; }

/* Info cards: stagger via JS inline delay */
[data-sa^="info-card"].sa-visible { animation: sa-fadeUp 0.65s cubic-bezier(0.22,1,0.36,1) both; }

/* Link partner */
[data-sa="link-partner-wrap"].sa-visible { animation: sa-fadeUp 0.7s cubic-bezier(0.22,1,0.36,1) 0.1s both; }
