Files
Neo-ZQYY/apps/demo-miniprogram/miniprogram/pages/login/login.wxss
Neo 779b2f6d52 chore: v1 整理 — 清理历史文件、DDL 合并、文档归档
- 清理 1155 个已删除的历史文件(废弃 prompt_logs、tmp、旧 ops 脚本)
- export/ 数据文件从 git 移除(已在 .gitignore)
- demo-miniprogram 从 tmp/ 移入 apps/,添加 CLAUDE.md 注解
- DDL 合并:完整 schema 定义填充到 db/*/schemas/(从 docs/database/ddl/ 复制)
- 39 个 v1 迁移脚本归档到 db/_archived/migrations_v1_merged/
- 4 个迁移变更类 BD_Manual 文档归档到 docs/database/_archived/
- .gitignore 补充 .vite/ 和 apps/*.zip
- settings.json 添加 effortLevel 默认配置
- scripts/ops/ 新增运维脚本入库

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:39:27 +08:00

338 lines
7.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* pages/login/login.wxss — 忠于 H5 原型TDesign 组件定制 */
.page {
height: 100vh;
display: flex;
flex-direction: column;
background: linear-gradient(160deg, #dbeafe 0%, #eff6ff 45%, #e0f2fe 100%);
position: relative;
overflow: hidden;
box-sizing: border-box;
/* padding-top 由 JS statusBarHeight 动态设置box-sizing 确保 padding 包含在 100vh 内 */
}
/* ---- 动态背景层 ---- */
.login-bg-layer {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
pointer-events: none;
}
/* ---- 装饰圆形 ---- */
.deco-circle {
position: absolute;
border-radius: 50%;
z-index: 0;
}
.deco-circle--1 {
width: 176rpx;
height: 176rpx;
background: radial-gradient(circle, var(--color-primary-shadow-minimal) 0%, transparent 70%);
top: 140rpx;
left: 56rpx;
opacity: 0.8;
animation: pulse-soft 3s ease-in-out infinite;
}
.deco-circle--2 {
width: 210rpx;
height: 210rpx;
background: radial-gradient(circle, rgba(103, 232, 249, 0.12) 0%, transparent 70%);
top: 280rpx;
right: 42rpx;
opacity: 0.8;
animation: pulse-soft 3s ease-in-out infinite 1s;
}
.deco-circle--3 {
width: 140rpx;
height: 140rpx;
background: radial-gradient(circle, rgba(96, 165, 250, 0.12) 0%, transparent 70%);
bottom: 280rpx;
left: 84rpx;
opacity: 0.8;
animation: pulse-soft 3s ease-in-out infinite 0.5s;
}
/* ---- Hero 区域 ---- */
.hero {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0 56rpx;
position: relative;
z-index: 1;
}
/* ---- Logo ---- */
.logo-wrap {
position: relative;
margin-bottom: 42rpx;
}
.logo-box {
width: 168rpx;
height: 168rpx;
border-radius: 42rpx;
background: linear-gradient(135deg, var(--color-primary), var(--primary-500));
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 14rpx 42rpx var(--color-primary-shadow);
}
.logo-icon {
width: 98rpx;
height: 98rpx;
}
.logo-dot {
position: absolute;
border-radius: 50%;
}
.logo-dot--tr {
width: 28rpx;
height: 28rpx;
background: var(--primary-dot-cyan);
top: -8rpx;
right: -8rpx;
box-shadow: 0 4rpx 10rpx var(--primary-dot-cyan-shadow);
}
.logo-dot--bl {
width: 22rpx;
height: 22rpx;
background: var(--primary-dot-blue);
bottom: -14rpx;
left: -14rpx;
box-shadow: 0 4rpx 10rpx var(--primary-dot-blue-shadow);
}
/* ---- 应用名称 ---- */
.app-name {
font-size: 42rpx;
font-weight: 700;
color: var(--text-primary);
margin-bottom: 14rpx;
}
.app-desc {
font-size: 24rpx;
color: var(--text-secondary);
text-align: center;
line-height: 1.625;
margin-bottom: 56rpx;
}
/* ---- 功能亮点 ---- */
.features {
width: 100%;
display: flex;
justify-content: space-around;
background: rgba(255, 255, 255, 0.62);
border-radius: 32rpx;
padding: 40rpx 18rpx 36rpx;
margin-bottom: 42rpx;
box-shadow: 0 4rpx 32rpx rgba(59, 130, 246, 0.10), 0 1rpx 4rpx rgba(59, 130, 246, 0.07);
border: 1.5rpx solid rgba(255, 255, 255, 0.85);
backdrop-filter: blur(12px);
}
.feature-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 16rpx;
}
.feature-icon {
width: 70rpx;
height: 70rpx;
border-radius: 22rpx;
display: flex;
align-items: center;
justify-content: center;
}
.feature-icon--primary { background: var(--color-primary-shadow-minimal); }
.feature-icon--success { background: var(--color-success-shadow-minimal); }
.feature-icon--warning { background: var(--color-warning-shadow-minimal); }
/* ---- 华丽 SVG 功能图标 ---- */
.feature-icon-svg {
width: 100rpx;
height: 100rpx;
border-radius: 28rpx;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: visible;
}
.feature-icon-svg--task {
background: linear-gradient(145deg, #e8f0fe 0%, #c7d9ff 100%);
box-shadow: 0 8rpx 24rpx rgba(79, 142, 247, 0.28), 0 2rpx 6rpx rgba(26, 95, 216, 0.15);
animation: icon-float 4s ease-in-out infinite;
}
.feature-icon-svg--board {
background: linear-gradient(145deg, #d1fae5 0%, #a7f3d0 100%);
box-shadow: 0 8rpx 24rpx rgba(0, 200, 150, 0.28), 0 2rpx 6rpx rgba(0, 140, 106, 0.15);
animation: icon-float 4s ease-in-out infinite 1.3s;
}
.feature-icon-svg--ai {
background: linear-gradient(145deg, #fef3e2 0%, #fde0b8 100%);
box-shadow: 0 8rpx 24rpx rgba(255, 140, 66, 0.28), 0 2rpx 6rpx rgba(224, 90, 0, 0.15);
animation: icon-float 4s ease-in-out infinite 2.6s;
}
.feature-svg-img {
width: 72rpx;
height: 72rpx;
}
@keyframes icon-float {
0%, 100% { transform: translateY(0) scale(1); }
40% { transform: translateY(-8rpx) scale(1.04); }
60% { transform: translateY(-6rpx) scale(1.03); }
}
.feature-text {
font-size: 24rpx;
color: var(--text-secondary);
font-weight: 600;
letter-spacing: 0.5rpx;
}
/* ---- 底部操作区 ---- */
.bottom-area {
width: 100%;
padding: 0 56rpx 70rpx;
position: relative;
z-index: 1;
box-sizing: border-box;
}
/* TDesign Button 替换为原生 view 按钮,避免 TDesign 默认样式干扰 */
.login-btn-wrap {
width: 100%;
height: 84rpx;
border-radius: 22rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 10rpx;
font-weight: 500;
font-size: 28rpx;
transition: all 0.2s;
}
.wechat-icon {
width: 36rpx;
height: 36rpx;
}
.login-btn-text {
color: var(--color-white);
font-size: 28rpx;
font-weight: 500;
}
/* 未勾选协议 → 灰色禁用态(忠于原型 btn-disabled */
.login-btn--disabled {
background: var(--color-gray-4);
}
.login-btn--disabled .login-btn-text {
color: var(--color-white);
}
/* 勾选协议 → 蓝色渐变(忠于原型 from-primary to-blue-500 */
.login-btn--active {
background: linear-gradient(135deg, var(--color-primary), var(--primary-500));
box-shadow: 0 10rpx 28rpx var(--color-primary-shadow);
}
/* ---- 协议勾选 ---- */
.agreement {
display: flex;
flex-direction: row;
align-items: flex-start;
margin-top: 36rpx;
}
.checkbox {
width: 28rpx;
height: 28rpx;
min-width: 28rpx;
min-height: 28rpx;
border: 2rpx solid var(--color-gray-4);
border-radius: 6rpx;
display: flex;
align-items: center;
justify-content: center;
margin-top: 4rpx;
margin-right: 10rpx;
background: transparent;
flex-shrink: 0;
transition: all 0.2s;
}
.checkbox--checked {
background: var(--color-primary);
border-color: var(--color-primary);
}
.agreement-text-wrap {
flex: 1;
font-size: 22rpx;
line-height: 1.625;
}
.agreement-text {
font-size: 22rpx;
color: var(--text-secondary);
line-height: 1.625;
}
.link {
color: var(--color-primary);
font-weight: 500;
font-size: 22rpx;
line-height: 1.625;
}
/* ---- 底部提示 ---- */
.footer-tip {
display: block;
width: 100%;
text-align: center;
font-size: 22rpx;
color: var(--text-disabled);
margin-top: 42rpx;
}
/* ---- 动画 ---- */
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-14rpx); }
}
.float-animation {
animation: float 4s ease-in-out infinite;
}
@keyframes pulse-soft {
0%, 100% { opacity: 0.4; }
50% { opacity: 0.8; }
}