/* ========================================
   星邦统一认证中心 - 现代化登录页样式
   Modern B-End Design System
   ======================================== */

:root {
    /* 配色系统 */
    --color-primary: #2563eb;
    --primary-color: #2563eb;  /* 兼容性别名 */
    --color-primary-dark: #1d4ed8;
    --color-secondary: #0f766e;
    --color-accent: #f59e0b;
    --color-success: #10b981;
    --color-warning: #f59e0b;
    --color-error: #ef4444;
    
    /* 文字颜色 */
    --text-primary: #0f172a;
    --text-secondary: #64748b;
    --text-muted: #94a3b8;
    --text-white: #ffffff;
    
    /* 背景色 */
    --bg-gradient-start: #0f172a;
    --bg-gradient-end: #1e1b4b;
    --bg-card: #ffffff;
    --bg-input: #f8fafc;
    --bg-input-hover: #ffffff;
    
    /* 边框 */
    --border-color: #e2e8f0;
    --border-hover: #2563eb;
    
    /* 渐变 */
    --gradient-primary: linear-gradient(135deg, #2563eb 0%, #0f766e 100%);
    --primary-gradient: linear-gradient(135deg, #2563eb 0%, #0f766e 100%);  /* 兼容性别名 */
    --gradient-brand: linear-gradient(135deg, #07111f 0%, #123733 52%, #2b2534 100%);
    
    /* 阴影 */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --shadow-glow: 0 0 40px rgba(37, 99, 235, 0.15);
    
    /* 圆角 */
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --radius-xl: 24px;
    --radius-full: 9999px;
    
    /* 过渡动画 */
    --transition-fast: 150ms ease;
    --transition-normal: 300ms ease;
    --transition-slow: 500ms ease;
}

/* ========================================
   全局重置
   ======================================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html, body {
    width: 100%;
    height: 100%;
    overflow: hidden;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

#app {
    width: 100%;
    height: 100%;
}

/* ========================================
   动态背景 - 用于home页面
   ======================================== */
.animated-bg {
    position: fixed;
    inset: 0;
    background: #ffffff;
    z-index: -2;
}

.particles {
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
}

.particle {
    position: absolute;
    width: 4px;
    height: 4px;
    background: rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    animation: particleFloat 15s infinite linear;
}

@keyframes particleFloat {
    0% {
        transform: translateY(100vh) scale(0);
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    90% {
        opacity: 1;
    }
    100% {
        transform: translateY(-100vh) scale(1);
        opacity: 0;
    }
}

/* ========================================
   登录页面容器 - 左右分栏布局
   ======================================== */
.login-page-container {
    display: flex;
    width: 100%;
    height: 100vh;
    overflow: hidden;
    position: relative;
    background:
        linear-gradient(90deg, rgba(248, 250, 252, 0) 0%, rgba(248, 250, 252, 0.92) 52%, #f8fafc 100%);
}

/* ========================================
   左侧品牌区 - 品牌动态背景
   ======================================== */

.login-left-decoration {
  flex: 1 1 58%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(36px, 5vw, 60px);
  position: relative;
  z-index: 1;
  height: 100vh;
  overflow: hidden;
  background:
    radial-gradient(circle at 16% 18%, rgba(20, 184, 166, 0.18), transparent 34%),
    radial-gradient(circle at 84% 72%, rgba(245, 158, 11, 0.12), transparent 32%),
    radial-gradient(circle at 58% 40%, rgba(37, 99, 235, 0.10), transparent 36%),
    linear-gradient(135deg, #07111f 0%, #123733 52%, #2b2534 100%);
}

.login-left-decoration::before {
  content: '';
  position: absolute;
  inset: 24px;
  border: 1px solid rgba(226, 232, 240, 0.12);
  border-radius: 8px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    0 24px 80px rgba(0, 0, 0, 0.18);
  pointer-events: none;
  z-index: 1;
}

.brand-aurora,
.brand-grid,
.brand-circuit,
.brand-ring,
.brand-scan,
.brand-node,
.brand-meteor {
  position: absolute;
  pointer-events: none;
  z-index: 0;
}

.brand-aurora {
  inset: -20%;
  background:
    linear-gradient(115deg, transparent 15%, rgba(34, 211, 238, 0.18) 34%, transparent 52%),
    linear-gradient(65deg, transparent 35%, rgba(245, 158, 11, 0.12) 50%, transparent 70%),
    linear-gradient(155deg, transparent 22%, rgba(79, 70, 229, 0.16) 42%, transparent 62%);
  filter: blur(24px);
  opacity: 0.58;
  animation: brandAuroraShift 16s ease-in-out infinite alternate;
}

.brand-grid {
  inset: 0;
  background-image:
    linear-gradient(rgba(148, 163, 184, 0.10) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148, 163, 184, 0.10) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: linear-gradient(90deg, transparent, black 18%, black 82%, transparent);
  -webkit-mask-image: linear-gradient(90deg, transparent, black 18%, black 82%, transparent);
  opacity: 0.26;
  animation: brandGridDrift 18s linear infinite;
}

.brand-circuit {
  inset: 8%;
  background:
    linear-gradient(90deg, transparent 0 12%, rgba(34, 211, 238, 0.22) 12% 12.25%, transparent 12.25% 100%),
    linear-gradient(180deg, transparent 0 22%, rgba(20, 184, 166, 0.18) 22% 22.25%, transparent 22.25% 100%),
    linear-gradient(90deg, transparent 0 64%, rgba(245, 158, 11, 0.16) 64% 64.25%, transparent 64.25% 100%),
    linear-gradient(180deg, transparent 0 70%, rgba(99, 102, 241, 0.20) 70% 70.25%, transparent 70.25% 100%);
  border: 1px solid rgba(148, 163, 184, 0.08);
  opacity: 0.26;
  transform: skewY(-4deg);
  animation: brandCircuitPulse 7s ease-in-out infinite;
}

.brand-ring {
  top: 50%;
  left: 50%;
  width: min(54vw, 640px);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  border: 1px solid rgba(226, 232, 240, 0.10);
  border-radius: 50%;
  box-shadow:
    inset 0 0 0 120px rgba(15, 23, 42, 0.03),
    0 0 80px rgba(34, 211, 238, 0.08);
  animation: brandRingRotate 34s linear infinite;
}

.brand-ring::before,
.brand-ring::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  inset: 14%;
  border: 1px dashed rgba(148, 163, 184, 0.14);
}

.brand-ring::after {
  inset: 31%;
  border-color: rgba(245, 158, 11, 0.16);
  animation: brandRingRotate 18s linear infinite reverse;
}

.brand-scan {
  inset: 0;
  background: linear-gradient(180deg, transparent 0%, rgba(34, 211, 238, 0.16) 50%, transparent 100%);
  height: 22%;
  opacity: 0;
  animation: brandScan 8s ease-in-out infinite;
}

.brand-node {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #67e8f9;
  box-shadow: 0 0 0 4px rgba(34, 211, 238, 0.10), 0 0 18px rgba(34, 211, 238, 0.8);
  opacity: 0.28;
  animation: brandNodePulse 3.6s ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}

.brand-meteor {
  left: -24%;
  width: 180px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.72), transparent);
  transform: rotate(-18deg);
  opacity: 0;
  animation: brandMeteor 7.5s ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}

@keyframes brandAuroraShift {
  0%   { transform: translate3d(-2%, -1%, 0) rotate(-2deg); }
  100% { transform: translate3d(4%, 3%, 0) rotate(3deg); }
}

@keyframes brandGridDrift {
  from { background-position: 0 0, 0 0; }
  to   { background-position: 56px 56px, 56px 56px; }
}

@keyframes brandCircuitPulse {
  0%, 100% { opacity: 0.28; transform: skewY(-4deg) translateY(0); }
  50%      { opacity: 0.52; transform: skewY(-4deg) translateY(-10px); }
}

@keyframes brandRingRotate {
  from { rotate: 0deg; }
  to   { rotate: 360deg; }
}

@keyframes brandScan {
  0%, 18%   { opacity: 0; transform: translateY(-120%); }
  35%, 58%  { opacity: 0.45; }
  78%, 100% { opacity: 0; transform: translateY(460%); }
}

@keyframes brandNodePulse {
  0%, 100% { opacity: 0.28; transform: scale(0.8); }
  50%      { opacity: 0.92; transform: scale(1.25); }
}

@keyframes brandMeteor {
  0%, 62%   { opacity: 0; transform: translateX(0) rotate(-18deg); }
  70%       { opacity: 0.72; }
  88%, 100% { opacity: 0; transform: translateX(150vw) rotate(-18deg); }
}

/* 6. 噪点纹理：增加胶片质感 */
.login-left-decoration::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
  opacity: 0.4;
  pointer-events: none;
  z-index: 1;
}

/* 确保内容层在最上方 */
.decoration-content {
  position: relative;
  z-index: 2;
  width: min(100%, 600px);
  text-align: center;
  animation: fadeInUp 0.8s ease both;
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Logo图片 */
.brand-logo-wrapper {
    margin: 0 auto 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: logoFloat 3s ease-in-out infinite;
    position: relative;
    z-index: 2;
    width: 280px;
    height: 104px;
}

@keyframes logoFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

.brand-logo {
    max-width: 240px;
    width: 100%;
    height: auto;
    filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.3));
    transition: all var(--transition-normal);
    position: relative;
    z-index: 2;
}

.brand-logo-halo,
.brand-logo-ring {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    pointer-events: none;
}

.brand-logo-halo {
    background:
        radial-gradient(circle, rgba(255, 255, 255, 0.18), transparent 58%),
        radial-gradient(circle at 35% 45%, rgba(20, 184, 166, 0.22), transparent 54%);
    filter: blur(10px);
    opacity: 0.86;
}

.brand-logo-ring {
    inset: 12px 18px;
    border: 1px solid rgba(226, 232, 240, 0.18);
    box-shadow: inset 0 0 24px rgba(255, 255, 255, 0.04);
    animation: brandLogoRing 8s ease-in-out infinite;
}

@keyframes brandLogoRing {
    0%, 100% { opacity: 0.44; transform: scale(0.96); }
    50% { opacity: 0.86; transform: scale(1); }
}

.brand-logo:hover {
    transform: scale(1.05);
    filter: drop-shadow(0 6px 20px rgba(0, 0, 0, 0.4));
}

/* 标题 */
.decoration-title {
    font-size: clamp(1.9rem, 3vw, 2.35rem);
    font-weight: 800;
    color: var(--text-white);
    margin-bottom: 12px;
    letter-spacing: 0;
    line-height: 1.2;
    text-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
}

.decoration-subtitle {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.6);
    letter-spacing: 0;
    font-weight: 500;
    margin-bottom: 16px;
}

