/*  reveal.css — 载入动效
    首屏入场为纯 CSS（加载即播，减少动效时被全局规则压平）；
    滚动浮现的隐藏态 .rv 只由 reveal.js 注入，JS 不可用时内容直出。 */

/* ============ 首屏入场：导航落下 → 文字梯次升起 → 星场推近 ============ */
.nav{animation:rv-drop .6s cubic-bezier(.22,.61,.36,1) both}
.hero-text>*{animation:rv-rise .85s cubic-bezier(.22,.61,.36,1) both}
.hero-text>*:nth-child(1){animation-delay:.06s}
.hero-text>*:nth-child(2){animation-delay:.15s}
.hero-text>*:nth-child(3){animation-delay:.24s}
.hero-text>*:nth-child(4){animation-delay:.33s}
.hero-text>*:nth-child(5){animation-delay:.45s}
.hero-visual{animation:rv-zoom 1.15s cubic-bezier(.22,.61,.36,1) .3s both}

@keyframes rv-drop{from{transform:translateY(-100%)}}
@keyframes rv-rise{from{opacity:0;transform:translateY(28px)}}
@keyframes rv-zoom{from{opacity:0;transform:scale(.93)}}

/* ============ 滚动浮现：animation 实现，不与 hover 过渡冲突 ============ */
.rv{opacity:0}
.rv.in{animation:rv-in .75s cubic-bezier(.22,.61,.36,1) var(--rv-d,0ms) both}
.rv-left.in{animation-name:rv-in-left}
@keyframes rv-in{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes rv-in-left{from{opacity:0;transform:translateX(-36px)}to{opacity:1;transform:none}}
