/* 登录页专用样式（2026-09-18 拆包自动生成）——
   内容 = 从 style.css 中逐条实测「是否作用于登录页/找回密码页/页脚/弹窗」筛出来的规则。
   ★未登录时只加载本文件；登录后再加载 style.css（整站）。改 style.css 后需重新生成本文件。 */
:root { --primary: #2b6cf3; --primary-dark: #1e56cf; --primary-light: #eaf1ff; --ok: #16a34a; --warn: #d97706; --err: #dc2626; --bg: #f4f6fb; --card: #ffffff; --line: #e3e8f2; --text: #1f2a44; --text2: #64748b; --radius: 10px; --shadow: 0 6px 24px rgba(30, 64, 175, .08); }
* { margin: 0px; padding: 0px; box-sizing: border-box; }
html, body { height: 100%; }
body { font-family: "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif; background: var(--bg); color: var(--text); font-size: 14px; overflow: hidden; }
.hidden { display: none !important; }
button { font-family: inherit; cursor: pointer; }
input, select { font-family: inherit; }
.btn { border: 1px solid transparent; border-radius: 8px; padding: 8px 16px; font-size: 14px; background: rgb(255, 255, 255); transition: 0.15s; display: inline-flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap; }
.btn:disabled { opacity: 0.55; cursor: not-allowed; }
.btn-primary { background: var(--primary); color: rgb(255, 255, 255); }
.btn-ghost { border-color: var(--line); background: rgb(255, 255, 255); color: var(--text); }
.btn-ghost:hover { border-color: var(--primary); color: var(--primary); }
.btn-main { background: var(--primary); color: rgb(255, 255, 255); border: 1px solid var(--primary); }
.view { height: 100vh; overflow-y: auto; position: relative; }
#view-login { display: flex; align-items: center; justify-content: center; background: radial-gradient(1000px 500px at 15% -10%, rgba(43, 108, 243, 0.18), transparent 60%), radial-gradient(800px 500px at 110% 110%, rgba(94, 143, 255, 0.16), transparent 60%), linear-gradient(160deg, rgb(238, 243, 255), rgb(247, 249, 255)); }
.login-bg { position: absolute; inset: 0px; pointer-events: none; }
.login-card { width: 380px; background: rgb(255, 255, 255); border-radius: 18px; box-shadow: rgba(30, 64, 175, 0.16) 0px 20px 60px; padding: 34px 34px 24px; position: relative; z-index: 2; }
.login-row { align-items: flex-start; display: flex; justify-content: center; gap: 22px; position: relative; z-index: 2; }
.login-side { width: 330px; background: transparent; box-shadow: none; border-radius: 18px; padding: 24px 24px 20px; font-size: 13px; line-height: 1.85; color: rgb(58, 68, 86); word-break: break-word; }
.login-side h3 { font-size: 15px; margin: 0px 0px 8px; color: rgb(26, 58, 107); }
.login-side a { color: var(--primary); }
@media (max-width: 900px){.login-side { display: none; }}
.brand-hero { text-align: center; margin-bottom: 24px; }
.brand-hero h1 { font-size: 24px; letter-spacing: 2px; }
.brand-sub { color: var(--text2); margin-top: 6px; font-size: 13px; }
.brand-sub .wx { color: rgb(229, 57, 53); font-weight: 700; }
.field { display: block; margin-bottom: 14px; }
.field span { display: block; font-size: 13px; color: var(--text2); margin-bottom: 6px; }
.field input { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; outline: none; transition: border 0.15s, box-shadow 0.15s; background: rgb(251, 252, 254); }
.field input:focus { border-color: var(--primary); box-shadow: rgba(43, 108, 243, 0.12) 0px 0px 0px 3px; background: rgb(255, 255, 255); }
.login-err { color: var(--err); font-size: 13px; min-height: 20px; margin-bottom: 6px; }
.login-tip { font-size: 12px; color: var(--text2); line-height: 1.7; margin: 6px 0px 4px; background: rgb(248, 250, 253); padding: 10px 12px; border-radius: 8px; border: 1px dashed rgb(215, 224, 240); }
@keyframes rot { 
  100% { transform: rotate(360deg); }
}
.modal-root { position: fixed; inset: 0px; background: rgba(15, 23, 42, 0.45); display: flex; align-items: center; justify-content: center; z-index: 100; backdrop-filter: blur(2px); }
.modal { background: rgb(255, 255, 255); border-radius: 16px; box-shadow: rgba(0, 0, 0, 0.25) 0px 24px 80px; width: 520px; max-width: 92vw; max-height: 86vh; overflow: auto; padding: 22px 24px; }
.modal h3 { font-size: 17px; margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
.m-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 14px; }
.toast { position: fixed; left: 50%; bottom: 60px; transform: translateX(-50%); background: rgba(20, 30, 55, 0.92); color: rgb(255, 255, 255); padding: 10px 22px; border-radius: 999px; font-size: 14px; z-index: 300; box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 24px; max-width: 80vw; }
@keyframes cmpBlink { 
  0%, 100% { opacity: 1; }
  50% { opacity: 0.12; }
}
.modal { width: min(640px, 92vw); }
.login-card .field input { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; font-size: 14px; outline: none; background: rgb(251, 252, 255); }
.login-card .field input:focus { border-color: var(--primary); background: rgb(255, 255, 255); }
.login-card .field span { font-size: 13px; color: var(--text2); margin-bottom: 6px; display: block; }
.remember-row { display: flex; align-items: center; gap: 8px; margin: 0px 0px 4px; padding-bottom: 10px; font-size: 13px; color: rgb(58, 68, 86); cursor: pointer; user-select: none; }
.remember-row input { width: 15px; height: 15px; margin: 0px; accent-color: var(--primary); cursor: pointer; flex: 0 0 auto; }
.remember-row span { line-height: 1.4; }
.login-actions { display: flex; gap: 10px; margin: 0px 0px 2px; }
.login-actions .btn { flex: 1 1 0px; width: 0px; padding: 11px 10px; font-size: 15px; min-width: 0px; }
.login-ad { text-align: center; color: rgb(124, 138, 165); font-size: 12px; line-height: 1.6; }
.login-tip .login-ad { margin: 0px; }
.login-tip .login-ad img { max-width: 100%; height: auto; border-radius: 6px; }
.login-notice { font-size: 12px; color: rgb(229, 57, 53); line-height: 1.7; margin: 0px 0px 6px; text-align: center; }
.login-notice b { color: rgb(198, 40, 40); }
.shell-row { text-align: center; margin: 10px 0px 0px; }
.link-btn { border-width: medium; border-style: none; border-color: currentcolor; border-image: none; background: none; cursor: pointer; color: rgb(148, 163, 184); font-size: 12px; padding: 4px 10px; border-radius: 6px; transition: color 0.15s, background 0.15s; }
.link-btn:hover { color: var(--primary); background: rgba(43, 108, 243, 0.06); }
.modal-narrow { width: min(460px, 92vw); }
.modal .modal-tip { font-size: 12px; color: var(--text2); line-height: 1.7; background: rgb(248, 250, 253); border: 1px dashed rgb(215, 224, 240); border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; }
.m-actions { display: flex; gap: 10px; margin-top: 16px; }
.m-actions .btn { flex: 1 1 0%; padding: 9px 0px; }
.m-actions .btn-main { background: var(--primary); color: rgb(255, 255, 255); border: 1px solid var(--primary); }
.m-actions .btn-main:hover { background: var(--primary-dark); }
:root { --line: #c2ccdb; --text: #14181f; --text2: #38415a; }
.login-links { display: flex; justify-content: center; gap: 18px; margin-top: 10px; }
.login-links .link-btn { font-size: 13px; }
.site-foot { position: fixed; left: 0px; right: 0px; bottom: 0px; height: 32px; z-index: 60; display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 12px; color: rgb(147, 160, 180); letter-spacing: 0.2px; background: rgba(255, 255, 255, 0.88); border-top: 1px solid rgba(220, 227, 238, 0.9); pointer-events: none; }
.site-foot a { pointer-events: auto; color: rgb(147, 160, 180); text-decoration: none; }
.site-foot a:hover { color: var(--primary); text-decoration: underline; }
.site-foot .foot-brand { pointer-events: auto; color: rgb(125, 136, 153); font-weight: 600; }
.site-foot .foot-brand::before { content: "·"; margin-right: 8px; color: rgb(198, 206, 219); font-weight: 400; }
