/* ============================================================
   巧算盘商家联盟 H5 · 电脑端悬停交互统一层
   2026-10-01 电脑端悬停交互统一优化（按 Codex 审核意见整改版）
   ------------------------------------------------------------
   规则来源：任务下发/给技术员_电脑端悬停交互统一优化_20261001.md
   审核整改要点：
   1) 所有悬停只在鼠标设备生效（@media hover:hover + pointer:fine）
      → 手机/平板触屏不出现 hover 残留、粘住不消失
   2) 只给「真正能点」的元素做悬停：
      · <a href> / <button> / 带 onclick 或 cursor:pointer 的真实点击容器
      · 商家卡片 .shop（article[data-go] + JS 点击）、领券 .cp.cpk（cursor:pointer + 领取点击）
      · 已删除静态容器 .card / .sec / .grow / .repbox / .row / .rvitem 的悬停
   3) 只动 transform / box-shadow / border-color / background-color / color / opacity
      不使用 width/height/margin/top/left，避免布局重排与跳动
      不使用 filter（改用颜色/透明度），不使用超过 1.03 的缩放
   4) 尊重 prefers-reduced-motion：关闭位移，只保留颜色/边框变化
   5) 保留键盘 :focus-visible 可见焦点
   6) 禁用元素不给悬停反馈，不做成"像能点"
   ============================================================ */

/* ---- 统一参数 ---- */
:root{
  --hv-lift:-3px;         /* 卡片上浮 3px */
  --hv-lift-sm:-2px;      /* 按钮上浮 2px */
  --hv-shadow:0 14px 32px rgba(15,44,82,.14);
  --hv-shadow-btn:0 12px 26px rgba(22,60,110,.32);
  --hv-border:rgba(200,161,90,.6);
  --hv-dur:.2s;
}