.brand-headline {
    position: relative;
    padding: 0 24px;
}

/* 合并文案：品牌副标题 */
.brand-subtitle {
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.75);
    font-weight: 700;
    margin-bottom: 24px;
    line-height: 1.5;
}

/* 分隔线 */
.brand-divider {
    width: 76px;
    height: 3px;
    background: linear-gradient(90deg, #14b8a6 0%, #f59e0b 100%);
    margin: 0 auto 24px;
    border-radius: var(--radius-full);
    box-shadow: 0 0 24px rgba(20, 184, 166, 0.36);
}

/* 描述文字 */
.brand-description {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.78);
    line-height: 1.6;
    margin-bottom: 28px;
    max-width: 480px;
    margin-left: auto;
    margin-right: auto;
    padding: 16px 18px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: 8px;
    backdrop-filter: blur(14px);
}

/* 特性标签 */
.values-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin-top: 20px;
}

.value-card {
    background: linear-gradient(145deg, rgba(255, 255, 255, 0.10), rgba(255, 255, 255, 0.045));
    backdrop-filter: blur(16px);
    border: 1px solid rgba(226, 232, 240, 0.13);
    border-radius: 8px;
    padding: 15px;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    transition: all var(--transition-normal);
    cursor: default;
    min-height: 96px;
    text-align: left;
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.09);
    position: relative;
    overflow: hidden;
}

