ADA-Python / templates /base.html
ussu321's picture
Upload 50 files
bd86de0 verified
Raw
History Blame Contribute Delete
28.5 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}USSU Algorithm Analyzer v4.0{% endblock %}</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;500;700&family=Inter:wght@300;400;600&display=swap" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vis-network/9.1.2/dist/vis-network.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
:root {
--cyan: #06b6d4;
--bright-cyan: #22d3ee;
--violet: #8b5cf6;
--green: #10b981;
--yellow: #f59e0b;
--red: #ef4444;
--magenta: #d946ef;
--dark: #0f172a;
--slate: #1e293b;
--panel: rgba(30, 41, 59, 0.6);
--glass: rgba(15, 23, 42, 0.55);
--glass-border: rgba(255, 255, 255, 0.08);
--neon-glow: 0 0 20px rgba(6, 182, 212, 0.4);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Inter', sans-serif;
background: var(--dark);
color: #e2e8f0;
min-height: 100vh;
overflow-x: hidden;
}
/* Animated Mesh Background */
.bg-mesh {
position: fixed;
top: 0; left: 0; width: 100%; height: 100%;
z-index: -2;
background:
radial-gradient(ellipse at 20% 20%, rgba(6, 182, 212, 0.15) 0%, transparent 50%),
radial-gradient(ellipse at 80% 80%, rgba(139, 92, 246, 0.15) 0%, transparent 50%),
radial-gradient(ellipse at 50% 50%, rgba(15, 23, 42, 1) 0%, rgba(15, 23, 42, 1) 100%);
animation: meshMove 20s ease-in-out infinite;
}
@keyframes meshMove {
0%, 100% { transform: scale(1) rotate(0deg); }
50% { transform: scale(1.1) rotate(2deg); }
}
/* Floating Orbs */
.orb {
position: fixed;
border-radius: 50%;
filter: blur(80px);
z-index: -1;
opacity: 0.4;
animation: floatOrb 15s ease-in-out infinite;
}
.orb-1 { width: 400px; height: 400px; background: var(--cyan); top: -100px; left: -100px; animation-delay: 0s; }
.orb-2 { width: 300px; height: 300px; background: var(--violet); bottom: -50px; right: -50px; animation-delay: -5s; }
.orb-3 { width: 250px; height: 250px; background: var(--magenta); top: 50%; left: 50%; animation-delay: -10s; }
@keyframes floatOrb {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(30px, -30px) scale(1.1); }
66% { transform: translate(-20px, 20px) scale(0.9); }
}
/* Glassmorphism Base */
.glass {
background: var(--glass);
backdrop-filter: blur(20px) saturate(180%);
-webkit-backdrop-filter: blur(20px) saturate(180%);
border: 1px solid var(--glass-border);
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
}
.glass-card {
background: linear-gradient(135deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.01) 100%);
backdrop-filter: blur(16px) saturate(180%);
-webkit-backdrop-filter: blur(16px) saturate(180%);
border: 1px solid rgba(255,255,255,0.08);
border-radius: 16px;
padding: 24px;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.glass-card::before {
content: '';
position: absolute;
top: 0; left: -100%; width: 100%; height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.05), transparent);
transition: left 0.6s;
}
.glass-card:hover::before {
left: 100%;
}
.glass-card:hover {
transform: translateY(-4px);
border-color: rgba(6, 182, 212, 0.3);
box-shadow: 0 12px 40px rgba(6, 182, 212, 0.15);
}
/* Liquid Glass Button */
.btn-liquid {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 12px 28px;
font-family: 'Orbitron', sans-serif;
font-weight: 700;
font-size: 13px;
letter-spacing: 1.5px;
text-transform: uppercase;
color: white;
background: linear-gradient(135deg, rgba(6,182,212,0.2), rgba(139,92,246,0.2));
border: 1px solid rgba(255,255,255,0.15);
border-radius: 12px;
cursor: pointer;
overflow: hidden;
transition: all 0.3s ease;
text-decoration: none;
}
.btn-liquid::before {
content: '';
position: absolute;
top: 0; left: -100%; width: 100%; height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: left 0.5s;
}
.btn-liquid:hover::before {
left: 100%;
}
.btn-liquid:hover {
transform: translateY(-2px);
box-shadow: 0 0 30px rgba(6, 182, 212, 0.4), inset 0 0 20px rgba(6, 182, 212, 0.1);
border-color: var(--cyan);
}
.btn-liquid:active {
transform: translateY(0);
}
.btn-liquid-glow {
background: linear-gradient(135deg, var(--cyan), var(--violet));
border: none;
box-shadow: 0 0 20px rgba(6, 182, 212, 0.3);
}
.btn-liquid-glow:hover {
box-shadow: 0 0 40px rgba(6, 182, 212, 0.6), 0 0 60px rgba(139, 92, 246, 0.3);
}
/* Navigation */
.navbar {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 1000;
background: rgba(15, 23, 42, 0.7);
backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(255,255,255,0.05);
padding: 0 24px;
}
.nav-container {
max-width: 1400px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
}
.nav-brand {
font-family: 'Orbitron', sans-serif;
font-weight: 900;
font-size: 20px;
background: linear-gradient(135deg, var(--bright-cyan), var(--violet));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-decoration: none;
letter-spacing: 2px;
}
.nav-links {
display: flex;
gap: 8px;
list-style: none;
}
.nav-links a {
font-family: 'Rajdhani', sans-serif;
font-weight: 600;
font-size: 14px;
color: #94a3b8;
text-decoration: none;
padding: 8px 14px;
border-radius: 8px;
transition: all 0.3s;
position: relative;
}
.nav-links a:hover, .nav-links a.active {
color: var(--bright-cyan);
background: rgba(6, 182, 212, 0.1);
}
.nav-links a.active::after {
content: '';
position: absolute;
bottom: -4px; left: 50%; transform: translateX(-50%);
width: 20px; height: 2px;
background: var(--cyan);
border-radius: 2px;
box-shadow: 0 0 10px var(--cyan);
}
/* Main Layout */
.main-content {
padding-top: 80px;
max-width: 1400px;
margin: 0 auto;
padding-left: 24px;
padding-right: 24px;
padding-bottom: 60px;
}
/* Page Header */
.page-header {
margin-bottom: 32px;
position: relative;
}
.page-header h1 {
font-family: 'Orbitron', sans-serif;
font-size: 36px;
font-weight: 700;
background: linear-gradient(135deg, var(--bright-cyan), var(--violet));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 0 0 30px rgba(34, 211, 238, 0.2);
margin-bottom: 8px;
}
.page-header p {
color: #64748b;
font-size: 16px;
font-family: 'Rajdhani', sans-serif;
}
.header-line {
width: 120px;
height: 3px;
background: linear-gradient(90deg, var(--cyan), var(--violet));
border-radius: 2px;
margin-top: 12px;
box-shadow: 0 0 10px rgba(6, 182, 212, 0.5);
}
/* Form Elements */
.form-group {
margin-bottom: 16px;
}
.form-label {
display: block;
font-family: 'Rajdhani', sans-serif;
font-weight: 600;
font-size: 13px;
color: #94a3b8;
margin-bottom: 6px;
letter-spacing: 0.5px;
text-transform: uppercase;
}
.form-input, .form-select, .form-textarea {
width: 100%;
padding: 12px 16px;
background: rgba(15, 23, 42, 0.6);
border: 1px solid rgba(255,255,255,0.08);
border-radius: 10px;
color: #e2e8f0;
font-family: 'Inter', sans-serif;
font-size: 14px;
transition: all 0.3s;
outline: none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
border-color: var(--cyan);
box-shadow: 0 0 15px rgba(6, 182, 212, 0.15);
background: rgba(15, 23, 42, 0.8);
}
.form-textarea {
min-height: 100px;
resize: vertical;
}
/* Grid */
.grid {
display: grid;
gap: 20px;
}
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1024px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 768px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }
/* Metric Cards */
.metric-card {
background: linear-gradient(135deg, rgba(6,182,212,0.08), rgba(139,92,246,0.08));
backdrop-filter: blur(12px);
border: 1px solid rgba(6, 182, 212, 0.2);
border-radius: 12px;
padding: 16px;
text-align: center;
transition: all 0.3s;
}
.metric-card:hover {
transform: translateY(-2px);
box-shadow: 0 0 20px rgba(6, 182, 212, 0.2);
}
.metric-label {
font-family: 'Orbitron', sans-serif;
font-size: 11px;
font-weight: 700;
color: var(--cyan);
letter-spacing: 1.5px;
text-transform: uppercase;
margin-bottom: 8px;
}
.metric-value {
font-family: 'Orbitron', sans-serif;
font-size: 24px;
font-weight: 700;
color: #f8fafc;
}
/* Result Box */
.result-box {
background: rgba(16, 185, 129, 0.08);
border: 1px solid rgba(16, 185, 129, 0.3);
border-radius: 12px;
padding: 16px;
margin-top: 16px;
}
.result-box.error {
background: rgba(239, 68, 68, 0.08);
border-color: rgba(239, 68, 68, 0.3);
}
.result-box.warning {
background: rgba(245, 158, 11, 0.08);
border-color: rgba(245, 158, 11, 0.3);
}
/* Algorithm Card */
.algo-card {
background: linear-gradient(135deg, rgba(30,41,59,0.9), rgba(15,23,42,0.9));
border: 1px solid rgba(255,255,255,0.06);
border-left: 4px solid var(--cyan);
border-radius: 12px;
padding: 20px;
margin-bottom: 12px;
transition: all 0.3s;
}
.algo-card:hover {
border-left-color: var(--bright-cyan);
box-shadow: 0 4px 20px rgba(6, 182, 212, 0.1);
}
.algo-card h3 {
font-family: 'Orbitron', sans-serif;
font-size: 16px;
color: #f8fafc;
margin-bottom: 8px;
}
.badge {
display: inline-block;
padding: 4px 10px;
border-radius: 6px;
font-size: 11px;
font-weight: 600;
font-family: 'Rajdhani', sans-serif;
margin-right: 6px;
margin-bottom: 6px;
}
.badge-cyan { background: rgba(6,182,212,0.15); color: var(--bright-cyan); }
.badge-violet { background: rgba(139,92,246,0.15); color: #a78bfa; }
.badge-green { background: rgba(16,185,129,0.15); color: var(--green); }
.badge-red { background: rgba(239,68,68,0.15); color: var(--red); }
.badge-yellow { background: rgba(245,158,11,0.15); color: var(--yellow); }
/* Section Divider */
.section-divider {
margin: 32px 0 20px;
}
.section-divider h3 {
font-family: 'Orbitron', sans-serif;
color: #a78bfa;
font-size: 18px;
margin-bottom: 6px;
}
.section-divider .line {
height: 1px;
background: linear-gradient(90deg, var(--violet), transparent);
}
/* Table */
.cyber-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
.cyber-table th {
font-family: 'Orbitron', sans-serif;
font-size: 11px;
letter-spacing: 1px;
text-transform: uppercase;
color: var(--cyan);
padding: 12px;
text-align: left;
border-bottom: 1px solid rgba(6, 182, 212, 0.2);
}
.cyber-table td {
padding: 12px;
border-bottom: 1px solid rgba(255,255,255,0.04);
color: #cbd5e1;
}
.cyber-table tr:hover td {
background: rgba(6, 182, 212, 0.03);
}
/* Code Block */
.code-block {
background: #020617;
border-left: 3px solid var(--cyan);
border-radius: 0 8px 8px 0;
padding: 14px;
font-family: 'Fira Code', monospace;
font-size: 13px;
color: #e2e8f0;
overflow-x: auto;
margin: 10px 0;
}
/* Scrollbar */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--dark); }
::-webkit-scrollbar-thumb { background: var(--cyan); border-radius: 4px; }
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-in {
animation: fadeIn 0.6s ease-out forwards;
}
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
@keyframes pulse-glow {
0%, 100% { box-shadow: 0 0 20px rgba(6, 182, 212, 0.2); }
50% { box-shadow: 0 0 40px rgba(6, 182, 212, 0.4); }
}
.pulse-glow {
animation: pulse-glow 3s ease-in-out infinite;
}
/* Footer */
.footer {
text-align: center;
padding: 24px;
color: #64748b;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.05);
margin-top: 40px;
}
.footer a { color: var(--cyan); text-decoration: none; }
/* Graph Container */
#graph-container {
width: 100%;
height: 500px;
border-radius: 16px;
background: rgba(15, 23, 42, 0.4);
border: 1px solid rgba(255,255,255,0.06);
}
/* Sort Step Animation */
.sort-step-container {
display: flex;
gap: 8px;
overflow-x: auto;
padding: 16px 0;
}
.sort-step-img {
border-radius: 8px;
border: 1px solid rgba(255,255,255,0.06);
max-height: 200px;
transition: transform 0.3s;
}
.sort-step-img:hover {
transform: scale(1.05);
}
/* Additional Animations */
@keyframes slideUp {
from { opacity: 0; transform: translateY(40px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes slideInLeft {
from { opacity: 0; transform: translateX(-30px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes slideInRight {
from { opacity: 0; transform: translateX(30px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
@keyframes glowPulse {
0%, 100% { box-shadow: 0 0 5px rgba(6, 182, 212, 0.2); }
50% { box-shadow: 0 0 25px rgba(6, 182, 212, 0.5); }
}
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
@keyframes typing {
from { width: 0; }
to { width: 100%; }
}
@keyframes blink {
50% { border-color: transparent; }
}
.animate-slide-up { animation: slideUp 0.6s ease-out forwards; }
.animate-slide-left { animation: slideInLeft 0.5s ease-out forwards; }
.animate-slide-right { animation: slideInRight 0.5s ease-out forwards; }
.animate-scale { animation: scaleIn 0.4s ease-out forwards; }
.animate-glow { animation: glowPulse 2s ease-in-out infinite; }
.animate-float { animation: float 3s ease-in-out infinite; }
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
.delay-4 { animation-delay: 0.4s; }
.delay-5 { animation-delay: 0.5s; }
/* Loading spinner */
.spinner {
width: 40px; height: 40px;
border: 3px solid rgba(6, 182, 212, 0.2);
border-top-color: var(--cyan);
border-radius: 50%;
animation: rotate 0.8s linear infinite;
}
/* Shimmer effect for cards */
.shimmer {
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.05), transparent);
background-size: 200% 100%;
animation: shimmer 3s infinite;
}
/* Animated counter */
.counter-animate {
font-family: 'Orbitron', sans-serif;
font-size: 28px;
font-weight: 700;
color: var(--bright-cyan);
}
/* Process step cards */
.process-step {
position: relative;
padding-left: 40px;
margin-bottom: 20px;
}
.process-step::before {
content: attr(data-step);
position: absolute;
left: 0; top: 0;
width: 28px; height: 28px;
background: linear-gradient(135deg, var(--cyan), var(--violet));
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-family: 'Orbitron', sans-serif;
font-size: 12px;
font-weight: 700;
color: white;
}
.process-step::after {
content: '';
position: absolute;
left: 13px; top: 32px;
width: 2px; height: calc(100% - 12px);
background: linear-gradient(180deg, var(--cyan), transparent);
}
.process-step:last-child::after { display: none; }
/* Hover lift effect */
.hover-lift {
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.hover-lift:hover {
transform: translateY(-6px);
box-shadow: 0 12px 40px rgba(6, 182, 212, 0.15);
}
/* Animated border */
.animated-border {
position: relative;
overflow: hidden;
}
.animated-border::before {
content: '';
position: absolute;
top: 0; left: -100%;
width: 100%; height: 2px;
background: linear-gradient(90deg, transparent, var(--cyan), var(--violet), transparent);
animation: shimmer 3s infinite;
}
/* Table row animation */
.animate-row {
opacity: 0;
transform: translateX(-20px);
}
.result-detail-card { background: rgba(30,41,59,0.6); border: 1px solid rgba(255,255,255,0.06); border-radius: 10px; padding: 12px; transition: all 0.3s; }
.result-detail-card:hover { border-color: rgba(6,182,212,0.3); transform: translateY(-2px); }
.result-detail-label { font-family: 'Orbitron', sans-serif; font-size: 10px; color: var(--cyan); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 4px; }
.result-detail-value { font-family: 'Orbitron', sans-serif; font-size: 18px; color: #f8fafc; font-weight: 700; }
.process-step { position: relative; padding-left: 40px; margin-bottom: 20px; }
.process-step::before { content: attr(data-step); position: absolute; left: 0; top: 0; width: 28px; height: 28px; background: linear-gradient(135deg, var(--cyan), var(--violet)); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: 'Orbitron', sans-serif; font-size: 12px; font-weight: 700; color: white; }
.process-step::after { content: ''; position: absolute; left: 13px; top: 32px; width: 2px; height: calc(100% - 12px); background: linear-gradient(180deg, var(--cyan), transparent); }
.process-step:last-child::after { display: none; }
.process-flow { display: flex; align-items: center; gap: 8px; margin: 16px 0; flex-wrap: wrap; }
.process-node { background: linear-gradient(135deg, rgba(6,182,212,0.15), rgba(139,92,246,0.15)); border: 1px solid rgba(6,182,212,0.2); border-radius: 8px; padding: 8px 12px; font-size: 12px; color: #e2e8f0; font-family: 'Orbitron', sans-serif; }
.process-arrow { color: var(--cyan); font-size: 16px; }
/* Responsive */
@media (max-width: 768px) {
.nav-links { display: none; }
.page-header h1 { font-size: 24px; }
}
</style>
{% block extra_head %}{% endblock %}
</head>
<body>
<div class="bg-mesh"></div>
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<div class="orb orb-3"></div>
<nav class="navbar">
<div class="nav-container">
<a href="/" class="nav-brand">Algorithm Analyzer, Mohammed Usman</a>
<ul class="nav-links">
<li><a href="/" class="{% if request.path == '/' %}active{% endif %}">Home</a></li>
<li><a href="/graph" class="{% if request.path == '/graph' %}active{% endif %}">Graph</a></li>
<li><a href="/search" class="{% if request.path == '/search' %}active{% endif %}">Search</a></li>
<li><a href="/sort" class="{% if request.path == '/sort' %}active{% endif %}">Sort</a></li>
<li><a href="/dp" class="{% if request.path == '/dp' %}active{% endif %}">DP</a></li>
<li><a href="/greedy" class="{% if request.path == '/greedy' %}active{% endif %}">Greedy</a></li>
<li><a href="/backtrack" class="{% if request.path == '/backtrack' %}active{% endif %}">Backtrack</a></li>
<li><a href="/math" class="{% if request.path == '/math' %}active{% endif %}">Math</a></li>
<li><a href="/ada" class="{% if request.path == '/ada' %}active{% endif %}">ADA</a></li>
<li><a href="/benchmark" class="{% if request.path == '/benchmark' %}active{% endif %}">Benchmark</a></li>
<li><a href="/compare" class="{% if request.path == '/compare' %}active{% endif %}">Compare</a></li>
</ul>
</div>
</nav>
<main class="main-content">
{% block content %}{% endblock %}
</main>
<footer class="footer">
<div style="display: flex; align-items: center; justify-content: center; gap: 16px; flex-wrap: wrap;">
<span>⚡ Algorithm Analyzer, Mohammed Usman</span>
<span style="color: #334155;">|</span>
<a href="https://github.com/issu321" target="_blank" style="color: var(--cyan); text-decoration: none; display: flex; align-items: center; gap: 4px;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
github.com/issu321
</a>
<span style="color: #334155;">|</span>
<a href="https://github.com/issu321/ADA-Python" target="_blank" style="color: var(--violet); text-decoration: none; display: flex; align-items: center; gap: 4px;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
ADA-Python Repo
</a>
<span style="color: #334155;">|</span>
<span>Kali Linux & Windows 11 | Python 3.13 Ready</span>
</div>
</footer>
<script>
// Add subtle parallax to orbs on mouse move
document.addEventListener('mousemove', (e) => {
const orbs = document.querySelectorAll('.orb');
const x = e.clientX / window.innerWidth;
const y = e.clientY / window.innerHeight;
orbs.forEach((orb, i) => {
const speed = (i + 1) * 10;
orb.style.transform = `translate(${x * speed}px, ${y * speed}px) scale(1)`;
});
});
</script>
{% block extra_scripts %}{% endblock %}
</body>
</html>