| <!DOCTYPE html>
|
| <html lang="en">
|
| <head>
|
| <meta charset="UTF-8">
|
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| <title>{% block title %}Outline VPN{% endblock %}</title>
|
| <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css">
|
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.css">
|
| <link rel="stylesheet" href="{{ static_url('css/style.css') }}">
|
| {% block extra_css %}{% endblock %}
|
| <style>
|
| body {
|
| font-family: 'Inter', sans-serif;
|
| }
|
| </style>
|
| </head>
|
| <body>
|
| <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
| <div class="container">
|
| <a class="navbar-brand" href="/">Outline VPN</a>
|
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
| <span class="navbar-toggler-icon"></span>
|
| </button>
|
| <div class="collapse navbar-collapse" id="navbarNav">
|
| <ul class="navbar-nav ms-auto">
|
| <div class="auth-logged-in" style="display: none;">
|
| <li class="nav-item">
|
| <a class="nav-link" href="/dashboard">Dashboard</a>
|
| </li>
|
| <li class="nav-item">
|
| <a class="nav-link user-profile" href="/profile"></a>
|
| </li>
|
| <li class="nav-item">
|
| <a class="nav-link" href="/logout">Logout</a>
|
| </li>
|
| </div>
|
| <div class="auth-logged-out">
|
| <li class="nav-item">
|
| <a class="nav-link" href="/login">Login</a>
|
| </li>
|
| <li class="nav-item">
|
| <a class="nav-link" href="/signup">Sign Up</a>
|
| </li>
|
| </div>
|
| </ul>
|
| </div>
|
| </div>
|
| </nav>
|
|
|
| <main class="container mt-4">
|
| {% if messages %}
|
| {% for message in messages %}
|
| <div class="alert alert-info alert-dismissible fade show" role="alert">
|
| {{ message }}
|
| <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
| </div>
|
| {% endfor %}
|
| {% endif %}
|
|
|
| {% block content %}{% endblock %}
|
| </main>
|
|
|
| <footer class="footer mt-5 py-3 bg-light">
|
| <div class="container text-center">
|
| <span class="text-muted">© 2025 Outline VPN. All rights reserved.</span>
|
| </div>
|
| </footer>
|
|
|
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
| <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
|
| <script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>
|
| <script src="{{ static_url('js/main.js') }}"></script>
|
| <script src="{{ static_url('js/auth.js') }}"></script>
|
| <script>
|
| AOS.init({
|
| duration: 800,
|
| easing: 'ease-in-out',
|
| once: true
|
| });
|
| </script>
|
| {% block extra_js %}{% endblock %}
|
| </body>
|
| </html>
|
|
|