/* ═══════════════════════════════════════════════════════════════════
   手写精修层（日间）：触控热区 / 焦点环 / 镇标签入场 / 商家卡细磨
   · 定位：生成器（gen-css-split.js）产出的 style 家族之后的「手写附加层」——
     本文件不被生成器重写，改样式直接改这里；家族闸按 style-*.css 口径自动纳入扫描。
   · 现状：系统为浅色单主题（暗色主题已永久移除），本层只做日间精修；
     挂载为各页最后一张样式表，版本戳随部署统一 bump（此处不再钉死轮次号）。
   ═══════════════════════════════════════════════════════════════════ */

/* ── ① 色彩方案锁定（浅色单主题；打印/PDF 导出通道恒浅色） ── */
:root { color-scheme: light; }

/* ── ② 触控热区（≤760px：页签按钮 48px+ 拇指档） ── */
@media (max-width: 760px) {
  .app-tabs button,
  .admin-tabs button,
  .sales-tabs button {
    min-height: 48px;
    min-width: 48px;
    padding: 8px 14px;
  }
  /* ★r1381e【R74】工作台 chip 触控档 40px（workbench.css ≤560px 紧凑档同步 36→40 对齐） */
  .wb-chip { min-height: 40px; }
}

/* ── ③ 商家卡细磨（CSS-only：桌面 hover 浮起 + 焦点可见性统一） ── */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .merchant-card { transition: box-shadow 0.18s ease, transform 0.18s ease; }
  .merchant-card:hover { transform: translateY(-1px); }
}
.merchant-card:focus-visible,
.om-town-chip:focus-visible,
.app-tabs button:focus-visible,
.admin-tabs button:focus-visible,
.sales-tabs button:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

/* ── ★R80 规范（r1383 起制度化）：reduce-motion 守卫网「正向挂载」──
   新增动画（尤其 infinite 常驻动画）一律写在 @media (prefers-reduced-motion: no-preference)
   块内（下方 ④ 即范本）——reduce 用户天然无动画，不存在「忘了补黑名单」的漏网形态；
   既有「先写动画、reduce 块补 animation:none」的黑名单写法只兜存量，不再新增。
   机器闸：node scripts/scan-reduced-motion-coverage.js（infinite 动画漏网=红）。
   一次性短动画（入场淡入等）不属闸范围，仍可直写。 ── */
/* ── ④ 镇标签首屏入场（一次性，160ms 淡入上移；轮询重绘不重放） ── */
@media (prefers-reduced-motion: no-preference) {
  #opsMapTowns.om-first-in .om-town-chip { animation: omChipIn 0.16s ease both; }
}
@keyframes omChipIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: none; }
}
