与牧同行-小程序用户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

545 lines
9.3 KiB

  1. /* pages/real-name-auth/real-name-auth.wxss */
  2. /* 基础样式 */
  3. .auth-container {
  4. min-height: 100vh;
  5. background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
  6. position: relative;
  7. overflow: hidden;
  8. padding: 40rpx 0 100rpx;
  9. }
  10. /* 顶部装饰 */
  11. .top-decoration {
  12. position: absolute;
  13. top: 0;
  14. left: 0;
  15. right: 0;
  16. height: 300rpx;
  17. overflow: hidden;
  18. z-index: 0;
  19. }
  20. .decoration-circle {
  21. position: absolute;
  22. border-radius: 50%;
  23. background: linear-gradient(135deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.1) 100%);
  24. }
  25. .circle-1 {
  26. width: 400rpx;
  27. height: 400rpx;
  28. top: -200rpx;
  29. right: -100rpx;
  30. }
  31. .circle-2 {
  32. width: 300rpx;
  33. height: 300rpx;
  34. top: -150rpx;
  35. left: -100rpx;
  36. }
  37. .circle-3 {
  38. width: 200rpx;
  39. height: 200rpx;
  40. top: 100rpx;
  41. left: 50%;
  42. margin-left: -100rpx;
  43. }
  44. /* 头部 */
  45. .header {
  46. text-align: center;
  47. padding: 40rpx 0 60rpx;
  48. position: relative;
  49. z-index: 1;
  50. }
  51. .logo {
  52. width: 120rpx;
  53. height: 120rpx;
  54. margin: 0 auto 24rpx;
  55. }
  56. .brand-name {
  57. font-size: 48rpx;
  58. font-weight: bold;
  59. color: #2c3e50;
  60. margin-bottom: 16rpx;
  61. letter-spacing: 4rpx;
  62. }
  63. .page-title {
  64. font-size: 36rpx;
  65. color: #2c3e50;
  66. font-weight: 600;
  67. margin-bottom: 12rpx;
  68. }
  69. .page-subtitle {
  70. font-size: 28rpx;
  71. color: #7f8c8d;
  72. }
  73. /* 表单卡片 */
  74. .form-card {
  75. background: white;
  76. border-radius: 32rpx;
  77. padding: 48rpx 40rpx;
  78. margin: 0 40rpx 30rpx;
  79. box-shadow: 0 10rpx 40rpx rgba(0, 0, 0, 0.08);
  80. position: relative;
  81. z-index: 1;
  82. animation: slideUp 0.6s ease-out;
  83. }
  84. .card-header {
  85. margin-bottom: 40rpx;
  86. }
  87. .card-title {
  88. display: flex;
  89. align-items: center;
  90. font-size: 32rpx;
  91. font-weight: 600;
  92. color: #2c3e50;
  93. margin-bottom: 12rpx;
  94. }
  95. .title-icon {
  96. width: 36rpx;
  97. height: 36rpx;
  98. margin-right: 16rpx;
  99. }
  100. .card-hint {
  101. font-size: 26rpx;
  102. color: #95a5a6;
  103. }
  104. /* 输入组 */
  105. .input-group {
  106. margin-bottom: 48rpx;
  107. }
  108. .input-label {
  109. display: flex;
  110. align-items: center;
  111. margin-bottom: 20rpx;
  112. font-size: 28rpx;
  113. color: #2c3e50;
  114. font-weight: 500;
  115. }
  116. .label-icon {
  117. width: 32rpx;
  118. height: 32rpx;
  119. margin-right: 16rpx;
  120. }
  121. .input-wrapper,
  122. .code-input-container {
  123. position: relative;
  124. }
  125. .name-input,
  126. .phone-input,
  127. .code-input {
  128. width: 100%;
  129. height: 88rpx;
  130. font-size: 28rpx;
  131. color: #2c3e50;
  132. padding: 0 24rpx;
  133. background: #f8f9fa;
  134. border-radius: 16rpx;
  135. transition: all 0.3s ease;
  136. }
  137. .placeholder {
  138. color: #bdc3c7;
  139. font-size: 28rpx;
  140. }
  141. .input-border {
  142. position: absolute;
  143. top: 0;
  144. left: 0;
  145. right: 0;
  146. bottom: 0;
  147. border: 2rpx solid transparent;
  148. border-radius: 16rpx;
  149. pointer-events: none;
  150. }
  151. .input-focus-border {
  152. position: absolute;
  153. top: -2rpx;
  154. left: -2rpx;
  155. right: -2rpx;
  156. bottom: -2rpx;
  157. border: 4rpx solid transparent;
  158. border-radius: 18rpx;
  159. opacity: 0;
  160. transition: all 0.3s ease;
  161. pointer-events: none;
  162. }
  163. .input-focus-border.active {
  164. opacity: 1;
  165. border-color: rgba(52, 152, 219, 0.3);
  166. }
  167. .input-hint {
  168. font-size: 24rpx;
  169. color: #95a5a6;
  170. margin-top: 12rpx;
  171. min-height: 36rpx;
  172. transition: all 0.3s ease;
  173. }
  174. .input-hint.error {
  175. color: #e74c3c;
  176. }
  177. /* 验证码区域 */
  178. .code-input-wrapper {
  179. display: flex;
  180. align-items: center;
  181. gap: 20rpx;
  182. }
  183. .code-input-container {
  184. flex: 1;
  185. }
  186. .send-code-btn {
  187. min-width: 200rpx;
  188. height: 88rpx;
  189. background: linear-gradient(135deg, #3498db 0%, #2980b9 100%);
  190. border-radius: 16rpx;
  191. font-size: 26rpx;
  192. color: white;
  193. padding: 0;
  194. margin: 0;
  195. display: flex;
  196. align-items: center;
  197. justify-content: center;
  198. transition: all 0.3s ease;
  199. box-shadow: 0 4rpx 20rpx rgba(52, 152, 219, 0.3);
  200. }
  201. .send-code-btn::after {
  202. border: none;
  203. }
  204. .btn-content {
  205. display: flex;
  206. align-items: center;
  207. justify-content: center;
  208. }
  209. .sms-icon {
  210. width: 24rpx;
  211. height: 24rpx;
  212. margin-right: 8rpx;
  213. }
  214. .send-code-btn.disabled {
  215. background: #bdc3c7;
  216. box-shadow: none;
  217. opacity: 0.6;
  218. }
  219. .send-code-btn.counting {
  220. background: #95a5a6;
  221. }
  222. .btn-hover {
  223. opacity: 0.9;
  224. transform: translateY(-2rpx);
  225. }
  226. /* 协议 */
  227. .agreement-card {
  228. background: white;
  229. border-radius: 24rpx;
  230. padding: 32rpx 40rpx;
  231. margin: 0 40rpx 40rpx;
  232. box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.06);
  233. }
  234. .agreement-item {
  235. display: flex;
  236. align-items: flex-start;
  237. }
  238. .checkbox {
  239. width: 36rpx;
  240. height: 36rpx;
  241. border: 2rpx solid #bdc3c7;
  242. border-radius: 8rpx;
  243. margin-right: 20rpx;
  244. display: flex;
  245. align-items: center;
  246. justify-content: center;
  247. flex-shrink: 0;
  248. transition: all 0.3s ease;
  249. }
  250. .checkbox.checked {
  251. background: linear-gradient(135deg, #2ecc71 0%, #27ae60 100%);
  252. border-color: transparent;
  253. }
  254. .check-icon {
  255. width: 20rpx;
  256. height: 20rpx;
  257. }
  258. .agreement-text {
  259. font-size: 26rpx;
  260. color: #2c3e50;
  261. line-height: 1.4;
  262. flex: 1;
  263. }
  264. .link {
  265. color: #3498db;
  266. text-decoration: none;
  267. }
  268. /* 提交按钮 */
  269. .submit-section {
  270. padding: 0 40rpx;
  271. position: relative;
  272. z-index: 1;
  273. }
  274. .submit-btn {
  275. width: 100%;
  276. height: 100rpx;
  277. background: linear-gradient(135deg, #2ecc71 0%, #27ae60 100%);
  278. border-radius: 50rpx;
  279. font-size: 32rpx;
  280. color: white;
  281. font-weight: 600;
  282. padding: 0;
  283. margin: 0;
  284. transition: all 0.3s ease;
  285. box-shadow: 0 10rpx 40rpx rgba(46, 204, 113, 0.4);
  286. }
  287. .submit-btn::after {
  288. border: none;
  289. }
  290. .submit-btn.disabled {
  291. background: #bdc3c7;
  292. box-shadow: none;
  293. opacity: 0.7;
  294. }
  295. .btn-inner {
  296. display: flex;
  297. align-items: center;
  298. justify-content: center;
  299. height: 100%;
  300. }
  301. .arrow-icon {
  302. width: 32rpx;
  303. height: 32rpx;
  304. margin-left: 12rpx;
  305. opacity: 0.9;
  306. }
  307. .submit-btn-hover {
  308. opacity: 0.9;
  309. transform: translateY(-2rpx);
  310. }
  311. .submit-hint {
  312. text-align: center;
  313. font-size: 26rpx;
  314. color: #7f8c8d;
  315. margin-top: 24rpx;
  316. }
  317. /* 底部装饰 */
  318. .bottom-decoration {
  319. text-align: center;
  320. margin-top: 60rpx;
  321. position: relative;
  322. z-index: 1;
  323. animation: fadeInUp 0.8s ease-out 0.3s both;
  324. }
  325. .sheep-illustration {
  326. width: 200rpx;
  327. height: 150rpx;
  328. margin-bottom: 20rpx;
  329. opacity: 0.8;
  330. }
  331. .decoration-text {
  332. font-size: 28rpx;
  333. color: #7f8c8d;
  334. }
  335. .highlight {
  336. color: #3498db;
  337. font-weight: 600;
  338. }
  339. /* 成功弹窗 */
  340. .success-modal {
  341. position: fixed;
  342. top: 0;
  343. left: 0;
  344. right: 0;
  345. bottom: 0;
  346. z-index: 1000;
  347. opacity: 0;
  348. visibility: hidden;
  349. transition: all 0.3s ease;
  350. }
  351. .success-modal.show {
  352. opacity: 1;
  353. visibility: visible;
  354. }
  355. .modal-mask {
  356. position: absolute;
  357. top: 0;
  358. left: 0;
  359. right: 0;
  360. bottom: 0;
  361. background: rgba(0, 0, 0, 0.5);
  362. backdrop-filter: blur(10rpx);
  363. }
  364. .modal-content {
  365. position: absolute;
  366. top: 50%;
  367. left: 50%;
  368. transform: translate(-50%, -50%) scale(0.9);
  369. width: 600rpx;
  370. background: white;
  371. border-radius: 32rpx;
  372. padding: 60rpx 40rpx;
  373. text-align: center;
  374. opacity: 0;
  375. transition: all 0.3s ease;
  376. }
  377. .success-modal.show .modal-content {
  378. opacity: 1;
  379. transform: translate(-50%, -50%) scale(1);
  380. }
  381. .modal-icon {
  382. width: 120rpx;
  383. height: 120rpx;
  384. background: linear-gradient(135deg, #2ecc71 0%, #27ae60 100%);
  385. border-radius: 50%;
  386. display: flex;
  387. align-items: center;
  388. justify-content: center;
  389. margin: 0 auto 32rpx;
  390. }
  391. .success-icon {
  392. width: 60rpx;
  393. height: 60rpx;
  394. }
  395. .modal-title {
  396. font-size: 40rpx;
  397. font-weight: bold;
  398. color: #2c3e50;
  399. margin-bottom: 20rpx;
  400. }
  401. .modal-message {
  402. font-size: 32rpx;
  403. color: #2c3e50;
  404. margin-bottom: 16rpx;
  405. }
  406. .brand-highlight {
  407. color: #3498db;
  408. font-weight: 600;
  409. }
  410. .modal-subtitle {
  411. font-size: 26rpx;
  412. color: #7f8c8d;
  413. margin-bottom: 40rpx;
  414. line-height: 1.5;
  415. }
  416. .modal-btn {
  417. background: linear-gradient(135deg, #3498db 0%, #2980b9 100%);
  418. border-radius: 50rpx;
  419. height: 88rpx;
  420. font-size: 30rpx;
  421. color: white;
  422. font-weight: 600;
  423. padding: 0 60rpx;
  424. margin: 0;
  425. display: flex;
  426. align-items: center;
  427. justify-content: center;
  428. gap: 12rpx;
  429. }
  430. .modal-btn::after {
  431. border: none;
  432. }
  433. .home-icon {
  434. width: 32rpx;
  435. height: 32rpx;
  436. }
  437. /* 动画 */
  438. @keyframes slideUp {
  439. from {
  440. opacity: 0;
  441. transform: translateY(50rpx);
  442. }
  443. to {
  444. opacity: 1;
  445. transform: translateY(0);
  446. }
  447. }
  448. @keyframes fadeInUp {
  449. from {
  450. opacity: 0;
  451. transform: translateY(30rpx);
  452. }
  453. to {
  454. opacity: 1;
  455. transform: translateY(0);
  456. }
  457. }
  458. /* 响应式 */
  459. @media (max-width: 480px) {
  460. .form-card,
  461. .agreement-card,
  462. .submit-section {
  463. margin-left: 30rpx;
  464. margin-right: 30rpx;
  465. }
  466. .code-input-wrapper {
  467. flex-direction: column;
  468. gap: 20rpx;
  469. }
  470. .send-code-btn {
  471. min-width: 100%;
  472. }
  473. }