Files
thrilltrack-explorer/src-old/index.css

412 lines
9.8 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
/* Definition of the design system. All colors, gradients, fonts, etc should be defined here.
All colors MUST be HSL.
*/
@layer base {
:root {
/* ThrillWiki light theme - bright and vibrant */
--background: 0 0% 100%;
--foreground: 240 10% 3.9%;
--card: 0 0% 100%;
--card-foreground: 240 10% 3.9%;
--popover: 0 0% 100%;
--popover-foreground: 240 10% 3.9%;
/* Blue and purple thrill-inspired colors */
--primary: 258 90% 66%; /* Deep vibrant purple */
--primary-foreground: 0 0% 98%;
--primary-glow: 258 100% 80%;
--secondary: 216 87% 55%; /* Rich royal blue */
--secondary-foreground: 0 0% 98%;
--muted: 240 4.8% 95.9%;
--muted-foreground: 240 3.8% 46.1%;
--accent: 216 87% 55%; /* Bright blue for action */
--accent-foreground: 0 0% 98%;
--destructive: 0 84% 60%;
--destructive-foreground: 0 0% 98%;
--border: 240 5.9% 90%;
--input: 240 5.9% 90%;
--ring: 258 90% 66%;
/* Theme park gradients */
--gradient-primary: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--primary-glow)));
--gradient-secondary: linear-gradient(135deg, hsl(var(--secondary)), hsl(var(--accent)));
--gradient-hero: linear-gradient(135deg, hsl(258 90% 66%), hsl(216 87% 55%), hsl(210 100% 65%));
--gradient-card: linear-gradient(145deg, hsl(0 0% 98%), hsl(240 4.8% 95.9%));
/* Thrill shadows and effects */
--shadow-glow: 0 0 40px hsl(var(--primary) / 0.4);
--shadow-card: 0 10px 30px -10px hsl(var(--primary) / 0.3);
--shadow-intense: 0 25px 50px -12px hsl(var(--primary) / 0.5);
/* Animation variables */
--transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
--transition-bounce: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
--radius: 0.5rem;
--sidebar-background: 0 0% 98%;
--sidebar-foreground: 240 5.3% 26.1%;
--sidebar-primary: 240 5.9% 10%;
--sidebar-primary-foreground: 0 0% 98%;
--sidebar-accent: 240 4.8% 95.9%;
--sidebar-accent-foreground: 240 5.9% 10%;
--sidebar-border: 220 13% 91%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
.dark {
/* Dark mode uses vibrant colors on dark backgrounds */
--background: 240 10% 3.9%;
--foreground: 0 0% 98%;
--card: 240 8% 7%;
--card-foreground: 0 0% 98%;
--popover: 240 8% 7%;
--popover-foreground: 0 0% 98%;
--primary: 258 90% 66%; /* Deep vibrant purple */
--primary-foreground: 0 0% 98%;
--primary-glow: 258 100% 80%;
--secondary: 216 87% 55%; /* Rich royal blue */
--secondary-foreground: 0 0% 98%;
--muted: 240 5% 20%;
--muted-foreground: 240 5% 64%;
--accent: 216 87% 55%; /* Bright blue for action */
--accent-foreground: 0 0% 98%;
--destructive: 0 84% 60%;
--destructive-foreground: 0 0% 98%;
--border: 240 6% 15%;
--input: 240 6% 15%;
--ring: 258 90% 66%;
--gradient-card: linear-gradient(145deg, hsl(240 10% 5%), hsl(240 8% 7%));
--sidebar-background: 240 5.9% 10%;
--sidebar-foreground: 240 4.8% 95.9%;
--sidebar-primary: 224.3 76.3% 48%;
--sidebar-primary-foreground: 0 0% 100%;
--sidebar-accent: 240 3.7% 15.9%;
--sidebar-accent-foreground: 240 4.8% 95.9%;
--sidebar-border: 240 3.7% 15.9%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
}
/* Suppress ALL animations during initial queue render */
[data-initial-load="true"] * {
animation-duration: 0s !important;
animation-delay: 0s !important;
transition-duration: 0s !important;
transition-delay: 0s !important;
}
/* Custom Uppy Photo Upload Styling */
@layer components {
/* Uppy Dashboard customization to match theme */
.uppy-Dashboard {
@apply bg-card text-card-foreground border border-border rounded-lg;
box-shadow: var(--shadow-card);
}
.uppy-Dashboard-inner {
@apply bg-transparent;
}
.uppy-Dashboard-dropFilesHereHint {
@apply text-muted-foreground;
}
.uppy-Dashboard-browse {
@apply text-primary hover:text-primary-glow transition-colors duration-300;
}
.uppy-Dashboard-AddFiles {
@apply bg-gradient-to-r from-primary to-secondary text-primary-foreground;
background: var(--gradient-primary);
border: none;
border-radius: var(--radius);
transition: var(--transition-smooth);
}
.uppy-Dashboard-AddFiles:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-glow);
}
.uppy-Dashboard-AddFiles-info {
@apply text-primary-foreground;
}
.uppy-Dashboard-Item {
@apply bg-card border border-border rounded-lg;
}
.uppy-Dashboard-Item-preview {
@apply rounded-lg overflow-hidden;
}
.uppy-Dashboard-Item-progress {
@apply bg-muted;
}
.uppy-Dashboard-Item-progressIndicator {
@apply bg-primary;
}
.uppy-Dashboard-Item-action--remove {
@apply text-destructive hover:text-destructive-foreground hover:bg-destructive;
transition: var(--transition-smooth);
}
.uppy-Dashboard-Item-action--edit {
@apply text-accent hover:text-accent-foreground hover:bg-accent;
transition: var(--transition-smooth);
}
/* Modal overlay styling */
.uppy-Dashboard--modal {
z-index: 9999 !important;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100vw !important;
height: 100vh !important;
}
.uppy-Dashboard--modal .uppy-Dashboard-overlay {
@apply bg-background/80 backdrop-blur-sm;
z-index: 9998 !important;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
}
.uppy-Dashboard--modal .uppy-Dashboard-inner {
@apply bg-card border border-border rounded-xl;
box-shadow: var(--shadow-intense);
max-width: 90vw;
max-height: 90vh;
position: fixed !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
z-index: 10000 !important;
}
/* Ensure all uppy content stays contained */
.uppy-Dashboard--modal * {
position: relative !important;
}
.uppy-Dashboard--modal .uppy-Dashboard-AddFiles,
.uppy-Dashboard--modal .uppy-Dashboard-dropFilesHereHint {
position: static !important;
}
/* Status bar customization */
.uppy-StatusBar {
@apply bg-muted border-t border-border;
}
.uppy-StatusBar-progress {
@apply bg-primary;
}
.uppy-StatusBar-actions {
@apply gap-2;
}
.uppy-StatusBar-actionBtn {
@apply bg-primary text-primary-foreground hover:bg-primary/90;
border: none;
border-radius: var(--radius);
transition: var(--transition-smooth);
}
.uppy-StatusBar-actionBtn:hover {
transform: translateY(-1px);
}
/* Image editor customization */
.uppy-ImageEditor {
@apply bg-card text-card-foreground;
}
.uppy-ImageEditor-controls {
@apply bg-muted border-t border-border;
}
.uppy-ImageEditor-controls button {
@apply text-foreground hover:text-primary;
transition: var(--transition-smooth);
}
/* Custom upload trigger styling */
.photo-upload-trigger {
@apply relative overflow-hidden;
background: var(--gradient-primary);
transition: var(--transition-smooth);
}
.photo-upload-trigger:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-glow);
}
.photo-upload-trigger::before {
content: '';
@apply absolute inset-0 bg-gradient-to-r from-transparent via-white/20 to-transparent;
transform: translateX(-100%);
transition: transform 0.6s ease;
}
.photo-upload-trigger:hover::before {
transform: translateX(100%);
}
/* Upload preview grid */
.upload-preview-grid {
@apply grid gap-4;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}
.upload-preview-item {
@apply relative aspect-square rounded-lg overflow-hidden border border-border;
background: var(--gradient-card);
transition: var(--transition-smooth);
}
.upload-preview-item:hover {
transform: scale(1.05);
box-shadow: var(--shadow-card);
}
.upload-preview-item img {
@apply w-full h-full object-cover;
}
.upload-preview-overlay {
@apply absolute inset-0 bg-black/40 opacity-0 hover:opacity-100 flex items-center justify-center;
transition: var(--transition-smooth);
}
/* Loading states */
.upload-loading {
@apply relative;
}
.upload-loading::after {
content: '';
@apply absolute inset-0 bg-primary/10 rounded-lg;
animation: pulse 2s infinite;
}
/* Mobile optimizations */
@media (max-width: 640px) {
.uppy-Dashboard--modal .uppy-Dashboard-inner {
@apply m-4 max-h-[80vh];
}
.upload-preview-grid {
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
@apply gap-2;
}
}
/* Dark mode specific adjustments */
.dark .uppy-Dashboard {
border-color: hsl(var(--border));
}
.dark .uppy-Dashboard-Item {
background-color: hsl(var(--card));
border-color: hsl(var(--border));
}
}
/* Smooth queue transitions */
.queue-fade-enter {
animation: queueFadeIn 300ms ease-in-out;
}
.queue-fade-exit {
animation: queueFadeOut 200ms ease-in-out;
}
@keyframes queueFadeIn {
from {
opacity: 0;
transform: translateY(8px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes queueFadeOut {
from {
opacity: 1;
transform: translateY(0);
}
to {
opacity: 0;
transform: translateY(-8px);
}
}
/* Performance optimizations for queue items */
.queue-item-container {
contain: layout style paint;
will-change: transform, opacity;
content-visibility: auto;
contain-intrinsic-size: 0 200px;
}
/* Enhanced list view animations */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in-up {
animation: fadeInUp 0.6s ease-out forwards;
opacity: 0;
}