/* 登录页面 — 左右分栏全屏布局 */ .login-view { font-size: 0.14rem; display: flex; align-items: flex-start; width: 100%; height: var(--app-height, 100vh); background: #F7FEFC; } /* ==================== 左侧视觉动画面板 ==================== */ .login-visual { position: relative; width: 57%; height: 100%; overflow: hidden; background: #ddf4f2; border-right: 0.08rem solid #4FC2C9; } .login-jianshi-logo { position: absolute; right: 0.22rem; bottom: 0.1rem; width: 0.82rem; height: 0.21rem; object-fit: contain; pointer-events: auto; user-select: none; z-index: 12; } .ai-hub-stage { position: absolute; left: 0; top: 0; width: 11rem; height: 9rem; overflow: hidden; background-repeat: no-repeat; background-size: 14.05rem 12.69rem; background-position: -2.1rem -1.17rem; z-index: 1; transform-origin: top left; transform: translate3d(var(--stage-x, 0rem), var(--stage-y, 0rem), 0) scale(var(--stage-scale, 1)); } /* 标题 */ .hero-title { position: absolute; left: 0.35rem; top: 0.64rem; width: 3.74rem; height: 0.88rem; color: #2a8186; font-size: 0.36rem; font-weight: 700; line-height: 0.44rem; z-index: 3; pointer-events: none; white-space: nowrap; } .hero-title__second-line { display: block; padding-left: 0.72rem; } /* Nova 核心机器人 */ .nova-core { position: absolute; left: 1.83rem; top: 2.59rem; width: 5.92rem; height: 4.43rem; pointer-events: auto; z-index: 2; user-select: none; } .nova-core-base { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; pointer-events: none; user-select: none; } .nova-eye { position: absolute; width: 0.2rem; height: 0.44rem; object-fit: contain; pointer-events: none; user-select: none; will-change: transform; transition: transform .05s linear; z-index: 2; } .nova-eye-left { left: 2.5377rem; top: 1.77rem; } .nova-eye-right { left: 3.1077rem; top: 1.77rem; } .nova-eye.is-blinking { animation: nova-eye-blink .2s ease-in-out; transform-origin: center center; } @keyframes nova-eye-blink { 0%, 100% { scale: 1 1; } 40%, 60% { scale: 1 .06; } } /* 浮动节点 */ .node { position: absolute; z-index: 4; left: var(--x); top: var(--y); width: var(--w); height: var(--h); opacity: 0; visibility: hidden; pointer-events: none; object-fit: contain; will-change: opacity, transform, filter; transform: translate3d(0, 0.04rem, 0) scale(.996); filter: drop-shadow(0 0.16rem 0.28rem rgba(56, 255, 202, .10)) brightness(1); } .node.is-running { visibility: visible; animation: node-life var(--life-ms, 6700ms) linear forwards; } @keyframes node-life { 0% { opacity: 0; transform: translate3d(0, 0.04rem, 0) scale(.996); filter: drop-shadow(0 0.16rem 0.28rem rgba(56, 255, 202, .10)) brightness(1); } 20.896%, 79.104% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); filter: drop-shadow(0 0.16rem 0.28rem rgba(56, 255, 202, .20)) brightness(1.045); } 100% { opacity: 0; transform: translate3d(0, -0.04rem, 0) scale(.996); filter: drop-shadow(0 0.16rem 0.28rem rgba(56, 255, 202, .10)) brightness(1); } } /* ==================== 右侧表单面板 ==================== */ .login-view__right { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 43%; height: 100%; background: #F6FDFB; } /* Logo 行(右侧及简历阶段通用) */ .login-view__logo-row { display: flex; align-items: center; gap: 0.12rem; } .login-view__logo-box { display: flex; justify-content: center; align-items: center; width: 0.56rem; height: 0.56rem; border-radius: 0.16rem; font-weight: 700; font-size: 0.22rem; line-height: 1; } .login-view__logo-box--light { background: rgba(255, 255, 255, 0.2); color: #FFFFFF; } .login-view__logo-box--green { background: rgba(9, 170, 119, 0.2); color: #351616; } .login-view__logo-text { font-weight: 700; font-size: 0.28rem; line-height: 0.34rem; } .login-view__logo-text--white { color: #FFFFFF; } .login-view__logo-text--dark { color: #351616; } .login-view__logo-row--right { margin-bottom: 0.4rem; } /* 表单包裹 */ .login-view__form-wrap { display: flex; flex-direction: column; align-items: center; gap: 0.28rem; width: 4rem; } /* 标题 */ .login-view__heading { width: 100%; display: flex; flex-direction: column; gap: 0.1rem; } .login-view__title { font-weight: 700; font-size: 0.32rem; line-height: 0.39rem; color: #132034; } .login-view__subtitle { font-weight: 400; font-size: 0.15rem; line-height: 0.18rem; color: #64748B; } /* ==================== 手机号输入行 ==================== */ .login-view__phone-row { display: flex; align-items: center; width: 100%; height: 0.52rem; border-radius: 0.12rem; overflow: hidden; } .login-view__country-code { display: flex; align-items: center; padding: 0 0.16rem; gap: 0.06rem; width: 0.96rem; height: 100%; background: #F3FFFD; border: 1px solid #BFE8E2; border-radius: 0.12rem 0 0 0.12rem; cursor: pointer; } .login-view__flag { font-size: 0.16rem; line-height: 1; } .login-view__code-text { font-weight: 500; font-size: 0.15rem; line-height: 0.18rem; color: #132034; } .login-view__code-arrow { font-size: 0.11rem; color: #94A3B8; } .login-view__separator { width: 1px; height: 100%; background: #BFE8E2; } .login-view__phone-input { flex: 1; height: 100%; padding: 0 0.16rem; background: #FAFBFC; border: 1px solid #E2E8F0; border-left: none; border-radius: 0 0.12rem 0.12rem 0; font-size: 0.15rem; color: #132034; outline: none; &::placeholder { color: #94A3B8; } } /* ==================== 发送验证码按钮(步骤一) ==================== */ .login-view__send-btn { width: 100%; height: 0.52rem; background: linear-gradient(90deg, #12C7BE 0%, #06B6D4 100%); border-radius: 0.12rem; border: none; font-weight: 600; font-size: 0.16rem; color: #FFFFFF; cursor: pointer; transition: opacity 0.2s; &:disabled { opacity: 0.5; cursor: not-allowed; } &:not(:disabled):hover { opacity: 0.9; } } /* ==================== OTP 验证码输入(步骤二) ==================== */ .login-view__otp-wrap { position: relative; display: flex; align-items: flex-start; gap: 0.1rem; width: 100%; cursor: text; } .login-view__otp-hidden-input { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; z-index: 2; font-size: 0.16rem; caret-color: transparent; } .login-view__otp-box { display: flex; justify-content: center; align-items: center; width: 0.56rem; height: 0.64rem; background: #FAFBFC; border: 1px solid #E2E8F0; border-radius: 0.12rem; transition: border-color 0.2s, background 0.2s; } .login-view__otp-box--active { background: #F3FFFD; border: 2px solid #12C7BE; } .login-view__otp-box--filled { background: #F3FFFD; border: 2px solid #12C7BE; } .login-view__otp-digit { font-weight: 700; font-size: 0.24rem; line-height: 0.29rem; color: #132034; } /* 闪烁光标 */ .login-view__otp-cursor { display: inline-block; width: 2px; height: 0.28rem; background: #12C7BE; border-radius: 1px; animation: login-otp-blink 1s ease-in-out infinite; } @keyframes login-otp-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } /* ==================== 验证码发送状态提示 ==================== */ .login-view__sms-status { width: 100%; font-size: 0.13rem; line-height: 0.16rem; color: #64748B; text-align: center; padding-right: 0.1rem; margin-top: -0.19rem; margin-bottom: -0.10rem; } .login-view__sms-status--error { color: #E85635; } /* ==================== 状态按钮(步骤二) ==================== */ .login-view__status-btn { width: 100%; height: 0.52rem; background: linear-gradient(90deg, #12C7BE 0%, #06B6D4 100%); border-radius: 0.12rem; border: none; font-weight: 600; font-size: 0.16rem; color: #FFFFFF; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 0.08rem; transition: opacity 0.2s; &:disabled { opacity: 0.7; cursor: not-allowed; } &:not(:disabled):hover { opacity: 0.9; } } /* 登录中转圈动画 */ .login-view__spinner { display: inline-block; width: 0.18rem; height: 0.18rem; border: 2px solid rgba(255, 255, 255, 0.3); border-top-color: #FFFFFF; border-radius: 50%; animation: login-spin 0.7s linear infinite; } @keyframes login-spin { to { transform: rotate(360deg); } } /* ==================== 协议勾选 ==================== */ .login-view__agreement { display: flex; align-items: center; gap: 0.06rem; } .login-view__checkbox { box-sizing: border-box; width: 0.18rem; height: 0.18rem; background: #FFFFFF; border: 1.5px solid #CBD5E1; border-radius: 0.05rem; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s; } .login-view__checkbox--checked { background: #12C7BE; border-color: #12C7BE; } .login-view__check-icon { font-size: 0.11rem; color: #FFFFFF; font-weight: 700; line-height: 1; } .login-view__agreement-text { font-weight: 400; font-size: 0.12rem; line-height: 0.15rem; color: #94A3B8; } .login-view__agreement-link { font-weight: 500; font-size: 0.12rem; line-height: 0.15rem; color: #12C7BE; cursor: pointer; &:hover { text-decoration: underline; } } /* ==================== 简历上传阶段 — 左侧基础(step 3 使用) ==================== */ .login-view__left { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 57%; height: 100%; background: linear-gradient(180deg, #0A9E97 0%, #12C7BE 50%, #06B6D4 100%); position: relative; overflow: hidden; } /* ==================== 简历上传阶段 — 左侧职位卡片面板 ==================== */ .login-view__left--resume { position: relative; overflow: hidden; padding: 0.4rem; } .login-view__resume-logo { position: absolute; top: 0.3rem; left: 0.4rem; display: flex; align-items: center; gap: 0.12rem; z-index: 2; } .login-view__job-cards { position: relative; width: 100%; height: 5.5rem; z-index: 1; } .login-view__job-card { position: absolute; display: flex; align-items: center; gap: 0.1rem; padding: 0.1rem 0.16rem; background: #FFFFFF; border-radius: 0.1rem; box-shadow: 0 0.02rem 0.08rem rgba(0, 0, 0, 0.06); white-space: nowrap; } .login-view__job-card-icon { display: flex; align-items: center; justify-content: center; width: 0.32rem; height: 0.32rem; border-radius: 0.06rem; font-size: 0.13rem; font-weight: 700; flex-shrink: 0; } .login-view__job-card-info { display: flex; flex-direction: column; gap: 0.02rem; } .login-view__job-card-title { font-size: 0.13rem; font-weight: 600; color: #132034; } .login-view__job-card-company { font-size: 0.11rem; color: #94A3B8; } .login-view__job-card-salary { font-size: 0.12rem; font-weight: 600; color: #E85635; margin-left: 0.08rem; } .login-view__resume-slogan { position: absolute; bottom: 1.5rem; left: 0.4rem; z-index: 2; h1 { font-size: 0.32rem; font-weight: 700; color: #132034; line-height: 0.48rem; } } /* ==================== 简历上传阶段 — 右侧面板 ==================== */ .login-view__form-wrap--resume { width: 4.6rem; min-height: 4rem; } /* 上传区域 */ .login-view__upload-area { width: 100%; padding: 0.6rem 0.4rem; border: 1px dashed #E2E8F0; border-radius: 0.12rem; background: #FFFFFF; display: flex; flex-direction: column; align-items: center; gap: 0.12rem; cursor: pointer; transition: border-color 0.2s; &:hover { border-color: #12C7BE; } } .login-view__upload-circle { width: 0.6rem; height: 0.6rem; border-radius: 50%; background: #E8F8F7; } .login-view__upload-text { font-size: 0.14rem; color: #64748B; } .login-view__upload-hint { font-size: 0.12rem; color: #94A3B8; } .login-view__file-input { display: none; } .login-view__upload-btn { padding: 0.14rem 0.4rem; background: linear-gradient(90deg, #12C7BE 0%, #06B6D4 100%); border: none; border-radius: 0.26rem; font-size: 0.16rem; font-weight: 600; color: #FFFFFF; cursor: pointer; transition: opacity 0.2s; &:hover { opacity: 0.9; } } /* 解析中状态 */ .login-view__parsing { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; width: 100%; min-height: 3rem; } .login-view__parsing-title { font-size: 0.32rem; font-weight: 700; color: #132034; margin-bottom: 0.12rem; } .login-view__parsing-subtitle { font-size: 0.15rem; color: #64748B; } /* 失败状态标题红色 */ .login-view__title--error { color: #12C7BE; }