.login-page { min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: calc(64px + var(--hq-safe-top)) 24px calc(24px + var(--hq-safe-bottom)); background: linear-gradient(160deg, #7a0f16 0%, #a61d24 45%, #f5f3f0 45%, #f5f3f0 100%); box-sizing: border-box; } .login-brand { display: flex; flex-direction: column; align-items: center; color: #fff; margin-bottom: 32px; } .login-logo { width: 72px; height: 72px; border-radius: 22px; background: rgba(255, 255, 255, 0.16); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; } .login-logo .material-symbols-outlined { font-size: 40px; color: #fff; } .login-title { font-size: 26px; font-weight: 800; letter-spacing: 2px; } .login-subtitle { font-size: 13px; opacity: 0.85; margin-top: 4px; letter-spacing: 4px; } .login-card { width: 100%; max-width: 400px; background: #fff; border-radius: 20px; padding: 24px 20px; box-shadow: 0 8px 30px rgba(93, 64, 55, 0.15); display: flex; flex-direction: column; gap: 14px; box-sizing: border-box; } .login-card-title { font-size: 18px; font-weight: 700; text-align: center; margin-bottom: 6px; } .login-input-wrap { display: flex; align-items: center; width: 100%; height: 48px; padding: 0 12px; gap: 8px; border-radius: 12px; background: var(--hq-bg, #faf9f7); box-sizing: border-box; } .login-input-icon { flex-shrink: 0; color: var(--hq-muted); font-size: 20px; line-height: 1; pointer-events: none; } .login-input { flex: 1; width: 0; min-width: 0; height: 48px; min-height: 48px; padding: 0; font-size: 15px; line-height: 48px; box-sizing: border-box; background: transparent; } /* Taro H5 输入框内部垂直居中 */ .login-input-wrap .taro-input, .login-input-wrap taro-input-core { flex: 1; width: 100%; min-width: 0; height: 100%; min-height: 48px; display: flex; align-items: center; background: transparent; } .login-input-wrap input, .login-input-wrap .weui-input { width: 100%; height: 48px; min-height: 48px; line-height: 48px; padding: 0; margin: 0; border: none; outline: none; background: transparent; font-size: 15px; box-sizing: border-box; } .login-input-row { display: flex; align-items: stretch; gap: 8px; width: 100%; } .login-input-row .login-input-wrap { flex: 1; min-width: 0; } .login-code-btn { flex-shrink: 0; min-width: 96px; height: 48px; padding: 0 12px; border-radius: 12px; border: 1px solid rgba(226, 190, 188, 0.2); background: var(--hq-surface-low, #f4f3f1); color: var(--hq-red); font-size: 13px; font-weight: 600; white-space: nowrap; display: flex; align-items: center; justify-content: center; box-sizing: border-box; } .login-code-btn.is-disabled { color: var(--hq-muted); } .login-submit { margin-top: 0; height: 48px; display: flex; align-items: center; justify-content: center; } .login-remember, .login-agreement { display: flex; align-items: flex-start; gap: 8px; font-size: 12px; color: var(--hq-muted); } .login-agreement { margin: 8px 0 12px; padding: 4px 0; } .login-remember { align-items: center; padding: 0 4px; } .login-checkbox { width: 16px; height: 16px; border: 1px solid var(--hq-line); border-radius: 4px; flex-shrink: 0; box-sizing: border-box; } .login-checkbox.is-checked { background: var(--hq-red); border-color: var(--hq-red); position: relative; } .login-checkbox.is-checked::after { content: ''; position: absolute; left: 4px; top: 1px; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); } .login-msg { font-size: 13px; color: #d33; text-align: center; line-height: 1.4; } .login-agreement { padding: 0 4px; } .login-agreement-text { line-height: 1.5; } .login-agreement-link { color: var(--hq-red); font-weight: 600; } .login-divider { display: flex; align-items: center; text-align: center; color: var(--hq-muted); font-size: 12px; margin: 6px 0 0; } .login-divider::before, .login-divider::after { content: ''; flex: 1; height: 1px; background: var(--hq-line); margin: 0 12px; } .login-wechat-btn { width: 100%; height: 48px; border-radius: 12px; border: 1px solid rgba(226, 190, 188, 0.2); background: var(--hq-surface-low, #f4f3f1); color: var(--hq-ink, #1a1c1b); font-size: 18px; font-weight: 600; display: flex; align-items: center; justify-content: center; gap: 8px; box-sizing: border-box; } .login-wechat-btn.is-disabled { opacity: 0.6; pointer-events: none; } .login-wechat-svg { width: 24px; height: 24px; flex-shrink: 0; } .login-wechat-fallback { width: 24px; height: 24px; line-height: 24px; text-align: center; color: #07c160; font-weight: 700; } .login-footer { margin-top: auto; padding-top: 32px; display: flex; align-items: center; gap: 6px; color: var(--hq-muted); font-size: 12px; }