/* ===== 全局字体：ALKATIP Yazma Tom ===== */
@font-face {
  font-family: "ALKATIP Yazma Tom";
  src: url("../fonts/ALKATIP Yazma Tom.TTF") format("truetype");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
/* ===== 登录页样式 - 连锁会员管理系统 ===== */
:root{
  --bg:#f5f5f7;
  --surface:#ffffff;
  --surface-2:#fbfbfd;
  --text:#1d1d1f;
  --text-2:#6e6e73;
  --text-3:#86868b;
  --border:#d2d2d7;
  --border-soft:#e8e8ed;
  --blue:#0071e3;
  --blue-hover:#0077ed;
  --blue-soft:#e8f1ff;
  --green:#34c759;
  --orange:#ff9500;
  --red:#ff3b30;
  --purple:#af52de;
  --pink:#ff2d92;
  --cyan:#32ade6;
  --radius:14px;
  --radius-sm:10px;
  --radius-lg:20px;
  --shadow:0 4px 16px rgba(0,0,0,.06);
  --shadow-lg:0 12px 40px rgba(0,0,0,.12);
  --font:"ALKATIP Yazma Tom","SF Pro Display","Segoe UI",Tahoma,"PingFang SC","Microsoft YaHei",sans-serif;
  --font-ug:"ALKATIP Yazma Tom","SF Pro Display","Segoe UI",Tahoma,"PingFang SC","Microsoft YaHei",sans-serif;
}
body.login-body{
  font-family:var(--font);
  overflow-x: hidden;  /* 禁止 body 横向溢出，彻底去掉底部水平滚动条 */
  overflow-y: auto;
  margin: 0;
  padding: 0;
}
/* =========================================================
   Flex Column + 绝对定位卡片混合版（✅ 真正把登录卡片钉在视窗正中心）
   - 登录卡片：position:absolute + translate(-50%,-50%) = 永远水平+垂直居中（和下方备案行"有没有/多高"完全无关）
   - 备案行：留在 flex-column 流里，margin-top:auto → 永远贴视窗最底部
   ✅ 已删除 login-fill 白填充块（之前的白色方框框架）
   ✅ 已删除 login-beian-bar 白底 + 三边框（透明无框，三行纯文字直接落浅灰背景）
   ========================================================= */
.login-page {
  height: 100vh !important;
  min-height: 640px;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;   /* flex 流里只有备案行一个节点，margin:auto 顶到最底 */
  /* 🔹 响应式背景图（移动优先）三层结构（从上到下=从显示最上→最下兜底）：
     层1（显示最上）：淡白遮罩 overlay（~10%-6% alpha，经验1199638：减半alpha不洗白），保证卡片白底+字对比度
     层2（中间=主图）：text_to_image API动态生成 3尺寸响应式图（无防盗链，localhost可直接访问）
     层3（最下=兜底，主图加载失败才显示）：纯CSS Blue系商务渐变（100%永远能显示=不白屏不浅灰）
     background-color: #f0f6ff 淡蓝打底（纯蓝系不灰=就算所有层都没加载也好看）
  */
  background-color: #f0f6ff !important;     /* ✅ 极淡蓝打底（Blue系，兜底绝不是浅灰） */
  background-image:
    /* 层1 顶：淡白遮罩（alpha减半=不洗白，经验1199638） */
    linear-gradient(180deg, rgba(255,255,255,0.10) 0%, rgba(255,255,255,0.06) 100%),
    /* 层2 中：主图（本地 uploads/bj.png，Web根绝对路径=任何CSS位置都404不） */
    url("/uploads/bj.png"),
    /* 层3 底：纯CSS蓝渐变兜底（主图404/超时就显示这层，永远能显示=有图） */
    linear-gradient(135deg, #f0f7ff 0%, #e6f0ff 45%, #dbeafe 100%);
  background-size: cover !important;           /* ✅ 核心：cover = 按最短边铺满，不拉伸变形，多余裁剪，手机/平板/PC 动态合适 */
  background-position: center center !important;
  background-repeat: no-repeat !important;
  background-attachment: scroll !important;   /* ✅ 手机端用 scroll（iOS Safari fixed 背景抖动坑，兼容所有移动浏览器） */
  padding: 0 24px 0 !important;             /* 上 padding 归零（卡片绝对居中，不要再给上方留 16px） */
  position: relative !important;            /* 定位父元素（给卡片 absolute 居中用） */
  overflow: visible !important;              /* 备案行/卡片不要被裁掉，极端小屏媒体查询下面单独改 overflow */
  box-sizing: border-box;
}
/* 🔹 响应式背景图 断点1：≥768px（平板竖屏/横屏） → 同本地 bj.png + fixed 视差感 */
@media (min-width: 768px) {
  .login-page {
    background-image:
      linear-gradient(180deg, rgba(255,255,255,0.10) 0%, rgba(255,255,255,0.06) 100%),
      url("/uploads/bj.png"),
      linear-gradient(135deg, #f0f7ff 0%, #e6f0ff 45%, #dbeafe 100%);
    background-attachment: fixed !important;    /* ≥平板可以用 fixed 视差（浏览器都支持） */
  }
}
/* 🔹 响应式背景图 断点2：≥960px（所有PC电脑/笔记本≥960立刻切横屏优化=attachment fixed）
   → 同本地 bj.png + fixed 视差 */
@media (min-width: 960px) {
  .login-page {
    background-image:
      linear-gradient(180deg, rgba(255,255,255,0.10) 0%, rgba(255,255,255,0.06) 100%),
      url("/uploads/bj.png"),
      linear-gradient(135deg, #f0f7ff 0%, #e6f0ff 45%, #dbeafe 100%);
    background-attachment: fixed !important;
  }
}
/* 层1：登录卡片（✅ 固定 460×560px；✅ 真正的视窗正中心，绝对定位钉死，不依赖任何下方 flex 元素高度） */
.login-page > .login-card {
  margin: 0 !important;
  flex: none !important;
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 460px !important;
  max-width: 460px !important;
  min-width: 460px !important;
  height: 560px !important;
  z-index: 2;
}
/* 层2：备案版权行（✅ 绝对定位挂在卡片底部下方 32px — 全屏/F11/2K/4K任何分辨率相对卡片位置一致，绝不因视窗高度拉远/错位
   计算公式：top = 50vh（卡片垂直中心） + 560卡片高/2（下半边） + 32px间距 = 50vh + 312px
   ✅ max-width:100% 全宽（不和卡片 460px 绑死，4项一排）；左右 padding: 48px（和屏幕边缘不贴边）*/
.login-page > .login-beian-bar {
  position: absolute !important;
  top: calc(50vh + 312px) !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 48px 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  box-sizing: border-box !important;
}
/* 小屏兜底：视窗高度小于 640px（卡片 560 + 底部备案行 60 左右）时改自动高度，允许整体滚动
   否则 560 卡片 + 绝对居中会超视窗上下边，被裁掉不可见 */
@media (max-height: 640px) {
  .login-page {
    height: auto !important;
    min-height: 640px !important;
    overflow-y: auto !important;   /* 真的矮于 640px 才允许整体滚动（PC 笔记本极少碰到） */
    padding: 24px 16px !important;
  }
  .login-page > .login-card {
    position: static !important;   /* 回到 flex 流里，不要 absolute 居中，配合整体滚动才看得到全卡片 */
    top: auto !important;
    left: auto !important;
    transform: none !important;
    margin: 0 auto !important;
  }
  .login-page > .login-beian-bar {
    position: static !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    margin: 24px 0 0 !important;   /* flex 流里和卡片拉开 24px 间距 */
  }
}

/* 已删除所有伪元素装饰圆（login-page::before / login-page::after）
   已删除 login-fill 白色填充块（之前卡片和备案之间的白色方框框架）
   之前的右上角蓝圆 + 左下角紫圆 + login-fill 左右1px边框 都会撑滚动条/出现框架视觉 */

/* ✅ 登录卡片：固定宽高 460×560px 简体/维吾尔语严格同尺寸 */
.login-card {
  width: 460px !important;
  height: 560px !important;
  min-width: 460px !important;
  max-width: 460px !important;
  min-height: 560px !important;
  max-height: 560px !important;
  background: var(--surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--border-soft);
  overflow: hidden;
  position: relative;
  z-index: 1;
  animation: loginCardIn 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  box-sizing: border-box !important;
  display: flex;
  flex-direction: column;
}

@keyframes loginCardIn {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.login-brand {
  padding: 28px 32px 20px;
  text-align: center;
  border-bottom: 1px solid var(--border-soft);
  background: linear-gradient(180deg, var(--surface-2) 0%, var(--surface) 100%);
  flex: 0 0 auto;
}

.brand-logo {
  width: 64px;
  height: 64px;
  margin: 0 auto 12px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--blue), var(--cyan));
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 24px rgba(0, 113, 227, 0.25);
  overflow: hidden;
  flex-shrink: 0;
}

.brand-logo svg {
  width: 28px;
  height: 28px;
  color: #fff;
  stroke: #fff;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
}
.brand-logo img{width:100%;height:100%;object-fit:contain;border-radius:16px}

/* ✅ 卡片标题 h1：强制一行显示（不换行不截断），中20维17字号，完整显示不裁 */
.login-brand h1 {
  font-size: 20px;
  font-weight: 700;
  color: var(--text);
  margin: 0 0 4px 0 !important;
  letter-spacing: -0.2px;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  flex-wrap: nowrap !important;
  width: 100%;
  text-align: center;
  line-height: 1.3;
}

/* ✅ 副标题 login-sub：同样强制一行完整显示，不换行不裁 */
.login-sub {
  font-size: 13px;
  color: var(--text-3);
  font-weight: 500;
  margin: 0;
  white-space: nowrap !important;
  overflow: visible !important;
  width: 100%;
  text-align: center;
  line-height: 1.3;
}

.login-error {
  margin: 16px 28px 0;
  padding: 12px 16px;
  background: #fff5f5;
  border: 1px solid #ffe0e0;
  border-radius: var(--radius-sm);
  color: var(--red);
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 8px;
  animation: shakeIn 0.3s ease;
  flex: 0 0 auto;
  flex-shrink: 0;
}

.login-error::before {
  content: "!";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  background: var(--red);
  color: #fff;
  border-radius: 50%;
  font-size: 12px;
  font-weight: 700;
  flex-shrink: 0;
}

@keyframes shakeIn {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}

.login-form {
  /* 适配 560px 固定高度：padding 紧凑，绝对不显示滚动条！（用户画蓝框要删的就是滚动条） */
  padding: 18px 28px 4px;
  flex: 0 1 auto;           /* flex-grow:0 不要占满剩余空间导致溢出 */
  display: flex;
  flex-direction: column;
  gap: 0;
  overflow: visible !important;   /* ✅ 核心：不要 overflow-y:auto！一有 overflow:auto 就出用户画蓝框那条垂直灰色滚动条！ */
  flex-shrink: 0;
}

.login-form .field {
  margin-bottom: 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex-shrink: 0;
}

/* ✅ label 一行显示（维语用户名/密码/验证码标签），不换行撑破 field 高度 */
.login-form .field label {
  font-size: 13px;
  font-weight: 500;
  color: var(--text-2);
  display: flex;
  align-items: center;
  justify-content: space-between;
  white-space: nowrap !important;
  overflow: visible !important;
}

.toggle-pwd {
  cursor: pointer;
  color: var(--text-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px;
  border-radius: 6px;
  transition: all 0.2s;
}

.toggle-pwd:hover {
  color: var(--blue);
  background: var(--blue-soft);
}

.login-form .field input {
  height: 44px;
  padding: 0 16px;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-sm);
  background: var(--surface-2);
  color: var(--text);
  font-size: 14px;
  transition: all 0.2s ease;
}

.login-form .field input::placeholder {
  color: var(--text-3);
}

.login-form .field input:focus {
  border-color: var(--blue);
  background: var(--surface);
  box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.12);
  outline: none;
}

.login-form .field input:focus + label,
.login-form .field input:not(:placeholder-shown) + label {
  color: var(--blue);
}

.captcha-field {
  flex-direction: column;
}

.captcha-row {
  display: flex;
  gap: 10px;
  align-items: stretch;
}

.captcha-row input {
  flex: 1;
  min-width: 0;
}

.captcha-row img {
  height: 52px;
  width: 160px;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all 0.2s;
  flex-shrink: 0;
  background: #f5f5f7;
}

.captcha-row img:hover {
  border-color: var(--blue);
  transform: scale(1.02);
}

.captcha-row img:active {
  transform: scale(0.98);
}

.btn-login {
  width: 100%;
  height: 46px;
  margin-top: 8px;
  background: linear-gradient(135deg, var(--blue) 0%, #0077ed 100%);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  letter-spacing: 2px;
  position: relative;
  overflow: hidden;
  white-space: nowrap !important;       /* 登录按钮文字也不换行 */
  flex-shrink: 0;
}

/* ✅ 修复之前的老垃圾：btn-login 少写了 ::before，导致按钮样式错乱
   点击时的水波纹圆现在正确是伪元素 */
.btn-login::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  transition: width 0.4s, height 0.4s;
  z-index: 0;
}

.btn-login > * { position: relative; z-index: 1; }

.btn-login:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(0, 113, 227, 0.35);
}

.btn-login:hover::before {
  width: 300px;
  height: 300px;
}

.btn-login:active {
  transform: translateY(0) scale(0.98);
  box-shadow: 0 2px 8px rgba(0, 113, 227, 0.3);
}

.btn-login:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  transform: none;
}

