MogensR's picture
Create web/src/app/globals.css
9e3ba66
raw
history blame
4.85 kB
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 210 40% 96.1%;
--accent-foreground: 222.2 47.4% 11.2%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--radius: 0.5rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
font-feature-settings: "rlig" 1, "calt" 1;
}
h1, h2, h3, h4, h5, h6 {
@apply scroll-m-20;
}
h1 {
@apply text-4xl font-extrabold tracking-tight lg:text-5xl;
}
h2 {
@apply text-3xl font-semibold tracking-tight;
}
h3 {
@apply text-2xl font-semibold tracking-tight;
}
h4 {
@apply text-xl font-semibold tracking-tight;
}
p {
@apply leading-7 [&:not(:first-child)]:mt-6;
}
}
@layer components {
/* Custom scrollbar */
.custom-scrollbar {
scrollbar-width: thin;
scrollbar-color: theme('colors.gray.600') theme('colors.gray.800');
}
.custom-scrollbar::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.custom-scrollbar::-webkit-scrollbar-track {
@apply bg-gray-800;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
@apply bg-gray-600 rounded-full;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
@apply bg-gray-500;
}
/* Glass morphism effect */
.glass {
@apply bg-white/10 backdrop-blur-lg border border-white/20;
}
.glass-dark {
@apply bg-gray-900/50 backdrop-blur-lg border border-gray-700/50;
}
/* Gradient text */
.gradient-text {
@apply bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent;
}
/* Animated gradient background */
.gradient-bg {
@apply bg-gradient-to-r from-purple-600 to-pink-600;
background-size: 200% 200%;
animation: gradient 6s ease infinite;
}
/* Glow effect */
.glow {
box-shadow: 0 0 20px rgba(168, 85, 247, 0.4),
0 0 40px rgba(168, 85, 247, 0.2),
0 0 60px rgba(168, 85, 247, 0.1);
}
.glow-purple {
box-shadow: 0 0 20px rgba(168, 85, 247, 0.6);
}
.glow-pink {
box-shadow: 0 0 20px rgba(236, 72, 153, 0.6);
}
}
@layer utilities {
/* Hide scrollbar but keep functionality */
.no-scrollbar::-webkit-scrollbar {
display: none;
}
.no-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
}
/* Text selection color */
.selection-purple::selection {
@apply bg-purple-500/30 text-purple-200;
}
/* Transition all */
.transition-all-smooth {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Safe area padding for mobile */
.safe-top {
padding-top: env(safe-area-inset-top);
}
.safe-bottom {
padding-bottom: env(safe-area-inset-bottom);
}
.safe-left {
padding-left: env(safe-area-inset-left);
}
.safe-right {
padding-right: env(safe-area-inset-right);
}
}
/* Animations */
@keyframes gradient {
0%, 100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}
@keyframes float {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-20px);
}
}
@keyframes glow-pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
/* Loading skeleton */
@keyframes skeleton-loading {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
.skeleton {
background: linear-gradient(
90deg,
theme('colors.gray.800') 25%,
theme('colors.gray.700') 50%,
theme('colors.gray.800') 75%
);
background-size: 200% 100%;
animation: skeleton-loading 1.5s infinite;
}