/* ui/signin.css —— 整页登录 / 首次改密码 / 没权限页（线A 10-13 · Cheng 20:0x 批：照 Henry 的登录页做）
 *  底 #141315 + 右上金色径向光晕；居中卡片 360px #1c1a1f / 边 #302c33 / 圆角 16；MOD LIGHTING 字标；大写小字副标题；深色输入框；深红错误条。
 *  ⛔ 不连外网字体（ERP 在内网 / Tailscale 上开）：系统字体兜底。
 *  三种用法共用这一份：ui/signin.html（服务端直接回的整页）· 会话中途 401 时盖在页面上的整屏层（html.signin-on）· 服务端出的没权限页。 */
.signin, .signin * { box-sizing: border-box; }
.signin {
  position: fixed; inset: 0; z-index: 2147483000; overflow: auto;
  display: flex; align-items: center; justify-content: center; padding: 24px 16px;
  background: #141315; color: #f2eee7;
  background-image: radial-gradient(900px 380px at 82% -10%, rgba(214, 173, 96, .10), transparent 60%);
  font-family: Inter, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
  -webkit-font-smoothing: antialiased;
}
html.signin-on body > *:not(#signinPage) { display: none !important; }   /* 会话中途 401：后面的菜单骨架 / 操作人下拉 / 「载入失败」一概不露 */
html.signin-on, html.signin-on body { overflow: hidden; }
.signin .card {
  width: 360px; max-width: calc(100vw - 32px); margin: auto;
  background: #1c1a1f; border: 1px solid #302c33; border-radius: 16px;
  padding: 34px 30px 26px; box-shadow: 0 24px 70px rgba(0, 0, 0, .55);
}
.signin .logo { width: 122px; margin: 0 auto 6px; display: block; }
.signin .logo svg { width: 100%; height: auto; display: block; }
.signin .word { text-align: center; font-size: 10.5px; letter-spacing: .42em; padding-left: .42em; color: #f2eee7; margin-bottom: 16px; }
.signin .sub { text-align: center; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: #a49c90; margin-bottom: 20px; }
.signin .err { background: #3a1f1f; border: 1px solid #5a2a2a; color: #ffb3b3; font-size: 13px; border-radius: 8px; padding: 9px 12px; margin-bottom: 16px; text-align: center; }
.signin .msg { text-align: center; font-size: 13.5px; color: #a49c90; margin-bottom: 20px; line-height: 1.5; }
.signin .fld { margin-bottom: 14px; }
.signin label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: #a49c90; margin-bottom: 7px; }
.signin input {
  width: 100%; background: #141315; border: 1px solid #3b3640; border-radius: 9px; color: #f2eee7;
  padding: 12px 14px; font-size: 15px; outline: none; font-family: inherit;
}
.signin input:focus { border-color: #d6ad60; }
.signin button, .signin a.go {
  display: block; width: 100%; margin-top: 16px; background: #d6ad60; color: #20180a; border: 0; border-radius: 9px;
  padding: 12px; font-size: 14px; font-weight: 700; letter-spacing: .02em; cursor: pointer; font-family: inherit;
  text-align: center; text-decoration: none;
}
.signin button:disabled { opacity: .6; cursor: default; }
.signin button:hover, .signin a.go:hover { opacity: .88; }   /* ⛔ 悬停只改深浅（ERP 悬停卡死那次的教训：只切 opacity） */
.signin .alt { display: block; text-align: center; margin-top: 14px; font-size: 12.5px; color: #a49c90; }
.signin .alt a { color: #d6ad60; text-decoration: none; }
.signin .foot { text-align: center; font-size: 11px; color: #726a60; margin-top: 20px; }
.signin [hidden] { display: none !important; }
/* 密码框右边的小眼睛（Cheng 10-15）：⛔ 要盖掉上面 .signin button 的金色整行样式 */
.signin .pw { position: relative; }
.signin .pw input { padding-right: 46px; }
.signin .pw button.eye {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; margin: 0; padding: 0;
  display: flex; align-items: center; justify-content: center; background: transparent; color: #a49c90; border: 0; border-radius: 7px; font-weight: 400;
}
.signin .pw button.eye[aria-pressed="true"] { color: #d6ad60; }
.signin .pw button.eye:focus-visible { outline: 2px solid #d6ad60; outline-offset: 1px; }
