Skip to content
LAM
Read Home Blog
Make Projects HTML Tools Games
Touch grass Notes Resume Links
Home Blog HTML Projects
Tools Games Notes Resume Links
Back THERMO-eVTOL | Thermodynamic Computing for Autonomous Systems Thermodynamics
Download Open
Show description 1,961 chars · Thermodynamics

THERMO-eVTOL | Thermodynamic Computing for Autonomous Systems

THERMO-eVTOL | Thermodynamic Computing for Autonomous Systems










THERMO-eVTOL

Features

Architecture

Performance

GitHub

Documentation










THERMO-eVTOL

THERMODYNAMIC COMPUTING FOR AUTONOMOUS SYSTEMS


Next-generation multi-agent coordination platform leveraging energy-based models
and Boltzmann distributions for unprecedented autonomous vehicle orchestration.
Production-ready framework with distributed training, real-time monitoring,
and FAA-compliant safety protocols.



DEPLOY NOW
VIEW DEMO










99.7%

Collision Avoidance




1M+

Training Steps/Sec




256

Concurrent Agents




0.3ms

Decision Latency










CORE CAPABILITIES



🔥

Thermodynamic Decision Making


Leverages Boltzmann distributions and energy-based models for optimal
action sampling. Inspired by Extropic AI's THRML architecture for
probabilistic decision-making under uncertainty.





⚡

Block Gibbs Coordination


Advanced multi-agent coordination using Block Gibbs sampling to
partition agents into optimal coordination groups, enabling
scalable fleet management up to 256 concurrent vehicles.





🛡️

FAA Compliance Engine


Built-in compliance manager enforcing geofencing, altitude restrictions,
and separation requirements. Real-time validation against FAA Part 107
and emerging UAM regulations.





🌪️

Edge Case Injection


Comprehensive edge case manager simulating GPS failures, sensor
malfunctions, bird strikes, and adverse weather conditions for
robust training in failure scenarios.





📊

Real-Time Analytics


Production-grade monitoring dashboard with live simulation view,
training metrics, replay analysis, and performance profiling.
Streamlit-based interface with sub-second updates.





🚀

Distributed Training


Ray-based distributed training supporting PPO, DDPG, and custom
thermodynamic algorithms.…

THERMO-eVTOL | Thermodynamic Computing for Autonomous Systems

