be4d43105e
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>
78 lines
4.5 KiB
HTML
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>
|