/* Additional custom animations and effects */ /* Glitch effect for the title */ .glitch { position: relative; animation: glitch-skew 1s infinite; } @keyframes glitch-skew { 0% { transform: skew(0deg); } 20% { transform: skew(-2deg); } 40% { transform: skew(2deg); } 60% { transform: skew(-1deg); } 80% { transform: skew(1deg); } 100% { transform: skew(0deg); } } /* Binary background animation */ .binary-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; opacity: 0.03; z-index: 0; background-image: linear-gradient(0deg, transparent 24%, rgba(59, 130, 246, .3) 25%, rgba(59, 130, 246, .3) 26%, transparent 27%, transparent 74%, rgba(59, 130, 246, .3) 75%, rgba(59, 130, 246, .3) 76%, transparent 77%, transparent), linear-gradient(90deg, transparent 24%, rgba(59, 130, 246, .3) 25%, rgba(59, 130, 246, .3) 26%, transparent 27%, transparent 74%, rgba(59, 130, 246, .3) 75%, rgba(59, 130, 246, .3) 76%, transparent 77%, transparent); background-size: 50px 50px; animation: scroll-bg 20s linear infinite; } @keyframes scroll-bg { 0% { background-position: 0 0; } 100% { background-position: 50px 50px; } } /* App running indicator */ .running-indicator { width: 8px; height: 8px; background: #22c55e; border-radius: 50%; animation: pulse-dot 2s ease-in-out infinite; box-shadow: 0 0 10px #22c55e; } @keyframes pulse-dot { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(0.8); } } /* Custom scrollbar for webkit */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: rgba(15, 23, 42, 0.5); border-radius: 4px; } ::-webkit-scrollbar-thumb { background: rgba(59, 130, 246, 0.5); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: rgba(59, 130, 246, 0.8); } /* Neon text effect */ .neon-text { text-shadow: 0 0 5px rgba(59, 130, 246, 0.5), 0 0 10px rgba(59, 130, 246, 0.3), 0 0 20px rgba(59, 130, 246, 0.2); } /* Stage badges */ .stage-badge { background: linear-gradient(135deg, rgba(59, 130, 246, 0.2), rgba(139, 92, 246, 0.2)); border: 1px solid rgba(59, 130, 246, 0.3); backdrop-filter: blur(10px); } /* Button press effect */ .btn-press:active { transform: scale(0.95); transition: transform 0.1s; } /* Resource warning colors */ .resource-warning { background: linear-gradient(90deg, #ef4444 0%, #f59e0b 100%) !important; } .resource-critical { background: linear-gradient(90deg, #dc2626 0%, #ef4444 100%) !important; animation: flash-warning 1s ease-in-out infinite; } @keyframes flash-warning { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* Particle effects for clicking */ .particle { position: absolute; pointer-events: none; opacity: 0; animation: particle-float 1s ease-out forwards; } @keyframes particle-float { 0% { opacity: 1; transform: translate(0, 0) scale(1); } 100% { opacity: 0; transform: translate(var(--tx), var(--ty)) scale(0); } } /* Responsive adjustments */ @media (max-width: 1024px) { .computer-glow { box-shadow: 0 0 30px rgba(59, 130, 246, 0.3); } } @media (max-width: 640px) { .glass-panel { backdrop-filter: blur(8px); } #moneyDisplay { font-size: 1.5rem; } }