/* ============================================================================
 * 文件：public/css/admin-field-toast.css
 * 版本：2026.v4767（光年指令）
 * 职责：管理端「字段就地保存提示」气泡 + 被改字段闪烁（原在 responsive.css，现抽为独立文件）
 * 配套：public/js/admin/field-toast.js（同功能 JS，亦为独立文件）
 * 说明：规则自 responsive.css 原样迁移（字节级一致），行为零变化；
 *       仅在 admin.html 引用 ⇒ 其它端不加载，天然隔离。
 * ========================================================================== */
/* ===== 2026.v4757（管理端·字段就地保存提示）：气泡 + 字段闪烁 =====
   卡上直接改值后，「XX已保存」跟随被改字段出现（挂 body + position:fixed ⇒ 不受卡片替换/裁剪影响） */
#lw-ft-host { position: fixed; inset: 0; pointer-events: none; z-index: 2147483002; }
#lw-ft-bubble {
  position: fixed; display: none; align-items: center; gap: 4px;
  height: 22px; padding: 0 8px; border-radius: 11px;
  background: #f0fdf4; border: 1px solid #86efac; color: #15803d;
  font-size: 12px; font-weight: 600; line-height: 22px; white-space: nowrap;
  box-shadow: 0 2px 8px rgba(21, 128, 61, .16);
  opacity: 0; transform: translateY(4px) scale(.96);
  transition: opacity .16s ease, transform .16s ease;
}
#lw-ft-bubble.lw-ft-in { opacity: 1; transform: translateY(0) scale(1); }
#lw-ft-bubble .lw-ft-ic { font-weight: 700; font-size: 12px; }
#lw-ft-bubble::after {
  content: ''; position: absolute; left: 50%; margin-left: -4px; width: 8px; height: 8px;
  background: #f0fdf4; border: 1px solid #86efac; transform: rotate(45deg);
}
#lw-ft-bubble[data-arrow="down"]::after { bottom: -5px; border-top: 0; border-left: 0; }
#lw-ft-bubble[data-arrow="up"]::after { top: -5px; border-bottom: 0; border-right: 0; }
/* 被改字段浅绿闪一下（1.2s 淡出，不改变尺寸/位置） */
.lw-saved-flash { animation: lwSavedFlash 1.2s ease-out 1; }
@keyframes lwSavedFlash {
  0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, .55); background-color: rgba(34, 197, 94, .16); }
  100% { box-shadow: 0 0 0 6px rgba(34, 197, 94, 0); background-color: transparent; }
