zhibo/android-app/app/src/main/assets/web/styles/yuanchi.css
2026-01-06 14:24:42 +08:00

634 lines
12 KiB
CSS

/* ========== 基础重置 ========== */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
}
:root {
--bg-dark: #0a0a14;
--bg-mid: #12122b;
--neon-pink: #FF2E63;
--neon-cyan: #08D9D6;
--neon-purple: #a855f7;
--glass-bg: rgba(255, 255, 255, 0.05);
--glass-border: rgba(255, 255, 255, 0.1);
--glass-highlight: rgba(255, 255, 255, 0.15);
--text-primary: #ffffff;
--text-secondary: rgba(255, 255, 255, 0.6);
/* 轨道半径 - 根据屏幕动态调整 */
--orbit-radius: min(38vw, 140px);
--avatar-size: min(15vw, 56px);
--center-size: min(22vw, 90px);
}
html, body {
width: 100%;
height: 100%;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif;
background: var(--bg-dark);
color: var(--text-primary);
overflow-x: hidden;
overflow-y: auto;
}
/* ========== 主容器 ========== */
.pond-app {
position: relative;
width: 100%;
max-width: 430px;
min-height: 100vh;
min-height: 100dvh;
margin: 0 auto;
background: linear-gradient(135deg, var(--bg-mid) 0%, var(--bg-dark) 100%);
overflow-x: hidden;
}
.pond-inner {
position: relative;
z-index: 10;
padding: 12px 14px;
padding-bottom: 70px;
min-height: 100vh;
min-height: 100dvh;
display: flex;
flex-direction: column;
}
/* ========== 背景层 ========== */
.bg-layer {
position: fixed;
inset: 0;
overflow: hidden;
pointer-events: none;
}
.gradient-orb {
position: absolute;
border-radius: 50%;
filter: blur(80px);
opacity: 0.3;
}
.orb-1 {
width: 200px;
height: 200px;
top: -60px;
left: -60px;
background: var(--neon-cyan);
animation: float-orb 10s ease-in-out infinite;
}
.orb-2 {
width: 180px;
height: 180px;
bottom: 100px;
right: -60px;
background: var(--neon-pink);
animation: float-orb 12s ease-in-out infinite reverse;
}
@keyframes float-orb {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(15px, 20px) scale(1.05); }
}
.grid-lines {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
background-size: 40px 40px;
mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
}
/* ========== 玻璃拟态 ========== */
.glass {
background: var(--glass-bg);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid var(--glass-border);
border-radius: 14px;
}
/* ========== 顶部栏 ========== */
.top-bar {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 10px;
flex-shrink: 0;
}
.logo-area {
display: flex;
align-items: center;
gap: 6px;
}
.logo-glow {
font-size: 20px;
color: var(--neon-cyan);
text-shadow: 0 0 12px var(--neon-cyan);
animation: pulse-glow 2s ease-in-out infinite;
}
@keyframes pulse-glow {
0%, 100% { text-shadow: 0 0 8px var(--neon-cyan); }
50% { text-shadow: 0 0 20px var(--neon-cyan), 0 0 30px var(--neon-cyan); }
}
.logo-text {
font-family: "Snell Roundhand", cursive;
font-size: 20px;
background: linear-gradient(90deg, var(--neon-pink), var(--neon-cyan));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* ========== 信息栏 ========== */
.info-bar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 14px;
margin-bottom: 12px;
flex-shrink: 0;
}
.info-left, .info-right {
display: flex;
flex-direction: column;
gap: 2px;
}
.info-label, .info-desc {
font-size: 10px;
color: var(--text-secondary);
}
.info-value, .info-name {
font-size: 15px;
font-weight: 700;
}
.info-unit {
font-size: 11px;
color: var(--neon-pink);
margin-left: 2px;
}
.neon-text {
background: linear-gradient(90deg, var(--neon-pink), var(--neon-cyan));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.info-right {
text-align: right;
}
/* ========== 匹配圆环区域 - 摩天轮布局 ========== */
.match-area {
position: relative;
width: 100%;
/* 固定高度,确保圆环区域大小一致 */
height: calc(var(--orbit-radius) * 2 + var(--avatar-size) + 50px);
max-height: 340px;
margin: 0 auto 14px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
/* 中心脉冲圆环 */
.center-ring {
position: absolute;
width: var(--center-size);
height: var(--center-size);
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 10;
}
.ring-pulse {
position: absolute;
inset: 0;
border-radius: 50%;
border: 2px solid var(--neon-cyan);
animation: ring-expand 2.5s ease-out infinite;
}
.ring-pulse.delay-1 { animation-delay: 0.8s; }
.ring-pulse.delay-2 { animation-delay: 1.6s; }
@keyframes ring-expand {
0% { transform: scale(1); opacity: 0.7; }
100% { transform: scale(2.2); opacity: 0; }
}
.ring-core {
position: absolute;
inset: 8px;
background: linear-gradient(135deg, var(--neon-pink), var(--neon-purple), var(--neon-cyan));
background-size: 200% 200%;
border-radius: 50%;
cursor: pointer;
animation: gradient-spin 4s linear infinite;
box-shadow:
0 0 25px rgba(8, 217, 214, 0.4),
0 0 50px rgba(255, 46, 99, 0.3),
inset 0 0 15px rgba(255, 255, 255, 0.2);
transition: transform 0.2s;
}
.ring-core:active {
transform: scale(0.92);
}
@keyframes gradient-spin {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
.core-inner {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.core-icon {
font-size: min(8vw, 28px);
color: #fff;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
/* 轨道环 - 真正的圆形轨道 */
.orbit-ring {
position: absolute;
width: calc(var(--orbit-radius) * 2);
height: calc(var(--orbit-radius) * 2);
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
border: 1px dashed rgba(255, 255, 255, 0.15);
border-radius: 50%;
pointer-events: none;
}
/* 外层装饰轨道 */
.orbit-ring::before {
content: '';
position: absolute;
inset: -15px;
border: 1px solid rgba(168, 85, 247, 0.1);
border-radius: 50%;
}
.orbit-ring::after {
content: '';
position: absolute;
inset: 15px;
border: 1px solid rgba(8, 217, 214, 0.1);
border-radius: 50%;
}
/* 用户头像容器 - 摩天轮定位 */
.orbit-users {
position: absolute;
width: calc(var(--orbit-radius) * 2);
height: calc(var(--orbit-radius) * 2);
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
/* 整体缓慢旋转 */
animation: orbit-spin 60s linear infinite;
}
@keyframes orbit-spin {
from { transform: translate(-50%, -50%) rotate(0deg); }
to { transform: translate(-50%, -50%) rotate(360deg); }
}
/* 单个用户 - 精确定位在轨道上 */
.orbit-user {
position: absolute;
width: var(--avatar-size);
height: auto;
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
transition: transform 0.3s ease;
/* 反向旋转保持头像正向 */
animation: counter-spin 60s linear infinite;
}
@keyframes counter-spin {
from { transform: translate(-50%, -50%) rotate(0deg); }
to { transform: translate(-50%, -50%) rotate(-360deg); }
}
/* 6个用户的精确位置 - 圆周均匀分布 */
.orbit-user[data-pos="1"] {
left: 50%;
top: 0;
transform: translate(-50%, -50%);
}
.orbit-user[data-pos="2"] {
left: calc(50% + 86.6%/2); /* cos(30°) ≈ 0.866 */
top: 25%;
transform: translate(-50%, -50%);
}
.orbit-user[data-pos="3"] {
left: calc(50% + 86.6%/2);
top: 75%;
transform: translate(-50%, -50%);
}
.orbit-user[data-pos="4"] {
left: 50%;
top: 100%;
transform: translate(-50%, -50%);
}
.orbit-user[data-pos="5"] {
left: calc(50% - 86.6%/2);
top: 75%;
transform: translate(-50%, -50%);
}
.orbit-user[data-pos="6"] {
left: calc(50% - 86.6%/2);
top: 25%;
transform: translate(-50%, -50%);
}
.orbit-user:active {
transform: translate(-50%, -50%) scale(1.1) !important;
}
.user-avatar {
width: var(--avatar-size);
height: var(--avatar-size);
border-radius: 50%;
padding: 2px;
position: relative;
overflow: visible;
flex-shrink: 0;
}
.avatar-img {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
background: linear-gradient(135deg, var(--neon-pink), var(--neon-cyan));
}
.avatar-glow {
position: absolute;
inset: -3px;
border-radius: 50%;
background: linear-gradient(135deg, var(--neon-pink), var(--neon-cyan));
opacity: 0.4;
z-index: -1;
filter: blur(6px);
}
.user-name {
font-size: 10px;
font-weight: 600;
color: var(--text-primary);
margin-top: 4px;
text-align: center;
max-width: calc(var(--avatar-size) + 10px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}
.user-location {
font-size: 8px;
color: var(--text-secondary);
text-align: center;
text-shadow: 0 1px 2px rgba(0,0,0,0.8);
}
/* ========== 快捷操作按钮 ========== */
.quick-actions {
display: flex;
gap: 10px;
margin-bottom: 12px;
flex-shrink: 0;
}
.action-btn {
flex: 1;
height: 44px;
border: none;
border-radius: 22px;
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
transition: all 0.3s ease;
}
.action-btn:active {
transform: scale(0.96);
}
.action-btn.pink {
background: linear-gradient(90deg, var(--neon-pink), var(--neon-purple));
box-shadow: 0 4px 16px rgba(255, 46, 99, 0.35);
}
.action-btn.cyan {
background: linear-gradient(90deg, var(--neon-purple), var(--neon-cyan));
box-shadow: 0 4px 16px rgba(8, 217, 214, 0.35);
}
.btn-icon {
font-size: 16px;
}
.btn-label {
font-size: 13px;
font-weight: 600;
color: #fff;
}
/* ========== 功能入口 2x3 ========== */
.feature-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
flex-shrink: 0;
}
.feature-card {
position: relative;
padding: 14px 6px;
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
cursor: pointer;
overflow: hidden;
transition: all 0.3s ease;
}
.feature-card:active {
transform: scale(0.95);
}
.card-glow {
position: absolute;
width: 60px;
height: 60px;
border-radius: 50%;
filter: blur(25px);
opacity: 0.12;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: opacity 0.3s;
}
.card-glow.pink { background: var(--neon-pink); }
.card-glow.cyan { background: var(--neon-cyan); }
.card-glow.purple { background: var(--neon-purple); }
.feature-card:hover .card-glow {
opacity: 0.25;
}
.card-icon {
font-size: 24px;
position: relative;
z-index: 1;
}
.card-title {
font-size: 10px;
color: var(--text-primary);
text-align: center;
position: relative;
z-index: 1;
}
/* ========== 响应式 - 小屏幕优化 ========== */
@media (max-height: 680px) {
:root {
--orbit-radius: min(32vw, 115px);
--avatar-size: min(13vw, 48px);
--center-size: min(18vw, 70px);
}
.match-area {
max-height: 280px;
margin-bottom: 10px;
}
.info-bar {
padding: 8px 12px;
margin-bottom: 10px;
}
.quick-actions {
margin-bottom: 10px;
}
.action-btn {
height: 40px;
}
.feature-card {
padding: 10px 4px;
}
.card-icon {
font-size: 20px;
}
.card-title {
font-size: 9px;
}
}
@media (max-height: 600px) {
:root {
--orbit-radius: min(28vw, 100px);
--avatar-size: min(11vw, 42px);
--center-size: min(16vw, 60px);
}
.match-area {
max-height: 240px;
margin-bottom: 8px;
}
.top-bar {
margin-bottom: 6px;
}
.logo-glow, .logo-text {
font-size: 18px;
}
.pond-inner {
padding: 10px 12px;
padding-bottom: 65px;
}
.action-btn {
height: 38px;
}
.btn-label {
font-size: 12px;
}
.feature-grid {
gap: 8px;
}
}
/* 超小屏幕 */
@media (max-height: 550px) {
:root {
--orbit-radius: min(25vw, 85px);
--avatar-size: min(10vw, 38px);
--center-size: min(14vw, 52px);
}
.match-area {
max-height: 200px;
}
.user-name {
font-size: 9px;
}
.user-location {
display: none;
}
}