/* ============================================================
   crm.css — 私密工具区（口令门）
   ============================================================ */
.gate {
  position: fixed; inset: 0; z-index: 200;
  background: var(--paper);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  transition: opacity .3s ease;
}
.gate.gate-out { opacity: 0; }
.gate-box {
  width: 100%; max-width: 380px;
  border: 1px solid var(--line-strong);
  border-top: 3px solid var(--vermilion);
  background: var(--paper-light);
  padding: 28px 26px 22px;
  text-align: center;
  box-shadow: 0 18px 50px rgba(31, 27, 23, 0.12);
}
.gate-box.shake { animation: gateShake .42s ease; }
@keyframes gateShake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-7px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(3px); }
}
.gate-seal {
  width: 46px; height: 46px; margin: 0 auto 14px;
  border: 2px solid var(--vermilion); color: var(--vermilion);
  font-family: var(--font-serif); font-size: 24px; line-height: 42px;
  letter-spacing: 0;
}
.gate-title { font-family: var(--font-serif); font-size: 18px; letter-spacing: 5px; color: var(--ink); }
.gate-sub { font-family: var(--font-mono); font-size: 9px; letter-spacing: 1.5px; color: var(--ink-fade); margin-top: 6px; }
.gate-note { font-size: 12px; color: var(--ink-soft); line-height: 1.9; margin: 14px 0 18px; }
.gate-field { display: flex; gap: 8px; }
.gate-input {
  flex: 1; min-width: 0; box-sizing: border-box;
  background: var(--paper); border: 1px solid var(--line-strong);
  padding: 10px 12px; font-family: var(--font-mono); font-size: 14px;
  letter-spacing: 2px; color: var(--ink);
}
.gate-input:focus { border-color: var(--vermilion); outline: none; }
.gate-btn {
  font-family: var(--font-serif); font-size: 13px; letter-spacing: 2px;
  color: var(--paper); background: var(--vermilion); border: none;
  padding: 10px 18px; cursor: pointer; white-space: nowrap;
}
.gate-btn:hover { opacity: .9; }
.gate-err { min-height: 18px; font-size: 11.5px; color: var(--vermilion); margin-top: 8px; }
.gate-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  flex-wrap: wrap; margin-top: 16px; padding-top: 14px;
  border-top: 1px dashed var(--line);
  font-size: 11px; color: var(--ink-fade);
}
.gate-remember { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.gate-remember input { accent-color: #A8322D; }
.gate-back { color: var(--ink-soft); text-decoration: none; border-bottom: 1px solid var(--line-strong); }
.gate-back:hover { color: var(--vermilion); border-color: var(--vermilion); }
.vault { animation: vaultIn .35s ease; }
@keyframes vaultIn { from { opacity: 0; } to { opacity: 1; } }
.crm-relock { color: var(--ink-soft); text-decoration: none; border-bottom: 1px solid var(--line-strong); }
.crm-relock:hover { color: var(--vermilion); border-color: var(--vermilion); }

/* 工具箱页的小入口 */
.crm-entry {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--font-serif); font-size: 11px; letter-spacing: 1.5px;
  color: var(--ink-soft); text-decoration: none;
  border: 1px solid var(--line-strong); padding: 3px 10px; border-radius: 12px;
}
.crm-entry:hover { color: var(--vermilion); border-color: var(--vermilion); }
.crm-entry .lock { font-size: 10px; }

@media (max-width: 560px) {
  .gate-box { padding: 22px 18px 18px; }
  .gate-title { font-size: 16px; letter-spacing: 4px; }
  .gate-field { flex-direction: column; }
  .gate-btn { width: 100%; padding: 11px; }
  .crm-entry { font-size: 10.5px; padding: 3px 8px; }
}