40,585 bytes · HTML source
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>THERMO-eVTOL | Thermodynamic Computing for Autonomous Systems</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        :root {
            --black: #000000;
            --dark: #0a0a0a;
            --grey: #888;
            --light-grey: #ccc;
            --white: #fff;
            --accent: #00ffcc;
            --danger: #ff0040;
            --warning: #ffaa00;
            --grid: #1a1a1a;
        }

        body {
            font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
            background: var(--black);
            color: var(--light-grey);
            overflow-x: hidden;
            cursor: crosshair;
        }

        /* Custom Cursor */
        .cursor-dot {
            width: 4px;
            height: 4px;
            background: var(--accent);
            position: fixed;
            pointer-events: none;
            z-index: 9999;
            border-radius: 50%;
            box-shadow: 0 0 10px var(--accent);
        }

        /* Grid Background */
        .grid-bg {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-image: 
                linear-gradient(var(--grid) 1px, transparent 1px),
                linear-gradient(90deg, var(--grid) 1px, transparent 1px);
            background-size: 50px 50px;
            opacity: 0.3;
            z-index: -1;
            animation: grid-move 20s linear infinite;
        }

        @keyframes grid-move {
            0% { transform: translate(0, 0); }
            100% { transform: translate(50px, 50px); }
        }

        /* Navigation */
        nav {
            position: fixed;
            top: 0;
            width: 100%;
            padding: 20px 50px;
            background: rgba(0, 0, 0, 0.9);
            border-bottom: 1px solid var(--grid);
            backdrop-filter: blur(10px);
            z-index: 1000;
        }

        .nav-container {
            max-width: 1400px;
            margin: 0 auto;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .logo {
            font-size: 24px;
            font-weight: bold;
            letter-spacing: 2px;
            color: var(--white);
            text-decoration: none;
            position: relative;
        }

        .logo::before {
            content: "";
            position: absolute;
            left: -20px;
            top: 50%;
            transform: translateY(-50%);
            width: 10px;
            height: 10px;
            background: var(--accent);
            box-shadow: 0 0 20px var(--accent);
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.5; }
        }

        .nav-links {
            display: flex;
            gap: 40px;
            list-style: none;
        }

        .nav-links a {
            color: var(--grey);
            text-decoration: none;
            font-size: 12px;
            text-transform: uppercase;
            letter-spacing: 1px;
            transition: all 0.3s;
            position: relative;
        }

        .nav-links a:hover {
            color: var(--white);
        }

        .nav-links a::after {
            content: "";
            position: absolute;
            bottom: -5px;
            left: 0;
            width: 0;
            height: 1px;
            background: var(--accent);
            transition: width 0.3s;
        }

        .nav-links a:hover::after {
            width: 100%;
        }

        /* Hero Section */
        .hero {
            height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
            margin-top: 60px;
        }

        .hero-content {
            text-align: center;
            z-index: 10;
            max-width: 1000px;
            padding: 0 20px;
        }

        .hero-title {
            font-size: clamp(40px, 8vw, 80px);
            font-weight: 100;
            letter-spacing: 8px;
            color: var(--white);
            margin-bottom: 20px;
            opacity: 0;
            animation: fadeInUp 1s forwards;
        }

        .hero-subtitle {
            font-size: 16px;
            color: var(--accent);
            letter-spacing: 4px;
            margin-bottom: 30px;
            opacity: 0;
            animation: fadeInUp 1s 0.3s forwards;
        }

        .hero-description {
            font-size: 14px;
            line-height: 1.8;
            color: var(--grey);
            margin-bottom: 40px;
            opacity: 0;
            animation: fadeInUp 1s 0.6s forwards;
        }

        @keyframes fadeInUp {
            to {
                opacity: 1;
                transform: translateY(0);
            }
            from {
                opacity: 0;
                transform: translateY(30px);
            }
        }

        /* CTA Buttons */
        .cta-buttons {
            display: flex;
            gap: 20px;
            justify-content: center;
            opacity: 0;
            animation: fadeInUp 1s 0.9s forwards;
        }

        .btn {
            padding: 15px 40px;
            border: 1px solid var(--grey);
            background: transparent;
            color: var(--white);
            text-decoration: none;
            font-size: 12px;
            letter-spacing: 2px;
            text-transform: uppercase;
            cursor: pointer;
            transition: all 0.3s;
            position: relative;
            overflow: hidden;
        }

        .btn::before {
            content: "";
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: var(--accent);
            transition: left 0.3s;
            z-index: -1;
        }

        .btn:hover {
            color: var(--black);
            border-color: var(--accent);
        }

        .btn:hover::before {
            left: 0;
        }

        .btn-secondary {
            border-color: var(--grid);
            color: var(--grey);
        }

        /* Floating Particles */
        .particles {
            position: absolute;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }

        .particle {
            position: absolute;
            width: 2px;
            height: 2px;
            background: var(--accent);
            opacity: 0.5;
            animation: float 10s infinite linear;
        }

        @keyframes float {
            from {
                transform: translateY(100vh) rotate(0deg);
                opacity: 0;
            }
            10% {
                opacity: 0.5;
            }
            90% {
                opacity: 0.5;
            }
            to {
                transform: translateY(-10vh) rotate(360deg);
                opacity: 0;
            }
        }

        /* Stats Section */
        .stats {
            padding: 100px 50px;
            background: var(--black);
            border-top: 1px solid var(--grid);
            border-bottom: 1px solid var(--grid);
        }

        .stats-container {
            max-width: 1200px;
            margin: 0 auto;
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 40px;
        }

        .stat-card {
            text-align: center;
            padding: 30px;
            border: 1px solid var(--grid);
            position: relative;
            transition: all 0.3s;
        }

        .stat-card::before {
            content: "";
            position: absolute;
            top: -1px;
            left: -1px;
            right: -1px;
            bottom: -1px;
            background: linear-gradient(45deg, var(--accent), transparent);
            opacity: 0;
            transition: opacity 0.3s;
            z-index: -1;
        }

        .stat-card:hover {
            transform: translateY(-5px);
            border-color: var(--accent);
        }

        .stat-card:hover::before {
            opacity: 0.3;
        }

        .stat-number {
            font-size: 48px;
            font-weight: 100;
            color: var(--white);
            margin-bottom: 10px;
        }

        .stat-label {
            font-size: 12px;
            text-transform: uppercase;
            letter-spacing: 2px;
            color: var(--grey);
        }

        /* Features Section */
        .features {
            padding: 100px 50px;
            background: var(--black);
        }

        .features-container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .section-title {
            font-size: 36px;
            font-weight: 100;
            text-align: center;
            margin-bottom: 60px;
            color: var(--white);
            letter-spacing: 4px;
        }

        .features-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
            gap: 30px;
        }

        .feature-card {
            padding: 40px;
            border: 1px solid var(--grid);
            position: relative;
            overflow: hidden;
            transition: all 0.3s;
        }

        .feature-card::after {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 2px;
            background: linear-gradient(90deg, transparent, var(--accent), transparent);
            animation: scan 3s infinite;
        }

        @keyframes scan {
            0% { transform: translateX(-100%); }
            100% { transform: translateX(100%); }
        }

        .feature-icon {
            width: 40px;
            height: 40px;
            margin-bottom: 20px;
            border: 1px solid var(--accent);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 20px;
            color: var(--accent);
        }

        .feature-title {
            font-size: 18px;
            margin-bottom: 15px;
            color: var(--white);
            letter-spacing: 1px;
        }

        .feature-description {
            font-size: 13px;
            line-height: 1.6;
            color: var(--grey);
        }

        /* Tech Stack */
        .tech-stack {
            padding: 100px 50px;
            background: var(--dark);
            border-top: 1px solid var(--grid);
        }

        .tech-grid {
            max-width: 1000px;
            margin: 60px auto 0;
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
            gap: 20px;
        }

        .tech-item {
            padding: 20px;
            border: 1px solid var(--grid);
            text-align: center;
            font-size: 12px;
            letter-spacing: 1px;
            color: var(--grey);
            transition: all 0.3s;
            position: relative;
            overflow: hidden;
        }

        .tech-item:hover {
            color: var(--white);
            border-color: var(--accent);
            transform: scale(1.05);
        }

        /* Architecture Section */
        .architecture {
            padding: 100px 50px;
            background: var(--black);
        }

        .arch-diagram {
            max-width: 1200px;
            margin: 60px auto;
            padding: 40px;
            border: 1px solid var(--grid);
            position: relative;
        }

        .arch-layer {
            padding: 30px;
            margin: 20px 0;
            border: 1px solid var(--grid);
            position: relative;
            transition: all 0.3s;
        }

        .arch-layer:hover {
            border-color: var(--accent);
            background: rgba(0, 255, 204, 0.02);
        }

        .arch-layer-title {
            font-size: 16px;
            color: var(--white);
            margin-bottom: 10px;
            letter-spacing: 2px;
        }

        .arch-layer-components {
            display: flex;
            flex-wrap: wrap;
            gap: 15px;
            margin-top: 15px;
        }

        .arch-component {
            padding: 8px 15px;
            border: 1px solid var(--grid);
            font-size: 11px;
            color: var(--grey);
            letter-spacing: 1px;
        }

        /* Performance Metrics */
        .metrics {
            padding: 100px 50px;
            background: var(--dark);
            border-top: 1px solid var(--grid);
        }

        .metrics-container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .metric-bars {
            margin-top: 60px;
        }

        .metric-item {
            margin-bottom: 40px;
        }

        .metric-header {
            display: flex;
            justify-content: space-between;
            margin-bottom: 10px;
        }

        .metric-label {
            font-size: 12px;
            text-transform: uppercase;
            letter-spacing: 2px;
            color: var(--grey);
        }

        .metric-value {
            font-size: 14px;
            color: var(--white);
        }

        .metric-bar {
            height: 4px;
            background: var(--grid);
            position: relative;
            overflow: hidden;
        }

        .metric-fill {
            height: 100%;
            background: linear-gradient(90deg, var(--accent), var(--warning));
            animation: fillBar 2s ease-out forwards;
            box-shadow: 0 0 10px var(--accent);
        }

        @keyframes fillBar {
            from { width: 0; }
        }

        /* Footer */
        footer {
            padding: 60px 50px 30px;
            background: var(--black);
            border-top: 1px solid var(--grid);
        }

        .footer-content {
            max-width: 1200px;
            margin: 0 auto;
            display: grid;
            grid-template-columns: 2fr 1fr 1fr 1fr;
            gap: 40px;
            margin-bottom: 40px;
        }

        .footer-section h3 {
            font-size: 14px;
            text-transform: uppercase;
            letter-spacing: 2px;
            color: var(--white);
            margin-bottom: 20px;
        }

        .footer-section p {
            font-size: 12px;
            line-height: 1.8;
            color: var(--grey);
        }

        .footer-links {
            list-style: none;
        }

        .footer-links li {
            margin-bottom: 10px;
        }

        .footer-links a {
            font-size: 12px;
            color: var(--grey);
            text-decoration: none;
            transition: color 0.3s;
        }

        .footer-links a:hover {
            color: var(--accent);
        }

        .footer-bottom {
            padding-top: 30px;
            border-top: 1px solid var(--grid);
            text-align: center;
            font-size: 11px;
            color: var(--grey);
        }

        /* Terminal Window */
        .terminal {
            max-width: 800px;
            margin: 60px auto;
            background: var(--black);
            border: 1px solid var(--grid);
            font-family: monospace;
        }

        .terminal-header {
            padding: 10px 15px;
            background: var(--dark);
            border-bottom: 1px solid var(--grid);
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .terminal-dot {
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background: var(--danger);
        }

        .terminal-dot:nth-child(2) {
            background: var(--warning);
        }

        .terminal-dot:nth-child(3) {
            background: var(--accent);
        }

        .terminal-body {
            padding: 20px;
            height: 300px;
            overflow-y: auto;
            font-size: 13px;
            line-height: 1.6;
        }

        .terminal-line {
            margin-bottom: 10px;
            color: var(--grey);
        }

        .terminal-prompt {
            color: var(--accent);
        }

        .terminal-output {
            color: var(--white);
            margin-left: 20px;
        }

        /* Responsive */
        @media (max-width: 768px) {
            .nav-links {
                display: none;
            }

            .hero-title {
                font-size: 36px;
                letter-spacing: 4px;
            }

            .stats-container,
            .features-grid,
            .tech-grid {
                grid-template-columns: 1fr;
            }

            .footer-content {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="cursor-dot" id="cursor"></div>
    <div class="grid-bg"></div>

    <nav>
        <div class="nav-container">
            <a href="#" class="logo">THERMO-eVTOL</a>
            <ul class="nav-links">
                <li><a href="#features">Features</a></li>
                <li><a href="#architecture">Architecture</a></li>
                <li><a href="#metrics">Performance</a></li>
                <li><a href="https://github.com" target="_blank">GitHub</a></li>
                <li><a href="#">Documentation</a></li>
            </ul>
        </div>
    </nav>

    <section class="hero">
        <div class="particles" id="particles"></div>
        <div class="hero-content">
            <h1 class="hero-title">THERMO-eVTOL</h1>
            <p class="hero-subtitle">THERMODYNAMIC COMPUTING FOR AUTONOMOUS SYSTEMS</p>
            <p class="hero-description">
                Next-generation multi-agent coordination platform leveraging energy-based models 
                and Boltzmann distributions for unprecedented autonomous vehicle orchestration. 
                Production-ready framework with distributed training, real-time monitoring, 
                and FAA-compliant safety protocols.
            </p>
            <div class="cta-buttons">
                <a href="#" class="btn">DEPLOY NOW</a>
                <a href="#" class="btn btn-secondary">VIEW DEMO</a>
            </div>
        </div>
    </section>

    <section class="stats">
        <div class="stats-container">
            <div class="stat-card">
                <div class="stat-number">99.7%</div>
                <div class="stat-label">Collision Avoidance</div>
            </div>
            <div class="stat-card">
                <div class="stat-number">1M+</div>
                <div class="stat-label">Training Steps/Sec</div>
            </div>
            <div class="stat-card">
                <div class="stat-number">256</div>
                <div class="stat-label">Concurrent Agents</div>
            </div>
            <div class="stat-card">
                <div class="stat-number">0.3ms</div>
                <div class="stat-label">Decision Latency</div>
            </div>
        </div>
    </section>

    <section class="features" id="features">
        <div class="features-container">
            <h2 class="section-title">CORE CAPABILITIES</h2>
            <div class="features-grid">
                <div class="feature-card">
                    <div class="feature-icon">🔥</div>
                    <h3 class="feature-title">Thermodynamic Decision Making</h3>
                    <p class="feature-description">
                        Leverages Boltzmann distributions and energy-based models for optimal 
                        action sampling. Inspired by Extropic AI's THRML architecture for 
                        probabilistic decision-making under uncertainty.
                    </p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">⚡</div>
                    <h3 class="feature-title">Block Gibbs Coordination</h3>
                    <p class="feature-description">
                        Advanced multi-agent coordination using Block Gibbs sampling to 
                        partition agents into optimal coordination groups, enabling 
                        scalable fleet management up to 256 concurrent vehicles.
                    </p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🛡️</div>
                    <h3 class="feature-title">FAA Compliance Engine</h3>
                    <p class="feature-description">
                        Built-in compliance manager enforcing geofencing, altitude restrictions, 
                        and separation requirements. Real-time validation against FAA Part 107 
                        and emerging UAM regulations.
                    </p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🌪️</div>
                    <h3 class="feature-title">Edge Case Injection</h3>
                    <p class="feature-description">
                        Comprehensive edge case manager simulating GPS failures, sensor 
                        malfunctions, bird strikes, and adverse weather conditions for 
                        robust training in failure scenarios.
                    </p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">📊</div>
                    <h3 class="feature-title">Real-Time Analytics</h3>
                    <p class="feature-description">
                        Production-grade monitoring dashboard with live simulation view, 
                        training metrics, replay analysis, and performance profiling. 
                        Streamlit-based interface with sub-second updates.
                    </p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🚀</div>
                    <h3 class="feature-title">Distributed Training</h3>
                    <p class="feature-description">
                        Ray-based distributed training supporting PPO, DDPG, and custom 
                        thermodynamic algorithms. Automatic scaling across GPU clusters 
                        with PufferLib vectorization.
                    </p>
                </div>
            </div>
        </div>
    </section>

    <section class="tech-stack">
        <div class="features-container">
            <h2 class="section-title">TECHNOLOGY STACK</h2>
            <div class="tech-grid">
                <div class="tech-item">JAX</div>
                <div class="tech-item">RAY</div>
                <div class="tech-item">PUFFERLIB</div>
                <div class="tech-item">PETTINGZOO</div>
                <div class="tech-item">DOCKER</div>
                <div class="tech-item">KUBERNETES</div>
                <div class="tech-item">STREAMLIT</div>
                <div class="tech-item">MYSQL</div>
                <div class="tech-item">GITHUB ACTIONS</div>
                <div class="tech-item">AWS/GCP</div>
                <div class="tech-item">TENSORBOARD</div>
                <div class="tech-item">PROMETHEUS</div>
            </div>
        </div>
    </section>

    <section class="architecture" id="architecture">
        <div class="features-container">
            <h2 class="section-title">SYSTEM ARCHITECTURE</h2>
            <div class="arch-diagram">
                <div class="arch-layer">
                    <div class="arch-layer-title">THERMODYNAMIC CORE</div>
                    <div class="arch-layer-components">
                        <span class="arch-component">BOLTZMANN SAMPLER</span>
                        <span class="arch-component">ENERGY MINIMIZER</span>
                        <span class="arch-component">GIBBS COORDINATOR</span>
                        <span class="arch-component">ENTROPY OPTIMIZER</span>
                    </div>
                </div>
                <div class="arch-layer">
                    <div class="arch-layer-title">SIMULATION ENGINE</div>
                    <div class="arch-layer-components">
                        <span class="arch-component">PHYSICS SIMULATOR</span>
                        <span class="arch-component">SENSOR MODELS</span>
                        <span class="arch-component">WEATHER SYSTEM</span>
                        <span class="arch-component">EDGE CASE INJECTOR</span>
                    </div>
                </div>
                <div class="arch-layer">
                    <div class="arch-layer-title">DISTRIBUTED COMPUTE</div>
                    <div class="arch-layer-components">
                        <span class="arch-component">RAY CLUSTER</span>
                        <span class="arch-component">GPU SCHEDULER</span>
                        <span class="arch-component">MODEL REGISTRY</span>
                        <span class="arch-component">CHECKPOINT MANAGER</span>
                    </div>
                </div>
                <div class="arch-layer">
                    <div class="arch-layer-title">MONITORING & CONTROL</div>
                    <div class="arch-layer-components">
                        <span class="arch-component">REAL-TIME DASHBOARD</span>
                        <span class="arch-component">METRICS COLLECTOR</span>
                        <span class="arch-component">REPLAY SYSTEM</span>
                        <span class="arch-component">ALERT MANAGER</span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section class="metrics" id="metrics">
        <div class="metrics-container">
            <h2 class="section-title">PERFORMANCE METRICS</h2>
            <div class="metric-bars">
                <div class="metric-item">
                    <div class="metric-header">
                        <span class="metric-label">Training Efficiency</span>
                        <span class="metric-value">97%</span>
                    </div>
                    <div class="metric-bar">
                        <div class="metric-fill" style="width: 97%"></div>
                    </div>
                </div>
                <div class="metric-item">
                    <div class="metric-header">
                        <span class="metric-label">Scalability Factor</span>
                        <span class="metric-value">94%</span>
                    </div>
                    <div class="metric-bar">
                        <div class="metric-fill" style="width: 94%"></div>
                    </div>
                </div>
                <div class="metric-item">
                    <div class="metric-header">
                        <span class="metric-label">Safety Compliance</span>
                        <span class="metric-value">100%</span>
                    </div>
                    <div class="metric-bar">
                        <div class="metric-fill" style="width: 100%"></div>
                    </div>
                </div>
                <div class="metric-item">
                    <div class="metric-header">
                        <span class="metric-label">Resource Utilization</span>
                        <span class="metric-value">89%</span>
                    </div>
                    <div class="metric-bar">
                        <div class="metric-fill" style="width: 89%"></div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section class="features">
        <div class="features-container">
            <h2 class="section-title">DEPLOYMENT STATUS</h2>
            <div class="terminal">
                <div class="terminal-header">
                    <div class="terminal-dot"></div>
                    <div class="terminal-dot"></div>
                    <div class="terminal-dot"></div>
                </div>
                <div class="terminal-body" id="terminal-output">
                    <div class="terminal-line">
                        <span class="terminal-prompt">$</span> kubectl get pods -n thermo-evtol
                    </div>
                    <div class="terminal-line terminal-output">
                        NAME                          READY   STATUS    RESTARTS<br>
                        simulator-7b9d8c4f5-xvn2k    1/1     Running   0<br>
                        trainer-6f5c7d9b8-mq3p7      1/1     Running   0<br>
                        dashboard-8c4b5f6d3-kl9h2    1/1     Running   0<br>
                        ray-head-5d7f9c8b2-vt4r8     1/1     Running   0
                    </div>
                    <div class="terminal-line">
                        <span class="terminal-prompt">$</span> ./scripts/metrics.sh --realtime
                    </div>
                    <div class="terminal-line terminal-output">
                        [METRICS] Active Agents: 128<br>
                        [METRICS] Decisions/sec: 3,247,891<br>
                        [METRICS] GPU Utilization: 94%<br>
                        [METRICS] Collision Events: 0<br>
                        [METRICS] Compliance Rate: 100%
                    </div>
                    <div class="terminal-line">
                        <span class="terminal-prompt">$</span> echo "System operational. All checks passed."
                    </div>
                </div>
            </div>
        </div>
    </section>

    <footer>
        <div class="footer-content">
            <div class="footer-section">
                <h3>THERMO-eVTOL</h3>
                <p>
                    Advanced autonomous systems platform leveraging thermodynamic 
                    computing principles for next-generation urban air mobility.
                    Research-grade framework with production-ready deployment.
                </p>
            </div>
            <div class="footer-section">
                <h3>Resources</h3>
                <ul class="footer-links">
                    <li><a href="#">Documentation</a></li>
                    <li><a href="#">API Reference</a></li>
                    <li><a href="#">Research Papers</a></li>
                    <li><a href="#">Tutorials</a></li>
                </ul>
            </div>
            <div class="footer-section">
                <h3>Deploy</h3>
                <ul class="footer-links">
                    <li><a href="#">AWS Setup</a></li>
                    <li><a href="#">GCP Setup</a></li>
                    <li><a href="#">Docker Hub</a></li>
                    <li><a href="#">Helm Charts</a></li>
                </ul>
            </div>
            <div class="footer-section">
                <h3>Connect</h3>
                <ul class="footer-links">
                    <li><a href="#">GitHub</a></li>
                    <li><a href="#">Discord</a></li>
                    <li><a href="#">Research Lab</a></li>
                    <li><a href="#">Contact</a></li>
                </ul>
            </div>
        </div>
        <div class="footer-bottom">
            © 2025 THERMO-eVTOL | Built with thermodynamic precision
        </div>
    </footer>

    <script>
        // Custom cursor
        document.addEventListener('mousemove', (e) => {
            const cursor = document.getElementById('cursor');
            cursor.style.left = e.clientX + 'px';
            cursor.style.top = e.clientY + 'px';
        });

        // Generate particles
        function createParticle() {
            const particle = document.createElement('div');
            particle.className = 'particle';
            particle.style.left = Math.random() * 100 + '%';
            particle.style.animationDelay = Math.random() * 10 + 's';
            particle.style.animationDuration = (10 + Math.random() * 10) + 's';
            return particle;
        }

        const particlesContainer = document.getElementById('particles');
        if (particlesContainer) {
            for (let i = 0; i < 30; i++) {
                particlesContainer.appendChild(createParticle());
            }
        }

        // Smooth scrolling
        document.querySelectorAll('a[href^="#"]').forEach(anchor => {
            anchor.addEventListener('click', function (e) {
                e.preventDefault();
                const target = document.querySelector(this.getAttribute('href'));
                if (target) {
                    target.scrollIntoView({
                        behavior: 'smooth',
                        block: 'start'
                    });
                }
            });
        });

        // Terminal typing effect
        const terminalLines = [
            { prompt: '$', command: ' docker-compose up -d --scale trainer=4', delay: 1000 },
            { output: '[+] Running 5/5\n ✔ Network thermo-evtol_default Created\n ✔ Container mysql Started\n ✔ Container ray-head Started\n ✔ Container simulator Started\n ✔ Container trainer-1...4 Started', delay: 1500 },
            { prompt: '$', command: ' python -m thermo_evtol.train --config advanced', delay: 2000 },
            { output: '[INFO] Initializing ThermodynamicCoordinator...\n[INFO] Loading 128 agents into environment...\n[INFO] Starting distributed training on 4 GPUs...\n[INFO] Energy optimization: ACTIVE\n[INFO] Gibbs sampling rate: 1000Hz', delay: 2500 }
        ];

        let terminalIndex = 0;
        function typeTerminal() {
            if (terminalIndex < terminalLines.length) {
                const line = terminalLines[terminalIndex];
                setTimeout(() => {
                    const terminal = document.getElementById('terminal-output');
                    if (terminal) {
                        const lineDiv = document.createElement('div');
                        lineDiv.className = 'terminal-line';
                        
                        if (line.prompt) {
                            lineDiv.innerHTML = `<span class="terminal-prompt">${line.prompt}</span>${line.command}`;
                        } else if (line.output) {
                            lineDiv.className += ' terminal-output';
                            lineDiv.innerHTML = line.output.replace(/\n/g, '<br>');
                        }
                        
                        terminal.appendChild(lineDiv);
                        terminal.scrollTop = terminal.scrollHeight;
                    }
                    terminalIndex++;
                    typeTerminal();
                }, line.delay);
            }
        }

        // Start terminal animation when page loads
        window.addEventListener('load', () => {
            setTimeout(typeTerminal, 2000);
        });

        // Intersection Observer for animations
        const observerOptions = {
            threshold: 0.1,
            rootMargin: '0px 0px -100px 0px'
        };

        const observer = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    entry.target.style.opacity = '1';
                    entry.target.style.transform = 'translateY(0)';
                }
            });
        }, observerOptions);

        // Observe feature cards
        document.querySelectorAll('.feature-card, .stat-card, .tech-item').forEach(card => {
            card.style.opacity = '0';
            card.style.transform = 'translateY(20px)';
            card.style.transition = 'all 0.6s cubic-bezier(0.4, 0, 0.2, 1)';
            observer.observe(card);
        });

        // Add glitch effect on logo hover
        const logo = document.querySelector('.logo');
        if (logo) {
            logo.addEventListener('mouseenter', () => {
                logo.style.animation = 'glitch 0.3s infinite';
            });
            logo.addEventListener('mouseleave', () => {
                logo.style.animation = 'none';
            });
        }

        // Add glitch keyframes dynamically
        const style = document.createElement('style');
        style.textContent = `
            @keyframes glitch {
                0% { text-shadow: 2px 2px 0 var(--accent), -2px -2px 0 var(--danger); }
                25% { text-shadow: -2px 2px 0 var(--accent), 2px -2px 0 var(--danger); }
                50% { text-shadow: 2px -2px 0 var(--accent), -2px 2px 0 var(--danger); }
                75% { text-shadow: -2px -2px 0 var(--accent), 2px 2px 0 var(--danger); }
                100% { text-shadow: 2px 2px 0 var(--accent), -2px -2px 0 var(--danger); }
            }
        `;
        document.head.appendChild(style);

        // Performance metrics animation trigger
        const metricsSection = document.querySelector('.metrics');
        const metricBars = document.querySelectorAll('.metric-fill');
        let metricsAnimated = false;

        const metricsObserver = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting && !metricsAnimated) {
                    metricsAnimated = true;
                    metricBars.forEach((bar, index) => {
                        setTimeout(() => {
                            bar.style.animation = 'fillBar 2s ease-out forwards';
                        }, index * 200);
                    });
                }
            });
        }, { threshold: 0.5 });

        if (metricsSection) {
            metricsObserver.observe(metricsSection);
        }

        // Add matrix rain effect on button click
        document.querySelectorAll('.btn').forEach(button => {
            button.addEventListener('click', (e) => {
                e.preventDefault();
                const ripple = document.createElement('div');
                ripple.style.position = 'absolute';
                ripple.style.width = '20px';
                ripple.style.height = '20px';
                ripple.style.background = 'var(--accent)';
                ripple.style.borderRadius = '50%';
                ripple.style.transform = 'translate(-50%, -50%)';
                ripple.style.pointerEvents = 'none';
                ripple.style.animation = 'ripple 0.6s ease-out';
                
                const rect = button.getBoundingClientRect();
                ripple.style.left = (e.clientX - rect.left) + 'px';
                ripple.style.top = (e.clientY - rect.top) + 'px';
                
                button.style.position = 'relative';
                button.style.overflow = 'hidden';
                button.appendChild(ripple);
                
                setTimeout(() => ripple.remove(), 600);
            });
        });

        // Add ripple animation
        const rippleStyle = document.createElement('style');
        rippleStyle.textContent = `
            @keyframes ripple {
                to {
                    width: 200px;
                    height: 200px;
                    opacity: 0;
                }
            }
        `;
        document.head.appendChild(rippleStyle);
    </script>
</body>
</html>