/* Enterprise Preloader Overlay */ .gnx-preloader-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%); display: flex; align-items: center; justify-content: center; z-index: 99999 !important; animation: fadeIn 0.4s ease-in; overflow: hidden; } /* Geometric Background Pattern */ .gnx-preloader-bg-pattern { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(148, 163, 184, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(148, 163, 184, 0.03) 1px, transparent 1px); background-size: 50px 50px; animation: patternMove 20s linear infinite; opacity: 0.5; } .gnx-preloader-bg-pattern::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 600px; height: 600px; background: radial-gradient(circle, rgba(59, 130, 246, 0.1) 0%, transparent 70%); animation: pulse 4s ease-in-out infinite; } .gnx-preloader-container { position: relative; display: flex; flex-direction: column; align-items: center; gap: 2rem; text-align: center; padding: 3rem; z-index: 10; } /* Professional Logo Styling */ .gnx-preloader-logo { position: relative; margin-bottom: 1rem; } .gnx-logo-wrapper { position: relative; display: inline-block; padding: 2rem; background: linear-gradient(135deg, rgba(30, 41, 59, 0.8) 0%, rgba(15, 23, 42, 0.8) 100%); border-radius: 20px; overflow: visible; border: 1px solid rgba(148, 163, 184, 0.2); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.1); transition: all 0.3s ease; } .gnx-logo-border { position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; background: linear-gradient(135deg, #3b82f6, #8b5cf6, #ec4899); border-radius: 22px; opacity: 0.5; z-index: -1; animation: borderGlow 3s ease-in-out infinite; } .gnx-logo-image { position: relative; z-index: 2; filter: brightness(1.2) contrast(1.1); transition: all 0.3s ease; display: block !important; } /* Enterprise Branding */ .gnx-enterprise-brand { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1rem; } .gnx-brand-title { font-size: 1.75rem; font-weight: 700; color: #f1f5f9; letter-spacing: -0.02em; margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; text-shadow: 0 2px 10px rgba(59, 130, 246, 0.3); } .gnx-brand-subtitle { font-size: 0.875rem; font-weight: 400; color: #94a3b8; letter-spacing: 0.1em; text-transform: uppercase; margin: 0; } /* Professional Progress Container */ .gnx-progress-container { width: 320px; display: flex; flex-direction: column; gap: 0.75rem; } .gnx-progress-bar { width: 100%; height: 4px; background: rgba(148, 163, 184, 0.1); border-radius: 4px; overflow: hidden; position: relative; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); } .gnx-progress-fill { height: 100%; background: linear-gradient(90deg, #3b82f6 0%, #8b5cf6 50%, #ec4899 100%); border-radius: 4px; transition: width 0.3s ease; position: relative; overflow: hidden; box-shadow: 0 0 20px rgba(59, 130, 246, 0.5); } .gnx-progress-shine { position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.4), transparent ); animation: progressShine 2s infinite; } .gnx-progress-info { display: flex; justify-content: space-between; align-items: center; } .gnx-progress-text { font-size: 0.875rem; color: #94a3b8; font-weight: 500; letter-spacing: 0.05em; text-transform: uppercase; } .gnx-progress-percentage { font-size: 1rem; color: #f1f5f9; font-weight: 600; font-family: 'SF Mono', 'Courier New', monospace; min-width: 45px; text-align: right; } /* Professional Loading Indicator */ .gnx-loading-indicator { margin-top: 1rem; } .gnx-spinner { position: relative; width: 50px; height: 50px; } .gnx-spinner-ring { position: absolute; width: 100%; height: 100%; border: 2px solid transparent; border-top-color: #3b82f6; border-radius: 50%; animation: spinRing 1.5s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite; } .gnx-spinner-ring:nth-child(1) { border-top-color: #3b82f6; animation-delay: 0s; } .gnx-spinner-ring:nth-child(2) { border-top-color: #8b5cf6; animation-delay: 0.2s; width: 75%; height: 75%; top: 12.5%; left: 12.5%; } .gnx-spinner-ring:nth-child(3) { border-top-color: #ec4899; animation-delay: 0.4s; width: 50%; height: 50%; top: 25%; left: 25%; } /* Corporate Footer */ .gnx-preloader-footer { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid rgba(148, 163, 184, 0.1); } .gnx-footer-text { font-size: 0.75rem; color: #64748b; font-weight: 400; letter-spacing: 0.05em; margin: 0; text-transform: uppercase; } /* Content visibility */ .gnx-content-hidden { opacity: 0; pointer-events: none; position: absolute; left: -9999px; } .gnx-content-visible { opacity: 1; pointer-events: auto; animation: contentFadeIn 0.5s ease-in; } /* Enterprise Animations */ @keyframes fadeIn { from { opacity: 0; backdrop-filter: blur(0px); } to { opacity: 1; backdrop-filter: blur(10px); } } @keyframes contentFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes patternMove { 0% { transform: translate(0, 0); } 100% { transform: translate(50px, 50px); } } @keyframes pulse { 0%, 100% { opacity: 0.3; transform: translate(-50%, -50%) scale(1); } 50% { opacity: 0.5; transform: translate(-50%, -50%) scale(1.1); } } @keyframes borderGlow { 0%, 100% { opacity: 0.3; filter: blur(10px); } 50% { opacity: 0.6; filter: blur(15px); } } @keyframes progressShine { 0% { left: -100%; } 100% { left: 100%; } } @keyframes spinRing { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Responsive Design */ @media (max-width: 768px) { .gnx-preloader-container { gap: 1.5rem; padding: 2rem; } .gnx-logo-wrapper { padding: 1.5rem; } .gnx-logo-image { width: 75px !important; height: 56px !important; } .gnx-brand-title { font-size: 1.5rem; } .gnx-brand-subtitle { font-size: 0.75rem; } .gnx-progress-container { width: 260px; } .gnx-spinner { width: 40px; height: 40px; } } @media (max-width: 480px) { .gnx-preloader-container { gap: 1rem; padding: 1.5rem; } .gnx-logo-wrapper { padding: 1rem; } .gnx-logo-image { width: 60px !important; height: 45px !important; } .gnx-brand-title { font-size: 1.25rem; } .gnx-brand-subtitle { font-size: 0.625rem; } .gnx-progress-container { width: 200px; } .gnx-spinner { width: 35px; height: 35px; } .gnx-footer-text { font-size: 0.625rem; } }