/* ==========================================================
   I-05 / PROTOCOL 03 — TERMINATION
   既存の質感をそのまま使い、03固有の要素だけを足す。
   ========================================================== */

/* 誘導された組織 */
.p3-grow{transition:stroke-dashoffset 1.15s cubic-bezier(.3,.5,.4,1)}

/* ---------- 最後の内部空隙（プレイヤーが触れる唯一の場所） ---------- */
.p3-hit{fill:rgba(0,0,0,0);cursor:pointer;pointer-events:all}
#gridView.p3-armed .p3-hit{pointer-events:all}
.p3-ring{
  fill:none;stroke:rgba(170,190,185,.22);stroke-width:.9;
  stroke-dasharray:3 3;
  transition:stroke .4s ease, stroke-width .4s ease;
}
.p3-ring.near{stroke:rgba(214,232,225,.7);stroke-width:1.2}
.p3-ring.assist{animation:p3Assist 1.8s ease-out 2}
@keyframes p3Assist{
  0%,100%{stroke:rgba(170,190,185,.22)}
  40%{stroke:rgba(214,232,225,.62)}
}
.p3-scanline{
  stroke:rgba(190,214,208,.5);stroke-width:.8;
  animation:p3Sweep 2.2s ease-in-out infinite;
}
@keyframes p3Sweep{
  0%,100%{transform:translateY(-13px);opacity:.2}
  50%{transform:translateY(13px);opacity:.7}
}
.p3-target.used .p3-ring,
.p3-target.used .p3-scanline{opacity:0;transition:opacity .8s ease}

/* ---------- 抑制体の固定 ---------- */
.bk.p3-seal{
  transform-box:fill-box;transform-origin:center;
  transform:scale(.28,.36);opacity:0;filter:blur(2.4px);
  transition:transform 1.15s cubic-bezier(.25,.7,.3,1), opacity .9s ease, filter 1s ease;
}
.bk.p3-seal.in{transform:scale(1);opacity:1;filter:none}

/* ---------- 最後の脈動と衰弱 ---------- */
#gridView.p3-surge{filter:brightness(1.22) saturate(1.06);transition:filter .35s ease}
#gridView.p3-fading{filter:brightness(.78) saturate(.62);transition:filter 2.2s ease}
#gridView.p3-dead{filter:brightness(.6) saturate(.28) contrast(.95);transition:filter 3.4s ease}

/* 活動停止した節点体：脈動せず、膜が沈み、濡れが失われる */
.nd.dead{animation:none !important}
.nd.dead .nd-core{animation:none !important;opacity:.5}
.nd.dead .nd-wet{opacity:.12;transition:opacity 3s ease}
.nd.dead .nd-rimlight{opacity:.22;transition:opacity 3s ease}
.nd.dead .nd-sub{opacity:0;transition:opacity 2.6s ease}
.nd.dead .nd-membrane{opacity:.26;transition:opacity 3s ease}
.nd.dead .nd-tendrils{opacity:.2;transition:opacity 3s ease}
.nd.dead .nd-rim{opacity:.25;transition:opacity 3s ease}
/* 一部が基盤からわずかに剥離する */
.nd.dead{
  transform:translateY(.6px) scale(.985);
  transition:transform 3.2s ease;
}
#gridView.p3-dead .nd-contact{opacity:.45;transition:opacity 3s ease}
/* 導管が弛緩する */
#gridView.p3-dead .gv-fiber{opacity:.3;transition:opacity 3.4s ease}
#gridView.p3-dead .gv-strand{opacity:.18;transition:opacity 3.4s ease}
#gridView.p3-dead .gv-lib{opacity:0}
/* 内部空隙の表示も消える */
#gridView.p3-dead .p2-cav{opacity:0;transition:opacity 2.4s ease}

@media (prefers-reduced-motion: reduce){
  .p3-scanline,.p3-ring.assist{animation:none}
}
