Files
36-character-flower/src/style/index.css
JiaJun dbfe5701aa feat(game): 优化界面组件
- 在国际化文件中添加钱包流水相关翻译项
- 在用户个人资料页面添加复制邀请链接功能
- 优化桌面端动物组件的视觉效果和动画参数
- 添加虚拟滚动功能到财务记录标签页提升性能
- 为桌面端控制面板添加投注数量调节按钮
- 更新消息模态框为通知列表和详情展示
- 在头部余额显示旁添加充值图标入口
2026-05-28 11:34:02 +08:00

558 lines
15 KiB
CSS

@import "./font.css";
@import "tailwindcss";
@import "tw-animate-css";
@import "shadcn/tailwind.css";
@import "@fontsource-variable/geist";
@custom-variant dark (&:is(.dark *));
@theme {
--font-sans:
"Inter", "SF Pro Display", "Segoe UI", "Helvetica Neue", sans-serif;
--font-mono:
"JetBrains Mono", "SFMono-Regular", "SF Mono", Consolas, monospace;
--font-countdown: "Countdown", "Inter", "SF Pro Display", sans-serif;
--color-game-bg: #07111f;
--color-game-surface: #0d1b2d;
--color-game-surface-strong: #12253d;
--color-game-accent: #31d0ff;
--color-game-accent-soft: #7ce8ff;
--color-game-gold: #f5c86b;
--color-game-gold-strong: #ffd66e;
--color-game-danger: #ff5e7a;
--color-game-success: #4fdc9b;
--shadow-game-panel:
0 20px 60px rgba(2, 6, 23, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
:root {
--design-unit: calc(100vw / 1920);
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: oklch(0.205 0 0);
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.97 0 0);
--secondary-foreground: oklch(0.205 0 0);
--muted: oklch(0.97 0 0);
--muted-foreground: oklch(0.556 0 0);
--accent: oklch(0.97 0 0);
--accent-foreground: oklch(0.205 0 0);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--chart-1: oklch(0.87 0 0);
--chart-2: oklch(0.556 0 0);
--chart-3: oklch(0.439 0 0);
--chart-4: oklch(0.371 0 0);
--chart-5: oklch(0.269 0 0);
--radius: 0.625rem;
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.205 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
}
@media (max-width: 768px) {
:root {
--design-unit: calc(100vw / 375);
}
}
@utility w-design-* {
width: calc(var(--design-unit) * --value(integer));
}
@utility h-design-* {
height: calc(var(--design-unit) * --value(integer));
}
@utility min-w-design-* {
min-width: calc(var(--design-unit) * --value(integer));
}
@utility text-design-* {
font-size: calc(var(--design-unit) * --value(integer));
}
@utility gap-design-* {
gap: calc(var(--design-unit) * --value(integer));
}
@utility pt-design-* {
padding-top: calc(var(--design-unit) * --value(integer));
}
@utility px-design-* {
padding-left: calc(var(--design-unit) * --value(integer));
padding-right: calc(var(--design-unit) * --value(integer));
}
@utility p-design-* {
padding: calc(var(--design-unit) * --value(integer));
}
@utility mt-design-* {
margin-top: calc(var(--design-unit) * --value(integer));
}
@utility mb-design-* {
margin-bottom: calc(var(--design-unit) * --value(integer));
}
@utility ml-design-* {
margin-left: calc(var(--design-unit) * --value(integer));
}
@utility mr-design-* {
margin-right: calc(var(--design-unit) * --value(integer));
}
@utility mx-design-* {
margin-left: calc(var(--design-unit) * --value(integer));
margin-right: calc(var(--design-unit) * --value(integer));
}
@utility py-design-* {
padding-top: calc(var(--design-unit) * --value(integer));
padding-bottom: calc(var(--design-unit) * --value(integer));
}
@utility pl-design-* {
padding-left: calc(var(--design-unit) * --value(integer));
}
@utility pb-design-* {
padding-bottom: calc(var(--design-unit) * --value(integer));
}
@utility pr-design-* {
padding-right: calc(var(--design-unit) * --value(integer));
}
@utility my-design-* {
margin-top: calc(var(--design-unit) * --value(integer));
margin-bottom: calc(var(--design-unit) * --value(integer));
}
@utility left-design-* {
left: calc(var(--design-unit) * --value(integer));
}
@utility top-design-* {
top: calc(var(--design-unit) * --value(integer));
}
@utility right-design-* {
right: calc(var(--design-unit) * --value(integer));
}
@layer base {
html {
@apply h-full w-full text-design-16 font-sans;
}
body {
@apply m-0 h-full w-full bg-background text-foreground;
}
#root {
@apply h-full w-full;
}
* {
-ms-overflow-style: none;
scrollbar-width: none;
@apply border-border outline-ring/50;
}
*::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
}
body {
background:
radial-gradient(circle at top, rgba(49, 208, 255, 0.12), transparent 28%),
radial-gradient(
circle at bottom right,
rgba(245, 200, 107, 0.1),
transparent 24%
),
linear-gradient(180deg, #07111f 0%, #040812 100%);
color: #f8fafc;
}
}
@layer utilities {
.common-neon-inset {
border: 1px solid rgba(128, 223, 231, 0.65);
border-radius: 5px;
padding: calc(var(--design-unit) * 8) calc(var(--design-unit) * 10);
box-shadow: inset 0 0 8px rgba(128, 223, 231, 0.65);
color: #d5fbff;
}
.common-neon-inset-glow {
border: 1px solid rgba(128, 223, 231, 0.65);
border-radius: 5px;
padding: calc(var(--design-unit) * 8) calc(var(--design-unit) * 10);
background:
linear-gradient(180deg, rgba(18, 44, 58, 0.92), rgba(8, 22, 34, 0.9)),
radial-gradient(circle at top, rgba(128, 223, 231, 0.16), transparent 62%);
box-shadow:
inset 0 0 calc(var(--design-unit) * 8) rgba(128, 223, 231, 0.72),
inset 0 0 calc(var(--design-unit) * 18) rgba(128, 223, 231, 0.18),
0 0 calc(var(--design-unit) * 6) rgba(128, 223, 231, 0.35),
0 0 calc(var(--design-unit) * 18) rgba(128, 223, 231, 0.24);
position: relative;
overflow: hidden;
}
.common-neon-inset-glow::before {
content: "";
position: absolute;
inset: 1px;
border-radius: 4px;
border-top: 1px solid rgba(214, 249, 252, 0.8);
opacity: 0.85;
pointer-events: none;
}
.game-setting-input-shell {
border: 1px solid rgba(123, 235, 245, 0.38);
border-radius: calc(var(--design-unit) * 8);
background: rgba(17, 52, 67, 0.72);
transition:
border-color 180ms ease,
box-shadow 180ms ease,
background-color 180ms ease;
}
.game-setting-input-shell:focus-within {
border-color: rgba(136, 245, 255, 0.68);
box-shadow:
0 0 0 calc(var(--design-unit) * 1.2) rgba(108, 247, 255, 0.08),
inset 0 0 calc(var(--design-unit) * 5) rgba(110, 255, 255, 0.06);
background: rgba(19, 58, 74, 0.82);
}
.game-setting-input {
border: none;
background: transparent;
padding: 0;
color: #8ad6dd;
box-shadow: none;
outline: none;
caret-color: #d9ffff;
}
.game-setting-input::placeholder {
color: rgba(138, 214, 221, 0.58);
}
.game-setting-input:focus,
.game-setting-input:focus-visible {
border: none;
box-shadow: none;
outline: none;
}
.game-panel {
border: 1px solid rgba(124, 232, 255, 0.12);
background: linear-gradient(
180deg,
rgba(18, 37, 61, 0.88),
rgba(7, 17, 31, 0.78)
);
box-shadow: var(--shadow-game-panel);
backdrop-filter: blur(18px);
}
.game-chip-glow {
box-shadow:
0 0 0 1px rgba(49, 208, 255, 0.16),
0 16px 36px rgba(49, 208, 255, 0.16);
}
.game-gold-glow {
box-shadow:
0 0 0 1px rgba(245, 200, 107, 0.2),
0 18px 40px rgba(245, 200, 107, 0.14);
}
.desktop-game-history-glow {
filter: drop-shadow(
0 0 calc(var(--design-unit) * 4) rgba(49, 208, 255, 0.65)
)
drop-shadow(0 0 calc(var(--design-unit) * 14) rgba(49, 208, 255, 0.28));
}
.modal-close-glow {
filter: drop-shadow(
0 0 calc(var(--design-unit) * 4) rgba(110, 255, 255, 0.95)
)
drop-shadow(0 0 calc(var(--design-unit) * 12) rgba(48, 214, 255, 0.78))
drop-shadow(0 0 calc(var(--design-unit) * 24) rgba(18, 162, 255, 0.5));
}
.modal-title-glow {
text-shadow:
0 0 calc(var(--design-unit) * 2) rgba(224, 255, 255, 0.95),
0 0 calc(var(--design-unit) * 6) rgba(108, 247, 255, 0.82),
0 0 calc(var(--design-unit) * 14) rgba(48, 214, 255, 0.58);
}
.modal-title-gold-glow {
text-shadow:
0 0 calc(var(--design-unit) * 2) rgba(255, 248, 235, 0.9),
0 0 calc(var(--design-unit) * 8) rgba(254, 238, 176, 0.64),
0 0 calc(var(--design-unit) * 16) rgba(254, 238, 176, 0.38);
}
.desktop-control-chip {
margin-left: calc(var(--design-unit) * -4);
margin-right: calc(var(--design-unit) * -18);
}
.desktop-control-total {
margin-left: calc(var(--design-unit) * -26);
margin-right: calc(var(--design-unit) * -26);
}
.desktop-control-actions {
margin-left: calc(var(--design-unit) * -16);
margin-right: 0;
}
.desktop-control-confirm {
margin-left: calc(var(--design-unit) * -10);
}
.history-scroll-hidden {
-ms-overflow-style: none;
scrollbar-width: none;
}
.history-scroll-hidden::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
}
.desktop-title-vertical-marquee {
display: flex;
flex-direction: column;
animation: desktop-title-marquee-y 7s linear infinite;
will-change: transform;
}
@keyframes desktop-title-marquee-y {
from {
transform: translateY(0);
}
to {
transform: translateY(-50%);
}
}
@property --gold-angle {
syntax: "<angle>";
inherits: false;
initial-value: 0deg;
}
@keyframes rotating-gold-border {
to {
--gold-angle: 360deg;
}
}
@keyframes gold-border-pulse {
0%,
100% {
opacity: 0.34;
transform: scale(0.992);
}
50% {
opacity: 0.54;
transform: scale(1.008);
}
}
.gold-reveal-shell {
--gold-angle: 0deg;
position: absolute;
inset: calc(var(--design-unit) * 2.6);
border-radius: calc(var(--design-unit) * 16);
overflow: hidden;
clip-path: inset(0 round calc(var(--design-unit) * 16));
pointer-events: none;
}
.gold-reveal-shell::before {
content: "";
position: absolute;
inset: 0;
border-radius: calc(var(--design-unit) * 16);
padding: calc(var(--design-unit) * 5.6);
background: conic-gradient(
from var(--gold-angle),
#534217 10%,
#534217 20%,
#ffe226 45%,
#534217 60%,
#534217 85%,
#ffe226 95%,
#534217 100%
);
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
animation: rotating-gold-border 8s linear infinite;
}
.gold-reveal-shell::after {
content: "";
position: absolute;
inset: calc(var(--design-unit) * 1);
border-radius: calc(var(--design-unit) * 15);
padding: calc(var(--design-unit) * 4);
background: conic-gradient(
from calc(var(--gold-angle) + 180deg),
rgba(255, 247, 210, 0) 0%,
rgba(255, 247, 210, 0) 66%,
rgba(255, 252, 232, 0.14) 71%,
rgba(255, 254, 244, 0.98) 75%,
rgba(255, 230, 130, 0.96) 79%,
rgba(255, 247, 210, 0.18) 84%,
rgba(255, 247, 210, 0) 90%,
rgba(255, 247, 210, 0) 100%
);
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
animation: rotating-gold-border 2.1s linear infinite;
}
.gold-reveal-static-border {
position: absolute;
inset: calc(var(--design-unit) * 2.8);
border-radius: calc(var(--design-unit) * 16);
border: calc(var(--design-unit) * 7.4) solid rgba(181, 138, 40, 0.98);
box-shadow:
inset 0 0 calc(var(--design-unit) * 14) rgba(255, 241, 181, 0.38),
0 0 calc(var(--design-unit) * 18) rgba(255, 210, 102, 0.32);
pointer-events: none;
}
.gold-reveal-glow {
position: absolute;
inset: calc(var(--design-unit) * 1.4);
border-radius: calc(var(--design-unit) * 18);
background: radial-gradient(
circle at center,
rgba(255, 226, 92, 0.18) 0%,
rgba(219, 161, 42, 0.14) 42%,
rgba(127, 86, 13, 0.08) 62%,
transparent 82%
);
filter: blur(calc(var(--design-unit) * 2.8));
opacity: 0.36;
pointer-events: none;
animation: gold-border-pulse 1.9s ease-in-out infinite;
}
}
@theme inline {
--font-heading: var(--font-sans);
--font-sans: "Geist Variable", sans-serif;
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar: var(--sidebar);
--color-chart-5: var(--chart-5);
--color-chart-4: var(--chart-4);
--color-chart-3: var(--chart-3);
--color-chart-2: var(--chart-2);
--color-chart-1: var(--chart-1);
--color-ring: var(--ring);
--color-input: var(--input);
--color-border: var(--border);
--color-destructive: var(--destructive);
--color-accent-foreground: var(--accent-foreground);
--color-accent: var(--accent);
--color-muted-foreground: var(--muted-foreground);
--color-muted: var(--muted);
--color-secondary-foreground: var(--secondary-foreground);
--color-secondary: var(--secondary);
--color-primary-foreground: var(--primary-foreground);
--color-primary: var(--primary);
--color-popover-foreground: var(--popover-foreground);
--color-popover: var(--popover);
--color-card-foreground: var(--card-foreground);
--color-card: var(--card);
--color-foreground: var(--foreground);
--color-background: var(--background);
--radius-sm: calc(var(--radius) * 0.6);
--radius-md: calc(var(--radius) * 0.8);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) * 1.4);
--radius-2xl: calc(var(--radius) * 1.8);
--radius-3xl: calc(var(--radius) * 2.2);
--radius-4xl: calc(var(--radius) * 2.6);
}
.dark {
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.205 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.922 0 0);
--primary-foreground: oklch(0.205 0 0);
--secondary: oklch(0.269 0 0);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--accent: oklch(0.269 0 0);
--accent-foreground: oklch(0.985 0 0);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.556 0 0);
--chart-1: oklch(0.87 0 0);
--chart-2: oklch(0.556 0 0);
--chart-3: oklch(0.439 0 0);
--chart-4: oklch(0.371 0 0);
--chart-5: oklch(0.269 0 0);
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.556 0 0);
}