/* ==========================================================================
   guard.css —— 华昇金玛全站「内容防护」样式（复制 / 下载 / 拖拽）
   --------------------------------------------------------------------------
   模块自治：本文件不依赖任何其它样式模块，也不改动任何已有选择器，
             只新增「禁止选中 / 禁止拖拽 / 会员弹层」三类规则。
             任何页面坏了，单独修这一个文件，重发即可，不影响其它模块。

   解锁开关：<html class="hsjm-member-on">
     · 无 class（默认）= 禁止选中 —— 即使 guard.js 没加载成功，防护依然成立
     · 有 class（会员）  = 放行

   对 GEO / SEO 的影响：无。
     搜索引擎与 AI 爬虫读取的是 HTML 源码，不执行交互拦截；user-select 只改变
     鼠标选择行为，不改变文本在 DOM 中的存在与可见性。禁止选中反而降低内容被
     整段搬运的概率，不影响抓取与收录。
   ========================================================================== */

/* ---------- 1. 未解锁：禁止文字选中 / iOS 长按菜单 ---------- */
html:not(.hsjm-member-on) body {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}

/* ---------- 2. 未解锁：禁止图片 / 媒体拖拽另存 ---------- */
html:not(.hsjm-member-on) img,
html:not(.hsjm-member-on) picture,
html:not(.hsjm-member-on) svg,
html:not(.hsjm-member-on) video,
html:not(.hsjm-member-on) canvas,
html:not(.hsjm-member-on) a {
  -webkit-user-drag: none;
  -khtml-user-drag: none;
  -moz-user-drag: none;
  -o-user-drag: none;
  user-drag: none;
  -webkit-touch-callout: none;
}

/* ---------- 3. 必须放行：表单控件与显式白名单 ---------- */
/* 否则会员码填不进去、留言表单打不了字 */
html:not(.hsjm-member-on) input,
html:not(.hsjm-member-on) textarea,
html:not(.hsjm-member-on) select,
html:not(.hsjm-member-on) option,
html:not(.hsjm-member-on) [contenteditable=""],
html:not(.hsjm-member-on) [contenteditable="true"],
html:not(.hsjm-member-on) [contenteditable="plaintext-only"] {
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
  -webkit-touch-callout: default;
  -webkit-user-drag: auto;
  user-drag: auto;
}

/* 页面里若某块内容确实需要允许复制，加上 .hsjm-guard-allow 即可 */
.hsjm-guard-allow,
.hsjm-guard-allow * {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* 会员弹层自身永远可选中、可输入 */
#hsjm-member-panel,
#hsjm-member-panel * {
  -webkit-user-select: text;
  user-select: text;
  -webkit-touch-callout: default;
}

/* ---------- 4. 拦截提示 toast ---------- */
#hsjm-guard-toast {
  position: fixed;
  left: 50%;
  bottom: 92px;
  transform: translate(-50%, 12px);
  z-index: 2147482600;
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: min(92vw, 460px);
  padding: 11px 14px 11px 16px;
  border-radius: 12px;
  background: rgba(18, 40, 30, .95);
  color: #f3f7f4;
  font: 500 14px/1.5 "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
  box-shadow: 0 16px 40px rgba(8, 28, 18, .34);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s ease, transform .22s ease;
}
#hsjm-guard-toast.hsjm-show {
  opacity: 1;
  transform: translate(-50%, 0);
  pointer-events: auto;
}
#hsjm-guard-toast .hsjm-toast-icon {
  flex: 0 0 auto;
  font-size: 15px;
  line-height: 1;
}
#hsjm-guard-toast .hsjm-toast-text {
  flex: 1 1 auto;
  min-width: 0;
}
#hsjm-guard-toast .hsjm-toast-act {
  flex: 0 0 auto;
  padding: 6px 12px;
  border: 0;
  border-radius: 8px;
  background: linear-gradient(135deg, #2f8b57, #1d6b41);
  color: #fff;
  font: 600 13px/1 "Microsoft YaHei", "PingFang SC", sans-serif;
  cursor: pointer;
  white-space: nowrap;
}
#hsjm-guard-toast .hsjm-toast-act:hover {
  filter: brightness(1.08);
}

/* ---------- 5. 常驻入口按钮 ---------- */
#hsjm-member-fab {
  position: fixed;
  right: 18px;
  bottom: 92px;
  z-index: 2147482500;
  display: flex;
  align-items: center;
  gap: 7px;
  height: 40px;
  padding: 0 14px;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 999px;
  background: linear-gradient(135deg, #2c8455, #17583a);
  color: #fff;
  font: 600 13px/1 "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
  box-shadow: 0 10px 26px rgba(12, 46, 28, .3);
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease;
}
#hsjm-member-fab:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(12, 46, 28, .38);
}
#hsjm-member-fab .hsjm-fab-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #ffd166;
  box-shadow: 0 0 0 3px rgba(255, 209, 102, .25);
}
html.hsjm-member-on #hsjm-member-fab {
  background: linear-gradient(135deg, #c98724, #9a6612);
}

/* ---------- 6. 会员弹层 ---------- */
#hsjm-member-mask {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  background: rgba(10, 26, 18, .58);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease;
}
#hsjm-member-mask.hsjm-show {
  opacity: 1;
  pointer-events: auto;
}

#hsjm-member-panel {
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 2147483100;
  width: min(94vw, 420px);
  max-height: 88vh;
  overflow-y: auto;
  transform: translate(-50%, -48%) scale(.97);
  border-radius: 18px;
  background: #ffffff;
  box-shadow: 0 30px 80px rgba(8, 24, 15, .4);
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s ease, transform .22s ease;
  font-family: "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
  color: #14231b;
}
#hsjm-member-panel.hsjm-show {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  pointer-events: auto;
}

