/* ============================================================
   Swiss Ledger — 进场与状态动效
   （由 animations.js 驱动：[data-animate] + .animated）
   干净利落的位移与显影，不做光晕、不做缩放炫技
   ============================================================ */

[data-animate] {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.55s var(--ease), transform 0.55s var(--ease);
}
[data-animate].animated {
    opacity: 1;
    transform: translateY(0);
}
[data-animate="fade-in"] { transform: none; }
[data-animate="slide-up"] { transform: translateY(20px); }
[data-animate="slide-down"] { transform: translateY(-20px); }
[data-animate="slide-right"] { transform: translateX(-20px); }
[data-animate="slide-left"] { transform: translateX(20px); }
[data-animate="zoom-in"] { transform: scale(0.99); }

[data-animate="slide-right"].animated,
[data-animate="slide-left"].animated,
[data-animate="zoom-in"].animated { transform: translateX(0) scale(1); }

[data-delay="100"] { transition-delay: 0.06s; }
[data-delay="200"] { transition-delay: 0.12s; }
[data-delay="300"] { transition-delay: 0.18s; }
[data-delay="400"] { transition-delay: 0.24s; }
[data-delay="500"] { transition-delay: 0.30s; }
[data-delay="600"] { transition-delay: 0.36s; }
[data-delay="700"] { transition-delay: 0.42s; }
[data-delay="800"] { transition-delay: 0.48s; }

/* JS 会在动画期间加上这些类 */
.will-animate { will-change: opacity, transform; }
.animation-complete { will-change: auto; }
.nav-scroll-effect { will-change: height, background-color; }

.stagger-animation {
    opacity: 0;
    transform: translateY(12px);
    transition: opacity 0.5s var(--ease), transform 0.5s var(--ease);
}
.stagger-animation.animated { opacity: 1; transform: translateY(0); }
.stagger-animation:nth-child(1) { transition-delay: 0s; }
.stagger-animation:nth-child(2) { transition-delay: 0.05s; }
.stagger-animation:nth-child(3) { transition-delay: 0.10s; }
.stagger-animation:nth-child(4) { transition-delay: 0.15s; }
.stagger-animation:nth-child(5) { transition-delay: 0.20s; }
.stagger-animation:nth-child(6) { transition-delay: 0.25s; }
.stagger-animation:nth-child(7) { transition-delay: 0.30s; }
.stagger-animation:nth-child(8) { transition-delay: 0.35s; }
.stagger-animation:nth-child(9) { transition-delay: 0.40s; }
.stagger-animation:nth-child(10) { transition-delay: 0.45s; }
.stagger-animation:nth-child(11) { transition-delay: 0.50s; }
.stagger-animation:nth-child(12) { transition-delay: 0.55s; }

/* 读数数字 */
.counter-animation { font-variant-numeric: tabular-nums; }

/* 墨线逐格展开（用于账簿行首屏） */
@keyframes rule-grow {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
}
.rule-grow {
    transform-origin: left center;
    animation: rule-grow 0.9s var(--ease) both;
}

.hover-lift { transition: transform var(--t-med), box-shadow var(--t-med); }
.hover-lift:hover { transform: translate(-3px, -3px); box-shadow: var(--shadow-off); }

@media (prefers-reduced-motion: reduce) {
    [data-animate] { opacity: 1 !important; transform: none !important; }
    .stagger-animation { opacity: 1 !important; transform: none !important; }
    .pulse, .rule-grow { animation: none !important; }
}
