ruslanmv's picture
Update base.html
d5548b2
raw
history blame
6.72 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>a2a-validator</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Inter:wght@400;600&display=swap" rel="stylesheet">
<style>
:root {
--bg: #020402;
--bg2: #071007;
--text: #c8facc;
--muted: #7ef7a7;
--matrix: #00ff9c;
--card: #061006cc; /* translucent */
--border: #0d1e0f;
}
html, body { height: 100%; }
body {
margin: 0;
color: var(--text);
background:
radial-gradient(1200px 800px at 100% -10%, rgba(0,255,156,0.06), transparent 40%),
radial-gradient(1000px 600px at -10% 100%, rgba(0,255,156,0.05), transparent 40%),
linear-gradient(180deg, var(--bg), var(--bg2) 60%, var(--bg));
font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
overflow-y: auto;
}
body::after {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
background: repeating-linear-gradient(to bottom, rgba(0,0,0,0.06) 0px, rgba(0,0,0,0.06) 1px, transparent 2px, transparent 3px);
mix-blend-mode: overlay;
opacity: 0.6;
z-index: 0;
}
#code-rain {
position: fixed;
inset: 0;
width: 100vw;
height: 100vh;
z-index: 0;
pointer-events: none;
opacity: 0.65;
}
header {
position: sticky; top: 0; z-index: 3;
display: flex; align-items: center; gap: 18px;
padding: 18px 22px;
background: linear-gradient(180deg, rgba(0,0,0,0.35), rgba(0,0,0,0));
border-bottom: 1px solid var(--border);
backdrop-filter: blur(4px);
}
.brand {
font-family: "Share Tech Mono", monospace;
color: var(--matrix);
text-shadow: 0 0 8px rgba(0,255,156,0.4);
letter-spacing: 0.04em;
font-size: 18px;
}
nav a {
color: var(--muted);
text-decoration: none;
margin-right: 16px;
transition: color .15s ease, text-shadow .15s ease;
}
nav a:hover {
color: var(--matrix);
text-shadow: 0 0 8px rgba(0,255,156,0.4);
}
.wrap { position: relative; z-index: 2; max-width: 980px; margin: 0 auto; padding: 26px 22px 60px; }
.card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 16px;
box-shadow: 0 0 0 1px rgba(0,255,156,0.06), 0 8px 30px rgba(0,0,0,0.35);
padding: 20px;
}
h2, h3, h4 { font-family: "Share Tech Mono", monospace; color: var(--matrix); letter-spacing: .02em; }
p { color: var(--text); opacity: 0.95; }
input, textarea {
width: 100%;
color: var(--text);
background: #020a04;
border: 1px solid var(--border);
border-radius: 12px;
padding: 12px 12px;
font-size: 14px;
font-family: "Share Tech Mono", monospace;
outline: none;
transition: border-color .15s ease, box-shadow .15s ease;
}
input:focus, textarea:focus {
border-color: var(--matrix);
box-shadow: 0 0 0 3px rgba(0,255,156,0.08), 0 0 12px rgba(0,255,156,0.25) inset;
}
button {
background: linear-gradient(180deg, #00ff9c, #00c97e);
color: #002f1b;
border: 0;
padding: 10px 16px;
border-radius: 12px;
font-weight: 700;
font-family: "Share Tech Mono", monospace;
letter-spacing: 0.03em;
cursor: pointer;
box-shadow: 0 6px 20px rgba(0,255,156,0.25);
transition: transform .05s ease, box-shadow .15s ease, filter .15s ease;
}
button:hover { filter: brightness(1.05); box-shadow: 0 10px 30px rgba(0,255,156,0.35); }
button:active { transform: translateY(1px); }
pre, code {
font-family: "Share Tech Mono", monospace;
background: #020a04;
border: 1px solid var(--border);
border-radius: 12px;
}
pre { padding: 12px; overflow: auto; }
@keyframes glow {
0%, 100% { text-shadow: 0 0 10px rgba(0,255,156,0.12); }
50% { text-shadow: 0 0 14px rgba(0,255,156,0.28); }
}
h3 { animation: glow 3.5s ease-in-out infinite; }
</style>
</head>
<body>
<canvas id="code-rain"></canvas>
<header>
<div class="brand">MATRIX-A2A</div>
<nav>
<a href="/validator">Validator</a>
<a href="/home">Info</a>
<a href="https://github.com/agent-matrix/a2a-validator" target="_blank" rel="noreferrer" title="Give me a star on GitHub!">GitHub</a>
</nav>
</header>
<div class="wrap">
{% block body %}{% endblock %}
</div>
<script>
(function () {
const c = document.getElementById('code-rain');
if (!c) return;
const ctx = c.getContext('2d', { alpha: true });
let w, h, cols, drops;
const fontSize = 20;
const charSet = 'アァカサタナハマヤラワ0123456789アイウエオアイウエオ01';
function resize() {
w = c.width = window.innerWidth;
h = c.height = window.innerHeight;
cols = Math.floor(w / fontSize);
drops = Array(cols).fill(0).map(() => Math.floor(Math.random() * -50));
ctx.font = fontSize + "px 'Share Tech Mono', monospace";
}
function draw() {
ctx.fillStyle = 'rgba(2, 10, 4, 0.10)';
ctx.fillRect(0, 0, w, h);
for (let i = 0; i < cols; i++) {
const x = i * fontSize;
const y = drops[i] * fontSize;
const ch = charSet[Math.floor(Math.random() * charSet.length)];
ctx.shadowColor = 'rgba(0,255,156,0.35)';
ctx.shadowBlur = 8;
ctx.fillStyle = '#00ff9c';
ctx.fillText(ch, x, y);
if (y > h && Math.random() > 0.975) drops[i] = 0;
else drops[i]++;
}
setTimeout(draw, 70);
}
window.addEventListener('resize', resize);
resize();
draw();
})();
</script>
</body>
</html>