/* ============================================================
   kg-textfx — NEWS / PROFILE / VIDEO / FANCLUB の文字アニメ。
   既存の見出し data-span reveal には触らず、各ブロックの文字に別々の演出を足す。
   ① NEWS   : ニュース見出し(.pn-tit)を scramble/decode。行→行へ順に(cascade, DEUCE #6)
   ② PROFILE: 名前(.pp-name)に hover 金下線 + メンバー文章(name/birth/blood)を stagger 出現
   ③ VIDEO  : 動画タイトル(.pv-info)を clip から slide-up reveal (obys #1/#11)
   ④ FANCLUB: ラベルを lorenzobocchi 完コピ「1文字ずつ縦フリップ」(stagger は enter側のみ)
   分割マークアップは kg-textfx.js が生成。
   ============================================================ */

/* ① NEWS scramble: 差し替え中の1文字を少しだけ弱く(先頭エッジの質感) */
.kg-scr-x{opacity:.72;}

/* ② PROFILE 名前の金下線ドロー (card hover) */
.pp-name{position:relative;display:inline-block;}
.pp-name::after{content:"";position:absolute;left:0;bottom:-4px;width:100%;height:1px;
  background:var(--kg-gold);transform:scaleX(0);transform-origin:left center;
  transition:transform .5s cubic-bezier(.16,1,.3,1);}
.pp-item:hover .pp-name::after{transform:scaleX(1);}
@media (hover:none){ .pp-item:hover .pp-name::after{transform:scaleX(0);} }

/* ②' PROFILE メンバー文章 (name/birth/blood) を member毎+行毎に stagger 出現 (is-fx = kg-textfx.js が遅延発火で付与) */
.pp-list .pp-name,.pp-list .pp-birth,.pp-list .pp-blood{
  opacity:0;transform:translateY(24px);
  transition:opacity .7s ease, transform .85s cubic-bezier(.2,.8,.2,1);will-change:transform,opacity;}
.pp-item.is-fx .pp-name { opacity:1;transform:none;transition-delay:calc(var(--mi,0)*0.11s + 0.00s);}
.pp-item.is-fx .pp-birth{ opacity:1;transform:none;transition-delay:calc(var(--mi,0)*0.11s + 0.10s);}
.pp-item.is-fx .pp-blood{ opacity:1;transform:none;transition-delay:calc(var(--mi,0)*0.11s + 0.18s);}

/* ③ VIDEO タイトル clip slide-up (pv-info を flex 縦center化して mask reveal を安定) */
.pv-info{display:flex;align-items:center;}
.pv-info .kg-rise{display:inline-block;overflow:hidden;line-height:1.3;max-width:100%;}
.pv-info .kg-rise>span{display:inline-block;line-height:1.3;transform:translateY(115%);
  transition:transform .8s cubic-bezier(.2,.8,.2,1);will-change:transform;}
.pv-info .kg-rise.is-rise>span{transform:translateY(0);}

/* ④ FANCLUB ラベル = lorenzobocchi(.lb-card-wrapper-link / i5) 完コピ「1文字ずつ縦フリップ」。
   本家 = GSAP timeline を enter で play() / leave で reverse()(=現playhead位置から時間ベース逆再生)+
   完了時に初期状態へ set リセット。CSS transition では reverse を再現できないため
   Web Animations API で play/reverse を駆動(kg-textfx.js)。
   実定数: ease = 本家 myEase = GSAP Expo.easeOut ≒ cubic-bezier(.16,1,.3,1) / dur .175s /
   stagger .01s / bottom は +0.1s offset。 */
.kg-fcc{position:relative;display:inline-block;overflow:hidden;vertical-align:top;line-height:1;}
.kg-fcc__t{display:block;line-height:1;will-change:transform,opacity;}
.kg-fcc__b{position:absolute;left:0;top:0;display:block;line-height:1;
  transform:translateY(100%);opacity:0;will-change:transform,opacity;}

@media (prefers-reduced-motion: reduce){
  .pp-list .pp-name,.pp-list .pp-birth,.pp-list .pp-blood{opacity:1;transform:none;transition:none;}
  .pv-info .kg-rise>span{transform:none;transition:none;}
}
