Files
PolyWeather/frontend/components/account/AccountCenter.module.css
T
2569718930@qq.com ac90ef9206 修复 CSS Module spin 动画::global(spin) 改为本地 @keyframes spin
PostCSS 将 :global(spin) 解析为伪元素 :: 导致 Vercel 构建失败。
改用在每个 CSS Module 中定义本地 @keyframes spin。
2026-05-14 18:06:53 +08:00

488 lines
8.2 KiB
CSS

.page {
position: relative;
min-height: 100vh;
padding: 34px 20px 28px;
color: #e2ecff;
background:
radial-gradient(circle at 8% 8%, rgba(56, 189, 248, 0.24), transparent 38%),
radial-gradient(circle at 92% 10%, rgba(45, 212, 191, 0.2), transparent 34%),
radial-gradient(circle at 50% 120%, rgba(14, 165, 233, 0.26), transparent 40%),
#050b16;
overflow-x: hidden;
}
.aurora {
position: absolute;
inset: -10% -5% auto;
height: 340px;
background: linear-gradient(
95deg,
rgba(56, 189, 248, 0.2) 0%,
rgba(45, 212, 191, 0.12) 46%,
rgba(99, 102, 241, 0.08) 100%
);
filter: blur(58px);
pointer-events: none;
}
.gridNoise {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(148, 163, 184, 0.06) 1px, transparent 1px),
linear-gradient(90deg, rgba(148, 163, 184, 0.06) 1px, transparent 1px);
background-size: 42px 42px;
mask-image: radial-gradient(circle at 50% 25%, black, transparent 72%);
pointer-events: none;
opacity: 0.22;
}
.shell {
position: relative;
width: min(1120px, 100%);
margin: 0 auto;
display: grid;
gap: 16px;
}
.topBar {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 14px;
border: 1px solid rgba(148, 163, 184, 0.2);
background: rgba(15, 23, 42, 0.76);
backdrop-filter: blur(14px);
border-radius: 16px;
padding: 16px 18px;
}
.brandBlock {
display: grid;
gap: 5px;
}
.title {
margin: 0;
font-size: clamp(24px, 2.2vw, 30px);
line-height: 1.15;
letter-spacing: -0.02em;
color: #f8fbff;
}
.subtitle {
margin: 0;
font-size: 13px;
color: #8ea3c9;
}
.actions {
display: flex;
align-items: center;
gap: 8px;
}
.ghostBtn,
.primaryBtn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
height: 36px;
border-radius: 10px;
border: 1px solid rgba(148, 163, 184, 0.35);
padding: 0 12px;
color: #dce8ff;
font-size: 12px;
font-weight: 600;
text-decoration: none;
transition: all 0.22s ease;
background: rgba(15, 23, 42, 0.5);
cursor: pointer;
}
.ghostBtn:hover,
.primaryBtn:hover {
transform: translateY(-1px);
}
.ghostBtn:hover {
border-color: rgba(45, 212, 191, 0.45);
color: #f8fcff;
background: rgba(45, 212, 191, 0.12);
}
.primaryBtn {
border-color: rgba(56, 189, 248, 0.52);
background: linear-gradient(135deg, rgba(14, 116, 144, 0.88), rgba(6, 182, 212, 0.74));
color: #f6fcff;
box-shadow: 0 12px 26px rgba(8, 47, 73, 0.35);
}
.primaryBtn:hover {
border-color: rgba(103, 232, 249, 0.72);
box-shadow: 0 16px 30px rgba(14, 116, 144, 0.42);
}
.heroCard {
display: grid;
grid-template-columns: auto 1fr auto;
gap: 16px;
align-items: center;
border: 1px solid rgba(56, 189, 248, 0.24);
background:
linear-gradient(135deg, rgba(14, 116, 144, 0.17) 0%, rgba(15, 23, 42, 0.86) 58%),
rgba(15, 23, 42, 0.8);
border-radius: 18px;
padding: 18px 20px;
}
.avatar {
width: 64px;
height: 64px;
border-radius: 18px;
display: grid;
place-items: center;
font-size: 22px;
font-weight: 800;
color: #e7fbff;
border: 1px solid rgba(103, 232, 249, 0.45);
background: linear-gradient(135deg, rgba(6, 182, 212, 0.65), rgba(59, 130, 246, 0.56));
box-shadow: 0 18px 38px rgba(2, 132, 199, 0.28);
}
.heroMain {
display: grid;
gap: 8px;
}
.heroMain h2 {
margin: 0;
font-size: clamp(20px, 1.9vw, 28px);
letter-spacing: -0.02em;
color: #f8fcff;
}
.heroMain p {
margin: 0;
color: #a7bcdd;
font-size: 13px;
}
.badges {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
}
.badge,
.badgeWarn,
.badgeGhost {
display: inline-flex;
align-items: center;
gap: 6px;
border-radius: 999px;
padding: 5px 11px;
font-size: 12px;
font-weight: 600;
}
.badge {
border: 1px solid rgba(34, 197, 94, 0.45);
background: rgba(34, 197, 94, 0.12);
color: #86efac;
}
.badgeWarn {
border: 1px solid rgba(245, 158, 11, 0.46);
background: rgba(245, 158, 11, 0.13);
color: #fcd34d;
}
.badgeGhost {
border: 1px solid rgba(148, 163, 184, 0.34);
background: rgba(148, 163, 184, 0.12);
color: #cbd5e1;
}
.updatedText {
justify-self: end;
font-size: 12px;
color: #8ea3c9;
text-align: right;
font-variant-numeric: tabular-nums;
}
.noticeRow,
.errorRow {
display: inline-flex;
align-items: center;
gap: 8px;
border-radius: 12px;
padding: 11px 14px;
font-size: 13px;
}
.noticeRow {
border: 1px solid rgba(56, 189, 248, 0.3);
background: rgba(15, 23, 42, 0.75);
color: #bae6fd;
}
.errorRow {
border: 1px solid rgba(248, 113, 113, 0.44);
background: rgba(127, 29, 29, 0.34);
color: #fecaca;
}
.cards {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
.card,
.cardWide {
border: 1px solid rgba(148, 163, 184, 0.2);
border-radius: 14px;
background:
linear-gradient(180deg, rgba(15, 23, 42, 0.84), rgba(15, 23, 42, 0.72)),
rgba(10, 15, 30, 0.78);
padding: 16px;
}
.cardWide {
grid-column: 1 / -1;
}
.card h3,
.cardWide h3 {
margin: 0 0 12px;
display: inline-flex;
align-items: center;
gap: 7px;
font-size: 15px;
color: #e6f0ff;
}
.metaList {
margin: 0;
display: grid;
gap: 10px;
}
.metaList > div {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
border-bottom: 1px dashed rgba(148, 163, 184, 0.22);
padding-bottom: 9px;
}
.metaList > div:last-child {
border-bottom: none;
padding-bottom: 0;
}
.metaList dt {
font-size: 12px;
color: #89a1c8;
}
.metaList dd {
margin: 0;
font-size: 13px;
color: #eff6ff;
max-width: 62%;
text-align: right;
word-break: break-word;
}
.mono {
font-family: "Consolas", "SFMono-Regular", "Menlo", monospace;
font-size: 12px;
color: #c7d2fe;
}
.hint {
margin: 0 0 12px;
font-size: 13px;
color: #9ab0d2;
line-height: 1.6;
}
.commandRow {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.command {
flex: 1 1 420px;
min-height: 40px;
display: flex;
align-items: center;
border-radius: 10px;
border: 1px solid rgba(103, 232, 249, 0.24);
background: rgba(8, 47, 73, 0.32);
color: #d1f9ff;
padding: 0 12px;
font-size: 12px;
white-space: pre-wrap;
word-break: break-all;
}
.copyBtn {
height: 36px;
border-radius: 9px;
border: 1px solid rgba(45, 212, 191, 0.48);
background: rgba(20, 184, 166, 0.12);
color: #99f6e4;
padding: 0 12px;
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 700;
cursor: pointer;
transition: all 0.2s ease;
}
.copyBtn:hover {
background: rgba(20, 184, 166, 0.22);
border-color: rgba(94, 234, 212, 0.78);
color: #ecfeff;
}
.spin {
animation: spin 0.9s linear infinite;
}
@media (max-width: 960px) {
.topBar {
flex-direction: column;
align-items: stretch;
}
.actions {
flex-wrap: wrap;
}
.heroCard {
grid-template-columns: auto 1fr;
align-items: start;
}
.updatedText {
grid-column: 1 / -1;
justify-self: start;
}
.cards {
grid-template-columns: 1fr;
}
.metaList dd {
max-width: 56%;
}
}
@media (max-width: 640px) {
.page {
padding: 18px 12px 20px;
}
.topBar,
.heroCard,
.card,
.cardWide {
border-radius: 12px;
padding: 13px;
}
.ghostBtn,
.primaryBtn {
width: 100%;
}
.actions {
flex-direction: column;
align-items: stretch;
}
.ghostBtn,
.primaryBtn {
min-height: 40px;
justify-content: center;
}
.title {
font-size: 22px;
}
.subtitle {
font-size: 12px;
}
.heroCard {
grid-template-columns: 1fr;
gap: 12px;
}
.avatar {
width: 56px;
height: 56px;
border-radius: 16px;
font-size: 20px;
}
.heroMain h2 {
font-size: 22px;
}
.updatedText {
text-align: left;
}
.metaList > div {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.metaList dd {
max-width: 100%;
text-align: left;
}
.commandRow {
flex-direction: column;
align-items: stretch;
}
.command {
flex: 1 1 auto;
width: 100%;
min-height: 48px;
padding: 10px 12px;
}
.copyBtn {
width: 100%;
justify-content: center;
}
.noticeRow,
.errorRow {
width: 100%;
align-items: flex-start;
line-height: 1.5;
}
}
@keyframes spin { to { transform: rotate(360deg); } }