/** * Central configuration file for IntelSight website * Contains all constants, settings and selectors */ // Application Configuration const CONFIG = { // Animation Settings ANIMATION: { PARTICLE_COUNT: 100, PARTICLE_SPEED: 3, PARTICLE_SIZE_MIN: 1, PARTICLE_SIZE_MAX: 3, CONNECTION_DISTANCE: 100, COUNTER_SPEED: 200, SCROLL_THRESHOLD: 50, FADE_DURATION: 500, GLITCH_ITERATIONS: 5, GLITCH_INTERVAL: 50 }, // Hero Video Settings HERO_VIDEOS: { ROTATION_INTERVAL: 12000, // 12 seconds per video (slower like Palantir) FADE_DURATION: 3000, // 3 second fade transition (much slower) VIDEO_SOURCES: [ 'assets/videos/hero-data-flow.mp4', 'assets/videos/hero-network-viz.mp4', 'assets/videos/hero-code-abstract.mp4' ] }, // Language Settings I18N: { DEFAULT_LANGUAGE: 'de', SUPPORTED_LANGUAGES: ['de', 'en'], STORAGE_KEY: 'intelsight_language' }, // Intersection Observer Settings OBSERVER: { THRESHOLD: 0.3, ROOT_MARGIN: '0px' }, // Authentication Settings AUTH: { SESSION_KEY: 'accountForgerAuth', REDIRECT_PAGE: 'accountforger-video.html' }, // Timeouts and Intervals TIMING: { SCROLL_HIDE_DELAY: 500, COUNTER_UPDATE_INTERVAL: 10, MAP_POINT_SPAWN_INTERVAL: 5000, RESPONSE_TIMER_UPDATE: 2000, LIVE_COUNTER_UPDATE: 3000 } }; // DOM Selectors const SELECTORS = { // Navigation NAVBAR: '.navbar', NAV_MENU: '.nav-menu', LANG_TOGGLE: '.lang-toggle', // Hero Section HERO: '.hero', HERO_CONTENT: '.hero-content', HERO_VIDEO: '.hero-video', PARTICLE_CANVAS: '#particleCanvas', SCROLL_INDICATOR: '.scroll-indicator', // About Section ABOUT_TABS: '.about-tab', ABOUT_PANELS: '.about-panel', // Products Section EXPAND_BUTTON: '.expand-button', TOOLS_GRID: '.tools-grid', TOOL_CARDS: '.tool-card', // Modals LOGIN_MODAL: '.login-modal', MODAL_CLOSE: '.modal-close', // Forms CONTACT_FORM: '#contactForm', LOGIN_FORM: '#loginForm', // Animation Elements INTERACTIVE_ICON: '#interactiveIcon', NEURAL_CANVAS: '#neuralCanvas', DATA_PARTICLES: '#dataParticles', LIVE_COUNTER: '#liveCounter', RESPONSE_TIMER: '#responseTimer', MAP_POINTS: '#mapPoints', // Generic TRANSLATABLE: '[data-translate]', SMOOTH_LINKS: 'a[href^="#"]', SKIP_NAV: '.skip-nav' }; // CSS Classes const CLASSES = { ACTIVE: 'active', SCROLLED: 'scrolled', COLLAPSED: 'collapsed', VISIBLE: 'visible', LOADED: 'loaded', EXPANDED: 'expanded', HIDDEN: 'hidden', // Animation Classes FADE_IN: 'fade-in', FADE_OUT: 'fade-out', SLIDE_UP: 'slide-up', SLIDE_DOWN: 'slide-down', // Component Classes PARTICLE: 'particle', DATA_PARTICLE: 'data-particle', MAP_POINT: 'map-point', NODE: 'node', WIDGET: 'widget', TAB: 'tab', PANEL: 'panel' }; // Data Attributes const DATA_ATTRS = { TRANSLATE: 'data-translate', TAB: 'data-tab', EXPANDED: 'data-expanded', LANG: 'data-lang', TARGET: 'data-target', TOOL: 'data-tool' }; // Export for use in other modules (if using module system) // For now, these are global constants available to all scripts