xtablo-source/apps/main/src/main.css

1299 lines
26 KiB
CSS
Raw Normal View History

2025-10-14 20:27:17 +00:00
@import "tailwindcss";
2025-10-16 16:56:49 +00:00
@import "tw-animate-css";
@import "@xtablo/chat-ui/chat-ui.css";
@source "../../../packages/chat-ui/src/**/*.{ts,tsx}";
2025-10-14 20:27:17 +00:00
2025-10-16 16:56:49 +00:00
@custom-variant dark (&:is(.dark *));
2025-10-14 20:27:17 +00:00
2025-10-16 16:56:49 +00:00
:root {
2026-03-08 20:28:44 +00:00
--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);
--destructive-foreground: 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.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--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);
--navbar-background: rgb(249, 250, 251);
--navbar-darker: #e5e7eb;
2025-10-16 16:56:49 +00:00
}
.dark {
2026-03-08 20:28:44 +00:00
--background: oklch(0.17 0.012 290);
--foreground: oklch(0.985 0.005 290);
--card: oklch(0.16 0.014 290);
--card-foreground: oklch(0.985 0.005 290);
--popover: oklch(0.16 0.014 290);
--popover-foreground: oklch(0.985 0.005 290);
--primary: oklch(0.985 0.005 290);
--primary-foreground: oklch(0.2 0.012 290);
--secondary: oklch(0.22 0.018 290);
--secondary-foreground: oklch(0.985 0.005 290);
--muted: oklch(0.22 0.018 290);
--muted-foreground: oklch(0.65 0.02 290);
--accent: oklch(0.22 0.018 290);
--accent-foreground: oklch(0.985 0.005 290);
--destructive: oklch(0.396 0.141 25.723);
--destructive-foreground: oklch(0.637 0.237 25.331);
--border: oklch(0.26 0.02 290);
--input: oklch(0.26 0.02 290);
--ring: oklch(0.45 0.03 290);
--chart-1: oklch(0.55 0.2 290);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.18 0.016 290);
--sidebar-foreground: oklch(0.985 0.005 290);
--sidebar-primary: oklch(0.55 0.2 290);
--sidebar-primary-foreground: oklch(0.985 0.005 290);
--sidebar-accent: oklch(0.24 0.02 290);
--sidebar-accent-foreground: oklch(0.985 0.005 290);
--sidebar-border: oklch(0.26 0.02 290);
--sidebar-ring: oklch(0.45 0.03 290);
--navbar-background: #1e1b2e;
--navbar-darker: #141121;
2025-10-16 16:56:49 +00:00
}
2025-10-14 20:27:17 +00:00
@theme inline {
2026-03-08 20:28:44 +00:00
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--color-navbar-background: var(--navbar-background);
--color-navbar-darker: var(--navbar-darker);
2025-10-14 20:27:17 +00:00
}
@layer base {
2026-03-08 20:28:44 +00:00
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
@media (display-mode: standalone) {
body {
padding-top: env(safe-area-inset-top);
padding-bottom: env(safe-area-inset-bottom);
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}
}
2025-10-14 20:27:17 +00:00
}
2025-06-22 16:35:38 +00:00
.str-chat {
2026-03-08 20:28:44 +00:00
--str-chat__primary-color: #804eec;
--str-chat__active-primary-color: #6f3fd4;
--str-chat__surface-color: #f5f3f7;
--str-chat__secondary-surface-color: #e8e4ec;
--str-chat__primary-surface-color: #f4f3ff;
--str-chat__primary-surface-color-low-emphasis: #f8f7ff;
--str-chat__border-radius-circle: 6px;
--str-chat__own-message-bubble-color: #804eec;
--str-chat__own-message-text-color: #ffffff;
2025-06-22 16:35:38 +00:00
}
2025-10-07 19:57:03 +00:00
.dark .str-chat {
2026-03-08 20:28:44 +00:00
--str-chat__primary-color: #9b6ff0;
--str-chat__active-primary-color: #804eec;
--str-chat__surface-color: rgba(128, 78, 236, 0.12);
--str-chat__secondary-surface-color: rgba(128, 78, 236, 0.08);
--str-chat__primary-surface-color: rgba(128, 78, 236, 0.1);
--str-chat__primary-surface-color-low-emphasis: rgba(128, 78, 236, 0.05);
--str-chat__background-color: rgba(30, 27, 46, 0.6);
--str-chat__secondary-background-color: rgba(20, 17, 33, 0.5);
--str-chat__border-color: rgba(128, 78, 236, 0.15);
--str-chat__text-color: #eeeaf5;
--str-chat__text-low-emphasis-color: #a8a0b8;
--str-chat__disabled-color: rgba(128, 78, 236, 0.2);
--str-chat__own-message-bubble-color: #804eec;
--str-chat__own-message-text-color: #ffffff;
2025-10-07 19:57:03 +00:00
}
2025-10-07 20:41:43 +00:00
@keyframes gradient-x {
2026-03-08 20:28:44 +00:00
0%,
100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
2025-10-07 20:41:43 +00:00
}
.animate-gradient-x {
2026-03-08 20:28:44 +00:00
animation: gradient-x 15s ease infinite;
2025-10-07 20:41:43 +00:00
}
@keyframes wave-float {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateY(0px) rotate(0deg);
}
25% {
transform: translateY(-20px) rotate(1deg);
}
50% {
transform: translateY(-10px) rotate(-1deg);
}
75% {
transform: translateY(-15px) rotate(0.5deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes wave-pulse {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(1) rotateZ(0deg);
opacity: 0.3;
}
25% {
transform: scale(1.05) rotateZ(1deg);
opacity: 0.4;
}
50% {
transform: scale(0.95) rotateZ(-1deg);
opacity: 0.5;
}
75% {
transform: scale(1.02) rotateZ(0.5deg);
opacity: 0.35;
}
2025-10-07 20:41:43 +00:00
}
.animate-wave-float {
2026-03-08 20:28:44 +00:00
animation: wave-float 8s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wave-float-delayed {
2026-03-08 20:28:44 +00:00
animation: wave-float 10s ease-in-out infinite 2s;
2025-10-07 20:41:43 +00:00
}
.animate-wave-float-slow {
2026-03-08 20:28:44 +00:00
animation: wave-float 12s ease-in-out infinite 4s;
2025-10-07 20:41:43 +00:00
}
.animate-wave-pulse {
2026-03-08 20:28:44 +00:00
animation: wave-pulse 6s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wave-pulse-delayed {
2026-03-08 20:28:44 +00:00
animation: wave-pulse 8s ease-in-out infinite 3s;
2025-10-07 20:41:43 +00:00
}
.animate-wave-pulse-slow {
2026-03-08 20:28:44 +00:00
animation: wave-pulse 10s ease-in-out infinite 1s;
2025-10-07 20:41:43 +00:00
}
/* Moving Animations */
@keyframes move-right-slow {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-100px);
}
100% {
transform: translateX(calc(100vw + 100px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-right-medium {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-80px);
}
100% {
transform: translateX(calc(100vw + 80px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-right-fast {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-120px);
}
100% {
transform: translateX(calc(100vw + 120px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-down-slow {
2026-03-08 20:28:44 +00:00
0% {
transform: translateY(-100px);
}
100% {
transform: translateY(calc(100vh + 100px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-down-medium {
2026-03-08 20:28:44 +00:00
0% {
transform: translateY(-80px);
}
100% {
transform: translateY(calc(100vh + 80px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-diagonal-1 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-100px, -100px);
}
100% {
transform: translate(calc(100vw + 100px), calc(100vh + 100px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-diagonal-2 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-80px, -50px);
}
100% {
transform: translate(calc(100vw + 80px), calc(100vh + 50px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes move-diagonal-3 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-60px, -80px);
}
100% {
transform: translate(calc(100vw + 60px), calc(100vh + 80px));
}
2025-10-07 20:41:43 +00:00
}
@keyframes orbit-1 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-50%, -50%) rotate(0deg) translateX(150px) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg) translateX(150px) rotate(-360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes orbit-2 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-50%, -50%) rotate(0deg) translateX(200px) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(-360deg) translateX(200px) rotate(360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes orbit-3 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-50%, -50%) rotate(0deg) translateX(100px) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg) translateX(100px) rotate(-360deg);
}
2025-10-07 20:41:43 +00:00
}
/* Gentle Animations */
@keyframes spin-slow {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes spin-reverse {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(-360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes bounce-gentle {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-10px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes bounce-soft {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-8px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes pulse-gentle {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(1);
opacity: 0.4;
}
50% {
transform: scale(1.1);
opacity: 0.6;
}
2025-10-07 20:41:43 +00:00
}
@keyframes wiggle {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(3deg);
}
75% {
transform: rotate(-3deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes float-gentle {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-5px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes scale-gentle {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
2025-10-07 20:41:43 +00:00
}
@keyframes rotate-gentle {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(180deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes sway {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateX(0px);
}
50% {
transform: translateX(10px);
}
2025-10-07 20:41:43 +00:00
}
/* Animation Classes */
.animate-move-right-slow {
2026-03-08 20:28:44 +00:00
animation: move-right-slow 25s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-right-medium {
2026-03-08 20:28:44 +00:00
animation: move-right-medium 20s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-right-fast {
2026-03-08 20:28:44 +00:00
animation: move-right-fast 15s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-down-slow {
2026-03-08 20:28:44 +00:00
animation: move-down-slow 30s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-down-medium {
2026-03-08 20:28:44 +00:00
animation: move-down-medium 25s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-diagonal-1 {
2026-03-08 20:28:44 +00:00
animation: move-diagonal-1 35s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-diagonal-2 {
2026-03-08 20:28:44 +00:00
animation: move-diagonal-2 28s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-move-diagonal-3 {
2026-03-08 20:28:44 +00:00
animation: move-diagonal-3 32s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-orbit-1 {
2026-03-08 20:28:44 +00:00
animation: orbit-1 20s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-orbit-2 {
2026-03-08 20:28:44 +00:00
animation: orbit-2 25s linear infinite reverse;
2025-10-07 20:41:43 +00:00
}
.animate-orbit-3 {
2026-03-08 20:28:44 +00:00
animation: orbit-3 15s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spin-slow {
2026-03-08 20:28:44 +00:00
animation: spin-slow 8s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spin-reverse {
2026-03-08 20:28:44 +00:00
animation: spin-reverse 6s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-bounce-gentle {
2026-03-08 20:28:44 +00:00
animation: bounce-gentle 3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-bounce-soft {
2026-03-08 20:28:44 +00:00
animation: bounce-soft 4s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-pulse-gentle {
2026-03-08 20:28:44 +00:00
animation: pulse-gentle 4s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wiggle {
2026-03-08 20:28:44 +00:00
animation: wiggle 2s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-float-gentle {
2026-03-08 20:28:44 +00:00
animation: float-gentle 5s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-scale-gentle {
2026-03-08 20:28:44 +00:00
animation: scale-gentle 6s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-rotate-gentle {
2026-03-08 20:28:44 +00:00
animation: rotate-gentle 8s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-sway {
2026-03-08 20:28:44 +00:00
animation: sway 3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
/* Enhanced Animations */
@keyframes orbit-4 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-50%, -50%) rotate(0deg) translateX(250px) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg) translateX(250px) rotate(-360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes orbit-5 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(-50%, -50%) rotate(0deg) translateX(120px) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(-360deg) translateX(120px) rotate(360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes zigzag-1 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-100px) translateY(0px);
}
25% {
transform: translateX(25vw) translateY(-50px);
}
50% {
transform: translateX(50vw) translateY(50px);
}
75% {
transform: translateX(75vw) translateY(-30px);
}
100% {
transform: translateX(calc(100vw + 100px)) translateY(20px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes zigzag-2 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-80px) translateY(0px);
}
20% {
transform: translateX(20vw) translateY(40px);
}
40% {
transform: translateX(40vw) translateY(-60px);
}
60% {
transform: translateX(60vw) translateY(30px);
}
80% {
transform: translateX(80vw) translateY(-40px);
}
100% {
transform: translateX(calc(100vw + 80px)) translateY(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes zigzag-3 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-120px) translateY(0px);
}
16% {
transform: translateX(16vw) translateY(-70px);
}
33% {
transform: translateX(33vw) translateY(80px);
}
50% {
transform: translateX(50vw) translateY(-50px);
}
66% {
transform: translateX(66vw) translateY(60px);
}
83% {
transform: translateX(83vw) translateY(-40px);
}
100% {
transform: translateX(calc(100vw + 120px)) translateY(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes spiral-1 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(0px, 0px) rotate(0deg) scale(0.5);
}
25% {
transform: translate(25vw, 25vh) rotate(90deg) scale(1);
}
50% {
transform: translate(50vw, 50vh) rotate(180deg) scale(1.5);
}
75% {
transform: translate(75vw, 75vh) rotate(270deg) scale(1);
}
100% {
transform: translate(100vw, 100vh) rotate(360deg) scale(0.5);
}
2025-10-07 20:41:43 +00:00
}
@keyframes spiral-2 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(0px, 0px) rotate(0deg) scale(1.5);
}
25% {
transform: translate(-25vw, 25vh) rotate(-90deg) scale(0.8);
}
50% {
transform: translate(-50vw, 50vh) rotate(-180deg) scale(0.5);
}
75% {
transform: translate(-75vw, 75vh) rotate(-270deg) scale(1.2);
}
100% {
transform: translate(-100vw, 100vh) rotate(-360deg) scale(1.5);
}
2025-10-07 20:41:43 +00:00
}
@keyframes float-random-1 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px) rotate(0deg);
}
25% {
transform: translate(50px, -30px) rotate(45deg);
}
50% {
transform: translate(-30px, 40px) rotate(-30deg);
}
75% {
transform: translate(40px, 20px) rotate(60deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes float-random-2 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px) rotate(0deg);
}
20% {
transform: translate(-40px, -50px) rotate(-45deg);
}
40% {
transform: translate(60px, -20px) rotate(90deg);
}
60% {
transform: translate(-20px, 60px) rotate(-60deg);
}
80% {
transform: translate(30px, -40px) rotate(120deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes float-random-3 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px) rotate(0deg);
}
33% {
transform: translate(70px, 30px) rotate(180deg);
}
66% {
transform: translate(-50px, -40px) rotate(-90deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes float-random-4 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px) rotate(0deg);
}
25% {
transform: translate(-60px, 50px) rotate(270deg);
}
50% {
transform: translate(80px, -30px) rotate(180deg);
}
75% {
transform: translate(-40px, -60px) rotate(90deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes wave-1 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-100px) translateY(0px);
}
25% {
transform: translateX(25vw) translateY(-80px);
}
50% {
transform: translateX(50vw) translateY(0px);
}
75% {
transform: translateX(75vw) translateY(80px);
}
100% {
transform: translateX(calc(100vw + 100px)) translateY(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes wave-2 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-100px) translateY(0px);
}
20% {
transform: translateX(20vw) translateY(60px);
}
40% {
transform: translateX(40vw) translateY(-60px);
}
60% {
transform: translateX(60vw) translateY(60px);
}
80% {
transform: translateX(80vw) translateY(-60px);
}
100% {
transform: translateX(calc(100vw + 100px)) translateY(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes wave-3 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-100px) translateY(0px);
}
33% {
transform: translateX(33vw) translateY(-100px);
}
66% {
transform: translateX(66vw) translateY(100px);
}
100% {
transform: translateX(calc(100vw + 100px)) translateY(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes wave-4 {
2026-03-08 20:28:44 +00:00
0% {
transform: translateX(-100px) translateY(0px);
}
16% {
transform: translateX(16vw) translateY(40px);
}
33% {
transform: translateX(33vw) translateY(-80px);
}
50% {
transform: translateX(50vw) translateY(40px);
}
66% {
transform: translateX(66vw) translateY(-80px);
}
83% {
transform: translateX(83vw) translateY(40px);
}
100% {
transform: translateX(calc(100vw + 100px)) translateY(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes corner-shoot-1 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(0px, 0px) rotate(0deg);
}
100% {
transform: translate(100vw, 100vh) rotate(720deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes corner-shoot-2 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(0px, 0px) rotate(0deg);
}
100% {
transform: translate(-100vw, 100vh) rotate(-720deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes corner-shoot-3 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(0px, 0px) rotate(0deg);
}
100% {
transform: translate(100vw, -100vh) rotate(720deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes corner-shoot-4 {
2026-03-08 20:28:44 +00:00
0% {
transform: translate(0px, 0px) rotate(0deg);
}
100% {
transform: translate(-100vw, -100vh) rotate(-720deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes bounce-ball-1 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px);
}
25% {
transform: translate(200px, -150px);
}
50% {
transform: translate(400px, 0px);
}
75% {
transform: translate(600px, -100px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes bounce-ball-2 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px);
}
33% {
transform: translate(-300px, -200px);
}
66% {
transform: translate(-600px, 0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes bounce-ball-3 {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px);
}
20% {
transform: translate(150px, -100px);
}
40% {
transform: translate(300px, 50px);
}
60% {
transform: translate(150px, -80px);
}
80% {
transform: translate(-150px, 30px);
}
2025-10-07 20:41:43 +00:00
}
/* Crazy Animations */
@keyframes spin-fast {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(720deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes pulse-fast {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(0.8);
opacity: 0.3;
}
50% {
transform: scale(1.3);
opacity: 0.8;
}
2025-10-07 20:41:43 +00:00
}
@keyframes wobble {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotate(0deg) scale(1);
}
25% {
transform: rotate(5deg) scale(1.1);
}
50% {
transform: rotate(-5deg) scale(0.9);
}
75% {
transform: rotate(3deg) scale(1.05);
}
2025-10-07 20:41:43 +00:00
}
@keyframes shake {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateX(0px);
}
25% {
transform: translateX(-10px);
}
75% {
transform: translateX(10px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes bounce-crazy {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateY(0px) scale(1);
}
50% {
transform: translateY(-50px) scale(1.2);
}
2025-10-07 20:41:43 +00:00
}
@keyframes spin-wobble {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg) scale(1);
}
25% {
transform: rotate(90deg) scale(1.1);
}
50% {
transform: rotate(180deg) scale(0.9);
}
75% {
transform: rotate(270deg) scale(1.05);
}
100% {
transform: rotate(360deg) scale(1);
}
2025-10-07 20:41:43 +00:00
}
@keyframes flip {
2026-03-08 20:28:44 +00:00
0% {
transform: rotateY(0deg);
}
50% {
transform: rotateY(180deg);
}
100% {
transform: rotateY(360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes twirl {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg) translateX(0px);
}
25% {
transform: rotate(90deg) translateX(20px);
}
50% {
transform: rotate(180deg) translateX(0px);
}
75% {
transform: rotate(270deg) translateX(-20px);
}
100% {
transform: rotate(360deg) translateX(0px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes dance {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translateY(0px) rotate(0deg);
}
25% {
transform: translateY(-20px) rotate(10deg);
}
50% {
transform: translateY(10px) rotate(-5deg);
}
75% {
transform: translateY(-15px) rotate(8deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes jiggle {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(2deg) translateX(2px);
}
50% {
transform: rotate(-2deg) translateX(-2px);
}
75% {
transform: rotate(1deg) translateX(1px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes vibrate {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: translate(0px, 0px);
}
25% {
transform: translate(2px, -2px);
}
50% {
transform: translate(-2px, 2px);
}
75% {
transform: translate(2px, 2px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes swing {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(15deg);
}
75% {
transform: rotate(-15deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes pendulum {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotate(0deg);
}
50% {
transform: rotate(30deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes elastic {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.3) rotate(180deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes rubber {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scaleX(1) scaleY(1);
}
25% {
transform: scaleX(1.2) scaleY(0.8);
}
75% {
transform: scaleX(0.8) scaleY(1.2);
}
2025-10-07 20:41:43 +00:00
}
@keyframes rocket {
2026-03-08 20:28:44 +00:00
0% {
transform: scale(0.5) rotate(0deg);
}
100% {
transform: scale(2) rotate(360deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes comet {
2026-03-08 20:28:44 +00:00
0% {
transform: scale(1) rotate(0deg);
opacity: 1;
}
100% {
transform: scale(0.2) rotate(720deg);
opacity: 0.2;
}
2025-10-07 20:41:43 +00:00
}
@keyframes meteor {
2026-03-08 20:28:44 +00:00
0% {
transform: scale(0.2) rotate(0deg);
opacity: 0.2;
}
100% {
transform: scale(1.5) rotate(-720deg);
opacity: 1;
}
2025-10-07 20:41:43 +00:00
}
@keyframes blast {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(1) rotate(0deg);
}
50% {
transform: scale(2) rotate(180deg);
}
2025-10-07 20:41:43 +00:00
}
@keyframes spin-bounce {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotate(0deg) translateY(0px);
}
50% {
transform: rotate(180deg) translateY(-30px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes flip-bounce {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: rotateX(0deg) translateY(0px);
}
50% {
transform: rotateX(180deg) translateY(-25px);
}
2025-10-07 20:41:43 +00:00
}
@keyframes scale-bounce {
2026-03-08 20:28:44 +00:00
0%,
100% {
transform: scale(1) translateY(0px);
}
50% {
transform: scale(1.5) translateY(-40px);
}
2025-10-07 20:41:43 +00:00
}
/* New Animation Classes */
.animate-orbit-4 {
2026-03-08 20:28:44 +00:00
animation: orbit-4 18s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-orbit-5 {
2026-03-08 20:28:44 +00:00
animation: orbit-5 22s linear infinite reverse;
2025-10-07 20:41:43 +00:00
}
.animate-zigzag-1 {
2026-03-08 20:28:44 +00:00
animation: zigzag-1 18s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-zigzag-2 {
2026-03-08 20:28:44 +00:00
animation: zigzag-2 22s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-zigzag-3 {
2026-03-08 20:28:44 +00:00
animation: zigzag-3 16s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spiral-1 {
2026-03-08 20:28:44 +00:00
animation: spiral-1 30s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spiral-2 {
2026-03-08 20:28:44 +00:00
animation: spiral-2 25s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-float-random-1 {
2026-03-08 20:28:44 +00:00
animation: float-random-1 8s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-float-random-2 {
2026-03-08 20:28:44 +00:00
animation: float-random-2 10s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-float-random-3 {
2026-03-08 20:28:44 +00:00
animation: float-random-3 12s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-float-random-4 {
2026-03-08 20:28:44 +00:00
animation: float-random-4 9s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wave-1 {
2026-03-08 20:28:44 +00:00
animation: wave-1 20s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wave-2 {
2026-03-08 20:28:44 +00:00
animation: wave-2 24s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wave-3 {
2026-03-08 20:28:44 +00:00
animation: wave-3 18s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wave-4 {
2026-03-08 20:28:44 +00:00
animation: wave-4 26s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-corner-shoot-1 {
2026-03-08 20:28:44 +00:00
animation: corner-shoot-1 15s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-corner-shoot-2 {
2026-03-08 20:28:44 +00:00
animation: corner-shoot-2 18s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-corner-shoot-3 {
2026-03-08 20:28:44 +00:00
animation: corner-shoot-3 20s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-corner-shoot-4 {
2026-03-08 20:28:44 +00:00
animation: corner-shoot-4 16s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-bounce-ball-1 {
2026-03-08 20:28:44 +00:00
animation: bounce-ball-1 12s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-bounce-ball-2 {
2026-03-08 20:28:44 +00:00
animation: bounce-ball-2 14s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-bounce-ball-3 {
2026-03-08 20:28:44 +00:00
animation: bounce-ball-3 10s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spin-fast {
2026-03-08 20:28:44 +00:00
animation: spin-fast 2s linear infinite;
2025-10-07 20:41:43 +00:00
}
.animate-pulse-fast {
2026-03-08 20:28:44 +00:00
animation: pulse-fast 1.5s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-wobble {
2026-03-08 20:28:44 +00:00
animation: wobble 2s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-shake {
2026-03-08 20:28:44 +00:00
animation: shake 0.5s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-bounce-crazy {
2026-03-08 20:28:44 +00:00
animation: bounce-crazy 1s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spin-wobble {
2026-03-08 20:28:44 +00:00
animation: spin-wobble 4s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-flip {
2026-03-08 20:28:44 +00:00
animation: flip 3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-twirl {
2026-03-08 20:28:44 +00:00
animation: twirl 5s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-dance {
2026-03-08 20:28:44 +00:00
animation: dance 3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-jiggle {
2026-03-08 20:28:44 +00:00
animation: jiggle 1s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-vibrate {
2026-03-08 20:28:44 +00:00
animation: vibrate 0.3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-swing {
2026-03-08 20:28:44 +00:00
animation: swing 4s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-pendulum {
2026-03-08 20:28:44 +00:00
animation: pendulum 6s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-elastic {
2026-03-08 20:28:44 +00:00
animation: elastic 4s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-rubber {
2026-03-08 20:28:44 +00:00
animation: rubber 2s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-rocket {
2026-03-08 20:28:44 +00:00
animation: rocket 8s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-comet {
2026-03-08 20:28:44 +00:00
animation: comet 12s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-meteor {
2026-03-08 20:28:44 +00:00
animation: meteor 10s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-blast {
2026-03-08 20:28:44 +00:00
animation: blast 3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-spin-bounce {
2026-03-08 20:28:44 +00:00
animation: spin-bounce 4s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-flip-bounce {
2026-03-08 20:28:44 +00:00
animation: flip-bounce 5s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
.animate-scale-bounce {
2026-03-08 20:28:44 +00:00
animation: scale-bounce 3s ease-in-out infinite;
2025-10-07 20:41:43 +00:00
}
@keyframes slide {
0% {
transform: translateX(-100vw);
}
100% {
transform: translateX(100vw);
}
}
.animate-slide {
animation: slide 24s linear infinite;
}
2025-10-07 20:41:43 +00:00
/* Animated Border Light */
@keyframes border-light {
2026-03-08 20:28:44 +00:00
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
2025-10-07 20:41:43 +00:00
}
.animate-border-light {
2026-03-08 20:28:44 +00:00
position: relative;
border-radius: 1rem;
2025-10-07 20:41:43 +00:00
}
.animate-border-light::before {
2026-03-08 20:28:44 +00:00
content: "";
position: absolute;
inset: -2px;
background: conic-gradient(
from 0deg,
transparent 0deg,
transparent 270deg,
rgba(168, 85, 247, 0.8) 300deg,
rgba(147, 51, 234, 1) 330deg,
rgba(168, 85, 247, 0.8) 360deg,
transparent 30deg,
transparent 360deg
);
border-radius: inherit;
animation: border-light 3s linear infinite;
z-index: -1;
2025-10-07 20:41:43 +00:00
}
.animate-border-light::after {
2026-03-08 20:28:44 +00:00
content: "";
position: absolute;
inset: 2px;
background: inherit;
border-radius: inherit;
z-index: -1;
2025-10-07 20:41:43 +00:00
}