/* ---- 键盘焦点：所有可交互元素保留可见焦点环 ---- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible{
  outline:2px solid #C8A15A;
  outline-offset:2px;
  border-radius:6px;
}

@media (hover:hover) and (pointer:fine){

  /* ===== 统一过渡：只挂到真正可交互的元素，静态容器不挂 ===== */
  .btn,.btn-gold,.btn-ghost,.btn-call,.btn-detail,.btn-join,.btn-video,
  .btn-prev,.btn-next,.bbtn,.b-nav,.b-call,.b-book,.b-fav,.mbtn,.tbtn,.mini,
  .more,.rclear,.fclear2,.sgo,.telbox,.shop,.cp,.cpk,.qsp-rv-thumb button{
    transition:transform var(--hv-dur) ease,
               box-shadow var(--hv-dur) ease,
               border-color var(--hv-dur) ease,
               background-color var(--hv-dur) ease,
               color var(--hv-dur) ease,
               opacity var(--hv-dur) ease;
  }

  /* ===== 主按钮：上浮 2px + 背景略深（用颜色替代 filter:brightness）===== */
  .btn-gold:hover{
    transform:translateY(var(--hv-lift-sm));
    box-shadow:0 12px 26px rgba(200,161,90,.4);
    background:#B8901F;                 /* 深一号金，纯颜色变化 */
  }
  .btn-call:hover,.btn-detail:hover,.btn-join:hover,.bbtn:hover,
  .b-call:hover,.b-book:hover,.mbtn:hover{
    transform:translateY(var(--hv-lift-sm));
    box-shadow:var(--hv-shadow-btn);
  }

  /* ===== 次按钮：描边变金 + 背景轻微变化（不实心化）===== */
  .btn-ghost:hover,.b-nav:hover,.b-fav:hover,.btn-video:hover,.btn-prev:hover{
    transform:translateY(var(--hv-lift-sm));
    border-color:var(--hv-border);
    background:rgba(200,161,90,.06);
    box-shadow:var(--hv-shadow);
  }
  .mini:hover,.more:hover,.tbtn:hover{
    border-color:var(--hv-border);
    color:#163C6E;
  }

  /* apply 页表单主按钮：上浮 + 阴影 + 轻微压暗（用 opacity，不用 filter）*/
  .btn-next:hover{
    transform:translateY(var(--hv-lift-sm));
    box-shadow:0 12px 26px rgba(200,161,90,.4);
    opacity:.95;
  }

  /* ===== 商家卡片 .shop：整卡上浮 3px + 图片轻微放大 1.03（容器裁切，不溢出）=====
     可点击依据：<article class="shop" data-id> 内含 data-go 跳转 + JS 点击处理
     （index.html:1199 w.closest(".shop")、:991/:993 统计点击） */
  .shop:hover{
    transform:translateY(var(--hv-lift));
    box-shadow:var(--hv-shadow);
    border-color:var(--hv-border);
  }
  .shop{overflow:hidden;}
  .shop img{will-change:transform;}
  .shop:hover img{
    transform:scale(1.03);
    transition:transform .35s ease;
  }

  /* ===== 领券 .cp.cpk：上浮 3px =====
     可点击依据：.cp.cpk{cursor:pointer}（index.html:107 / shop.html:76）
     + JS 点击处理（index.html:987 e.target.closest(".cpk")），文字提示「点击领取」 */
  .cp.cpk:hover{
    transform:translateY(var(--hv-lift));
    box-shadow:var(--hv-shadow);
    background:#FAEED2;
  }

  /* ===== 优惠券（未生效的券不提供悬停上浮）===== */
  .cp:hover{box-shadow:var(--hv-shadow);}

  /* ===== 可点击图片/图片按钮：轻微放大 + 容器裁切 ===== */
  .telbox:hover{
    transform:translateY(-1px);
    box-shadow:0 12px 26px rgba(15,44,82,.3);
    opacity:.92;
  }
  .sgo:hover{
    transform:translateY(-1px);
    box-shadow:var(--hv-shadow-btn);
    opacity:.95;
  }

  /* ===== 输入框：边框高亮（尺寸不变）===== */
  .sbox input:hover,.rv-inp:hover,.rv-ta:hover,.jy-inp:hover,
  .lbox input:hover,.bar input:hover,.bar select:hover{
    border-color:var(--hv-border);
  }
  .qsp-rv-add:hover{
    border-color:var(--hv-border);
    background:#fffdf7;
    color:#8A6A24;
  }
  .qsp-rv-thumb button:hover{          /* 真实 <button>，缩放 1.06→1.02 合规 */
    background:rgba(15,44,82,.95);
    transform:scale(1.02);
  }

  /* ===== 可点击文字链接 ===== */
  .rv-btn:hover{color:#E5B95F;}
  .rclear:hover,.fclear2:hover{color:#C8A15A;}

  /* ===== 禁用元素：保持禁用视觉，不给悬停反馈、不给手型 ===== */
  .btn:disabled,.btn[disabled],.btn[aria-disabled="true"],
  button:disabled,[disabled],[aria-disabled="true"]{
    cursor:not-allowed;
  }
  .btn:disabled:hover,.btn[disabled]:hover,.btn[aria-disabled="true"]:hover{
    transform:none;box-shadow:none;opacity:1;
  }
  .bbtn.bdead:hover{transform:none;box-shadow:none;background:#E9EDF2;}
}

/* ============================================================
   说明：静态信息容器（.card / .sec / .grow / .repbox / .row / .rvitem）
   一律不做悬停反馈，鼠标经过不移动、不变色，避免误以为整块可点。
   ============================================================ */

/* ============================================================
   尊重「减少动态效果」：去掉所有位移与放大，只保留颜色/边框/背景
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  .btn,.btn-gold,.btn-ghost,.btn-call,.btn-detail,.btn-join,.btn-video,
  .bbtn,.b-nav,.b-call,.b-book,.b-fav,.mbtn,.tbtn,.mini,.more,
  .sgo,.telbox,.shop,.cp,.cpk,.qsp-rv-add,.qsp-rv-thumb button,.shop img{
    transition:color .2s ease,background-color .2s ease,border-color .2s ease,opacity .2s ease !important;
    transform:none !important;
    animation:none !important;
  }
  .btn-gold:hover,.btn-call:hover,.btn-detail:hover,.btn-join:hover,
  .bbtn:hover,.b-call:hover,.b-book:hover,.mbtn:hover,.btn-ghost:hover,
  .b-nav:hover,.b-fav:hover,.btn-video:hover,.shop:hover,.cp.cpk:hover,
  .cp:hover,.sgo:hover,.telbox:hover,.qsp-rv-thumb button:hover{
    transform:none !important;
  }
}
