Редизайн под новую Matrix-стилистику + RU/EN переключатель языка

Новая шапка (sticky, blur, мигающий курсор), нумерованные секции резюме
с полным опытом работы и новым разделом «Образование», карточки
проектов в стиле drwxr-xr-x, более яркий дождь на фоне. Добавлен
i18n-модуль (frontend/js/i18n.js) с переключателем EN/RU: резюме и
проекты полностью переведены, в игре переведены статичные подписи
интерфейса лобби и боя (данные от сервера остаются на русском).
This commit is contained in:
2026-08-09 21:42:57 +05:00
parent 201506bdbc
commit a1b123dd13
13 changed files with 658 additions and 186 deletions
+6 -3
View File
@@ -5,8 +5,6 @@ if (canvas && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
const chars = 'アカサタナハマヤラワ0123456789ABCDEFcacto$#@%&*'.split('');
const fontSize = 15;
const bg = getComputedStyle(document.documentElement).getPropertyValue('--color-bg').trim();
const accent = getComputedStyle(document.documentElement).getPropertyValue('--color-accent').trim();
const silver = getComputedStyle(document.documentElement).getPropertyValue('--color-silver').trim();
let columns = 0;
let drops = [];
@@ -28,7 +26,11 @@ if (canvas && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
const x = i * fontSize;
const y = drops[i] * fontSize;
ctx.fillStyle = Math.random() > 0.98 ? silver : accent;
// «голова» капли — редкая, чуть ярче, со свечением
const isHead = Math.random() > 0.94;
ctx.shadowColor = 'rgba(100, 255, 160, 0.9)';
ctx.shadowBlur = isHead ? 10 : 0;
ctx.fillStyle = isHead ? '#d2ffe1' : Math.random() > 0.98 ? '#9fa3a0' : '#00ff41';
ctx.fillText(char, x, y);
if (y > canvas.height && Math.random() > 0.975) {
@@ -37,6 +39,7 @@ if (canvas && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
drops[i]++;
}
}
ctx.shadowBlur = 0;
}
setup();