/* ============================================================
   ExoMind 登录页 · 左右分屏（参照 auth login.vue，exomind 紫蓝）
   自包含：登录页 link tokens.css + login.css，不依赖 base.css
   ============================================================ */
*{margin:0;padding:0;box-sizing:border-box}
.login-body{font-family:var(--font-sans);background:var(--bg-canvas);color:var(--fg-default);
  -webkit-font-smoothing:antialiased;min-height:100vh}
a{color:var(--accent-fg);text-decoration:none}
a:hover{text-decoration:underline}

.login-split{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}

/* ---------- 左：品牌区 ---------- */
.login-brand{position:relative;display:flex;align-items:center;justify-content:center;
  padding:var(--s-8);overflow:hidden;background:var(--grad-accent);color:var(--fg-on-emphasis)}
.login-brand-glow{position:absolute;inset:0;background:var(--grad-brand-glow);
  filter:blur(60px);opacity:.7;pointer-events:none}
.login-brand-grid{position:absolute;inset:0;opacity:.15;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.35) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.35) 1px,transparent 1px);
  background-size:40px 40px;
  -webkit-mask-image:radial-gradient(circle at 30% 30%,#000,transparent 70%);
  mask-image:radial-gradient(circle at 30% 30%,#000,transparent 70%)}
.login-brand-inner{position:relative;z-index:1;max-width:420px}
.login-brand-logo{display:inline-flex;align-items:center;gap:var(--s-2);
  font-weight:700;font-size:var(--fs-lg);color:var(--fg-on-emphasis);margin-bottom:var(--s-7)}
.login-brand-logo:hover{text-decoration:none}
.login-brand-logo .mk{height:24px;width:24px;flex-shrink:0}
.login-brand-title{font-size:clamp(30px,4vw,44px);font-weight:800;line-height:1.15;margin-bottom:var(--s-4)}
.login-brand-title .grad-text{background:rgba(255,255,255,.28);
  -webkit-background-clip:text;background-clip:text;color:#fff}
.login-brand-sub{font-size:var(--fs-md);line-height:var(--lh-loose);opacity:.92}

/* ---------- 右：表单区 ---------- */
.login-form-side{display:flex;align-items:center;justify-content:center;padding:var(--s-7)}
.login-card{width:100%;max-width:380px}
.login-card h2{font-size:var(--fs-2xl);font-weight:700;margin-bottom:var(--s-2)}
.login-sub{color:var(--fg-muted);font-size:var(--fs-sm);margin-bottom:var(--s-6);line-height:var(--lh-loose)}
.login-label{display:block;font-size:var(--fs-sm);color:var(--fg-muted);margin-bottom:var(--s-3)}
.login-label input{display:block;width:100%;margin-top:var(--s-1);padding:10px var(--s-3);
  background:var(--bg-canvas-inset);border:1px solid var(--border-default);border-radius:var(--r);
  color:var(--fg-default);font-size:var(--fs-base);outline:none;
  transition:border-color .15s,box-shadow .15s}
.login-label input:focus{border-color:var(--accent-fg);box-shadow:0 0 0 3px var(--accent-subtle)}
.login-btn{width:100%;margin-top:var(--s-4);padding:12px var(--s-4);font-size:var(--fs-md);
  font-weight:600;font-family:var(--font-sans);cursor:pointer;border:none;border-radius:var(--r);
  background:var(--grad-accent);color:var(--fg-on-emphasis);box-shadow:var(--shadow-glow);
  transition:box-shadow .2s,transform .1s}
.login-btn:hover{box-shadow:var(--shadow-glow-strong)}
.login-btn:active{transform:translateY(1px)}
.login-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}
.login-error{color:var(--danger-fg);font-size:var(--fs-sm);margin-top:var(--s-2);
  padding:8px var(--s-3);background:var(--danger-subtle);border-radius:var(--r)}
.login-divider{display:flex;align-items:center;gap:var(--s-3);margin:var(--s-5) 0;
  color:var(--fg-subtle);font-size:var(--fs-sm)}
.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:var(--border-muted)}
.login-help{font-size:var(--fs-sm);color:var(--fg-muted);line-height:var(--lh-loose)}
.login-help p{margin-bottom:var(--s-2)}
.login-help code{background:var(--bg-canvas-inset);padding:2px 6px;
  border-radius:var(--r-sm);font-size:var(--fs-xs);font-family:var(--font-mono)}
.login-tip{color:var(--fg-subtle)}
.login-back{display:inline-block;margin-top:var(--s-5);font-size:var(--fs-sm);color:var(--fg-muted)}

/* ---------- 响应式：移动端隐藏品牌区 ---------- */
@media (max-width:820px){
  .login-split{grid-template-columns:1fr}
  .login-brand{display:none}
}
