/* 知梯管理后台 · login.css — 自 index.html 拆分（工程化重构 v1.0） */
/* A1 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--brand-800),var(--dark-800));margin-left:0}
.login-card{width:380px;background:#fff;border-radius:12px;padding:32px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.login-card .logo{text-align:center;margin-bottom:24px}
.login-card .logo .ic{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,var(--brand-500),var(--brand-700));margin:0 auto 12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:20px}
.login-card .logo h2{font-size:18px;font-weight:700}
.login-card .logo p{font-size:13px;color:var(--neutral-600);margin-top:4px}

/* ============ 登录页（A1 品牌级登录，Phase 2 规范） ============ */
.login-wrap{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:radial-gradient(1200px 800px at 20% 15%,var(--brand-900) 0%,var(--dark-800) 55%,#0B1012 100%);
  transition:opacity .35s ease,visibility .35s ease}
.login-wrap::before{content:"";position:absolute;inset:0;pointer-events:none;user-select:none;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask-image:radial-gradient(ellipse at 30% 30%,#000 0%,transparent 70%);mask-image:radial-gradient(ellipse at 30% 30%,#000 0%,transparent 70%)}
.login-wrap.hide{opacity:0;visibility:hidden;pointer-events:none}
.login-wrap .glow{position:absolute;border-radius:50%;pointer-events:none;user-select:none}
.login-wrap .glow.g1{width:340px;height:340px;top:-80px;left:6%;background:radial-gradient(circle,rgba(46,156,150,.22),transparent 70%);filter:blur(60px)}
.login-wrap .glow.g2{width:260px;height:260px;bottom:10%;right:8%;background:radial-gradient(circle,rgba(99,184,179,.16),transparent 70%);filter:blur(70px)}
.login-shell{position:relative;z-index:1;width:min(1060px,92vw);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 0}
.login-shell-inner{width:100%;display:flex;border-radius:20px;overflow:hidden;background:rgba(255,255,255,.06);box-shadow:0 24px 80px rgba(4,20,22,.45);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.login-hero{flex:1.2;min-width:0;padding:56px 48px;color:var(--dark-text-primary)}
.login-hero .brand{display:flex;align-items:center;gap:14px}
.login-hero .brand .ic{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,var(--brand-400),var(--brand-700));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:24px;box-shadow:0 8px 24px rgba(11,107,102,.35);flex-shrink:0}
.login-hero .brand .nm{font-size:20px;font-weight:700;color:var(--dark-text-primary)}
.login-hero .brand .nm .en{display:block;font-size:12px;color:var(--dark-text-secondary);letter-spacing:.5px;text-transform:uppercase;font-weight:600;margin-top:2px}
.login-hero h1{font-size:34px;line-height:1.3;font-weight:700;color:var(--dark-text-primary);margin-top:36px}
.login-hero .sub{font-size:15px;line-height:1.7;color:var(--dark-text-secondary);margin-top:12px;max-width:340px}
.login-hero .points{display:flex;gap:12px;margin-top:36px}
.login-hero .point{flex:1;padding:14px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.login-hero .point .pi{width:28px;height:28px;border-radius:8px;background:rgba(46,156,150,.18);color:var(--brand-300);display:flex;align-items:center;justify-content:center}
.login-hero .point .pt{font-size:13px;font-weight:600;color:var(--dark-text-primary);margin-top:10px}
.login-hero .point .pd{font-size:11px;line-height:1.5;color:var(--dark-text-secondary);margin-top:4px}
.login-card{width:420px;flex-shrink:0;background:#fff;border-radius:20px;padding:40px;display:flex;flex-direction:column;justify-content:center;margin:24px}
.login-card .hd h2{font-size:22px;font-weight:700;color:var(--neutral-900)}
.login-card .hd p{font-size:13px;color:var(--neutral-600);margin-top:6px;margin-bottom:28px}
.login-field{position:relative;margin-bottom:16px}
.login-field .fic{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--neutral-400);pointer-events:none}
.login-input{width:100%;height:44px;border:1px solid var(--neutral-300);border-radius:10px;padding:0 14px 0 42px;font-size:14px;font-family:var(--font-sans);outline:none;background:#fff;color:var(--neutral-900);transition:border-color .15s,box-shadow .15s}
.login-input::placeholder{color:var(--neutral-400)}
.login-input:hover{border-color:var(--neutral-400)}
.login-input:focus{border-color:var(--brand-600);box-shadow:0 0 0 3px rgba(11,107,102,.15)}
.login-field.has-error .login-input{border-color:var(--color-danger-600);box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.login-field.has-error .login-err{display:block}
.login-err{display:none;font-size:12px;color:var(--color-danger-600);margin-top:6px;padding-left:2px}
.login-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:none;background:none;color:var(--neutral-400);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0}
.login-toggle:hover{color:var(--neutral-600);background:var(--neutral-100)}
.login-meta{display:flex;align-items:center;justify-content:space-between;margin:4px 0 20px}
.login-meta .remember{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--neutral-700);cursor:pointer;user-select:none}
.login-meta .remember input{width:16px;height:16px;accent-color:var(--brand-600);cursor:pointer;margin:0}
.login-meta .forgot{font-size:13px;color:var(--brand-600);text-decoration:none;cursor:pointer}
.login-meta .forgot:hover{color:var(--brand-700)}
.login-btn{width:100%;height:44px;border:none;border-radius:10px;cursor:pointer;font-family:var(--font-sans);font-size:15px;font-weight:600;letter-spacing:.5px;background:var(--brand-600);color:#fff;box-shadow:0 2px 8px rgba(11,107,102,.25);display:flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,box-shadow .15s,opacity .15s}
.login-btn:hover{background:var(--brand-700);box-shadow:0 4px 14px rgba(11,107,102,.3)}
.login-btn:active{transform:translateY(1px)}
.login-btn:disabled{background:var(--neutral-300);color:var(--neutral-400);box-shadow:none;cursor:not-allowed}
.login-btn.loading{background:var(--brand-700);cursor:progress}
.login-btn .spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:loginSpin .7s linear infinite;display:none}
.login-btn.loading .spinner{display:inline-block}
.login-btn.loading .label{opacity:.85}
@keyframes loginSpin{to{transform:rotate(360deg)}}
.demo-entry{display:block;margin:16px auto 0;background:none;border:none;font-size:12px;color:var(--neutral-500);cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px;font-family:var(--font-sans)}
.demo-entry:hover{color:var(--brand-600)}
.login-foot{margin-top:28px;text-align:center;font-size:11px;color:var(--neutral-400)}
.layout.hide{opacity:0;pointer-events:none}
.sidebar .user .user-logout{margin-left:auto;width:30px;height:30px;border:none;border-radius:8px;background:none;color:var(--dark-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s;padding:0}
.sidebar .user .user-logout:hover{background:rgba(255,255,255,.08);color:#fff}
@media (max-width:980px){
  .login-hero{display:none}
  .login-shell-inner{background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
  .login-card{margin:0 auto}
}