.value-card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, transparent 0%, rgba(255, 255, 255, 0.12) 45%, transparent 70%);
    transform: translateX(-120%);
    transition: transform 650ms ease;
    pointer-events: none;
}

.value-card:nth-child(3) {
    grid-column: 1 / -1;
    min-height: 88px;
}

.value-card:hover {
    background: linear-gradient(145deg, rgba(255, 255, 255, 0.14), rgba(20, 184, 166, 0.08));
    border-color: rgba(20, 184, 166, 0.42);
    transform: translateY(-4px);
    box-shadow: 0 22px 48px rgba(0, 0, 0, 0.20);
}

.value-card:hover::before {
    transform: translateX(120%);
}

.value-icon {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    background: linear-gradient(135deg, rgba(37, 99, 235, 0.34), rgba(20, 184, 166, 0.36));
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--transition-normal);
}

.value-card:hover .value-icon {
    background: linear-gradient(135deg, rgba(20, 184, 166, 0.52), rgba(245, 158, 11, 0.34));
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(20, 184, 166, 0.18);
}

.value-content {
    min-width: 0;
}

.value-label {
    font-size: 0.78rem;
    font-weight: 700;
    color: rgba(167, 243, 208, 0.78);
    line-height: 1.2;
    margin-bottom: 8px;
}