.login-foot {
  /* padding 紧凑（底从 24→14）：省 10px 高度，保证内容不超 560px 卡片固定高度，从而不出滚动条 */
  padding: 10px 28px 14px;
  text-align: center;
  border-top: 1px solid var(--border-soft);
  margin-top: 6px;
  flex: 0 0 auto;
  flex-shrink: 0;
}

.login-foot a {
  font-size: 13px;
  color: var(--text-3);
  transition: color 0.2s;
}

.login-foot a:hover {
  color: var(--blue);
}

/* =============================================================
   登录页底部备案版权行（✅ 已彻底去掉框架：透明背景+无框，纯字符串直接落在浅灰背景上）
   ✅ 一行4项结构：版本号 + 域名备案 + 公网备案 + 版权所有 全一排（统一走 lbb-row flex）
   ✅ 外层绝对定位 top:calc(50vh+312px) 挂卡片底部下方 32px，全屏/F11/任何分辨率相对卡片位置一致
   ✅ 3处动态值（域名/公网/版权）套 <a> 跳转（label不跳）保留不删
   ============================================================= */
.login-beian-bar {
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0 24px 0;     /* 左右 24px，底0直接挂卡片下方 32px（上层 absolute 已经控制距离，不要再 padding-top） */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 8px 0;            /* 现在只有一行，gap 不影响视觉，保留以备扩展 */
  color: #4b5563;        /* ✅ 颜色加深一点，适配浅灰背景（var(--bg)≈#f4f6f9）的可读性 */
  font-size: 12px;
  line-height: 1.6;
  background: transparent !important;   /* ✅ 透明背景：不是白色！彻底无框架视觉！ */
  border: none !important;              /* ✅ 绝对没有任何边框！ */
  box-shadow: none !important;
  overflow-wrap: anywhere;
  word-break: break-word;
  box-sizing: border-box;
}
/* 版本号项（现在是 lbb-row 内第 1 个 flex 子项，和其他 3 个 lbb-item 完全同级 → inline-flex + 收缩允许）
   保留：label 加深 + 值=蓝色 mono 加粗 13px，字号/颜色 0 改动 */
