25 lines
952 B
HTML
25 lines
952 B
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
<meta http-equiv="Content-Security-Policy"
|
|
content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self';">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>{% block title %}PassKeeper{% endblock %}</title>
|
|
<!-- layout-init.js MUST be synchronous (no defer/async) so it runs before body renders -->
|
|
<script src="{{ url_for('static', filename='js/layout-init.js') }}?v={{ sv }}"></script>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/app.css') }}?v={{ sv }}">
|
|
{% block head_extra %}{% endblock %}
|
|
</head>
|
|
|
|
<body class="{% block body_class %}{% endblock %}">
|
|
{% block body %}{% endblock %}
|
|
|
|
<div id="toast" class="toast" aria-live="polite"></div>
|
|
|
|
{% block scripts %}{% endblock %}
|
|
</body>
|
|
|
|
</html> |