/* ============================================================
   登录页 pm_page_login.css（user_login.php 专用）
   ------------------------------------------------------------
   V2.6.67 重写、V2.6.68 把 classic/portal/compact 重设计为深色科技动效风：七套「登录页版式」，后台「系统设置 → 登录页版式」选择，
   服务端输出 .pm-ls-<key> 到 .pm-login 上，这里按版式切换布局与视觉：

     gov_blue 政务蓝图 — 顶部政企横幅 + 深蓝穹顶光场 + 居中单栏大卡
     matrix   科技矩阵 — 深空底 + 透视网格地平线 + 极光扫描 + 毛玻璃卡
     space    星河航天 — 深空星野 + 地球弧光地平线 + 轨道环 + 流星（冲击最强）
     classic  海洋气象 — 深蓝海洋场景 + 极光/星点/轨道环 + 左暗玻璃品牌区 + 右浅玻璃卡
     portal   蓝紫全息 — 深蓝紫全息场景 + 极光/粒子/旋转罗盘环 + 顶部品牌条 + 左右双栏 + 页脚
     split    中轴分屏 — 全屏渐变 + 左右分屏大卡（品牌区/表单区各半）
     compact  工业霓虹 — 近黑工业底 + 贯穿红霓虹流光 + 克制网格 + 暗玻璃红描边卡（白字）

   ⚠ 设计铁律：
     1) 版式只管「布局与质感」，颜色一律引用 --pm-* 主题变量，
        这样 7 版式 × 5 配色 = 35 种组合都成立（配色见 pm_theme_*.css）。
     2) 所有版式共用同一份 HTML（横幅 / 顶部条 / 品牌区 / 卡片 / 页脚 与
        全部装饰层都在 DOM 里，由 CSS 决定启用哪些），新增版式不必改 PHP。
     3) 窄屏一律自动堆叠为单栏。品牌区在窄屏隐藏时，卡内抬头
        （.pm-ls-head）必须补位显示，否则页面会出现「没有系统名」的裸表单。
     4) 一屏铁律：整页锁定 100dvh、overflow:hidden，尺寸全部走
        clamp(min, Nvh, max) 随视口高度收缩；通用页脚 .foot 在登录页隐藏
        （否则多撑出约 68px 必然出现竖向滚动条）。见文末「高度分级压缩」。

   ⚠ 本页面 CSS 经 $pm_page_css 在 pm_theme.css 之后挂载，响应式覆盖
     必须写在本文件里（写在 pm_theme.css 会被这里的基态盖掉）。
   ============================================================ */

/* ---------- 0. 一屏锁定：整屏铺满、不出现竖向滚动条 ---------- */
body.pm-login-body{ margin:0; padding:0; background:var(--pm-bg,#f7fafd); }
/* 通用页脚（corp/common/foot.php）在登录页隐藏 —— 登录页自带 .pm-ls-foot，
   留着 .foot 会让文档高度 = 100vh + 68px，必然出现竖向滚动条。 */
body.pm-login-body > .foot{ display:none !important; }
.pm-login{
  position:relative; overflow:hidden;
  width:100%;
  height:100vh; height:100dvh;
  box-sizing:border-box;
  display:flex; flex-direction:column;
  background:var(--pm-bg);
  /* V2.6.105：底部为「版权角标」预留一条带。版权条是 position:absolute 贴页面底的胶囊
     （bottom:8~14px，本身高约 26px），而 wrap 的可用高度就是整屏 —— 卡片较高时
     （注册页 8 个字段最典型）卡片底缘会正好压在胶囊上，看起来「版权框与上面的框粘在一起」。
     在容器底部留一条带后：卡片在带上方垂直居中，胶囊落在带内，两者永远有间距。 */
  padding:0 0 var(--ls-copyh);
  /* 一屏自适应尺寸：随视口高度收缩，短屏自动变紧凑而不是溢出 */
  --ls-pad-x:clamp(20px, 3.4vh, 34px);
  --ls-pad-t:clamp(16px, 2.6vh, 26px);
  --ls-pad-b:clamp(18px, 3.0vh, 30px);
  --ls-gap  :clamp(9px,  1.9vh, 16px);
  --ls-ctl  :clamp(39px, 5.6vh, 46px);
  --ls-btn  :clamp(42px, 5.5vh, 48px);
  --ls-h3   :clamp(17px, 2.5vh, 20px);
  /* 底部版权带高度：胶囊 26px + 底距 8~14px，取 34~48px 可保证完全不重叠 */
  --ls-copyh:clamp(34px, 5.2vh, 48px);
  /* V2.6.103：卡片抬头名称字号上限 24px → 21px。
     品牌名取自后台「顶部 logo 文字」，客户常填单位全称（20 字上下），
     24px 时一行要 480px+，任何 440px 级别的卡片都装不下 → 必折成两行难看。
     配合卡片加宽与 foot.php 里的单行自适应脚本，绝大多数品牌名可一行显示。 */
  --ls-name :clamp(16px, 2.6vh, 21px);
  --ls-mark :clamp(26px, 4.2vh, 32px);
  --ls-wrapy:clamp(14px, 3.4vh, 32px);
  /* 装饰层配色（各版式覆盖）：⚠ 必须定义在 .pm-login 上，不能定义在
     .pm-ls-deco 上 —— 自定义属性自身声明会压掉继承值，版式覆盖会失效。 */
  --ls-c1:rgba(90,160,255,.55);
  --ls-c2:rgba(64,220,255,.34);
  --ls-c3:rgba(40,90,200,.50);
}

/* ============================================================
   1. 装饰层：所有版式共用同一份 DOM，按版式启用
   （极光 / 星野 / 网格 / 地平线 / 轨道环 / 扫描线 / 流星 / 双光晕）
   ============================================================ */
.pm-ls-deco{
  position:absolute; inset:0; z-index:1;
  pointer-events:none; overflow:hidden; display:none;
}
/* 天顶柔光：给纯色底加一层纵深，避免大面积死板 */
.pm-ls-deco__sky{
  position:absolute; inset:0;
  background:radial-gradient(130% 90% at 50% -10%, rgba(255,255,255,.12), rgba(255,255,255,0) 62%);
}
/* 极光带：三条大尺度柔光斑，缓慢漂移 */
.pm-ls-deco__aurora{
  position:absolute; inset:-25% -15%;
  filter:blur(54px); opacity:.62;
  background:
    radial-gradient(46% 40% at 20% 26%, var(--ls-c1) 0%, rgba(0,0,0,0) 70%),
    radial-gradient(40% 34% at 80% 18%, var(--ls-c2) 0%, rgba(0,0,0,0) 70%),
    radial-gradient(52% 42% at 62% 84%, var(--ls-c3) 0%, rgba(0,0,0,0) 72%);
  animation:pm-aurora 28s ease-in-out infinite alternate;
}
@keyframes pm-aurora{
  0%  { transform:translate3d(-3%,-2%,0) scale(1.00); }
  50% { transform:translate3d(3%, 2%,0)  scale(1.09); }
  100%{ transform:translate3d(-2%, 3%,0) scale(1.03); }
}
/* 星野：三层不同密度的点阵错开叠加 + 呼吸闪烁；::before 稀疏亮星，::after 星云 */
.pm-ls-deco__stars{
  position:absolute; inset:0; opacity:.9;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.95) 1px, rgba(0,0,0,0) 1.6px),
    radial-gradient(circle, rgba(255,255,255,.65) 1px, rgba(0,0,0,0) 1.5px),
    radial-gradient(circle, rgba(255,255,255,.42) 1px, rgba(0,0,0,0) 1.4px);
  background-size:190px 190px, 271px 271px, 353px 353px;
  background-position:0 0, 63px 97px, 148px 41px;
  animation:pm-twinkle 7.5s ease-in-out infinite alternate;
}
.pm-ls-deco__stars::before{
  content:""; position:absolute; inset:0;
  background-image:
    radial-gradient(circle, rgba(255,255,255,1) 1.6px, rgba(0,0,0,0) 2.4px),
    radial-gradient(circle, rgba(190,225,255,.9) 1.4px, rgba(0,0,0,0) 2.2px);
  background-size:520px 520px, 733px 733px;
  background-position:88px 33px, 302px 188px;
  animation:pm-twinkle 4.5s ease-in-out infinite alternate-reverse;
}
.pm-ls-deco__stars::after{
  content:""; position:absolute; inset:0;
  background:radial-gradient(60% 45% at 72% 30%, rgba(120,170,255,.16), rgba(0,0,0,0) 70%);
}
@keyframes pm-twinkle{ 0%{ opacity:.55; } 100%{ opacity:1; } }
/* 网格：默认平面细网格（政务蓝图）；matrix / space 覆盖为透视地平线网格 */
.pm-ls-deco__grid{
  position:absolute; inset:-2px; opacity:.5;
  background-image:
    linear-gradient(rgba(255,255,255,.055) 1px, rgba(0,0,0,0) 1px),
    linear-gradient(90deg, rgba(255,255,255,.055) 1px, rgba(0,0,0,0) 1px);
  background-size:46px 46px;
}
/* 地球弧光地平线（星河航天）：一颗巨大行星的边缘从画面下方隆起。
   定位用 top + translateX(-50%)，尺寸取 max(240vh,130vw) 保证任意视口比例
   下弧线都能横贯整屏底边（不会出现「行星只占中间一小块」）。 */
