/* Qiyuan SSO login card — Galaxy / glass (V神 P0.1) */
.qy-login-card {
  max-width: 420px;
  margin: 1.5rem auto;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
.qy-login-glass {
  border-radius: 18px;
  padding: 1.75rem 1.5rem;
  background: rgba(15, 23, 42, 0.72);
  border: 1px solid rgba(165, 180, 252, 0.22);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
  backdrop-filter: blur(14px);
}
.qy-login-title {
  margin: 0 0 1.25rem;
  font-size: 1.25rem;
  font-weight: 700;
  color: #f8fafc;
  text-align: center;
}
.qy-login-oauth {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.qy-oauth {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
  border-radius: 12px;
  font-weight: 600;
  text-decoration: none;
  color: #0f172a;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.qy-oauth:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
}
.qy-google {
  background: linear-gradient(135deg, #fff, #e2e8f0);
  border: 1px solid rgba(148, 163, 184, 0.4);
}
.qy-discord {
  background: linear-gradient(135deg, #5865f2, #4752c4);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.15);
}
.qy-oauth-icon {
  display: inline-flex;
  width: 1.5rem;
  height: 1.5rem;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  font-size: 0.85rem;
  font-weight: 800;
}
.qy-google .qy-oauth-icon {
  background: #fff;
  color: #4285f4;
}
.qy-discord .qy-oauth-icon {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
.qy-login-divider {
  display: flex;
  align-items: center;
  margin: 1.25rem 0;
  color: #64748b;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.qy-login-divider::before,
.qy-login-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: rgba(148, 163, 184, 0.25);
}
.qy-login-divider span {
  padding: 0 0.75rem;
}
.qy-otp .qy-label {
  display: block;
  margin: 0.5rem 0 0.25rem;
  font-size: 0.78rem;
  color: #94a3b8;
}
.qy-input {
  width: 100%;
  box-sizing: border-box;
  padding: 0.55rem 0.75rem;
  border-radius: 10px;
  border: 1px solid rgba(100, 116, 139, 0.45);
  background: rgba(2, 6, 23, 0.55);
  color: #e2e8f0;
  font-size: 1rem;
}
.qy-btn {
  display: inline-block;
  margin-top: 0.5rem;
  padding: 0.55rem 1rem;
  border-radius: 10px;
  border: none;
  font-weight: 600;
  cursor: pointer;
  font-size: 0.9rem;
}
.qy-btn-ghost {
  background: rgba(148, 163, 184, 0.12);
  color: #cbd5e1;
  border: 1px solid rgba(148, 163, 184, 0.25);
}
.qy-btn-primary {
  width: 100%;
  margin-top: 0.65rem;
  background: linear-gradient(135deg, #7c3aed, #5b21b6);
  color: #fff;
}
.qy-msg {
  min-height: 1.25rem;
  margin: 0.75rem 0 0;
  font-size: 0.82rem;
  color: #94a3b8;
}
.qy-sso-note {
  padding: 1rem;
  text-align: center;
  color: #64748b;
  font-size: 0.95rem;
}

/* ═══ SSO Overlay Modal — V神 P0.1 Galaxy 毛玻璃弹窗 ═══ */
.qy-sso-overlay {
  position: fixed; inset: 0; z-index: 999999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(5,5,20,0.7);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  animation: qy-sso-fadein .3s ease;
}
.qy-sso-overlay.closing { animation: qy-sso-fadeout .25s ease forwards; }
@keyframes qy-sso-fadein { from{opacity:0} to{opacity:1} }
@keyframes qy-sso-fadeout { from{opacity:1} to{opacity:0} }

.qy-sso-modal {
  position: relative; width: 400px; max-width: 92vw;
  background: rgba(15,15,30,0.85);
  backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(102,126,234,0.25);
  border-radius: 24px; padding: 40px 32px 32px;
  box-shadow: 0 0 0 1px rgba(102,126,234,0.1), 0 24px 80px rgba(0,0,0,0.6), 0 0 60px rgba(102,126,234,0.06);
  animation: qy-sso-slideup .35s cubic-bezier(.22,.68,0,1);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  color: #e2e8f0; text-align: center;
}
@keyframes qy-sso-slideup { from{opacity:0;transform:translateY(24px) scale(.96)} to{opacity:1;transform:translateY(0) scale(1)} }

.qy-sso-modal::before {
  content: ''; position: absolute; inset: -1px; border-radius: 25px; padding: 1.5px;
  background: conic-gradient(from var(--qy-sso-angle,0deg), transparent 30%, rgba(102,126,234,0.5) 40%, rgba(34,211,238,0.4) 50%, transparent 70%);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  pointer-events: none; animation: qy-sso-rotate 4s linear infinite;
}
@keyframes qy-sso-rotate { to{--qy-sso-angle:360deg} }
@property --qy-sso-angle { syntax:'<angle>'; initial-value:0deg; inherits:false; }

.qy-sso-close {
  position: absolute; top:14px; right:18px; width:32px; height:32px;
  border:none; background:rgba(255,255,255,0.04); border-radius:50%;
  color:#64748b; font-size:18px; cursor:pointer; transition:all .2s;
  display:flex; align-items:center; justify-content:center;
}
.qy-sso-close:hover { background:rgba(255,255,255,0.1); color:#e2e8f0; }
.qy-sso-logo { font-size:3rem; margin-bottom:8px; }
.qy-sso-title {
  font-size:1.6rem; font-weight:800;
  background:linear-gradient(135deg,#667eea 0%,#764ba2 50%,#f093fb 100%);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
  margin-bottom:6px;
}
.qy-sso-sub { color:#64748b; font-size:.9rem; margin-bottom:32px; }
.qy-sso-btns { display:flex; flex-direction:column; gap:12px; margin-bottom:24px; }

.qy-sso-btn {
  display:flex; align-items:center; justify-content:center; gap:12px;
  width:100%; padding:14px 20px; border:1px solid rgba(255,255,255,0.08);
  border-radius:14px; background:rgba(255,255,255,0.04);
  color:#e2e8f0; font-size:1rem; font-weight:600;
  cursor:pointer; transition:all .25s ease; text-decoration:none; position:relative; overflow:hidden;
  box-sizing:border-box;
}
.qy-sso-btn:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,0.3); color:#e2e8f0; }
.qy-sso-btn:active { transform:translateY(0) scale(.98); }
.qy-sso-btn .btn-icon { width:24px; height:24px; flex-shrink:0; }
/* Discord Clyde：两眼为独立白 path，勿被主题或 currentColor 盖成单色 */
.qy-discord-icon path:first-of-type { fill: #5865f2 !important; }
.qy-discord-icon path:last-of-type { fill: #ffffff !important; }
.qy-sso-btn.google { border-color:rgba(66,133,244,0.3); }
.qy-sso-btn.google:hover { border-color:#4285f4; background:rgba(66,133,244,0.08); }
.qy-sso-btn.discord { border-color:rgba(88,101,242,0.3); }
.qy-sso-btn.discord:hover { border-color:#5865f2; background:rgba(88,101,242,0.08); }
.qy-sso-btn.facebook { border-color:rgba(24,119,242,0.35); }
.qy-sso-btn.facebook:hover { border-color:#1877f2; background:rgba(24,119,242,0.1); }

.qy-sso-btn.loading {
  pointer-events: none;
  opacity: 0.6;
}
.qy-sso-btn.loading .btn-icon {
  animation: qy-sso-spin 0.8s linear infinite;
}
@keyframes qy-sso-spin { to { transform: rotate(360deg); } }

.qy-sso-divider {
  display:flex; align-items:center; gap:16px; margin-bottom:24px;
  color:#475569; font-size:.8rem;
}
.qy-sso-divider::before, .qy-sso-divider::after {
  content:''; flex:1; height:1px;
  background:linear-gradient(90deg,transparent,rgba(102,126,234,0.2));
}
.qy-sso-divider::after { background:linear-gradient(90deg,rgba(102,126,234,0.2),transparent); }
.qy-sso-divider span { flex-shrink:0; }

.qy-sso-otp-wrap { display:flex; flex-direction:column; gap:12px; }
.qy-sso-input {
  width:100%; padding:14px 18px; background:rgba(0,0,0,0.3);
  border:1px solid rgba(102,126,234,0.2); border-radius:14px;
  color:#e2e8f0; font-size:1rem; outline:none; transition:all .25s; box-sizing:border-box;
}
.qy-sso-input::placeholder { color:#475569; }
.qy-sso-input:focus { border-color:rgba(102,126,234,0.5); box-shadow:0 0 0 3px rgba(102,126,234,0.1); }
.qy-sso-otp-row { display:flex; gap:10px; }
.qy-sso-otp-row .qy-sso-input { flex:1; }
.qy-sso-otp-btn {
  padding:14px 20px; border:none; border-radius:14px;
  background:linear-gradient(135deg,#667eea,#764ba2); color:#fff;
  font-weight:700; font-size:.9rem; cursor:pointer; transition:all .25s;
  white-space:nowrap; flex-shrink:0;
}
.qy-sso-otp-btn:hover { box-shadow:0 4px 20px rgba(102,126,234,0.3); transform:translateY(-1px); }
.qy-sso-otp-btn:disabled { opacity:.4; cursor:default; transform:none; box-shadow:none; }
.qy-sso-code-row { display:flex; gap:10px; margin-top:4px; }
.qy-sso-code-input { flex:1; text-align:center; font-size:1.4rem; letter-spacing:6px; font-weight:700; }
.qy-sso-code-btn {
  padding:14px 20px; border:none; border-radius:14px;
  background:linear-gradient(135deg,#10b981,#34d399); color:#fff;
  font-weight:700; font-size:.9rem; cursor:pointer; transition:all .25s;
  white-space:nowrap; flex-shrink:0;
}
.qy-sso-code-btn:hover { box-shadow:0 4px 20px rgba(16,185,129,0.3); transform:translateY(-1px); }
.qy-sso-code-btn:disabled { opacity:.4; cursor:default; transform:none; box-shadow:none; }

.qy-sso-msg { margin-top:12px; padding:10px 14px; border-radius:10px; font-size:.85rem; display:none; }
.qy-sso-msg.error { display:block; background:rgba(239,68,68,0.1); border:1px solid rgba(239,68,68,0.3); color:#fca5a5; }
.qy-sso-msg.success { display:block; background:rgba(16,185,129,0.1); border:1px solid rgba(16,185,129,0.3); color:#6ee7b7; }

.qy-sso-footer { margin-top:24px; font-size:.75rem; color:#475569; line-height:1.5; }
.qy-sso-footer a { color:#667eea; text-decoration:none; }
.qy-sso-footer a:hover { text-decoration:underline; }

@media(max-width:480px) {
  .qy-sso-modal { padding:32px 20px 24px; }
  .qy-sso-title { font-size:1.3rem; }
  .qy-sso-otp-row, .qy-sso-code-row { flex-direction:column; }
}

/* ═══ style="page" 登录专页模式 ═══
   C神：在 /login/ 页面使用 [qiyuan_login style="page"]
   页面模板设置全宽（无侧边栏），WP content 区域被此容器接管
*/
.qy-login-page-wrap,
.qy-register-page-wrap {
  /* 不用 100vw：含垂直滚动条时 100vw 会略大于可视区，右侧露出 html/body 深色条 */
  width: 100%;
  max-width: 100%;
  margin-left: 0;
  min-height: calc(100vh - 120px);
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(102,126,234,0.07) 0%, transparent 60%),
    radial-gradient(ellipse at 80% 20%, rgba(118,75,162,0.07) 0%, transparent 50%),
    linear-gradient(135deg, #020617 0%, #0a0b1e 50%, #020617 100%);
  padding: 3rem 1rem;
  box-sizing: border-box;
}

/* 使 overlay 在 page 模式下变为普通 flex 容器（非 fixed 遮罩）*/
.qy-login-page-mode {
  position: static !important;
  inset: auto !important;
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  animation: none !important;
  z-index: auto !important;
  display: flex !important;
  padding: 0 !important;
}

/* page 模式下 modal 卡片：无旋转边框动画，更大更宽松 */
.qy-login-page-mode .qy-sso-modal {
  animation: none !important;
  width: 440px;
  padding: 48px 40px 40px;
}
.qy-login-page-mode .qy-sso-modal::before {
  animation: none !important;
  background: linear-gradient(135deg, rgba(102,126,234,0.25), rgba(118,75,162,0.15)) !important;
}

@media(max-width:520px) {
  .qy-login-page-wrap,
  .qy-register-page-wrap { padding: 2rem 0.75rem; }
  .qy-login-page-mode .qy-sso-modal { width: 100%; padding: 36px 20px 28px; }
}

/* ═══ Toolify 式登录壳（与 www 门户浅色矩阵一致，参考 toolify.ai/zh/login 层次）═══ */
.qy-login-page-wrap.qy-login-toolify-skin,
.qy-register-page-wrap.qy-login-toolify-skin {
  width: 100%;
  max-width: 100%;
  margin-left: 0;
  min-height: 100vh;
  overflow-x: hidden;
  background:
    radial-gradient(ellipse 85% 55% at 50% -15%, rgba(124, 58, 237, 0.09), transparent 52%),
    linear-gradient(180deg, #fafbfc 0%, #f4f4f8 48%, #f1f5f9 100%) !important;
  padding: clamp(28px, 7vh, 64px) 16px;
  box-sizing: border-box;
}
body.admin-bar .qy-login-page-wrap.qy-login-toolify-skin,
body.admin-bar .qy-register-page-wrap.qy-login-toolify-skin {
  min-height: calc(100vh - 32px);
}
@media screen and (max-width: 782px) {
  body.admin-bar .qy-login-page-wrap.qy-login-toolify-skin,
  body.admin-bar .qy-register-page-wrap.qy-login-toolify-skin {
    min-height: calc(100vh - 46px);
  }
}

.qy-login-toolify-skin .qy-login-page-mode .qy-sso-modal {
  background: #ffffff !important;
  color: #0f172a !important;
  border: 1px solid #ececf2 !important;
  box-shadow: 0 4px 24px rgba(15, 23, 42, 0.05), 0 20px 56px rgba(91, 33, 182, 0.07) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
.qy-login-toolify-skin .qy-login-page-mode .qy-sso-modal::before {
  display: none !important;
}
.qy-login-toolify-skin .qy-sso-title {
  background: linear-gradient(135deg, #5b21b6, #7c3aed) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: #5b21b6;
}
.qy-login-toolify-skin .qy-sso-sub {
  color: #64748b !important;
}

/* OAuth：Google / Discord 统一为白底 + 清晰描边 + 深色字（避免主题 a 浅色、Discord 底与图标同色） */
.qy-login-toolify-skin a.qy-sso-btn,
.qy-login-toolify-skin .qy-sso-btn {
  text-decoration: none !important;
  -webkit-text-fill-color: currentColor !important;
  box-sizing: border-box;
  background: #ffffff !important;
  border: 1px solid #e2e8f0 !important;
  color: #1e293b !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
}
.qy-login-toolify-skin a.qy-sso-btn span,
.qy-login-toolify-skin .qy-sso-btn span {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}
.qy-login-toolify-skin a.qy-sso-btn:hover,
.qy-login-toolify-skin .qy-sso-btn:hover {
  color: #0f172a !important;
  -webkit-text-fill-color: currentColor !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.1);
}
.qy-login-toolify-skin .qy-sso-btn.google {
  border-color: #dadce0 !important;
  color: #3c4043 !important;
}
.qy-login-toolify-skin .qy-sso-btn.google:hover {
  border-color: #c4b5fd !important;
  background: #faf5ff !important;
  color: #202124 !important;
}
.qy-login-toolify-skin .qy-sso-btn.discord {
  border-color: #a5b4fc !important;
  color: #312e81 !important;
  background: #ffffff !important;
}
.qy-login-toolify-skin .qy-sso-btn.discord:hover {
  border-color: #818cf8 !important;
  background: #eef2ff !important;
  color: #1e1b4b !important;
}
.qy-login-toolify-skin .qy-sso-divider {
  color: #94a3b8 !important;
}
.qy-login-toolify-skin .qy-sso-divider::before,
.qy-login-toolify-skin .qy-sso-divider::after {
  background: linear-gradient(90deg, transparent, #e2e8f0) !important;
}
.qy-login-toolify-skin .qy-sso-divider::after {
  background: linear-gradient(90deg, #e2e8f0, transparent) !important;
}
.qy-login-toolify-skin .qy-sso-input {
  background: #fff !important;
  border: 1px solid #e2e8f0 !important;
  color: #0f172a !important;
}
.qy-login-toolify-skin .qy-sso-input:focus {
  border-color: #c4b5fd !important;
  box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.12) !important;
}
.qy-login-toolify-skin .qy-sso-input::placeholder {
  color: #94a3b8 !important;
}
.qy-login-toolify-skin .qy-sso-otp-btn {
  background: linear-gradient(135deg, #7c3aed, #5b21b6) !important;
}
.qy-login-toolify-skin .qy-sso-code-btn {
  background: linear-gradient(135deg, #059669, #10b981) !important;
}
.qy-login-toolify-skin .qy-sso-footer {
  color: #64748b !important;
}
.qy-login-toolify-skin .qy-sso-footer a {
  color: #5b21b6 !important;
}

/* /register/ 专页：邮箱注册表单 + 底部登录链接 */
.qy-login-toolify-skin .qy-reg-standalone-form {
  margin-top: 0;
  text-align: left;
}
.qy-login-toolify-skin .qy-reg-standalone-form .ai-sso-field label {
  color: #334155 !important;
}
.qy-login-toolify-skin .qy-reg-standalone-form .ai-sso-field input[type="text"],
.qy-login-toolify-skin .qy-reg-standalone-form .ai-sso-field input[type="email"],
.qy-login-toolify-skin .qy-reg-standalone-form .ai-sso-field input[type="password"] {
  background: #fff !important;
  border-color: #e2e8f0 !important;
  color: #0f172a !important;
}
.qy-login-toolify-skin .qy-reg-standalone-form .ai-sso-btn-submit {
  background: linear-gradient(135deg, #7c3aed, #5b21b6) !important;
  margin-top: 4px;
}
.qy-reg-switch {
  margin-top: 22px;
  text-align: center;
  font-size: 0.875rem;
  color: #64748b;
}
.qy-reg-switch a {
  color: #5b21b6;
  font-weight: 600;
  text-decoration: none;
}
.qy-reg-switch a:hover {
  text-decoration: underline;
}
.qy-sso-footer-alt {
  color: #5b21b6 !important;
  font-weight: 600;
  text-decoration: none;
}
.qy-sso-footer-alt:hover {
  text-decoration: underline;
}
.qy-sso-footer-sep {
  color: #94a3b8;
}