.login-beian-bar .lbb-ver {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-start;
  flex-wrap: nowrap;                   /* 版本号标签+值也不换行 */
  gap: 0 6px;
  flex: 0 1 auto;                      /* ✅ 允许收缩（同 lbb-item 一致，4 项排不开时整体一起缩小） */
  min-width: 0;                        /* 防止 flex 最小内容宽度强制撑换行 */
}
.login-beian-bar .lbb-ver-label {
  font-weight: 600;
  color: #374151;        /* 加深适配浅灰 */
  white-space: nowrap;
  margin-right: 6px;
}
.login-beian-bar .lbb-ver-val {
  color: var(--primary, #0071e3);
  font-weight: 600;
  font-family: 'SF Mono', ui-monospace, Menlo, Consolas, 'Liberation Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.02em;
  white-space: nowrap;                 /* 版本号 mono 一串单行不换行 */
}
/* lbb-row（✅ 4 项全一排：版本号 + 域名备案 + 公网备案 + 版权）
   ✅ nowrap !important 强制不换行；gap 40 → 36 稍微紧凑放 4 项 */
.login-beian-bar .lbb-row {
  width: 100%;
  display: flex;
  flex-wrap: nowrap !important;     /* ✅ 核心：禁止自动换行！4 项必须一排 */
  justify-content: center;
  align-items: center;
  gap: 0 36px;                     /* 4 项之间 36px 间距（3 项时 40 太松放 4 项紧凑一点） */
}
.login-beian-bar .lbb-item {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: nowrap;               /* 子项内部（标签+值）也不换行，保持一排 */
  white-space: normal;
  flex: 0 1 auto;                  /* ✅ 必要时允许收缩，避免极窄时挤碎 */
  min-width: 0;                    /* 允许收缩到更小（防止 flex 项最小内容宽度溢出撑换行） */
}
.login-beian-bar .lbb-label {
  font-weight: 600;
  color: #374151;        /* 加深适配浅灰 */
  margin-right: 6px;
  white-space: nowrap;
}
/* 3处跳转链接（域名/公网备案号 + 版权值）—— 蓝色优化（经验1146314：Blue系约束，不偏紫）：
   默认：值文本统一主色蓝（和版本号蓝mono同色系）+ 加粗，label深灰不变；
   hover：下划线 + Blue600深一点蓝（#1d4ed8），明确反馈；无下划线默认不突兀。 */
.login-beian-bar .lbb-link {
  color: var(--primary, #0071e3);  /* ✅ Blue系主色，与版本号蓝同色，醒目统一 */
  font-weight: 600;                 /* ✅ 加粗（和版本号值字重一致，更抢眼） */
  text-decoration: none;            /* ✅ 默认无下划线，不拥挤 */
  cursor: pointer;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  transition: color .2s ease, text-decoration-color .2s ease;
}
.login-beian-bar .lbb-link:hover {
  text-decoration: underline;
  text-underline-offset: 2px;
  color: #1d4ed8;                   /* ✅ Blue 600 加深（经验1146314：禁止紫色，纯Blue系） */
}
/* lbb-copy 现在是 lbb-row 内第 4 个 flex 子项，和其他 3 项完全一致，继承 .lbb-item 样式 */
/* RTL 维语适配：ALKATIP 连字 + 标签 margin 反转 —— 0 改动 */
body[dir="rtl"] .login-beian-bar,
body[dir="rtl"] .login-beian-bar .lbb-row,
body[dir="rtl"] .login-beian-bar .lbb-ver,
body[dir="rtl"] .login-beian-bar .lbb-copy {
  direction: rtl;
  font-family: 'ALKATIP Yazma Tom',Tahoma,sans-serif;
  font-variant-ligatures: contextual;
  font-feature-settings: 'kern','liga','calt';
}
body[dir="rtl"] .login-beian-bar .lbb-label,
body[dir="rtl"] .login-beian-bar .lbb-ver-label {
  margin-right: 0;
  margin-left: 6px;
}
/* 移动端（≤900px）平板/大屏手机 — 4项显示优化（经验1471415：禁止transform缩放，用字号+行距+允许换行避免重叠/挤压难看，严格PC≥900 0改动）
   原问题：11px小字太挤 + nowrap强制一排4项硬叠/切字 → 难看
   优化：① 字号放大到12px清晰；② 允许换行自动对齐（2×2两行两列，不重叠）；③ 行距/间距合理留白；④ 容器微白底提对比度；⑤ label margin不变 */
@media (max-width: 900px) {
  .login-page { padding: 16px 16px 0 !important; }
  .login-page > .login-beian-bar {
    width: 100% !important;
    padding: 0 16px 0 !important;
  }
  .login-beian-bar {
    padding: 0 !important;
    gap: 8px 0 !important;                /* 行间距放大（外层8px） */
    font-size: 12px !important;           /* ✅ 字号放大1px（从11→12，经验1471415禁止缩放，纯字号调） */
    background: rgba(255,255,255,0.06) !important;   /* ✅ 容器极薄白底提亮，在手机背景图上不糊字（不影响全局） */
  }
  .login-beian-bar .lbb-row {
    gap: 10px 14px !important;            /* ✅ 上下行距10 + 左右列距14（换行后两行之间/项与项之间都留白不贴） */
    flex-wrap: wrap !important;           /* ✅ 允许换行（手机/平板窄4项放不下时，自动排成两行两列/2+2，绝不重叠挤字） */
    justify-content: center !important;   /* ✅ 换行后两行全部居中对齐，不左漂 */
  }
  .login-beian-bar .lbb-ver,
  .login-beian-bar .lbb-item {
    white-space: normal;                  /* 项本身允许长值正常换行（配合anywhere断词） */
  }
  .login-beian-bar .lbb-label { margin-right: 4px; }
}
/* 超小屏（≤680px）手机竖屏 360-414px — 极致优化（最难看的尺寸）
   原问题：10px极小字+8px贴边=瞎眼 → 优化：字号11.5px看清 + gap10×10留白 + 版本号放大 + 微白底更强 */
@media (max-width: 680px) {
  .login-page > .login-beian-bar {
    padding: 0 12px 0 !important;   /* ✅ 左右留白稍减，多抢4px横向空间放字 */
  }
  .login-beian-bar {
    font-size: 11.5px !important;           /* ✅ 从10px放大1.5px（手机竖屏也能看清，经验1471415禁缩放） */
    gap: 8px 0 !important;
    background: rgba(255,255,255,0.08) !important; /* ✅ 更薄白底，手机窄屏对比度再提高一点 */
  }
  .login-beian-bar .lbb-row {
    gap: 10px 10px !important;              /* ✅ 行距10/列距10，紧凑不贴边 */
    flex-wrap: wrap !important;             /* ✅ 自动换行不重叠 */
    justify-content: center !important;     /* ✅ 居中对齐 */
  }
  .login-beian-bar .lbb-ver-val {
    font-size: 12.5px !important;           /* ✅ 版本号蓝mono放大1.5px（最关键的一项最醒目） */
  }
}

/* RTL 布局支持 */
.lang-ug .login-form .field input:dir(rtl),
.lang-ug .captcha-row {
  direction: rtl;
}

.lang-ug .captcha-row img {
  margin-left: 0;
  margin-right: 10px;
}

/* ===== 维吾尔语(ug)模式 登录页字体优化（适配 460×560 固定卡片，绝对不换行） ===== */
body.lang-ug .login-brand h1 {
  font-family: var(--font-ug) !important;
  /* 维语标题字符更多，缩小到 16px + nowrap，保证 460px 宽度一行完整显示 */
  font-size: 16px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: normal;
  word-spacing: 0.2px;
  white-space: nowrap !important;
  overflow: visible !important;
}

body.lang-ug .login-sub {
  font-family: var(--font-ug) !important;
  /* 副标题维语 12px + nowrap，一行完整显示 */
  font-size: 12px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--text-2);
  white-space: nowrap !important;
  overflow: visible !important;
}

body.lang-ug .login-form .field {
  margin-bottom: 14px;   /* 紧凑，适配 560px 固定高度 */
}

body.lang-ug .login-form .field label {
  font-family: var(--font-ug) !important;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: normal;
  /* label 也 nowrap，维语用户名/密码/验证码标签不换行撑破高度 */
  white-space: nowrap !important;
}

body.lang-ug .login-form .field input {
  font-family: var(--font-ug) !important;
  height: 44px;   /* 从 48px → 44px 紧凑适配固定高 */
  font-size: 15px;
  font-weight: 500;
  line-height: 1.4;
  padding: 0 16px;
  letter-spacing: normal;
}

body.lang-ug .login-form .field input::placeholder {
  font-family: var(--font-ug) !important;
  font-size: 13px;
  font-weight: 400;
  opacity: 0.7;
  letter-spacing: normal;
}

body.lang-ug .toggle-pwd {
  color: var(--text-2);
}

body.lang-ug .captcha-row input {
  font-family: var(--font-ug) !important;
  height: 44px;
  font-size: 15px;
}

body.lang-ug .captcha-row img {
  height: 44px;
  width: 140px;
}

body.lang-ug .btn-login {
  font-family: var(--font-ug) !important;
  height: 46px;     /* 从 50px → 46px 紧凑，适配 560px */
  font-size: 15px;
  font-weight: 700;
  letter-spacing: normal;
  word-spacing: 1px;
  white-space: nowrap !important;
}

body.lang-ug .login-foot a {
  font-family: var(--font-ug) !important;
  font-size: 14px;
  font-weight: 600;
}

body.lang-ug .login-error {
  font-family: var(--font-ug) !important;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.6;
  padding: 14px 18px;
}

/* ===== 维文字符渲染优化（阿拉伯字母连字/形态） ===== */
body.lang-ug,
body.lang-ug * {
  font-variant-ligatures: contextual;
  font-feature-settings: "kern", "liga", "calt";
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* 响应式 */
@media (max-width: 480px) {
  .login-page {
    padding: 16px;
    align-items: flex-start;
    padding-top: 40px;
  }

  .login-card {
    border-radius: var(--radius);
  }

  .login-brand {
    padding: 28px 24px 20px;
  }

  .login-form {
    padding: 20px 24px 8px;
  }

  .login-foot {
    padding: 14px 24px 20px;
  }

  .brand-logo {
    width: 48px;
    height: 48px;
    border-radius: 14px;
  }

  .brand-logo svg {
    width: 24px;
    height: 24px;
  }

  .login-brand h1 {
    font-size: 16px;
  }
}
