/* design-forge preset: modern — animations
   都会的モダン:きびきび・短距離・直線的。ふわふわさせない */

@keyframes fadeUp{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes fadeIn{
  from{opacity:0}
  to{opacity:1}
}
@keyframes float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-5px)}
}
@keyframes pulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.03);opacity:.88}
}

/* スクロール出現(JSで .is-visible 付与) — 短く・シャープに */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .4s cubic-bezier(.25,.75,.3,1),transform .4s cubic-bezier(.25,.75,.3,1)}
.reveal.is-visible{opacity:1;transform:translateY(0)}
.reveal:nth-child(2){transition-delay:.06s}
.reveal:nth-child(3){transition-delay:.12s}

/* ホバー — 小さく素早く持ち上げる */
.hover-lift{transition:transform var(--speed),box-shadow var(--speed),border-color var(--speed)}
.hover-lift:hover{transform:translateY(-3px);box-shadow:var(--shadow-m)}

/* modern固有:バーが下から伸びる(チャート用。--i で時差) */
@keyframes barGrow{
  from{transform:scaleY(0)}
  to{transform:scaleY(1)}
}
.bar-grow span{transform-origin:bottom;animation:barGrow .6s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0)*.045s)}

/* modern固有:アクセント線が左から走る */
@keyframes lineIn{
  from{transform:scaleX(0)}
  to{transform:scaleX(1)}
}
.line-in{transform-origin:left;animation:lineIn .5s cubic-bezier(.2,.8,.2,1) both}

/* modern固有:数値がすっと立ち上がる(カウント演出は控えめに=1回だけ) */
.count-in{animation:fadeUp .45s cubic-bezier(.25,.75,.3,1) both}