.value-text {
    font-size: 0.98rem;
    font-weight: 600;
    color: var(--text-white);
    line-height: 1.45;
    letter-spacing: 0;
}

/* ========================================
   右侧登录面板
   ======================================== */
.login-right-panel {
    flex: 0 0 42%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    background:
        radial-gradient(circle at 24% 16%, rgba(20, 184, 166, 0.08), transparent 28%),
        radial-gradient(circle at 84% 86%, rgba(245, 158, 11, 0.06), transparent 30%),
        linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    position: relative;
    overflow: hidden;
}

.login-right-panel::before {
    content: '';
    position: absolute;
    width: 360px;
    height: 360px;
    right: -210px;
    top: -180px;
    border-radius: 50%;
    border: 1px solid rgba(20, 184, 166, 0.14);
    box-shadow: inset 0 0 60px rgba(20, 184, 166, 0.05);
    pointer-events: none;
}

.login-right-panel::after {
    content: '';
    position: absolute;
    inset: 0 auto 0 0;
    width: 1px;
    background: linear-gradient(180deg, transparent, rgba(15, 118, 110, 0.18), transparent);
    pointer-events: none;
}

/* 登录卡片 */
.login-card.el-card {
    width: 100%;
    height: 100%;
    max-width: none;
    background: transparent;
    border-radius: 0;
    border: none;
    box-shadow: none;
    overflow: visible;
    animation: slideInRight 0.6s ease;
    position: relative;
    transition: all var(--transition-normal);
    backdrop-filter: none;
}

.login-card.el-card::before {
    display: none;
}

@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* hover 上浮效果 + 增强阴影 */
.login-card.el-card:hover {
    transform: none;
    box-shadow: none;
}

.login-card.el-card .el-card__body {
    width: min(100%, 420px);
    margin: 0 auto;
    padding: clamp(34px, 5vh, 52px) 32px 30px;
    display: flex;
    flex-direction: column;
    height: 100vh;
    min-height: 0;
    position: relative;
    z-index: 1;
}

