Spaces:
Runtime error
Runtime error
File size: 1,727 Bytes
701628b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>One Step Greener – Attendance</title>
<meta name="description" content="One Step Greener – Face recognition attendance for waste management">
<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=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="app-shell">
{% block content %}{% endblock %}
</div>
<!-- Global snackbar (popup / snack bar) for alerts -->
<div id="appSnackbar" class="snackbar" role="alert" aria-live="polite">
<span class="snackbar-icon"></span>
<span class="snackbar-message"></span>
</div>
<script>
window.showSnackbar = function(message, type) {
type = type || 'info';
var el = document.getElementById('appSnackbar');
if (!el) return;
el.className = 'snackbar snackbar-' + type + ' show';
var icon = el.querySelector('.snackbar-icon');
var msg = el.querySelector('.snackbar-message');
icon.textContent = type === 'success' ? '✓' : (type === 'error' ? '!' : 'ℹ');
if (msg) msg.textContent = message;
clearTimeout(window._snackbarTimer);
window._snackbarTimer = setTimeout(function() { el.classList.remove('show'); }, 4500);
};
</script>
{% block scripts %}{% endblock %}
</body>
</html>
|