Files
Maxim Dolgolyov be4d43105e LearnSpace: full-stack educational whiteboard platform
Node.js/Express backend + vanilla JS frontend.
Features: real-time collaborative whiteboard (SSE), multi-page support,
LaTeX formulas, shapes/connectors, coordinate systems, number lines,
compass, zoom/pan, Catmull-Rom pencil smoothing, ruler/protractor with
rotation & resize controls, minimap navigation overlay, auto-measurements,
multi-page thumbnails sidebar, PNG export, page templates.
Student/teacher workflows: classes, assignments, library, dashboard.
Mobile responsive. SQLite (better-sqlite3).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 10:10:37 +03:00

78 lines
4.5 KiB
HTML

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>500 — Ошибка сервера</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link href="https://fonts.googleapis.com/css2?family=Unbounded:wght@400;700;800&family=Manrope:wght@400;500;600;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="/css/ls.css"/>
<style>
html, body { height: 100%; display: flex; align-items: center; justify-content: center; }
.err-wrap { text-align: center; padding: 40px 24px; max-width: 480px; }
.err-code {
font-family: 'Unbounded', sans-serif; font-size: 6rem; font-weight: 900;
background: linear-gradient(135deg, #FFB347, #F15BB5);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
background-clip: text; line-height: 1; margin-bottom: 8px;
}
.err-title { font-family: 'Unbounded', sans-serif; font-size: 1.2rem; font-weight: 800; color: var(--text); margin-bottom: 12px; }
.err-desc { font-size: 0.92rem; color: var(--text-3); line-height: 1.6; margin-bottom: 32px; }
.err-illustration {
width: 120px; height: 120px; border-radius: 50%; margin: 0 auto 28px;
background: linear-gradient(135deg, rgba(255,179,71,.15), rgba(241,91,181,.1));
border: 2px solid rgba(255,179,71,.25);
display: flex; align-items: center; justify-content: center;
}
.err-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.err-btn-primary {
padding: 11px 28px; border: none; border-radius: 99px;
background: linear-gradient(135deg, #FFB347, #F15BB5);
color: #fff; font-family: 'Manrope', sans-serif; font-size: 0.88rem; font-weight: 700;
text-decoration: none; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; transition: all .2s;
}
.err-btn-primary:hover { opacity: .88; transform: translateY(-1px); }
.err-btn-secondary {
padding: 10px 22px; border: 1.5px solid var(--border-h); border-radius: 99px;
background: transparent; color: var(--text-2); font-family: 'Manrope', sans-serif;
font-size: 0.88rem; font-weight: 600; text-decoration: none;
display: inline-flex; align-items: center; gap: 7px; transition: all .2s; cursor: pointer;
}
.err-btn-secondary:hover { border-color: var(--violet); color: var(--violet); }
.err-hint {
display: inline-flex; align-items: center; gap: 6px; margin-bottom: 24px;
padding: 8px 16px; border-radius: 99px;
background: rgba(255,179,71,.08); border: 1px solid rgba(255,179,71,.2);
font-size: 0.78rem; color: #FFB347; font-weight: 600;
}
</style>
</head>
<body>
<div class="err-wrap">
<div class="err-illustration">
<svg width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="#FFB347" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3z"/>
<path d="M12 9v4M12 17h.01"/>
</svg>
</div>
<div class="err-code">500</div>
<div class="err-title">Что-то пошло не так</div>
<div class="err-hint">
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 8v4M12 16h.01"/></svg>
Ошибка на стороне сервера — мы уже в курсе
</div>
<div class="err-desc">Произошла внутренняя ошибка. Попробуй перезагрузить страницу или вернуться позже.</div>
<div class="err-actions">
<button class="err-btn-primary" onclick="location.reload()">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/></svg>
Перезагрузить
</button>
<a class="err-btn-secondary" href="/dashboard">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
На главную
</a>
</div>
</div>
</body>
</html>