/* ========================================
   登录切换角标 - 右上角直角三角形
   ======================================== */
.login-switch-badge {
    position: absolute !important;
    top: 0;
    right: 0;
    width: 74px;
    height: 74px;
    cursor: pointer;
    z-index: 100;
    transition: all 0.2s ease;
    overflow: hidden;
}

.login-switch-badge:hover {
    transform: scale(1.04);
    z-index: 101;
}

.login-switch-badge.pressed {
    transform: scale(0.95);
}

/* Tooltip 提示 */
.login-switch-badge::before {
    content: '切换密码登录';
    position: absolute;
    top: 100%;
    right: 0;
    margin-top: 8px;
    padding: 6px 12px;
    background: rgba(15, 23, 42, 0.9);
    color: white;
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
    border-radius: 6px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-5px);
    transition: all var(--transition-fast);
    pointer-events: none;
}

.login-switch-badge:hover::before {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* 根据登录类型动态显示tooltip */
.login-switch-badge[data-type="lark"]::before {
    content: '切换密码登录';
}

.login-switch-badge[data-type="password"]::before {
    content: '切换扫码登录';
}

.badge-svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* ========================================
   卡片头部
   ======================================== */
.card-header {
    text-align: center;
    margin-bottom: 20px;
    flex-shrink: 0;
}

.card-icon-shell {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(240, 253, 250, 0.92)),
        linear-gradient(135deg, rgba(20, 184, 166, 0.18), rgba(37, 99, 235, 0.10));
    border: 1px solid rgba(20, 184, 166, 0.18);
    box-shadow:
        0 10px 24px rgba(15, 118, 110, 0.10),
        inset 0 1px 0 rgba(255, 255, 255, 0.9);
    position: relative;
}

.card-icon-shell::after {
    content: '';
    position: absolute;
    inset: -7px;
    border-radius: 10px;
    border: 1px solid rgba(20, 184, 166, 0.10);
    opacity: 0.8;
}

.card-icon-shell .el-icon {
    animation: iconBreathe 2.8s ease-in-out infinite;
}

@keyframes iconBreathe {
    0%, 100% { transform: scale(1); opacity: 0.9; }
    50% { transform: scale(1.08); opacity: 1; }
}

.card-title {
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--text-primary);
    margin-bottom: 8px;
    letter-spacing: 0;
}

.card-subtitle {
    font-size: 0.9rem;
    color: var(--text-secondary);
    font-weight: 500;
}

.login-mode-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 80px;
    height: 24px;
    margin-top: 10px;
    padding: 0 12px;
    border-radius: 999px;
    color: #0f766e;
    background: rgba(20, 184, 166, 0.08);
    border: 1px solid rgba(20, 184, 166, 0.14);
    font-size: 12px;
    font-weight: 800;
}

/* ========================================
   登录表单
   ======================================== */
.login-form {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.el-form-item {
    margin-bottom: 20px;
}

.el-form-item:last-child {
    margin-top: 8px;
    margin-bottom: 0;
}

/* Element Plus输入框覆盖 */
.el-input__wrapper {
    min-height: 48px;
    background-color: #f8fafc;
    box-shadow: none;
    border: 1px solid #dbe5ee;
    border-radius: 8px;
    padding: 10px 14px;
    transition: all var(--transition-normal);
}

.el-input__wrapper:hover {
    background-color: #ffffff;
    border-color: rgba(20, 184, 166, 0.58);
    box-shadow: 0 8px 22px rgba(15, 23, 42, 0.05);
}

.el-input__wrapper.is-focus {
    background-color: #ffffff;
    border-color: #0f766e;
    box-shadow: 0 0 0 4px rgba(20, 184, 166, 0.12);
}

.el-input__inner {
    color: var(--text-primary);
    font-size: 15px;
    font-weight: 500;
}

.el-input__inner::placeholder {
    color: var(--text-muted);
    font-weight: 400;
}

.el-input__prefix {
    margin-right: 8px;
}

.el-input__prefix .el-icon {
    color: var(--text-muted);
    transition: color var(--transition-fast);
}

.el-input__wrapper.is-focus .el-input__prefix .el-icon {
    color: #0f766e;
}

/* 登录按钮 */
.login-btn.el-button--primary {
    background: var(--gradient-primary);
    border: none;
    box-shadow: 0 12px 28px rgba(15, 118, 110, 0.22);
    border-radius: 8px;
    font-weight: 800;
    font-size: 15px;
    letter-spacing: 0;
    height: 50px;
    transition: all var(--transition-normal);
    position: relative;
    overflow: hidden;
}

.login-btn.el-button--primary::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, transparent 0%, rgba(255, 255, 255, 0.28) 42%, transparent 70%);
    transform: translateX(-120%);
    transition: transform 600ms ease;
}