.pm-ls-deco__horizon{
  position:absolute; left:50%; top:52%;
  width:max(240vh, 130vw); height:max(240vh, 130vw);
  transform:translateX(-50%);
  border-radius:50%;
  background:
    radial-gradient(circle at 50% 3%, rgba(130,190,255,.34) 0%, rgba(14,28,58,.92) 30%, rgba(4,9,22,1) 70%);
  box-shadow:0 -3px 80px 14px rgba(96,170,255,.28);
}
/* 大气层辉光：沿弧顶一圈渐隐的冷光 */
.pm-ls-deco__horizon::before{
  content:""; position:absolute; left:6%; right:6%; top:-1.5%; height:12%;
  border-radius:50% 50% 0 0 / 100% 100% 0 0;
  background:linear-gradient(180deg, rgba(165,215,255,.62), rgba(90,160,255,.14) 58%, rgba(0,0,0,0));
  filter:blur(2px);
}
/* 轨道环（星河航天）：tilt 后的三重同心环，缓慢自转 */
.pm-ls-deco__orbit{
  position:absolute; left:50%; top:56%;
  width:880px; height:880px; margin:-440px 0 0 -440px;
  border:1px solid rgba(255,255,255,.13); border-radius:50%;
  transform:rotateX(74deg);
  animation:pm-orbit 52s linear infinite;
}
.pm-ls-deco__orbit::before{
  content:""; position:absolute; inset:96px;
  border:1px solid rgba(255,255,255,.10); border-radius:50%;
}
.pm-ls-deco__orbit::after{
  content:""; position:absolute; inset:198px;
  border:1px dashed rgba(255,255,255,.12); border-radius:50%;
}
@keyframes pm-orbit{ from{ transform:rotateX(74deg) rotateZ(0deg); } to{ transform:rotateX(74deg) rotateZ(360deg); } }
/* 扫描线：一条横贯全屏的柔光带自上而下扫过 */
.pm-ls-deco__scan{
  position:absolute; left:-10%; right:-10%; top:-200px; height:200px; opacity:.55;
  background:linear-gradient(180deg,
    rgba(0,0,0,0) 0%, rgba(140,200,255,.08) 42%, rgba(190,225,255,.22) 50%,
    rgba(140,200,255,.08) 58%, rgba(0,0,0,0) 100%);
  animation:pm-scan 8.5s linear infinite;
}
@keyframes pm-scan{ from{ transform:translateY(0); } to{ transform:translateY(calc(100vh + 400px)); } }
/* 流星：::after 为第二条（延迟错开） */
.pm-ls-deco__shoot{
  position:absolute; top:-60px; left:-160px; width:200px; height:2px; opacity:0;
  background:linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.95) 82%, rgba(160,205,255,0));
  transform:rotate(26deg);
  animation:pm-shoot 11s ease-in infinite;
}
.pm-ls-deco__shoot::after{
  content:""; position:absolute; top:130px; left:-260px; width:150px; height:1.5px;
  background:linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.75) 85%, rgba(160,205,255,0));
  transform:rotate(26deg);
  animation:pm-shoot 17s ease-in 5.5s infinite;
}
@keyframes pm-shoot{
  0%   { opacity:0; transform:translate(0,0) rotate(26deg); }
  2%   { opacity:1; }
  11%  { opacity:0; transform:translate(115vw, 56vh) rotate(26deg); }
  100% { opacity:0; transform:translate(115vw, 56vh) rotate(26deg); }
}
/* 双光晕 */
.pm-ls-deco__glow{ position:absolute; border-radius:50%; }
.pm-ls-deco__glow--a{
  width:60vh; height:60vh; left:-18vh; top:-22vh;
  background:radial-gradient(circle, var(--ls-c1) 0%, rgba(0,0,0,0) 68%);
  opacity:.30;
}
.pm-ls-deco__glow--b{
  width:72vh; height:72vh; right:-22vh; bottom:-28vh;
  background:radial-gradient(circle, var(--ls-c2) 0%, rgba(0,0,0,0) 68%);
  opacity:.26;
}
/* 无障碍：用户开启「减少动态效果」时停掉全部动画 */
@media (prefers-reduced-motion: reduce){
  /* 全局关闭 .pm-login 内全部动画（含卡片/品牌入场、光晕呼吸、星点漂浮等）；
     入场动画用 fill:both 设定初始 opacity:0，禁用后回到元素默认（opacity:1），不会残留不可见。 */
  .pm-login *{ animation:none !important; }
  .pm-ls-deco__stars::before,
  .pm-ls-deco__stars::after,
  .pm-ls-classic .pm-ls-brand::before,
  .pm-ls-classic .pm-ls-brand::after,
  .pm-ls-portal .pm-ls-brand::before{ animation:none !important; }
  .pm-ls-deco__scan{ display:none !important; }
  .pm-ls-deco__shoot{ opacity:0 !important; }
}

/* ============================================================
   1.5 新版式动效关键帧（V2.6.68 新增，支持「丰富动效」）
   供 classic / portal / compact 三套深色科技风复用
   ============================================================ */
/* 光晕呼吸：明度与尺寸缓慢起伏 */
@keyframes pm-breathe{ 0%,100%{ opacity:.18; transform:scale(1); } 50%{ opacity:.38; transform:scale(1.06); } }
/* 星点缓慢漂浮：与 pm-twinkle（闪烁）叠加，营造悬浮感 */
@keyframes pm-float{ 0%{ transform:translate3d(0,0,0); } 50%{ transform:translate3d(0,-14px,0); } 100%{ transform:translate3d(0,0,0); } }
/* 卡片入场：上浮 + 轻微放大淡入 */
@keyframes pm-card-in{ from{ opacity:0; transform:translateY(22px) scale(.985); } to{ opacity:1; transform:none; } }
/* 品牌区入场：左侧滑入淡入 */
@keyframes pm-brand-in{ from{ opacity:0; transform:translateX(-18px); } to{ opacity:1; transform:none; } }
/* 海洋气象雷达扫掠（保持垂直居中 transform） */
@keyframes pm-radar{ from{ transform:translateY(-50%) rotate(0deg); } to{ transform:translateY(-50%) rotate(360deg); } }
/* 全息罗盘环反向自转 */
@keyframes pm-orbit-rev{ from{ transform:rotate(0deg); } to{ transform:rotate(-360deg); } }
/* 工业霓虹：红描边呼吸辉光 */
@keyframes pm-neon{
  0%,100%{ box-shadow:0 0 0 1px rgba(255,60,60,.55), 0 24px 60px rgba(0,0,0,.55), 0 0 22px rgba(255,40,40,.18); }
  50%    { box-shadow:0 0 0 1px rgba(255,95,95,.95), 0 24px 60px rgba(0,0,0,.55), 0 0 40px rgba(255,55,55,.42); }
}

/* ---------- 2. 骨架：所有版式共用 ---------- */
.pm-ls-banner{ position:relative; z-index:2; display:none; }
.pm-ls-topbar{ position:relative; z-index:2; display:none; }

.pm-ls-wrap{
  position:relative; z-index:2;
  flex:1 1 auto; min-height:0;
  width:100%; box-sizing:border-box;
  display:flex; align-items:center; justify-content:center;
  padding:var(--ls-wrapy) 20px;
}
.pm-ls-brand{ display:none; }
.pm-ls-panel{ width:100%; display:flex; justify-content:center; min-height:0; }
.pm-ls-card{
  /* V2.6.103：440px → 520px。卡片上方那行「品牌名」在 440px 下必定折行，
     客户填单位全称时第二行只剩几个字，很难看。加宽 80px 是各版式统一口径。 */
  width:100%; max-width:520px;
  background:#fff; border-radius:18px;
  box-shadow:var(--pm-shadow-lg);
  overflow:hidden;
}
.pm-ls-head{ display:none; padding:var(--ls-pad-t) var(--ls-pad-x) 0; text-align:center; }
/* 抬头名称：单行优先。字距收窄到 .5px（原 1~1.5px 白占宽度），
   最终能否一行由 foot.php 的 pm-ls 自适应脚本实测决定（缩字号，放不下才换行）。 */
.pm-ls-head__name{ line-height:1.3; letter-spacing:.5px; }
.pm-ls-body{ padding:var(--ls-pad-t) var(--ls-pad-x) var(--ls-pad-b); }
.pm-ls-foot{ position:relative; z-index:2; display:none; }

