Andrew-dev1.1 / app /globals.css
truegleai
Add full project files
2376451
raw
history blame
10.6 kB
@import "tailwindcss";
/* ===== Design Tokens from Animated UI Template (Nexus Theme) ===== */
:root {
/* Background */
--bg-primary: #0a0a0a;
--bg-canvas-center: #1a1a2e;
--bg-canvas-edge: #0a0a0a;
/* Gradients */
--gradient-primary-start: #667eea;
--gradient-primary-end: #764ba2;
--gradient-heading-start: #ffffff;
--gradient-heading-end: #a8b2ff;
--gradient-accent: #a8b2ff;
/* Glassmorphism */
--glass-bg: rgba(255, 255, 255, 0.03);
--glass-bg-light: rgba(255, 255, 255, 0.05);
--glass-border: rgba(255, 255, 255, 0.1);
--glass-hover-border: rgba(102, 126, 234, 0.5);
--glass-blur: 20px;
--glass-blur-sm: 10px;
--glass-shine: rgba(255, 255, 255, 0.05);
/* Text */
--text-primary: #ffffff;
--text-secondary: rgba(255, 255, 255, 0.7);
--text-muted: rgba(255, 255, 255, 0.6);
--text-faint: rgba(255, 255, 255, 0.4);
/* Shadows */
--shadow-btn: 0 10px 30px rgba(102, 126, 234, 0.4);
--shadow-btn-hover: 0 15px 40px rgba(102, 126, 234, 0.6);
--shadow-card: 0 20px 40px rgba(0, 0, 0, 0.4);
/* Spacing */
--nav-padding: 1.5rem 5%;
--nav-blur: 10px;
--nav-links-gap: 2rem;
--hero-max-width: 900px;
--features-max-width: 1200px;
--card-padding: 2.5rem;
--card-radius: 20px;
--icon-size: 60px;
--icon-radius: 15px;
--btn-padding: 1rem 2.5rem;
--btn-radius: 50px;
--btn-border-width: 2px;
}
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
html,
body {
max-width: 100vw;
overflow-x: hidden;
background: radial-gradient(circle at center, var(--bg-canvas-center) 0%, var(--bg-canvas-edge) 100%);
color: var(--text-primary);
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
scroll-behavior: smooth;
}
a {
color: inherit;
text-decoration: none;
}
/* Mobile optimizations */
@media (max-width: 768px) {
html {
font-size: 14px;
}
}
/* Safe area insets for notched devices */
@supports (padding: max(0px)) {
body {
padding-left: max(0px, env(safe-area-inset-left));
padding-right: max(0px, env(safe-area-inset-right));
padding-bottom: max(0px, env(safe-area-inset-bottom));
}
}
/* ===== Nexus Animations ===== */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }
40% { transform: translateX(-50%) translateY(-10px); }
60% { transform: translateX(-50%) translateY(-5px); }
}
@keyframes shimmer {
0% { background-position: -200% center; }
100% { background-position: 200% center; }
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-15px); }
}
@keyframes glow {
0%, 100% { box-shadow: 0 0 20px rgba(102, 126, 234, 0.3); }
50% { box-shadow: 0 0 40px rgba(102, 126, 234, 0.6); }
}
@keyframes gradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
.animate-fadeInUp {
animation: fadeInUp 1s ease-out both;
}
.animate-fadeInUp-delayed {
animation: fadeInUp 1s ease-out 0.2s both;
}
.animate-fadeInUp-delayed-2 {
animation: fadeInUp 1s ease-out 0.4s both;
}
.animate-bounce-scroll {
animation: bounce 2s infinite;
}
.animate-float {
animation: float 3s ease-in-out infinite;
}
.animate-glow {
animation: glow 2s ease-in-out infinite;
}
/* ===== Nexus Glassmorphism (from template) ===== */
.glass {
background: var(--glass-bg);
backdrop-filter: blur(var(--glass-blur));
-webkit-backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border);
}
.glass-card {
background: var(--glass-bg);
backdrop-filter: blur(var(--glass-blur));
-webkit-backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border);
border-radius: var(--card-radius);
padding: var(--card-padding);
transition: all 0.3s;
position: relative;
overflow: hidden;
}
.glass-card::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, var(--glass-shine), transparent);
transition: left 0.7s;
}
.glass-card:hover::before {
left: 100%;
}
.glass-card:hover {
transform: translateY(-10px);
border-color: var(--glass-hover-border);
box-shadow: var(--shadow-card);
}
.glass-nav {
backdrop-filter: blur(var(--nav-blur));
-webkit-backdrop-filter: blur(var(--nav-blur));
background: var(--glass-bg-light);
border-bottom: 1px solid var(--glass-border);
}
.glass-panel {
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 20px;
}
.glass-input {
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
transition: border-color 0.3s;
}
.glass-input:focus {
border-color: rgba(102, 126, 234, 0.5);
}
/* ===== Nexus Gradient Utilities ===== */
.gradient-text {
background: linear-gradient(135deg, var(--gradient-heading-start) 0%, var(--gradient-heading-end) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
.gradient-text-primary {
background: linear-gradient(135deg, var(--gradient-primary-start) 0%, var(--gradient-primary-end) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
.gradient-bg {
background: linear-gradient(135deg, var(--gradient-primary-start) 0%, var(--gradient-primary-end) 100%);
}
.btn-nexus-primary {
padding: var(--btn-padding);
border-radius: var(--btn-radius);
text-decoration: none;
font-weight: 600;
transition: all 0.3s;
border: var(--btn-border-width) solid transparent;
cursor: pointer;
font-size: 1rem;
background: linear-gradient(135deg, var(--gradient-primary-start) 0%, var(--gradient-primary-end) 100%);
color: white;
box-shadow: var(--shadow-btn);
}
.btn-nexus-primary:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-btn-hover);
}
.btn-nexus-secondary {
padding: var(--btn-padding);
border-radius: var(--btn-radius);
text-decoration: none;
font-weight: 600;
transition: all 0.3s;
border: var(--btn-border-width) solid rgba(255, 255, 255, 0.3);
cursor: pointer;
font-size: 1rem;
background: transparent;
color: white;
backdrop-filter: blur(var(--glass-blur-sm));
-webkit-backdrop-filter: blur(var(--glass-blur-sm));
}
.btn-nexus-secondary:hover {
background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.5);
}
/* ===== CodeMirror custom styles ===== */
.cm-editor {
height: 100%;
font-size: 14px !important;
}
.cm-editor.cm-focused {
outline: none;
}
.cm-gutters {
background-color: rgba(10, 10, 20, 0.8) !important;
border-right: 1px solid rgba(255, 255, 255, 0.08) !important;
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
}
.cm-content {
caret-color: #667eea;
}
.cm-lineNumbers .cm-gutterElement {
color: rgba(255, 255, 255, 0.3) !important;
}
.cm-activeLineGutter {
background: rgba(102, 126, 234, 0.1) !important;
}
/* Active line highlight */
.cm-activeLine {
background: rgba(102, 126, 234, 0.05) !important;
}
/* ===== Custom scrollbar ===== */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.02);
}
::-webkit-scrollbar-thumb {
background: rgba(102, 126, 234, 0.3);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(102, 126, 234, 0.5);
}
/* ===== Ad container styles ===== */
.ad-container {
min-height: 50px;
background: rgba(255, 255, 255, 0.02);
border: 1px dashed rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 0.4);
font-size: 12px;
}
/* ===== Token badge animation ===== */
.token-shimmer {
background: linear-gradient(90deg, #667eea 0%, #764ba2 50%, #667eea 100%);
background-size: 200% auto;
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
animation: shimmer 2s linear infinite;
}
/* ===== Loading skeleton ===== */
.skeleton {
background: linear-gradient(90deg, rgba(255,255,255,0.03) 25%, rgba(255,255,255,0.06) 50%, rgba(255,255,255,0.03) 75%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite;
border-radius: 4px;
}
/* ===== Toggle switch ===== */
.toggle {
appearance: none;
-webkit-appearance: none;
width: 44px;
height: 24px;
background: rgba(255, 255, 255, 0.1);
border-radius: 12px;
position: relative;
cursor: pointer;
transition: background 0.3s;
}
.toggle:checked {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.toggle::after {
content: '';
position: absolute;
width: 20px;
height: 20px;
background: white;
border-radius: 50%;
top: 2px;
left: 2px;
transition: transform 0.3s;
}
.toggle:checked::after {
transform: translateX(20px);
}
/* ===== Fullscreen preview ===== */
.fullscreen-preview {
position: fixed;
inset: 0;
z-index: 10000;
background: white;
}
.fullscreen-preview-close {
position: absolute;
top: 1rem;
right: 1rem;
z-index: 10001;
padding: 0.75rem 1.5rem;
border-radius: 50px;
background: rgba(0, 0, 0, 0.8);
color: white;
border: none;
cursor: pointer;
font-size: 1rem;
backdrop-filter: blur(10px);
}
/* ===== Touch-friendly targets ===== */
@media (max-width: 768px) {
button, a, input, textarea, select {
min-height: 44px;
min-width: 44px;
}
}
/* ===== Theme colors via Tailwind @theme ===== */
@theme {
--color-primary-50: #f0f0ff;
--color-primary-100: #e0e0ff;
--color-primary-200: #c8c8ff;
--color-primary-300: #a8b2ff;
--color-primary-400: #8b9cff;
--color-primary-500: #667eea;
--color-primary-600: #5a6fd6;
--color-primary-700: #4e5fbf;
--color-primary-800: #4250a8;
--color-primary-900: #364091;
--color-accent-400: #764ba2;
--color-accent-500: #6a4292;
--color-accent-600: #5e3982;
--color-dark-50: #f8fafc;
--color-dark-100: #f1f5f9;
--color-dark-200: #e2e8f0;
--color-dark-300: #cbd5e1;
--color-dark-400: #94a3b8;
--color-dark-500: #64748b;
--color-dark-600: #475569;
--color-dark-700: rgba(255, 255, 255, 0.1);
--color-dark-800: rgba(255, 255, 255, 0.03);
--color-dark-900: #0a0a0a;
--color-dark-950: #050505;
}