cardcli-demo / web /src /app /globals.css
CardCLI Bot
Deploy CardCLI Hugging Face Space
d2948d0
@import "tailwindcss";
/* ===== Light Mode Design System (Stitch Crab Edition) ===== */
@theme inline {
--color-primary: #0043eb;
--color-primary-container: #3962ff;
--color-primary-fixed: #dde1ff;
--color-primary-fixed-dim: #b8c3ff;
--color-on-primary: #ffffff;
--color-on-primary-container: #f9f7ff;
--color-on-primary-fixed: #001356;
--color-on-primary-fixed-variant: #0035be;
--color-secondary: #6b38d4;
--color-secondary-container: #8455ef;
--color-secondary-fixed: #e9ddff;
--color-secondary-fixed-dim: #d0bcff;
--color-on-secondary: #ffffff;
--color-on-secondary-container: #fffbff;
--color-tertiary: #006274;
--color-tertiary-container: #007d92;
--color-tertiary-fixed: #acedff;
--color-tertiary-fixed-dim: #4cd7f6;
--color-on-tertiary: #ffffff;
--color-on-tertiary-container: #edfaff;
--color-surface: #f8f9fb;
--color-surface-dim: #d9dadc;
--color-surface-bright: #f8f9fb;
--color-surface-container: #edeef0;
--color-surface-container-low: #f2f4f6;
--color-surface-container-high: #e7e8ea;
--color-surface-container-highest: #e1e2e4;
--color-surface-container-lowest: #ffffff;
--color-surface-variant: #e1e2e4;
--color-surface-tint: #124af0;
--color-on-surface: #191c1e;
--color-on-surface-variant: #424656;
--color-on-background: #191c1e;
--color-background: #f8f9fb;
--color-outline: #727687;
--color-outline-variant: #c2c6d8;
--color-error: #ba1a1a;
--color-error-container: #ffdad6;
--color-on-error: #ffffff;
--color-on-error-container: #93000a;
--color-inverse-surface: #2e3132;
--color-inverse-on-surface: #f0f1f3;
--color-inverse-primary: #b8c3ff;
--font-headline: "Space Grotesk", sans-serif;
--font-body: "Inter", sans-serif;
--font-mono: "JetBrains Mono", monospace;
--font-label: "Space Grotesk", sans-serif;
}
/* ===== Entrance Animations (one-shot) ===== */
@keyframes fade-in-up {
from { opacity: 0; transform: translate3d(0, 30px, 0); }
to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes scale-in {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
@keyframes slide-in-right {
from { opacity: 0; transform: translate3d(30px, 0, 0); }
to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes slide-in-left {
from { opacity: 0; transform: translate3d(-30px, 0, 0); }
to { opacity: 1; transform: translate3d(0, 0, 0); }
}
/* ===== Crab Animations (from Stitch) ===== */
@keyframes crab-reveal {
0%, 40% { transform: translateY(100px) scale(0); opacity: 0; }
50% { transform: translateY(-40px) scale(1.1); opacity: 1; }
60% { transform: translateY(0) translateX(-60px) rotate(-10deg); opacity: 1; }
100% { transform: translateY(0) translateX(-80px) rotate(-15deg); opacity: 1; }
}
@keyframes crab-idle {
0%, 100% { transform: translateY(0) scale(1); }
50% { transform: translateY(-5px) scale(1.02); }
}
@keyframes crab-happy {
from { transform: translateY(0); }
to { transform: translateY(-10px); }
}
@keyframes crab-cheer {
0%, 100% { transform: translateY(0) scale(1); }
50% { transform: translateY(-10px) scale(1.05); }
}
@keyframes claw-tap {
0%, 100% { transform: rotate(0); }
50% { transform: rotate(-10deg); }
}
@keyframes crab-peek {
0% { transform: translateY(100%) scale(0.5); opacity: 0; }
50% { transform: translateY(-20px) scale(1.1); opacity: 1; }
100% { transform: translateY(0) scale(1); opacity: 1; }
}
/* ===== 3D Card Animations (from Stitch) ===== */
@keyframes float-gentle {
0%, 100% { transform: translate(0, 0) rotateX(0deg) rotateY(0deg); }
25% { transform: translate(10px, -15px) rotateX(2deg) rotateY(-2deg); }
50% { transform: translate(-5px, 10px) rotateX(-1deg) rotateY(3deg); }
75% { transform: translate(-12px, -8px) rotateX(1deg) rotateY(-1deg); }
}
@keyframes card-rotation-sequence {
0% { transform: rotateY(0deg) rotateX(0deg); }
20% { transform: rotateY(180deg) scale(0.9); }
40% { transform: rotateY(360deg) scale(1); }
100% { transform: rotateY(360deg); }
}
@keyframes boomerang-throw {
0% { transform: translate(0, 0) rotate(0deg) scale(1); opacity: 1; }
15% { transform: translate(200px, -150px) rotate(360deg) scale(0.6); opacity: 1; }
30% { transform: translate(400px, -50px) rotate(720deg) scale(0.4); opacity: 0.8; }
50% { transform: translate(150px, 100px) rotate(1080deg) scale(0.5); opacity: 1; }
70% { transform: translate(-50px, 50px) rotate(1440deg) scale(0.8); opacity: 1; }
85% { transform: translate(-20px, 10px) rotate(1800deg) scale(1); opacity: 1; }
100% { transform: translate(0, 0) rotate(2160deg) scale(1); opacity: 1; }
}
@keyframes card-float {
0%, 100% { transform: translateY(0) rotate(5deg); }
50% { transform: translateY(-15px) rotate(-5deg); }
}
@keyframes card-victory {
0% { transform: translate(0, 0) rotate(0); opacity: 1; }
50% { transform: translate(20px, -40px) rotate(180deg); opacity: 1; }
100% { transform: translate(0, 0) rotate(360deg); opacity: 1; }
}
@keyframes pulse-ring {
0% { transform: scale(.8); opacity: 0.5; }
50% { transform: scale(1.1); opacity: 0.2; }
100% { transform: scale(.8); opacity: 0.5; }
}
@keyframes spin-slow {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* ===== Animation Utility Classes ===== */
.animate-fade-in-up { animation: fade-in-up 0.6s ease-out both; }
.animate-fade-in { animation: fade-in 0.5s ease-out both; }
.animate-scale-in { animation: scale-in 0.5s ease-out both; }
.animate-slide-in-right { animation: slide-in-right 0.5s ease-out both; }
.animate-slide-in-left { animation: slide-in-left 0.5s ease-out both; }
/* Crab animation classes */
.animate-crab-reveal { animation: crab-reveal 12s cubic-bezier(0.34, 1.56, 0.64, 1) infinite; pointer-events: none; }
.animate-crab-idle { animation: crab-idle 3s ease-in-out infinite; }
.animate-crab-happy { animation: crab-happy 0.6s infinite alternate; }
.animate-crab-cheer { animation: crab-cheer 0.6s ease-in-out infinite; }
.animate-claw-tap { animation: claw-tap 0.4s ease-in-out infinite; }
.animate-crab-peek { animation: crab-peek 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
/* Card & 3D animation classes */
.animate-float-3d {
animation: float-gentle 8s ease-in-out infinite;
perspective: 1000px;
transform-style: preserve-3d;
}
.animate-card-rotation {
animation: card-rotation-sequence 12s cubic-bezier(0.4, 0, 0.2, 1) infinite;
transform-style: preserve-3d;
}
.animate-boomerang { animation: boomerang-throw 5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite; animation-delay: 6s; }
.animate-card-float { animation: card-float 4s ease-in-out infinite; }
.animate-card-victory { animation: card-victory 1.5s ease-in-out infinite; }
.animate-pulse-ring { animation: pulse-ring 3s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite; }
.animate-spin-slow { animation: spin-slow 20s linear infinite; }
/* Delay utilities */
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-500 { animation-delay: 0.5s; }
.delay-700 { animation-delay: 0.7s; }
.delay-1000 { animation-delay: 1s; }
/* ===== Design System Utility Classes ===== */
.glass-panel {
background: rgba(248, 249, 251, 0.7);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
}
.shadow-soft-diffuse {
box-shadow: 0px 10px 40px rgba(25, 28, 30, 0.04);
}
.luminous-glow {
box-shadow: 0px 0px 40px rgba(0, 67, 235, 0.08);
}
.gradient-cta {
background: linear-gradient(135deg, var(--color-primary), var(--color-primary-container));
color: #fff;
}
.cli-command-block {
background: var(--color-inverse-surface);
color: var(--color-inverse-on-surface);
}
.ghost-border {
border: 1px solid transparent;
}
.ghost-border:hover {
border-color: var(--color-primary-fixed-dim);
}
.bg-radial-glow {
background:
radial-gradient(circle at top right, rgba(0, 67, 235, 0.08), transparent 40%),
radial-gradient(circle at bottom left, rgba(107, 56, 212, 0.08), transparent 40%);
}
/* 3D helpers */
.card-rotate-3d {
transform: perspective(800px) rotateY(-8deg) rotateX(3deg);
animation: float-gentle 6s ease-in-out infinite;
}
.preserve-3d { transform-style: preserve-3d; }
.backface-hidden { backface-visibility: hidden; }
.perspective-1000 { perspective: 1000px; }
.scene-3d { perspective: 1200px; }
/* Scrollbar */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #c2c6d8; border-radius: 10px; }
/* Selection */
::selection {
background-color: var(--color-primary-fixed);
color: var(--color-on-primary-fixed);
}
body { font-family: var(--font-body); }
/* Respect user preference to reduce motion */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}