/* モーション共通（トップ・コンサル・代理店・OEM）。transform/opacity のみ使い、レイアウトを動かさない。
   JSが有効なとき（html.js）だけ初期状態を隠す。reduced-motion ではすべて無効。 */
.mo-progress{position:fixed;left:0;top:0;width:100%;height:3px;background:#5A37D9;transform-origin:left;transform:scaleX(0);z-index:60;pointer-events:none;}
.btn{transition:transform .18s cubic-bezier(.33,1,.68,1),filter .18s,background-color .18s,box-shadow .18s;}
.btn:active{transform:scale(.97);}
.mo-lift{transition:transform .35s cubic-bezier(.33,1,.68,1),box-shadow .35s cubic-bezier(.33,1,.68,1);}
@media (hover:hover){.mo-lift:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(20,6,70,.12);}}
@media (prefers-reduced-motion: no-preference){
  /* ソフトライズ（FV）: 上昇しながらぼけと透明感が解ける */
  html.js .mo-rise{opacity:0;transform:translateY(18px);filter:blur(6px);animation:moRise .9s cubic-bezier(.33,1,.68,1) forwards;animation-delay:calc(var(--d,0)*1ms);}
  @keyframes moRise{to{opacity:1;transform:none;filter:blur(0);}}
  /* リスト順次表示（段差追従）: 子要素が一定間隔で遅れて整列 */
  html.js .stagger > *{opacity:0;transform:translateY(16px);transition:opacity .6s cubic-bezier(.33,1,.68,1),transform .6s cubic-bezier(.33,1,.68,1);transition-delay:calc(min(var(--i,0),9)*70ms);}
  html.js .stagger.is-in > *{opacity:1;transform:none;}
  /* 進捗バー描画: 棒グラフが左から伸びる */
  html.js .mo-grow{transform:scaleX(0);transform-origin:left center;transition:transform .9s cubic-bezier(.33,1,.68,1);transition-delay:calc(min(var(--i,0),9)*70ms + 150ms);}
  html.js .is-in .mo-grow{transform:scaleX(1);}
  /* チャート描画: 線が時間軸に沿って進む */
  html.js .mo-draw polyline,html.js .mo-draw path{stroke-dasharray:600;stroke-dashoffset:600;transition:stroke-dashoffset 1.4s ease-out .2s;}
  html.js .is-in .mo-draw polyline,html.js .is-in .mo-draw path{stroke-dashoffset:0;}
  /* パララックス（トップFVの背景のみ・transformのみ） */
  html.js .mo-parallax{will-change:transform;}
}
@media (prefers-reduced-motion: reduce){
  .mo-progress{display:none;}
  .mo-lift,.btn{transition:none;}
  .mo-lift:hover,.btn:active{transform:none;}
}