.login-btn.el-button--primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 34px rgba(15, 118, 110, 0.30);
}

.login-btn.el-button--primary:hover::before {
    transform: translateX(120%);
}

.login-btn.el-button--primary:active {
    transform: translateY(0);
}

/* ========================================
   飞书二维码区域
   ======================================== */
.lark-login-section {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding-bottom: 18px;
}

.qrcode-wrapper {
    position: relative;
    width: clamp(232px, 35vh, 292px);
    height: clamp(232px, 35vh, 292px);
    background: transparent;
    border-radius: 0;
    padding: 0;
    border: none;
    box-shadow: none;
    overflow: visible;
    display: flex;
    align-items: center;
    justify-content: center;
}

.qrcode-wrapper::before {
    display: none;
}

/* 强制移除飞书SDK生成的二维码边框 */
.qrcode-wrapper iframe,
.qrcode-wrapper .qr-code,
.qrcode-wrapper img,
.qrcode-wrapper canvas,
.qrcode-wrapper div {
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}

.qrcode-container {
    width: 100%;
    height: 100%;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border-radius: 0;
    padding: 0; /* 移除内边距 */
    border: none !important;
}

/* 扫描线动画 */
.qrcode-container::after {
    display: none;
}

@keyframes scan {
    0% { top: 0; }
    100% { top: 100%; }
}

.qrcode-tip {
    font-size: 0.82rem;
    color: var(--text-secondary);
    font-weight: 600;
    text-align: center;
    margin-top: 0;
}

.lark-client-login {
    margin-top: 0;
}

.lark-client-login .el-link {
    font-size: 0.85rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: 8px;
    transition: all var(--transition-normal);
}

.lark-client-login .el-link:hover {
    background: rgba(20, 184, 166, 0.10);
    transform: translateY(-2px);
}

/* 二维码状态遮罩 */
.qrcode-loading,
.qrcode-success,
.qrcode-expired {
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(4px);
    border-radius: 8px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    z-index: 5;
}

.qrcode-status {
    text-align: center;
}

.qrcode-status p {
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--text-secondary);
    margin-top: 8px;
}

.qrcode-status.loading p {
    color: var(--color-primary);
}

.qrcode-status.success p {
    color: var(--color-success);
}

.qrcode-status.expired p {
    color: var(--text-muted);
}

.refresh-btn {
    margin-top: 8px;
    padding: 8px 20px;
    background: var(--gradient-primary);
    color: white;
    border: none;
    border-radius: 8px;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition-normal);
}

.refresh-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

.refresh-btn.refreshing {
    animation: rotate360 0.6s linear;
}

