:root {
  --primary: #C0784A;
  --primary-dark: #A8613A;
  --primary-bg: #FCF3EC;
  --border: #F3DDCD;
  --ink: #1E293B;
  --muted: #64748B;
  --danger: #DC2626;
  --success: #059669;
}
* { box-sizing: border-box; }
/* 🔴 [hidden] 兜底（2026-10-16 用户真机截图实测出的 bug）：本页用 hidden 属性切面板，
   但 .login-form 的 display:grid 是**作者样式**，会压过浏览器对 [hidden] 的 UA 默认
   display:none ⇒ HTML 里写再多个 hidden 都是摆设，确认码和账密两块面板同屏显示。
   这条必须保持在所有 display 规则之前，且不许删 —— verify-web-login-ui.js 有哨兵。 */
[hidden] { display: none !important; }

body {
  margin: 0;
  min-height: 100vh;
  font-family: -apple-system, BlinkMacSystemFont, 'Noto Sans SC', 'Inter', system-ui, sans-serif;
  color: var(--ink);
  background:
    radial-gradient(circle at top left, rgba(192,120,74,.12), transparent 32%),
    linear-gradient(180deg, #FCF3EC 0%, #F8FAFC 44%, #F1F5F9 100%);
}
.login-shell {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px 18px;
}
.login-card {
  width: min(420px, 100%);
  padding: 28px 22px 22px;
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(243,221,205,.9);
  border-radius: 22px;
  box-shadow: 0 18px 50px rgba(192,120,74,.14);
}
.login-brand { text-align: center; margin-bottom: 24px; }
.brand-icon {
  width: 58px;
  height: 58px;
  margin: 0 auto 12px;
  display: block;
  border-radius: 18px;
  object-fit: cover;      /* 源图 320×320 全出血橙底、无透明角，裁剪后即圆角方块 */
  box-shadow: 0 12px 28px rgba(192,120,74,.25);
}
.login-brand h1 { margin: 0; font-size: 24px; letter-spacing: .5px; }
.login-tip {
  margin-bottom: 14px;
  padding: 11px 12px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.4;
}
.login-tip.error { color: var(--danger); background: #FEF2F2; border: 1px solid #FECACA; }
.login-tip.ok { color: var(--success); background: #ECFDF5; border: 1px solid #A7F3D0; }
.login-form { display: grid; gap: 14px; }
.login-form label { display: grid; gap: 7px; font-size: 14px; font-weight: 600; }
.login-form input[type="text"],
.login-form input[name="username"],
.login-form input[type="password"] {
  width: 100%;
  height: 46px;
  border: 1px solid #CBD5E1;
  border-radius: 13px;
  padding: 0 13px;
  font-size: 16px;
  color: var(--ink);
  background: #F8FAFC;
  outline: none;
}
.login-form input:focus {
  border-color: var(--primary);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(192,120,74,.15);
}
.remember-row {
  display: flex !important;
  grid-template-columns: none;
  align-items: center;
  gap: 8px !important;
  color: var(--muted);
  font-weight: 500 !important;
}
.remember-row input { width: 18px; height: 18px; accent-color: var(--primary); }
.login-form button {
  height: 48px;
  border: none;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--primary-dark), var(--primary));
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  box-shadow: 0 12px 26px rgba(192,120,74,.2);
}
.login-form button:active { transform: scale(.99); }
.login-foot { margin: 18px 0 0; text-align: center; color: #94A3B8; font-size: 12px; }
/* ICP 备案号：《互联网信息服务管理办法》要求网站标明备案编号，并链接到工信部备案系统 */
.login-foot-icp { margin-top: 6px; font-size: 11px; }
/* 联系我们：可点，且比备案号显眼（进不来的用户要在这一屏找到它） */
.login-foot-contact { margin-top: 12px; font-size: 12px; }
.login-foot-contact a { color: #a2603a; }
.login-foot a { color: inherit; text-decoration: none; }
.login-foot a:hover { text-decoration: underline; }

/* ── 微信小程序确认码免密登录（主登录，2026-10-16 起）─────────────
   进页面即领码并展示，所以没有「点击才出现」的按钮与分隔线：
   大码 + 操作说明 + 状态行，三段自上而下就是主面板本身。 */
.web-code {
  margin: 6px 0 12px;
  text-align: center;
  font-size: 40px;
  font-weight: 800;
  letter-spacing: 10px;
  text-indent: 10px; /* 抵消最后一个字母后的 letter-spacing，视觉居中 */
  color: var(--ink);
  background: #F8FAFC;
  border: 1px dashed var(--border);
  border-radius: 14px;
  padding: 12px 0;
  font-variant-numeric: tabular-nums;
  user-select: all; /* 方便复制 */
}
.web-steps {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted);
  margin-bottom: 10px;
}
.web-steps b { color: var(--primary-dark); }
.web-status {
  font-size: 13px;
  color: var(--muted);
  text-align: center;
  margin-bottom: 10px;
}
.web-status.error { color: var(--danger); }
.web-retry {
  width: 100%;
  height: 38px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--primary-bg);
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.web-retry:active { transform: scale(.99); }
.mode-toggle {
  width: 100%;
  border: none;
  background: none;
  color: #94A3B8;
  font-size: 13px;
  margin-top: 14px;
  cursor: pointer;
}