.hsjm-mp-head {
  position: relative;
  padding: 22px 22px 18px;
  border-radius: 18px 18px 0 0;
  background: linear-gradient(135deg, #1f6b45 0%, #17462f 100%);
  color: #fff;
  overflow: hidden;
}
.hsjm-mp-head::after {
  content: "";
  position: absolute;
  right: -40px;
  top: -50px;
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: rgba(201, 135, 36, .28);
  filter: blur(6px);
}
.hsjm-mp-head h3 {
  position: relative;
  margin: 0 0 4px;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .02em;
}
.hsjm-mp-head p {
  position: relative;
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: rgba(255, 255, 255, .84);
  max-width: none;
}
.hsjm-mp-close {
  position: absolute;
  right: 12px;
  top: 12px;
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, .16);
  color: #fff;
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
}
.hsjm-mp-close:hover {
  background: rgba(255, 255, 255, .3);
}

.hsjm-mp-body {
  padding: 18px 22px 22px;
}

.hsjm-mp-price {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 12px;
  background: linear-gradient(135deg, #f3f8f4, #eaf3ec);
  border: 1px solid #d7e7dc;
}
.hsjm-mp-price .hsjm-amount {
  font-size: 30px;
  font-weight: 800;
  color: #17583a;
  letter-spacing: -.01em;
}
.hsjm-mp-price .hsjm-amount small {
  font-size: 14px;
  font-weight: 600;
  margin-left: 1px;
}
.hsjm-mp-price .hsjm-unit {
  font-size: 13px;
  color: #5b6b61;
}
.hsjm-mp-price .hsjm-tag {
  margin-left: auto;
  padding: 3px 9px;
  border-radius: 999px;
  background: #c98724;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
}

.hsjm-mp-status {
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.6;
  border: 1px solid #d7e7dc;
  background: #f7faf8;
  color: #2b4636;
}
.hsjm-mp-status strong {
  color: #17583a;
}
.hsjm-mp-status.hsjm-on {
  background: #fff8e6;
  border-color: #f0dcae;
  color: #6b4a10;
}

.hsjm-mp-label {
  display: block;
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 600;
  color: #3b5247;
}
.hsjm-mp-input {
  width: 100%;
  height: 44px;
  padding: 0 14px;
  border: 1px solid #cddcd3;
  border-radius: 10px;
  background: #fff;
  color: #14231b;
  font: 600 15px/44px "SFMono-Regular", Menlo, Consolas, monospace;
  letter-spacing: .08em;
  text-transform: uppercase;
  outline: none;
  transition: border-color .16s ease, box-shadow .16s ease;
}
.hsjm-mp-input:focus {
  border-color: #2f8b57;
  box-shadow: 0 0 0 3px rgba(47, 139, 87, .14);
}
.hsjm-mp-input.hsjm-err {
  border-color: #c62828;
  box-shadow: 0 0 0 3px rgba(198, 40, 40, .12);
}

.hsjm-mp-msg {
  min-height: 20px;
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.5;
}
.hsjm-mp-msg.hsjm-err {
  color: #c62828;
}
.hsjm-mp-msg.hsjm-ok {
  color: #1d6b41;
}

.hsjm-mp-btn {
  display: block;
  width: 100%;
  height: 46px;
  margin-top: 14px;
  border: 0;
  border-radius: 11px;
  background: linear-gradient(135deg, #2f8b57, #17583a);
  color: #fff;
  font: 700 15px/46px "Microsoft YaHei", "PingFang SC", sans-serif;
  cursor: pointer;
  transition: filter .16s ease, transform .12s ease;
}
.hsjm-mp-btn:hover {
  filter: brightness(1.07);
}
.hsjm-mp-btn:active {
  transform: scale(.99);
}
.hsjm-mp-btn[disabled] {
  opacity: .6;
  cursor: default;
}
.hsjm-mp-btn.hsjm-ghost {
  margin-top: 9px;
  background: #eef4f0;
  color: #2b4636;
  font-weight: 600;
}

.hsjm-mp-buy {
  display: none;
}
.hsjm-mp-buy.hsjm-show {
  display: block;
  margin-top: 14px;
  padding: 14px;
  border-radius: 12px;
  background: #fff8e6;
  border: 1px solid #f0dcae;
  font-size: 13px;
  line-height: 1.7;
  color: #6b4a10;
}
.hsjm-mp-buy img {
  display: block;
  width: 168px;
  max-width: 100%;
  margin: 10px auto 0;
  border-radius: 8px;
  background: #fff;
}
.hsjm-mp-buy a {
  color: #17583a;
  font-weight: 700;
}

.hsjm-mp-foot {
  margin: 14px 0 0;
  font-size: 11.5px;
  line-height: 1.7;
  color: #8a958e;
}
.hsjm-mp-foot code {
  padding: 1px 4px;
  border-radius: 4px;
  background: #f1f5f2;
  font-size: 11px;
}

/* ---------- 7. 移动端微调 ---------- */
@media (max-width: 620px) {
  #hsjm-member-fab {
    right: 12px;
    bottom: 78px;
    height: 36px;
    padding: 0 12px;
    font-size: 12px;
  }
  #hsjm-guard-toast {
    bottom: 78px;
    left: 12px;
    right: 12px;
    transform: translateY(12px);
    max-width: none;
  }
  #hsjm-guard-toast.hsjm-show {
    transform: translateY(0);
  }
  #hsjm-member-panel {
    width: min(96vw, 420px);
  }
}

/* ---------- 8. 打印：未解锁时不输出正文（仅提示） ---------- */
@media print {
  html:not(.hsjm-member-on) .hsjm-print-block {
    display: none !important;
  }
}