@keyframes rotate360 {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* ========================================
   页脚
   ======================================== */
.login-footer {
    margin-top: auto;
    padding-top: 18px;
    border-top: 1px solid rgba(226, 232, 240, 0.86);
    text-align: center;
    flex-shrink: 0;
}

.footer-text {
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.6;
}

.footer-text a {
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 600;
    transition: color var(--transition-fast);
}

.footer-text a:hover {
    color: var(--color-primary-dark);
}

/* ========================================
   响应式适配
   ======================================== */

/* 平板/移动端 */
@media (max-width: 1024px) {
    .login-left-decoration {
        display: none;
    }
    
    .login-right-panel {
        flex: 1;
        padding: 0;
    }
    
    .login-card.el-card {
        max-width: none;
    }
}

/* 小屏笔记本 1366x768 */
@media (max-height: 768px) {
    .login-left-decoration {
        padding: 32px 48px;
    }

    .login-right-panel {
        padding: 0;
    }
    
    .login-card.el-card .el-card__body {
        height: 100vh;
        padding: 24px 30px 20px;
    }
    
    .card-header {
        margin-bottom: 12px;
    }

    .card-icon-shell {
        width: 50px;
        height: 50px;
        margin-bottom: 10px;
    }

    .card-title {
        font-size: 1.28rem;
        margin-bottom: 4px;
    }

    .card-subtitle {
        font-size: 0.84rem;
    }

    .login-mode-pill {
        height: 22px;
        margin-top: 8px;
        font-size: 11px;
    }
    
    .decoration-title {
        font-size: 1.75rem;
    }

    .brand-logo-wrapper {
        margin-bottom: 18px;
        width: 240px;
        height: 92px;
    }

    .brand-logo {
        max-width: 220px;
    }

    .brand-subtitle {
        margin-bottom: 18px;
    }

    .brand-divider {
        margin-bottom: 20px;
    }

    .brand-description {
        margin-bottom: 22px;
        padding: 12px 14px;
    }
    
    .qrcode-wrapper {
        width: clamp(200px, 31vh, 232px);
        height: clamp(200px, 31vh, 232px);
        padding: 0;
    }

    .qrcode-container {
        width: 100%;
        height: 100%;
    }

    .lark-login-section {
        gap: 10px;
    }

    .login-footer {
        padding-top: 12px;
    }

    .footer-text {
        font-size: 0.74rem;
        line-height: 1.45;
    }
    
    .values-grid {
        gap: 12px;
        margin-top: 18px;
    }
    
    .value-card {
        padding: 14px;
        min-height: 88px;
    }

    .value-card:nth-child(3) {
        min-height: 84px;
    }

    .value-icon {
        flex-basis: 40px;
        width: 40px;
        height: 40px;
    }

    .value-text {
        font-size: 0.92rem;
    }
}

/* 移动端 */
@media (max-width: 768px) {
    html,
    body {
        height: auto;
        min-height: 100%;
        overflow-x: hidden;
        overflow-y: auto;
    }

    .login-page-container {
        min-height: 100svh;
        height: auto;
        overflow: visible;
    }

    .login-right-panel {
        min-height: 100svh;
        padding: 0;
    }
    
    .login-card.el-card .el-card__body {
        height: auto;
        min-height: 100svh;
        padding: 28px 22px 24px;
    }

    .login-card.el-card {
        max-width: none;
    }
    
    .card-title {
        font-size: 1.25rem;
    }

    .card-icon-shell {
        width: 56px;
        height: 56px;
        margin-bottom: 14px;
    }
    
    .qrcode-wrapper {
        width: min(260px, calc(100vw - 84px));
        height: min(260px, calc(100vw - 84px));
        padding: 0;
    }

    .qrcode-container {
        width: 100%;
        height: 100%;
    }
    
    .login-btn.el-button--primary {
        width: 100%;
    }
}

@media (max-width: 380px) {
    .login-right-panel {
        padding: 0;
    }

    .login-card.el-card .el-card__body {
        padding: 24px 16px 20px;
    }

    .qrcode-wrapper {
        width: min(240px, calc(100vw - 64px));
        height: min(240px, calc(100vw - 64px));
    }

    .qrcode-container {
        width: min(212px, calc(100vw - 92px));
        height: min(212px, calc(100vw - 92px));
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 1ms !important;
    }
}
