/* マウスを乗せたときに「上に出る黒いテキストボックス」。
 *
 * ── 何のためのものか ──
 * このアプリのホバー表示は2種類あり、見た目で役割を分けている
 * （2026-09-01 ユーザー指示）。
 *
 *   黒いテキストボックス（このファイル）
 *     **意図的にマウスを乗せて「詳しい中身」を読むもの。**
 *     要確認の理由（Beds24のメモ）・フロントからの依頼文・清掃員の提出内容と
 *     備考・清掃状況（清掃中／清掃完了）など、その場の判断に要る情報。
 *
 *   白いOS標準の吹き出し（ネイティブ title 属性。ここでは扱わない）
 *     「クリックすると外します」のような**操作方法の案内**。
 *     読まなくても操作できる補助なので、目立たせない。
 *
 * ネイティブ title を詳細表示に使わないのは、**マウスカーソルの下に出て
 * 文字がカーソルに隠れる**うえ、表示まで1秒ほど待たされるため。こちらは
 * 要素の真上に即座に出る。
 *
 * ── 使い方 ──
 * 出したい要素に `data-tip="本文"` を付けるだけ（改行は \n）。
 * このファイルを読み込んだページなら、どの要素でも効く。
 *
 *   <span class="flag" data-tip="Beds24のメモ…">要確認</span>
 *
 * 画面の上のほうにある要素は、上向きに出すとツールチップが画面の外に出て
 * 読めない。`js/lib/tooltip.js` の `initTipFlip(root)` を1度呼んでおくと、
 * 余白が足りない要素に `.tip-below` を付けて下向きに出し分ける。
 *
 * ── 注意 ──
 * ・**入れ物に overflow:hidden を付けない。** 付けると、上に飛び出した
 *   ツールチップが枠で切られて途中までしか読めない（house.css の .day、
 *   dashboard.css の .card に同じ注意書きがある）。
 * ・**overflow:hidden の要素には付けない。** 自分自身の擬似要素なので、
 *   枠で切られて出なくなる。文字を省略記号（text-overflow）で詰めたい要素に
 *   付けたくなりがちなので注意。外側の要素に付け替えて逃がす。
 * ・`<select>` / `<option>` には効かない。ブラウザ（OS）が描画する部品で
 *   擬似要素を持てないため。閉じた状態のプルダウンなら外側の普通の要素
 *   （div など）に付ければよい（house.css の .asg-row がその例）。開いた
 *   候補一覧に出したいなら、プルダウン自体を自前で組む必要がある
 *   （戸建て清掃手配の担当選択が実際にそうしている）。
 * ・カーソルの形（`cursor:help` など）はここでは決めない。同じ仕組みを
 *   押せるボタンにも付けるので（house.css の「確定」ボタン）、呼び出し側の
 *   都合に任せる。
 *
 * ── 経緯 ──
 * 2026-09-01 まで、この十数行が base.css（.room）・house.css（.d-spot /
 * .d-bd）・vendor.css（.pcard / .wk-ask-row）に**4か所コピーされていて**、
 * max-width や line-height が少しずつ違っていた（220px / 200px / 260px）。
 * 新しい場所に付けるたびに祖先セレクタを足す必要もあった。ユーザー指示で
 * 1か所にまとめ、`[data-tip]` だけで効くようにしてある。 */

[data-tip]{position:relative;}


[data-tip]:hover::after{
  content:attr(data-tip);
  position:absolute; left:50%; bottom:100%;
  /* --tip-shift は画面の左右からはみ出すときの寄せ幅（js/lib/tooltip.js）。 */
  transform:translate(calc(-50% + var(--tip-shift, 0px)), -6px);
  background:#1f2937; color:#fff; font-weight:400; font-size:11px; line-height:1.5;
  padding:6px 9px; border-radius:4px; text-align:left;
  white-space:pre-wrap; overflow-wrap:anywhere; word-break:break-word;
  width:max-content; max-width:240px;
  box-shadow:0 2px 6px rgba(0,0,0,.25); z-index:20; pointer-events:none;
}


/* 上に余白が足りないとき（js/lib/tooltip.js の initTipFlip が付ける）。 */
[data-tip].tip-below:hover::after{
  bottom:auto; top:100%;
  transform:translate(calc(-50% + var(--tip-shift, 0px)), 6px);
}
