/* ============================================================================
 * interaction-safety.css — タッチ端末の “ワンタップ不発” を防ぐための全体ポリシー
 * --------------------------------------------------------------------------
 * 目的:
 *  - iOS/Safari 等で発生する「1回目のタップで :hover だけ効いて click が発火しない」問題を根本から防止。
 *  - タッチ端末ではリンクの :hover を無効化し、1タップで確実に click まで到達させる。
 *
 * 運用ルール:
 *  - このファイルは **全ページで最後に読み込む**（カスケードで勝つため）。
 *  - ボタンの見た目・押下挙動（FAB など）は各コンポーネントCSSに任せ、このファイルは “リンク挙動の安全性” のみ担保。
 *
 * 注意:
 *  - 極めて稀に「タッチでも :hover を効かせたい」箇所がある場合は、
 *    該当コンテナで a:hover のスタイルを **ローカルに再定義**（このファイルよりも後 or インライン）して許可してください。
 * ============================================================================ */

/* --------------------------------------------------------------------------
   タッチ端末では a:hover を無効化（＝1回目タップで即 click）
   - (hover: none) を第一条件に、ポインタ粗い環境も念のため包含
---------------------------------------------------------------------------- */
@media (hover: none), (pointer: coarse) {
  /* 主に色反転・背景付与・下線色の変更などを無効化（視覚ノイズの抑制） */
  a:hover {
    color: inherit;
    background: transparent;
    text-decoration-color: inherit;
    /* transform/filter が hover 装飾に使われているケースの保険（必要に応じて削除可） */
    transform: none;
    filter: none;
    opacity: inherit;
    box-shadow: none;
  }

  /* 追加: target=_blank のアクティブ残留対策（“変化させない”を既定） */
  a[target="_blank"]:active {
    color: inherit;
    background: transparent;
    transform: none;
    box-shadow: none;
    filter: none;
    opacity: inherit;
  }
}

/* タップの即時レスポンス（軽い視覚反応）*/
a:active,
button:active {
  opacity: .9;
}

/* 無効状態の可視化と操作不可の保証（全体ポリシー）*/
[aria-disabled="true"],
.is-disabled {
  pointer-events: none;
  opacity: .5;
}


/* --------------------------------------------------------------------------
   リンクのタップ応答性と視覚ノイズ低減（任意だが推奨）
   - :focus-visible は維持してキーボード操作の可視性は確保
---------------------------------------------------------------------------- */
a {
  /* 300ms遅延回避のヒント（モバイル） */
  touch-action: manipulation;
  /* iOS のタップハイライトを消して “押した感” を邪魔しない */
  -webkit-tap-highlight-color: transparent;
}

a:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   高コントラスト環境の配慮（OS側の色を尊重）
---------------------------------------------------------------------------- */
@media (forced-colors: active) {
  a:hover {
    background: transparent; /* システム配色を尊重 */
  }
  a:focus-visible {
    outline-color: Highlight;
  }
}

/* --------------------------------------------------------------------------
   一時的な“全域テキスト選択＆コールアウト抑止”（GTA が付与/解除）
   - 既存運用を尊重（!important の追加/変更は行わない＝先祖返りなし）
---------------------------------------------------------------------------- */
html.no-select {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-touch-callout: none !important;
}