/* ---------- 3. 徽标（纯 CSS，无图片依赖） ---------- */
.pm-ls-mark{
  flex:0 0 auto; position:relative;
  width:var(--ls-mark); height:var(--ls-mark); border-radius:9px;
  background:linear-gradient(135deg,var(--pm-accent,#4d9bf5),var(--pm-primary,#1c6fd0));
  box-shadow:0 3px 12px rgba(0,0,0,.22);
}
.pm-ls-mark::after{
  content:""; position:absolute; inset:8px;
  border:2px solid rgba(255,255,255,.92); border-radius:3px;
}

/* ---------- 4. 表单基础（六版式共用） ---------- */
.pm-ls-body h3{ font-size:var(--ls-h3); font-weight:700; color:var(--pm-text); margin:0 0 3px; }
/* 「用户名 / 密码」提示与三个字段的 label 重复，且占一屏高度 —— 收起 */
.pm-ls-body .pm-hint{ display:none; margin:0; }
.pm-ls-body .form-group{ margin-bottom:var(--ls-gap); }
.pm-ls-body label{ font-size:12.5px; font-weight:600; color:var(--pm-ink-2); margin-bottom:5px; }
.pm-ls-body .form-control{
  height:var(--ls-ctl); border-radius:10px; border:1px solid var(--pm-border); box-shadow:none;
}
.pm-ls-body .form-control:focus{ border-color:var(--pm-primary); box-shadow:var(--pm-ring); }
/* 验证码行：输入框自适应，图片等高不压缩 */
.pm-ls-captcha-row{ display:flex; align-items:center; gap:10px; }
.pm-ls-captcha-row .form-control{ flex:1 1 auto; width:auto; min-width:0; }
.pm-ls-captcha{
  flex:0 0 auto; height:var(--ls-ctl); width:118px;
  border:1px solid var(--pm-border); border-radius:10px; cursor:pointer;
  background:#fff; object-fit:cover;
}
.pm-login__btn{
  width:100%; height:var(--ls-btn); border:none; border-radius:10px; cursor:pointer;
  background:linear-gradient(135deg,var(--pm-primary),var(--pm-accent)); color:#fff;
  font-size:15.5px; font-weight:700; letter-spacing:2px; transition:.16s;
}
.pm-login__btn:hover{ filter:brightness(1.06); box-shadow:0 10px 24px rgba(28,111,208,.36); }
.pm-ls-links{ margin-top:clamp(9px,1.6vh,14px); font-size:12.5px; text-align:center; }
.pm-ls-links a{ color:var(--pm-primary); }
.pm-ls-links .sep{ color:#cbd5e1; margin:0 8px; }
.pm-ls-ver{ margin-top:8px; font-size:11.5px; text-align:right; color:var(--pm-muted); }
/* ---------- 4.1 深色版式原生下拉选项面板 ----------
   原生 <select> 在 matrix / space / compact 深色卡片下，闭合框是深色底白字，
   但展开的选项面板默认是白底，选项文字仍继承白色 → 白底白字看不清。
   给三个深色版式的 option 配深色底 + 白字，与输入框保持一致。 */
.pm-ls-matrix .pm-ls-body select.form-control,
.pm-ls-space  .pm-ls-body select.form-control,
.pm-ls-compact .pm-ls-body select.form-control{ color:#fff; }
.pm-ls-matrix .pm-ls-body select.form-control option,
.pm-ls-space  .pm-ls-body select.form-control option,
.pm-ls-compact .pm-ls-body select.form-control option{
  background:#1b1b22; color:#fff;
}
.pm-ls-matrix .pm-ls-body select.form-control option:hover,
.pm-ls-space  .pm-ls-body select.form-control option:hover,
.pm-ls-compact .pm-ls-body select.form-control option:hover{
  background:#2a2a34; color:#fff;
}
/* 品牌区（portal / split 复用同一份 DOM） */
.pm-login__logo{ display:flex; align-items:center; gap:12px; font-size:22px; font-weight:800; letter-spacing:1px; }
.pm-login__logo .dot{ width:13px; height:13px; border-radius:50%; background:#fff; box-shadow:0 0 0 5px rgba(255,255,255,.25); }
.pm-login__title{ font-size:33px; font-weight:800; line-height:1.3; margin:8px 0 12px; }
.pm-login__sub{ font-size:13.5px; opacity:.9; line-height:1.7; }
.pm-login__features{ list-style:none; padding:0; margin:16px 0 0; }
.pm-login__features li{ font-size:13px; opacity:.92; padding:5px 0 5px 22px; position:relative; }
.pm-login__features li::before{ content:"\2713"; position:absolute; left:0; top:5px; font-weight:800; }
.pm-login__foot{ font-size:12px; opacity:.8; }

/* ============================================================
   V2.6.90：登录页统一版权条
   ------------------------------------------------------------
   格式：© 2026 系统名称丨关于丨联系我们丨Powered by 署名
   两个落点共用同一份 HTML（品牌区页脚 .pm-login__foot 与底部页脚 .pm-ls-foot），
   这里只负责排版，**不设颜色** —— 每种登录配色各自在 .pm-login__foot /
   .pm-ls-foot__inner 上定义了前景色，这里写死会盖掉它们。
   「丨」两侧留 8px：中文竖笔易与相邻汉字粘连，纯靠空格分不开。
   ============================================================ */
.pm-copybar{ font-size:12px; line-height:1.9; letter-spacing:.2px; }
.pm-copybar__sep{ margin:0 8px; opacity:.55; }
.pm-copybar a{ text-decoration:none; }
.pm-copybar a:hover{ text-decoration:underline; }
/* 版权条在窄屏会换行，竖笔出现在行首/行尾时容易看成符号 —— 允许在分隔符前后断行，
   但不让「丨」自己单独占一行（white-space:nowrap 只作用于分隔符本身）。 */
@media (max-width:480px){
  .pm-copybar{ line-height:2; }
  .pm-copybar__sep{ margin:0 5px; }
}

/* ============================================================
   版式一：政务蓝图 gov_blue
   顶部政企横幅 + 深蓝穹顶光场（天顶柔光 + 极光 + 平面细网格）+ 居中单栏大卡
   ============================================================ */
.pm-ls-gov_blue{
  background:linear-gradient(165deg,var(--pm-topbar-bg,#0f3d78) 0%,var(--pm-primary-d,#14539e) 52%,var(--pm-primary,#1c6fd0) 100%);
  --ls-c1:rgba(120,180,255,.50);
  --ls-c2:rgba(80,220,255,.26);
  --ls-c3:rgba(30,80,190,.52);
}
.pm-ls-gov_blue .pm-ls-deco{ display:block; }
.pm-ls-gov_blue .pm-ls-deco__aurora{ opacity:.42; }
.pm-ls-gov_blue .pm-ls-deco__stars,
.pm-ls-gov_blue .pm-ls-deco__horizon,
.pm-ls-gov_blue .pm-ls-deco__orbit,
.pm-ls-gov_blue .pm-ls-deco__shoot{ display:none; }
.pm-ls-gov_blue .pm-ls-banner{
  display:block; background:rgba(0,0,0,.22);
  border-bottom:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px);
}
.pm-ls-gov_blue .pm-ls-banner__inner{
  max-width:1080px; margin:0 auto; padding:clamp(11px,1.9vh,16px) 20px;
  display:flex; align-items:center; gap:12px;
}
.pm-ls-gov_blue .pm-ls-banner__name{ color:#fff; font-size:18px; font-weight:800; letter-spacing:1px; line-height:1.3; }
.pm-ls-gov_blue .pm-ls-banner__slogan{ color:rgba(255,255,255,.78); font-size:12.5px; margin-top:3px; line-height:1.5; }
.pm-ls-gov_blue .pm-ls-card{
  max-width:540px;
  box-shadow:0 30px 70px rgba(4,16,40,.42), 0 0 0 1px rgba(255,255,255,.10);
}
.pm-ls-gov_blue .pm-ls-head{ display:block; }
.pm-ls-gov_blue .pm-ls-head__name{ margin-top:11px; font-size:var(--ls-name); font-weight:800; color:var(--pm-text); letter-spacing:.5px; }
.pm-ls-gov_blue .pm-ls-head__slogan{ margin-top:5px; font-size:12.5px; color:var(--pm-muted); line-height:1.6; }
.pm-ls-gov_blue .pm-ls-head .pm-ls-mark{ margin:0 auto; }
.pm-ls-gov_blue .pm-ls-body{ padding-top:calc(var(--ls-pad-t) - 4px); }

/* ============================================================
   版式二：科技矩阵 matrix
   深空底 + 透视网格地平线 + 极光 + 扫描线 + 毛玻璃单栏卡
   ============================================================ */
.pm-ls-matrix{
  background:radial-gradient(125% 120% at 22% 0%, #17253f 0%, #0c1526 46%, #070d18 100%);
  --ls-c1:rgba(56,132,255,.62);
  --ls-c2:rgba(0,229,255,.32);
  --ls-c3:rgba(120,80,255,.30);
}
/* ⚠ 透视必须写在父级（.pm-ls-deco）上，不能写成 transform:perspective(...) 内联：
   内联 perspective 的投影中心是元素自身，far edge 会被压到 100px 以内，网格几乎看不见。 */
.pm-ls-matrix .pm-ls-deco{ display:block; perspective:1500px; }
.pm-ls-matrix .pm-ls-deco__aurora{ opacity:.58; }
/* 透视网格地平线：网格平面向后倒伏 + 向上滚动，形成「穿越数据空间」的纵深 */
.pm-ls-matrix .pm-ls-deco__grid{
  inset:auto -70% -6% -70%; height:66%; opacity:.9;
  transform:rotateX(64deg);
  transform-origin:50% 100%;
  background-image:
    linear-gradient(rgba(140,205,255,.55) 1px, rgba(0,0,0,0) 1px),
    linear-gradient(90deg, rgba(140,205,255,.42) 1px, rgba(0,0,0,0) 1px);
  background-size:52px 52px;
  -webkit-mask-image:linear-gradient(to top, #000 0%, rgba(0,0,0,.55) 40%, rgba(0,0,0,0) 94%);
          mask-image:linear-gradient(to top, #000 0%, rgba(0,0,0,.55) 40%, rgba(0,0,0,0) 94%);
  animation:pm-grid 3.6s linear infinite;
}
/* 地平线亮线：网格远端的发光横边，是这套版式最强的纵深锚点 */
.pm-ls-matrix .pm-ls-deco__grid::before{
  content:""; position:absolute; left:0; right:0; top:0; height:2px;
  background:linear-gradient(90deg, rgba(0,0,0,0), rgba(160,220,255,.90) 50%, rgba(0,0,0,0));
  box-shadow:0 0 26px 7px rgba(110,190,255,.48);
}
@keyframes pm-grid{ from{ background-position:0 0, 0 0; } to{ background-position:0 52px, 0 0; } }
.pm-ls-matrix .pm-ls-deco__stars{ opacity:.55; }
/* ⚠ 地平线亮线不能画在 .pm-ls-deco__grid::before 上 —— 网格自带 mask，
   远端（top）被完全遮掉，亮线根本出不来。这里把 __horizon 在 matrix 下
   变体成一条独立的发光横边（不参与旋转与遮罩），位置对齐网格收敛处。 */
.pm-ls-matrix .pm-ls-deco__horizon{
  display:block;
  left:-12%; right:-12%; top:auto; bottom:19%;
  width:auto; height:2px; transform:none; border-radius:0;
  background:linear-gradient(90deg, rgba(0,0,0,0), rgba(165,222,255,.92) 50%, rgba(0,0,0,0));
  box-shadow:0 0 32px 9px rgba(110,190,255,.40);
}
.pm-ls-matrix .pm-ls-deco__horizon::before{ display:none; }
.pm-ls-matrix .pm-ls-deco__orbit,
.pm-ls-matrix .pm-ls-deco__shoot{ display:none; }
.pm-ls-matrix .pm-ls-card{
  max-width:524px;
  background:rgba(255,255,255,.085);
  border:1px solid rgba(255,255,255,.18);
  -webkit-backdrop-filter:blur(18px) saturate(1.25); backdrop-filter:blur(18px) saturate(1.25);
  box-shadow:0 30px 72px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.10);
}
.pm-ls-matrix .pm-ls-head{ display:block; }
.pm-ls-matrix .pm-ls-head__name{ margin-top:11px; font-size:var(--ls-name); font-weight:800; color:#fff; letter-spacing:.5px; }
.pm-ls-matrix .pm-ls-head__slogan{ margin-top:5px; font-size:12.5px; color:rgba(255,255,255,.66); line-height:1.6; }
.pm-ls-matrix .pm-ls-head .pm-ls-mark{ margin:0 auto; }
.pm-ls-matrix .pm-ls-body h3{ color:#fff; }
.pm-ls-matrix .pm-ls-body label{ color:rgba(255,255,255,.84); }
.pm-ls-matrix .pm-ls-body .form-control{
  background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.22); color:#fff;
}
.pm-ls-matrix .pm-ls-body .form-control::placeholder{ color:rgba(255,255,255,.45); }
.pm-ls-matrix .pm-ls-body .form-control:focus{
  border-color:var(--pm-accent); box-shadow:0 0 0 3px rgba(120,190,255,.22);
}
.pm-ls-matrix .pm-ls-captcha{ background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.22); }
.pm-ls-matrix .pm-ls-links a{ color:var(--pm-accent); }
.pm-ls-matrix .pm-ls-links .sep{ color:rgba(255,255,255,.28); }
.pm-ls-matrix .pm-ls-ver{ color:rgba(255,255,255,.45); }

/* ============================================================
   版式三：星河航天 space（V2.6.67 新增）
   深空星野 + 地球弧光地平线 + 三重轨道环 + 流星 + 极光 + 扫描线
   卡片为深空玻璃 + 发光描边（全站视觉冲击最强的一套）
   ============================================================ */
.pm-ls-space{
  background:radial-gradient(120% 110% at 50% 4%, #10203c 0%, #0a1428 42%, #050a16 74%, #020610 100%);
  --ls-c1:rgba(70,140,255,.58);
  --ls-c2:rgba(120,220,255,.30);
  --ls-c3:rgba(150,90,255,.24);
}
.pm-ls-space .pm-ls-deco{ display:block; perspective:1100px; }
.pm-ls-space .pm-ls-deco__aurora{ opacity:.52; }
.pm-ls-space .pm-ls-deco__stars{ opacity:1; }
/* 网格弱化为远处的经纬网格，压在星野之下不抢戏 */
.pm-ls-space .pm-ls-deco__grid{
  inset:-2px; opacity:.16; background-size:70px 70px;
  background-image:
    linear-gradient(rgba(140,190,255,.20) 1px, rgba(0,0,0,0) 1px),
    linear-gradient(90deg, rgba(140,190,255,.16) 1px, rgba(0,0,0,0) 1px);
}
.pm-ls-space .pm-ls-deco__horizon{ display:block; }
.pm-ls-space .pm-ls-deco__orbit{ display:block; }
.pm-ls-space .pm-ls-deco__scan{ opacity:.42; }
.pm-ls-space .pm-ls-deco__shoot{ display:block; }
.pm-ls-space .pm-ls-deco__glow--a{ opacity:.24; }
.pm-ls-space .pm-ls-deco__glow--b{ opacity:.22; }
/* 星河航天不显示顶部横幅/品牌条 —— 抬头信息收进卡片，让画面留给星野 */
.pm-ls-space .pm-ls-banner, .pm-ls-space .pm-ls-topbar{ display:none; }
.pm-ls-space .pm-ls-wrap{ padding:var(--ls-wrapy) 20px; }
.pm-ls-space .pm-ls-card{
  max-width:528px;
  background:linear-gradient(180deg, rgba(20,34,62,.80) 0%, rgba(10,20,40,.74) 100%);
  border:1px solid rgba(140,190,255,.26);
  -webkit-backdrop-filter:blur(20px) saturate(1.3); backdrop-filter:blur(20px) saturate(1.3);
  box-shadow:0 34px 80px rgba(0,0,0,.60), 0 0 42px rgba(70,140,255,.16), inset 0 1px 0 rgba(255,255,255,.12);
}
.pm-ls-space .pm-ls-head{ display:block; }
.pm-ls-space .pm-ls-head__name{
  margin-top:11px; font-size:var(--ls-name); font-weight:800; letter-spacing:.5px; color:#fff;
  text-shadow:0 0 18px rgba(120,180,255,.45);
}
.pm-ls-space .pm-ls-head__slogan{ margin-top:5px; font-size:12.5px; color:rgba(200,225,255,.70); line-height:1.6; }
.pm-ls-space .pm-ls-head .pm-ls-mark{
  margin:0 auto;
  background:linear-gradient(135deg,#7fd0ff,#2a6ff0);
  box-shadow:0 0 20px rgba(90,170,255,.55);
}
.pm-ls-space .pm-ls-body h3{ color:#fff; letter-spacing:1px; }
.pm-ls-space .pm-ls-body label{ color:rgba(206,228,255,.86); }
.pm-ls-space .pm-ls-body .form-control{
  background:rgba(255,255,255,.09); border:1px solid rgba(150,200,255,.24); color:#fff;
}
.pm-ls-space .pm-ls-body .form-control::placeholder{ color:rgba(190,215,245,.42); }
.pm-ls-space .pm-ls-body .form-control:focus{
  border-color:#69b4ff; box-shadow:0 0 0 3px rgba(105,180,255,.24);
}
.pm-ls-space .pm-ls-captcha{ background:rgba(255,255,255,.09); border-color:rgba(150,200,255,.24); }
.pm-ls-space .pm-login__btn{
  background:linear-gradient(135deg,#1d63d8 0%, #3aa0ff 52%, #6fd2ff 100%);
  box-shadow:0 8px 26px rgba(45,130,255,.42);
}
.pm-ls-space .pm-login__btn:hover{ box-shadow:0 12px 32px rgba(70,170,255,.55); }
.pm-ls-space .pm-ls-links a{ color:#7cc6ff; }
.pm-ls-space .pm-ls-links .sep{ color:rgba(255,255,255,.24); }
.pm-ls-space .pm-ls-ver{ color:rgba(180,210,245,.48); }

/* ============================================================
   版式四：蓝紫全息 portal（V2.6.68 重设计为深色科技动效风）
   深蓝紫全息场景 + 极光/粒子/轨道环/光晕呼吸 + 暗玻璃品牌区（旋转罗盘环）
   + 浅玻璃卡 + 顶部品牌条 + 页脚。配色仍引用 --pm-* 变量保正交。
   ============================================================ */
.pm-ls-portal{
  background:radial-gradient(120% 115% at 50% 6%, #1a1345 0%, #120c34 44%, #0a0726 78%, #050318 100%);
  --ls-c1:rgba(130,110,255,.56);
  --ls-c2:rgba(80,180,255,.34);
  --ls-c3:rgba(180,90,255,.34);
}
.pm-ls-portal .pm-ls-deco{ display:block; perspective:1100px; }
.pm-ls-portal .pm-ls-deco__aurora{ opacity:.5; }
.pm-ls-portal .pm-ls-deco__stars{ opacity:.95; animation:pm-twinkle 7.5s ease-in-out infinite alternate, pm-float 26s linear infinite; }
.pm-ls-portal .pm-ls-deco__orbit{ display:block; border-color:rgba(170,150,255,.18); }
.pm-ls-portal .pm-ls-deco__orbit::before{ border-color:rgba(150,130,255,.14); }
.pm-ls-portal .pm-ls-deco__orbit::after{ border-color:rgba(170,150,255,.15); }
.pm-ls-portal .pm-ls-deco__glow--a{ opacity:.30; animation:pm-breathe 8s ease-in-out infinite; }
.pm-ls-portal .pm-ls-deco__glow--b{ opacity:.26; animation:pm-breathe 10s ease-in-out infinite; }
.pm-ls-portal .pm-ls-deco__grid,
.pm-ls-portal .pm-ls-deco__horizon,
.pm-ls-portal .pm-ls-deco__scan,
.pm-ls-portal .pm-ls-deco__shoot{ display:none; }
.pm-ls-portal .pm-ls-topbar{
  display:block; background:rgba(18,12,44,.55);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(160,140,255,.20);
}
.pm-ls-portal .pm-ls-topbar__inner{
  max-width:1100px; margin:0 auto; padding:clamp(10px,1.8vh,14px) 20px;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
}
.pm-ls-portal .pm-ls-topbar__brand{ display:flex; align-items:center; gap:10px; font-size:17px; font-weight:800; color:#fff; letter-spacing:.5px; }
.pm-ls-portal .pm-ls-topbar__nav{ display:flex; align-items:center; gap:18px; font-size:13px; }
.pm-ls-portal .pm-ls-topbar__nav a{ color:rgba(220,210,255,.82); }
.pm-ls-portal .pm-ls-topbar__nav a:hover{ color:#fff; }
.pm-ls-portal .pm-ls-wrap{
  /* ⚠ align-items 必须是 center 不是 stretch：stretch 会把登录卡拉到与品牌区
     等高（桌面 734px / 手机 689px），卡内只有约 430px 内容，剩下全是空白。 */
  display:grid; grid-template-columns:1.05fr .95fr; gap:24px; align-items:center;
  max-width:1160px; margin:0 auto; padding:var(--ls-wrapy) 20px;
}
.pm-ls-portal .pm-ls-brand{
  display:flex; flex-direction:column; justify-content:space-between;
  padding:var(--ls-pad-x); border-radius:18px; overflow:hidden; color:#fff;
  position:relative;
  background:linear-gradient(155deg, rgba(22,14,56,.74) 0%, rgba(42,26,100,.46) 100%);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border:1px solid rgba(160,140,255,.22);
  box-shadow:0 24px 60px rgba(6,4,24,.42), inset 0 1px 0 rgba(255,255,255,.10);
  animation:pm-brand-in .8s cubic-bezier(.22,.9,.3,1) both;
}
.pm-ls-portal .pm-ls-brand.pm-login__brand{ border-top:3px solid var(--pm-accent,#8a6bff); }
/* 全息罗盘环：旋转虚线环 + 内发光，纯 CSS */
.pm-ls-portal .pm-ls-brand::before{
  content:""; position:absolute; width:300px; height:300px; right:-78px; bottom:-66px;
  border-radius:50%; border:1px dashed rgba(170,150,255,.32);
  box-shadow:inset 0 0 42px rgba(120,100,255,.18);
  animation:pm-orbit-rev 38s linear infinite; pointer-events:none;
}
.pm-ls-portal .pm-login__logo{ color:#fff; }
.pm-ls-portal .pm-login__logo .dot{ background:#fff; box-shadow:0 0 0 4px rgba(170,150,255,.28); }
.pm-ls-portal .pm-login__title{ color:#fff; font-size:32px; }
.pm-ls-portal .pm-login__sub{ color:rgba(220,210,255,.9); opacity:1; }
.pm-ls-portal .pm-login__features{ margin-top:18px; display:grid; grid-template-columns:1fr 1fr; gap:1px 18px; }
.pm-ls-portal .pm-login__features li{ color:rgba(220,210,255,.9); opacity:1; }
.pm-ls-portal .pm-login__features li::before{ color:#9c8bff; }
.pm-ls-portal .pm-login__foot{ color:rgba(220,210,255,.7); opacity:1; margin-top:16px; padding-top:12px; border-top:1px solid rgba(160,140,255,.20); }
.pm-ls-portal .pm-ls-panel{ display:flex; }
.pm-ls-portal .pm-ls-card{
  max-width:none; border:1px solid rgba(255,255,255,.55);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  background:rgba(255,255,255,.92);
  box-shadow:0 24px 60px rgba(6,4,24,.42);
  display:flex; flex-direction:column; justify-content:center;
  animation:pm-card-in .8s cubic-bezier(.22,.9,.3,1) .08s both;
}
.pm-ls-portal .pm-ls-foot{
  display:block; background:rgba(18,12,44,.55);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  border-top:1px solid rgba(160,140,255,.20);
  padding:clamp(9px,1.7vh,14px) 20px; font-size:12px; color:rgba(220,210,255,.7);
}
.pm-ls-portal .pm-ls-foot__inner{
  max-width:1100px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
}
.pm-ls-portal .pm-ls-foot__links a{ margin-right:16px; color:rgba(220,210,255,.82); }
/* V2.6.105：portal 底部自带整条页脚（.pm-ls-foot 是流内元素），它本身已把正文与页面底隔开，
   不需要再为版权角标预留底部带 —— 否则页脚条下方会多出一条空带。
   其余版式（无页脚条）由 .pm-login 的 padding-bottom 预留，见文件开头。 */
.pm-ls-portal.pm-login{ padding-bottom:0; }

/* ============================================================
   版式五：中轴分屏 split（V2.6.68 重设计）
   整屏渐变 + 左右分屏「玻璃壳」大卡（品牌区 44% / 表单区 56%），
   壳内左侧暗玻璃品牌区、右侧近白表单区，质感更通透；自定义背景下整体转霜化玻璃
   ============================================================ */
.pm-ls-split{
  background:linear-gradient(135deg,var(--pm-primary-d,#14539e) 0%,var(--pm-primary,#1c6fd0) 45%,var(--pm-accent,#4d9bf5) 100%);
  --ls-c1:rgba(255,255,255,.34);
  --ls-c2:rgba(160,220,255,.26);
  --ls-c3:rgba(30,90,200,.34);
}
.pm-ls-split .pm-ls-deco{ display:block; }
.pm-ls-split .pm-ls-deco__aurora{ opacity:.42; }
.pm-ls-split .pm-ls-deco__stars, .pm-ls-split .pm-ls-deco__horizon,
.pm-ls-split .pm-ls-deco__orbit, .pm-ls-split .pm-ls-deco__shoot{ display:none; }
.pm-ls-split .pm-ls-wrap{
  max-width:1080px; margin:auto; padding:0;
  display:grid; grid-template-columns:44% 56%; align-items:stretch;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.28); border-radius:24px; overflow:hidden;
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  box-shadow:0 34px 80px rgba(6,22,52,.40);
}
.pm-ls-split .pm-ls-brand{
  display:flex; flex-direction:column; justify-content:space-between;
  padding:var(--ls-pad-x); color:#fff; position:relative; overflow:hidden;
  background:linear-gradient(155deg, rgba(8,20,44,.62) 0%, rgba(20,60,120,.30) 100%);
}
.pm-ls-split .pm-ls-brand::after{
  content:""; position:absolute; inset:-30% -20%;
  background:radial-gradient(45% 40% at 24% 22%, rgba(255,255,255,.22), rgba(0,0,0,0) 70%);
  pointer-events:none;
}
.pm-ls-split .pm-ls-panel{ padding:var(--ls-pad-x); display:flex; flex-direction:column; justify-content:center; background:rgba(255,255,255,.96); }
.pm-ls-split .pm-ls-card{ max-width:none; background:transparent; box-shadow:none; border-radius:0; }
/* split 自定义背景：玻璃壳整体霜化，背景图透出；抵消全局白卡规则（壳内已无独立卡片） */
.pm-login--image.pm-ls-split .pm-ls-wrap,
.pm-login--video.pm-ls-split .pm-ls-wrap{ background:rgba(10,20,40,.42); border-color:rgba(255,255,255,.20); }
.pm-login--image.pm-ls-split .pm-ls-brand,
.pm-login--video.pm-ls-split .pm-ls-brand{ background:linear-gradient(155deg, rgba(6,16,36,.55) 0%, rgba(16,48,96,.28) 100%); }
.pm-login--image.pm-ls-split .pm-ls-panel,
.pm-login--video.pm-ls-split .pm-ls-panel{ background:rgba(255,255,255,.92); }
.pm-login--image.pm-ls-split .pm-ls-card,
.pm-login--video.pm-ls-split .pm-ls-card{ background:transparent !important; box-shadow:none !important; }

/* ============================================================
   版式六：工业霓虹 compact（V2.6.68 重设计为深色科技动效风）
   近黑工业底 + 克制网格 + 贯穿红霓虹流光（scan 重着色）+ 暗玻璃红描边卡（白字）
   + 红霓虹呼吸描边 + 卡片入场动画。保持单栏窄卡「简约匣」定位。
   ============================================================ */
.pm-ls-compact{
  background:radial-gradient(120% 120% at 50% 0%, #15151a 0%, #0c0c10 46%, #070709 100%);
  --ls-c1:rgba(255,70,70,.30);
  --ls-c2:rgba(255,120,120,.20);
  --ls-c3:rgba(120,20,20,.30);
}
.pm-ls-compact .pm-ls-deco{ display:block; }
/* 克制网格：低透明度工业网格 */
.pm-ls-compact .pm-ls-deco__grid{
  opacity:.16;
  background-image:
    linear-gradient(rgba(255,90,90,.16) 1px, rgba(0,0,0,0) 1px),
    linear-gradient(90deg, rgba(255,90,90,.16) 1px, rgba(0,0,0,0) 1px);
  background-size:54px 54px;
}
/* 贯穿红霓虹流光：竖向红扫光（重着色 scan） */
.pm-ls-compact .pm-ls-deco__scan{
  opacity:.5;
  background:linear-gradient(180deg,
    rgba(0,0,0,0) 0%, rgba(255,70,70,.10) 42%, rgba(255,110,110,.40) 50%,
    rgba(255,70,70,.10) 58%, rgba(0,0,0,0) 100%);
  animation:pm-scan 7s linear infinite;
}
.pm-ls-compact .pm-ls-deco__aurora{ opacity:.5; filter:blur(70px); }
.pm-ls-compact .pm-ls-deco__glow--a{ opacity:.22; animation:pm-breathe 8s ease-in-out infinite; }
.pm-ls-compact .pm-ls-deco__glow--b{ opacity:.18; animation:pm-breathe 11s ease-in-out infinite; }
.pm-ls-compact .pm-ls-deco__stars,
.pm-ls-compact .pm-ls-deco__horizon,
.pm-ls-compact .pm-ls-deco__orbit,
.pm-ls-compact .pm-ls-deco__shoot{ display:none; }
.pm-ls-compact .pm-ls-card{
  max-width:496px; border:1px solid rgba(255,90,90,.55); border-radius:16px;
  background:linear-gradient(180deg, rgba(22,22,28,.86) 0%, rgba(12,12,16,.80) 100%);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  box-shadow:0 0 0 1px rgba(255,90,90,.30), 0 24px 60px rgba(0,0,0,.55), 0 0 28px rgba(255,40,40,.18);
  color:#fff;
  animation:pm-card-in .8s cubic-bezier(.22,.9,.3,1) both, pm-neon 3.4s ease-in-out .8s infinite;
}
.pm-ls-compact .pm-ls-head{ display:block; }
.pm-ls-compact .pm-ls-head .pm-ls-mark{
  margin:0 auto; width:calc(var(--ls-mark) - 4px); height:calc(var(--ls-mark) - 4px); border-radius:8px;
  background:linear-gradient(135deg,#ff6a6a,#c81e1e);
  box-shadow:0 0 16px rgba(255,70,70,.5);
}
.pm-ls-compact .pm-ls-head__name{ margin-top:9px; font-size:calc(var(--ls-name) - 2px); font-weight:800; color:#fff; letter-spacing:.5px; }
.pm-ls-compact .pm-ls-head__slogan{ margin-top:4px; font-size:12px; color:rgba(255,200,200,.7); }
.pm-ls-compact .pm-ls-body h3{ color:#fff; }
.pm-ls-compact .pm-ls-body label{ color:rgba(255,220,220,.86); }
.pm-ls-compact .pm-ls-body .form-control{
  background:rgba(255,255,255,.06); border:1px solid rgba(255,120,120,.30); color:#fff;
}
.pm-ls-compact .pm-ls-body .form-control::placeholder{ color:rgba(255,200,200,.40); }
.pm-ls-compact .pm-ls-body .form-control:focus{ border-color:#ff6a6a; box-shadow:0 0 0 3px rgba(255,90,90,.22); }
.pm-ls-compact .pm-ls-captcha{ background:rgba(255,255,255,.06); border-color:rgba(255,120,120,.30); }
.pm-ls-compact .pm-login__btn{
  background:linear-gradient(135deg,#e02424,#ff5a5a);
  box-shadow:0 8px 26px rgba(224,36,36,.42);
}
.pm-ls-compact .pm-login__btn:hover{ box-shadow:0 12px 32px rgba(255,70,70,.55); }
.pm-ls-compact .pm-ls-links a{ color:#ff7a7a; }
.pm-ls-compact .pm-ls-links .sep{ color:rgba(255,255,255,.28); }
.pm-ls-compact .pm-ls-ver{ color:rgba(255,200,200,.48); }

/* ============================================================
   版式七：海洋气象 classic（V2.6.68 重设计为深色科技动效风）
   深蓝海洋场景 + 极光/星点/轨道环/光晕呼吸 + 左暗玻璃品牌区（雷达扫掠）
   + 右浅玻璃卡，卡片与品牌区入场动画。配色仍引用 --pm-* 变量保正交。
   ============================================================ */
.pm-ls-classic{
  background:radial-gradient(125% 120% at 24% 8%, #0a2742 0%, #08233f 44%, #04162b 78%, #020c1c 100%);
  --ls-c1:rgba(70,180,255,.60);
  --ls-c2:rgba(40,225,235,.34);
  --ls-c3:rgba(40,120,220,.46);
}
.pm-ls-classic .pm-ls-deco{ display:block; perspective:1100px; }
.pm-ls-classic .pm-ls-deco__aurora{ opacity:.55; }
.pm-ls-classic .pm-ls-deco__stars{ opacity:.9; animation:pm-twinkle 7.5s ease-in-out infinite alternate, pm-float 24s linear infinite; }
.pm-ls-classic .pm-ls-deco__orbit{ display:block; }
.pm-ls-classic .pm-ls-deco__glow--a{ opacity:.32; animation:pm-breathe 7s ease-in-out infinite; }
.pm-ls-classic .pm-ls-deco__glow--b{ opacity:.26; animation:pm-breathe 9s ease-in-out infinite; }
.pm-ls-classic .pm-ls-deco__scan{ opacity:.4; }
.pm-ls-classic .pm-ls-deco__grid,
.pm-ls-classic .pm-ls-deco__horizon,
.pm-ls-classic .pm-ls-deco__shoot{ display:none; }
.pm-ls-classic .pm-ls-wrap{
  display:grid; grid-template-columns:46% 54%; align-items:center; gap:0;
  max-width:1160px; margin:0 auto; padding:var(--ls-wrapy) 20px;
}
.pm-ls-classic .pm-ls-brand{
  display:flex; flex-direction:column; justify-content:center; align-self:stretch;
  padding:var(--ls-pad-x); color:#fff; position:relative; overflow:hidden;
  border-radius:18px 0 0 18px;
  background:linear-gradient(160deg, rgba(8,26,48,.86) 0%, rgba(10,44,78,.66) 100%);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  border:1px solid rgba(120,200,255,.20); border-right:none;
  box-shadow:0 24px 60px rgba(2,12,28,.40), inset 0 1px 0 rgba(255,255,255,.08);
  animation:pm-brand-in .8s cubic-bezier(.22,.9,.3,1) both;
}
/* 海洋气象雷达扫掠：旋转的扇形 + 同心涟漪环，纯 CSS 无额外资源 */
.pm-ls-classic .pm-ls-brand::before{
  content:""; position:absolute; width:340px; height:340px; right:-110px; top:50%;
  transform:translateY(-50%);
  border-radius:50%;
  background:conic-gradient(from 0deg, rgba(60,210,255,0) 0deg, rgba(60,210,255,.30) 42deg, rgba(60,210,255,0) 96deg, rgba(60,210,255,0) 360deg);
  animation:pm-radar 6s linear infinite; pointer-events:none;
}
.pm-ls-classic .pm-ls-brand::after{
  content:""; position:absolute; width:320px; height:320px; right:-100px; top:50%;
  transform:translateY(-50%);
  border-radius:50%; border:1px solid rgba(90,200,255,.22);
  box-shadow:0 0 0 64px rgba(90,200,255,.05), 0 0 0 128px rgba(90,200,255,.03);
  pointer-events:none;
}
.pm-ls-classic .pm-login__logo{ color:#fff; }
.pm-ls-classic .pm-login__logo .dot{ background:#fff; box-shadow:0 0 0 4px rgba(120,200,255,.28); }
.pm-ls-classic .pm-login__title{ color:#fff; }
.pm-ls-classic .pm-login__sub{ color:rgba(220,240,255,.92); }
.pm-ls-classic .pm-login__features li{ color:rgba(220,240,255,.92); }
.pm-ls-classic .pm-login__features li::before{ color:#7fe3ff; }
.pm-ls-classic .pm-login__foot{ color:rgba(220,240,255,.85); border-top:1px solid rgba(120,200,255,.20); }
.pm-ls-classic .pm-ls-panel{ display:flex; align-items:center; justify-content:center; }
.pm-ls-classic .pm-ls-card{
  max-width:none; border:1px solid rgba(255,255,255,.16); border-left:none;
  border-radius:0 18px 18px 0;
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  box-shadow:0 24px 60px rgba(2,12,28,.40);
  display:flex; flex-direction:column; justify-content:center;
  animation:pm-card-in .8s cubic-bezier(.22,.9,.3,1) .08s both;
}
/* classic 自定义背景：整页铺图，左侧品牌区加暗化 scrim 保证文字可读，右侧浅玻璃卡浮于图上 */
.pm-login--image.pm-ls-classic .pm-ls-brand,
.pm-login--video.pm-ls-classic .pm-ls-brand{
  background:linear-gradient(90deg, rgba(6,14,32,.62) 0%, rgba(6,14,32,.26) 72%, rgba(6,14,32,0) 100%) !important;
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  border-color:rgba(120,200,255,.18); box-shadow:none;
}

/* ============================================================
   5. 全屏图片 / 视频背景（后台可配置）
   两种模式共用媒体层与遮罩；此时卡片改为毛玻璃，压得住深色背景。
   ============================================================ */
.pm-login__media{
  position:absolute; top:0; left:0; right:0; bottom:0; z-index:0;
  background-size:cover; background-position:center;
  pointer-events:none;
}
.pm-login__video{ width:100%; height:100%; object-fit:cover; background:#0f2040; }
.pm-login__shade{
  position:absolute; top:0; left:0; right:0; bottom:0; z-index:1;
  pointer-events:none;
  background:
    radial-gradient(120% 90% at 50% 40%, rgba(6,14,32,.30) 0%, rgba(4,10,24,.58) 100%),
    linear-gradient(180deg, rgba(8,18,38,.18) 0%, rgba(8,18,38,.34) 100%);
}
/* 自定义素材背景下关掉程序化装饰，避免与照片打架 */
.pm-login--image .pm-ls-deco, .pm-login--video .pm-ls-deco{ display:none; }
/* ⚠ 科技矩阵 / 星河航天 是深色卡 + 白字，不能被这条漂成白卡
   （白字落在白卡上完全读不出来），必须排除掉并单独给深色玻璃。 */
.pm-login--image:not(.pm-ls-matrix):not(.pm-ls-space):not(.pm-ls-compact) .pm-ls-card,
.pm-login--video:not(.pm-ls-matrix):not(.pm-ls-space):not(.pm-ls-compact) .pm-ls-card{
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  box-shadow:0 28px 70px rgba(0,0,0,.40);
}
.pm-login--image.pm-ls-matrix .pm-ls-card,
.pm-login--video.pm-ls-matrix .pm-ls-card,
.pm-login--image.pm-ls-space .pm-ls-card,
.pm-login--video.pm-ls-space .pm-ls-card{
  background:rgba(10,18,36,.66);
  -webkit-backdrop-filter:blur(18px) saturate(1.25); backdrop-filter:blur(18px) saturate(1.25);
  box-shadow:0 28px 72px rgba(0,0,0,.55);
}
/* 工业霓虹 compact 自定义背景下也保持暗玻璃红描边卡（白字），否则白字落在白卡读不出 */
.pm-login--image.pm-ls-compact .pm-ls-card,
.pm-login--video.pm-ls-compact .pm-ls-card{
  background:linear-gradient(180deg, rgba(22,22,28,.82) 0%, rgba(12,12,16,.78) 100%);
  -webkit-backdrop-filter:blur(14px) saturate(1.1); backdrop-filter:blur(14px) saturate(1.1);
  border-color:rgba(255,90,90,.55);
  box-shadow:0 0 0 1px rgba(255,90,90,.30), 0 28px 70px rgba(0,0,0,.55);
}
.pm-login--image .pm-ls-brand, .pm-login--video .pm-ls-brand{
  background:rgba(255,255,255,.10) !important;
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
}
/* 企业门户 自定义背景（#7）：整页透出背景图，顶栏/页脚/品牌卡/表单卡全部转为玻璃 */
.pm-login--image.pm-ls-portal .pm-ls-topbar,
.pm-login--video.pm-ls-portal .pm-ls-topbar{
  background:rgba(12,22,44,.42); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  border-bottom-color:rgba(255,255,255,.18);
}
.pm-login--image.pm-ls-portal .pm-ls-topbar__brand,
.pm-login--video.pm-ls-portal .pm-ls-topbar__brand{ color:#fff; }
.pm-login--image.pm-ls-portal .pm-ls-topbar__nav a,
.pm-login--video.pm-ls-portal .pm-ls-topbar__nav a{ color:rgba(255,255,255,.82); }
.pm-login--image.pm-ls-portal .pm-ls-topbar__nav a:hover,
.pm-login--video.pm-ls-portal .pm-ls-topbar__nav a:hover{ color:#fff; }
.pm-login--image.pm-ls-portal .pm-ls-brand,
.pm-login--video.pm-ls-portal .pm-ls-brand{
  background:rgba(12,22,44,.46) !important; -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border-color:rgba(255,255,255,.18); color:#fff;
}
.pm-login--image.pm-ls-portal .pm-login__title,
.pm-login--video.pm-ls-portal .pm-login__title{ color:#fff; }
.pm-login--image.pm-ls-portal .pm-login__sub,
.pm-login--video.pm-ls-portal .pm-login__sub{ color:rgba(255,255,255,.85); }
.pm-login--image.pm-ls-portal .pm-login__features li,
.pm-login--video.pm-ls-portal .pm-login__features li{ color:rgba(255,255,255,.82); }
.pm-login--image.pm-ls-portal .pm-login__features li::before,
.pm-login--video.pm-ls-portal .pm-login__features li::before{ color:#9cc6ff; }
.pm-login--image.pm-ls-portal .pm-ls-foot,
.pm-login--video.pm-ls-portal .pm-ls-foot{
  background:rgba(12,22,44,.42); color:rgba(255,255,255,.7); border-top-color:rgba(255,255,255,.18);
}
.pm-login--image.pm-ls-portal .pm-ls-foot__links a,
.pm-login--video.pm-ls-portal .pm-ls-foot__links a{ color:rgba(255,255,255,.78); }

/* ============================================================
   6. 高度分级压缩 —— 保证「一屏显示完、不出竖向滚动条」
   clamp() 已随 vh 收缩，这里是极短视口的分级兜底。
   ============================================================ */
@media (max-height:720px){
  .pm-ls-gov_blue .pm-ls-banner__slogan{ display:none; }
  .pm-ls-head__slogan{ display:none; }
  .pm-ls-body h3{ display:none; }
  .pm-ls-ver{ margin-top:6px; }
}
@media (max-height:620px){
  .pm-ls-gov_blue .pm-ls-banner{ padding:6px 0; }
  .pm-ls-gov_blue .pm-ls-banner__inner{ padding:8px 16px; }
  .pm-ls-gov_blue .pm-ls-banner__name{ font-size:16px; }
  .pm-ls-head{ padding-top:calc(var(--ls-pad-t) - 4px); }
  .pm-ls-body{ padding-top:calc(var(--ls-pad-t) - 4px); padding-bottom:calc(var(--ls-pad-b) - 4px); }
  .pm-ls-links{ margin-top:8px; }
  .pm-ls-portal .pm-ls-foot{ display:none; }
  .pm-ls-portal .pm-login__features li{ padding:3px 0 3px 20px; }
}
/* 超短视口（横屏手机 / 小笔电）：卡片内改「抬头 + 表单」左右并排，
   把纵向高度压到一半，仍然不出滚动条。 */
@media (max-height:520px){
  .pm-ls-gov_blue .pm-ls-banner{ display:none; }
  .pm-ls-card{ display:grid; grid-template-columns:auto 1fr; align-items:center; gap:22px; }
  .pm-ls-head{
    display:block !important; padding:var(--ls-pad-t) 0 var(--ls-pad-t) var(--ls-pad-x);
    text-align:left;
  }
  .pm-ls-head .pm-ls-mark{ margin:0 !important; }
  .pm-ls-head__name{ margin-top:9px !important; font-size:17px !important; }
  .pm-ls-body{ padding:var(--ls-pad-t) var(--ls-pad-x) var(--ls-pad-b) 0; }
  .pm-ls-portal .pm-ls-brand{ display:none; }
  .pm-ls-portal .pm-ls-wrap{ grid-template-columns:minmax(0,1fr); }
}
/* 极端高度（<420px，如手机横屏）：放弃一屏，允许内部滚动而不是裁切内容 */
@media (max-height:420px){
  .pm-ls-wrap{ align-items:flex-start; overflow-y:auto; }
}

/* ============================================================
   7. 宽度响应式：窄屏一律堆叠为单栏
   ============================================================ */
@media (max-width:900px){
  .pm-ls-wrap{ padding:var(--ls-wrapy) 16px; }
  .pm-ls-portal .pm-ls-wrap{ grid-template-columns:minmax(0,1fr); gap:18px; }
  .pm-ls-portal .pm-ls-brand{ display:none; }
  .pm-ls-split .pm-ls-wrap{ grid-template-columns:minmax(0,1fr); max-width:560px; padding:0; }
  .pm-ls-split .pm-ls-brand{ display:none; }
  .pm-ls-split .pm-ls-panel{ padding:var(--ls-pad-x); }
  /* 品牌区隐藏后，卡内抬头必须补位，否则页面看不到系统名 */
  .pm-ls-split .pm-ls-head{ display:block; }
  .pm-ls-split .pm-ls-head__name{ margin-top:11px; font-size:var(--ls-name); font-weight:800; color:var(--pm-text); letter-spacing:.5px; }
  .pm-ls-split .pm-ls-head__slogan{ margin-top:5px; font-size:13px; color:var(--pm-muted); }
  .pm-ls-split .pm-ls-head .pm-ls-mark{ margin:0 auto; }
  /* classic 窄屏堆叠：隐藏左品牌区，卡片单列并补位抬头（否则看不到系统名） */
  .pm-ls-classic .pm-ls-wrap{ grid-template-columns:minmax(0,1fr); }
  .pm-ls-classic .pm-ls-brand{ display:none; }
  .pm-ls-classic .pm-ls-card{ border-radius:18px; border-left:1px solid rgba(255,255,255,.16); }
  .pm-ls-classic .pm-ls-head{ display:block; }
  .pm-ls-classic .pm-ls-head__name{ margin-top:11px; font-size:var(--ls-name); font-weight:800; color:var(--pm-text); letter-spacing:.5px; }
  .pm-ls-classic .pm-ls-head__slogan{ margin-top:5px; font-size:13px; color:var(--pm-muted); }
  .pm-ls-classic .pm-ls-head .pm-ls-mark{ margin:0 auto; }
}
@media (max-width:560px){
  .pm-ls-wrap{ padding:var(--ls-wrapy) 12px; }
  .pm-ls-card{ border-radius:16px; max-width:100%; }
  .pm-ls-head{ padding:var(--ls-pad-t) 20px 0; }
  .pm-ls-body{ padding:var(--ls-pad-t) 20px var(--ls-pad-b); }
  .pm-ls-gov_blue .pm-ls-banner__inner{ padding:10px 14px; gap:10px; }
  .pm-ls-gov_blue .pm-ls-banner__name{ font-size:16px; }
  .pm-ls-portal .pm-ls-topbar__inner{ padding:10px 14px; }
  .pm-ls-portal .pm-ls-topbar__brand{ font-size:15px; }
  .pm-ls-portal .pm-ls-topbar__nav{ gap:12px; font-size:12px; }
  .pm-ls-split .pm-ls-panel{ padding:26px 20px; }
  .pm-ls-captcha{ width:104px; }
  .pm-ls-deco__horizon{ width:150vh; height:150vh; margin-left:-75vh; }
}

/* ============================================================
   8. 登录页警告弹窗（用户名/密码为空、验证码错误等，不跳转页面）
   ============================================================ */
.pm-modal-mask{
  position:fixed; inset:0; z-index:9999;
  background:rgba(15,25,42,.45);
  display:flex; align-items:center; justify-content:center;
  padding:20px; -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
  animation:pm-modal-in .16s ease-out;
}
.pm-modal{
  width:340px; max-width:100%;
  background:#fff; border-radius:14px; overflow:hidden;
  box-shadow:0 18px 48px rgba(15,30,60,.28);
  animation:pm-modal-pop .18s ease-out;
}
.pm-modal__head{
  display:flex; align-items:center; gap:9px;
  padding:14px 18px; font-size:15px; font-weight:700; color:#1f2b3d;
  border-bottom:1px solid var(--pm-border,#e4eef9);
}
.pm-modal__icon{
  display:inline-flex; align-items:center; justify-content:center;
  width:20px; height:20px; border-radius:50%; flex:0 0 auto;
  background:#ff9d2e; color:#fff; font-size:13px; font-weight:800; line-height:20px;
}
.pm-modal__body{ padding:18px; font-size:14px; line-height:1.7; color:#42506a; }
.pm-modal__foot{
  padding:10px 18px 16px; text-align:right;
  border-top:1px solid var(--pm-border,#e4eef9); background:#fafcff;
}
.pm-modal__ok{ min-width:74px; }

/* ============================================================
   9. 访客页（找回密码 / 注册）复用登录皮肤
   与登录页的区别：表单更长（注册 8 字段），允许整页随内容增高、内部滚动，
   而不是死锁 100dvh 把内容裁掉。登录页/访客页统一隐藏通用页脚 .foot。
   ============================================================ */
.pm-login.pm-login--guest{
  height:auto; min-height:100dvh; overflow:visible;
}
.pm-login.pm-login--guest .pm-ls-wrap{
  /* V2.6.105：扣掉容器底部预留的版权带，否则「100dvh + 版权带」会多出一小段竖向滚动 */
  min-height:calc(100dvh - var(--ls-copyh, 44px)); align-items:center; padding:clamp(28px,5vh,56px) 20px;
}
.pm-login.pm-login--guest .pm-ls-card{ max-height:none; }
/* 窄屏堆叠：品牌区隐藏时卡内抬头补位，否则看不到系统名 */
@media (max-width:900px){
  .pm-ls-classic.pm-login--guest .pm-ls-wrap,
  .pm-ls-portal.pm-login--guest .pm-ls-wrap,
  .pm-ls-split.pm-login--guest .pm-ls-wrap{ grid-template-columns:minmax(0,1fr); }
  .pm-ls-classic.pm-login--guest .pm-ls-brand,
  .pm-ls-portal.pm-login--guest .pm-ls-brand,
  .pm-ls-split.pm-login--guest .pm-ls-brand{ display:none; }
  .pm-ls-classic.pm-login--guest .pm-ls-card,
  .pm-ls-split.pm-login--guest .pm-ls-card{ border-radius:18px; border-left:1px solid var(--pm-line); }
  .pm-ls-classic.pm-login--guest .pm-ls-head,
  .pm-ls-portal.pm-login--guest .pm-ls-head,
  .pm-ls-split.pm-login--guest .pm-ls-head{ display:block; }
  .pm-ls-classic.pm-login--guest .pm-ls-head__name,
  .pm-ls-portal.pm-login--guest .pm-ls-head__name,
  .pm-ls-split.pm-login--guest .pm-ls-head__name{ margin-top:11px; font-size:var(--ls-name); font-weight:800; color:var(--pm-text); letter-spacing:.5px; }
  .pm-ls-classic.pm-login--guest .pm-ls-head__slogan,
  .pm-ls-portal.pm-login--guest .pm-ls-head__slogan,
  .pm-ls-split.pm-login--guest .pm-ls-head__slogan{ margin-top:5px; font-size:13px; color:var(--pm-muted); }
  .pm-ls-classic.pm-login--guest .pm-ls-head .pm-ls-mark,
  .pm-ls-portal.pm-login--guest .pm-ls-head .pm-ls-mark,
  .pm-ls-split.pm-login--guest .pm-ls-head .pm-ls-mark{ margin:0 auto; }
}
/* 登录页与访客页：隐藏通用页脚，避免多撑高度出现竖向滚动条 */
.pm-login ~ .foot{ display:none !important; }

/* ============================================================
   10. 底部统一版权角标（覆盖全部登录页 × 全部版式）
   ------------------------------------------------------------
   V2.6.90 改造：原来这里是 .pm-login::after 伪元素，把
     content:"© 2009-2026　Powered by 海东工作室"
   写死在 CSS 里。问题有三个：
     · 伪元素里放不了 <a>，「关于 / 联系我们」根本没法做链接；
     · 年份、系统名、署名全是硬编码，改了品牌也不会跟着变；
     · 文案与后台「版权署名」配置脱节，同屏还会跟 .pm-login__foot 打架。
   现在改成真实 DOM：PHP 输出
     <div class="pm-login__copybar"><span class="pm-copybar">…</span></div>
   文案由 pm_copyright_bar() 统一生成（© 2026-{年} 系统名丨关于丨联系我们丨Powered by 署名）。
   这里只负责「贴底居中 + 深色玻璃胶囊」的观感，格式与文案一律不在这里写。
   ============================================================ */
.pm-login__copybar{
  position:absolute;
  left:0; right:0;
  bottom:clamp(8px, 1.8vh, 14px);
  z-index:6;
  /* 外层整条透明、不吃鼠标事件 —— 它横跨整个页面宽度，
     若可交互会挡住登录卡下方的点击区域。链接靠内层单独放开。 */
  pointer-events:none;
  text-align:center;
  padding:0 12px;
}
.pm-login__copybar .pm-copybar{
  display:inline-block;
  max-width:100%;
  font-size:clamp(10px, 1.5vh, 12px);
  line-height:1.5;
  letter-spacing:.3px;
  /* 深色半透明玻璃底：深色背景（航空蓝 / 科技矩阵）与浅色背景（经典左右）都读得清，
     这是原来那版胶囊唯一必须保留的视觉效果。 */
  /* 底色不透明度取 .40 → .62：浅色主题（经典左右）里 .42 的深色叠在白底上会变成
     一块中灰，白色文字掉到 3.5:1 左右，勉强能看但发虚；.62 在深色背景上视觉几乎不变，
     在浅色背景上则稳定给出 ~7:1，两边都清楚。 */
  color:rgba(255,255,255,.90);
  background:rgba(10,16,28,.62);
  border:1px solid rgba(255,255,255,.20);
  border-radius:999px;
  padding:3px 12px;
  -webkit-backdrop-filter:blur(3px);
  backdrop-filter:blur(3px);
  text-shadow:0 1px 2px rgba(0,0,0,.5);
}
/* 链接必须能点：内层单独放开命中，且只在文字上生效，不扩大空白区域的遮挡 */
.pm-login__copybar .pm-copybar a{
  pointer-events:auto;
  color:rgba(200,222,255,.92);
  text-decoration:none;
}
.pm-login__copybar .pm-copybar a:hover{ color:#fff; text-decoration:underline; }
/* 每一项单独成组：折行只发生在「组」之间，竖笔永远跟着它后面那一项，
   不会单独挂在行尾（390px 实测旧写法会出现「…联系我们 丨」后换行）。 */
.pm-login__copybar .pm-copybar__item{ display:inline-block; white-space:nowrap; }
.pm-login__copybar .pm-copybar__sep{ margin:0 6px; opacity:.5; }
/* 蓝紫全息（portal）底部自带 .pm-ls-foot 页脚条，角标上抬避免遮挡 */
.pm-ls-portal .pm-login__copybar{ bottom:clamp(34px, 5.2vh, 48px); }
/* 短屏 / 窄屏：字号收小；真放不下时允许折行（不再像伪元素那样只能截断） */
@media (max-height:560px), (max-width:640px){
  .pm-login__copybar .pm-copybar{
    font-size:clamp(9px, 1.4vh, 11px);
    padding:2px 9px;
    white-space:normal;
  }
  .pm-login__copybar .pm-copybar__sep{ margin:0 4px; }
}
