| @import 'tailwindcss/base'; |
| @import 'tailwindcss/components'; |
| @import 'tailwindcss/utilities'; |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); |
|
|
| |
| @layer base { |
| :root { |
| |
| --color-primary: #10b981; |
| --color-primary-light: #d1fae5; |
| --color-secondary: #f97316; |
| --color-secondary-light: #fed7aa; |
| --color-tertiary: #8b5cf6; |
| --color-tertiary-light: #ddd6fe; |
| --color-accent: #14b8a6; |
| --color-accent-light: #ccfbf1; |
| --color-danger: #f43f5e; |
| --color-danger-light: #fecdd3; |
|
|
| |
| --color-neutral-50: #fafbfc; |
| --color-neutral-100: #f3f4f6; |
| --color-neutral-200: #e5e7eb; |
| --color-neutral-300: #d1d5db; |
| --color-neutral-400: #9ca3af; |
| --color-neutral-500: #6b7280; |
| --color-neutral-600: #4b5563; |
| --color-neutral-700: #374151; |
| --color-neutral-800: #1f2937; |
| --color-neutral-900: #111827; |
|
|
| |
| --shadow-soft: 0 2px 8px rgba(0, 0, 0, 0.04); |
| --shadow-medium: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); |
| --shadow-large: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); |
| } |
|
|
| * { |
| margin: 0; |
| padding: 0; |
| box-sizing: border-box; |
| } |
|
|
| body { |
| font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', sans-serif; |
| background-color: var(--color-neutral-50); |
| color: var(--color-neutral-800); |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 8px; |
| height: 8px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: var(--color-neutral-100); |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: var(--color-neutral-400); |
| border-radius: 4px; |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: var(--color-neutral-500); |
| } |
| } |
|
|
| |
| @layer components { |
| .card { |
| @apply bg-white rounded-lg p-6 transition-all duration-300; |
| box-shadow: var(--shadow-soft); |
| } |
|
|
| .card:hover { |
| transform: translateY(-2px); |
| box-shadow: var(--shadow-medium); |
| } |
|
|
| |
| .btn { |
| @apply px-4 py-2 rounded-lg font-medium transition-all duration-300 inline-flex items-center justify-center; |
| } |
|
|
| .btn-primary { |
| @apply bg-primary text-white hover:bg-primary/90; |
| } |
|
|
| .btn-secondary { |
| @apply bg-secondary text-white hover:bg-secondary/90; |
| } |
|
|
| .btn-tertiary { |
| @apply bg-tertiary text-white hover:bg-tertiary/90; |
| } |
|
|
| .btn-outline { |
| @apply border-2 border-primary text-primary hover:bg-primary hover:text-white; |
| } |
|
|
| |
| .floating-ball { |
| position: absolute; |
| border-radius: 50%; |
| filter: blur(100px); |
| opacity: 0.15; |
| animation: float 20s ease-in-out infinite; |
| pointer-events: none; |
| } |
|
|
| .floating-ball-1 { |
| width: 300px; |
| height: 300px; |
| background: linear-gradient(135deg, var(--color-primary), var(--color-accent)); |
| top: -150px; |
| left: -150px; |
| } |
|
|
| .floating-ball-2 { |
| width: 400px; |
| height: 400px; |
| background: linear-gradient(135deg, var(--color-secondary), var(--color-tertiary)); |
| bottom: -200px; |
| right: -200px; |
| animation-delay: 5s; |
| } |
|
|
| .floating-ball-3 { |
| width: 250px; |
| height: 250px; |
| background: linear-gradient(135deg, var(--color-tertiary), var(--color-primary)); |
| top: 50%; |
| left: 50%; |
| transform: translate(-50%, -50%); |
| animation-delay: 10s; |
| } |
|
|
| |
| .loading-spinner { |
| @apply inline-block w-8 h-8 border-4 border-primary border-t-transparent rounded-full; |
| animation: spin 1s linear infinite; |
| } |
| } |
|
|
| |
| @layer utilities { |
| @keyframes float { |
| 0%, 100% { |
| transform: translate(0, 0) scale(1); |
| } |
| 33% { |
| transform: translate(30px, -30px) scale(1.1); |
| } |
| 66% { |
| transform: translate(-20px, 20px) scale(0.9); |
| } |
| } |
|
|
| @keyframes spin { |
| to { |
| transform: rotate(360deg); |
| } |
| } |
| } |
|
|
| |
| .ant-btn-primary { |
| background-color: var(--color-primary); |
| border-color: var(--color-primary); |
| } |
|
|
| .ant-btn-primary:hover { |
| background-color: var(--color-primary); |
| border-color: var(--color-primary); |
| opacity: 0.9; |
| } |
|
|
| .ant-menu-item-selected { |
| color: var(--color-primary) !important; |
| } |
|
|
| .ant-menu-item-selected::after { |
| border-color: var(--color-primary) !important; |
| } |