File size: 1,758 Bytes
21a8272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
// =========================================================
// Theme Toggle (Light / Dark)
// =========================================================

document.addEventListener("DOMContentLoaded", () => {
    const html = document.documentElement;
    const toggleBtn = document.getElementById("themeToggle");

    // Load saved theme
    let theme = localStorage.getItem("theme") || "light";
    html.dataset.theme = theme;

    if (toggleBtn) {
        toggleBtn.addEventListener("click", () => {
            theme = theme === "light" ? "dark" : "light";
            html.dataset.theme = theme;
            localStorage.setItem("theme", theme);
        });
    }

    // =========================================================
    // Animate severity bar (confidence / aggression meter)
    // =========================================================
    const severityFill = document.querySelector(".severity-fill");
    if (severityFill) {
        const targetWidth = severityFill.getAttribute("data-width");
        if (targetWidth) {
            setTimeout(() => {
                severityFill.style.width = targetWidth + "%";
            }, 100);
        }
    }

    // =========================================================
    // Smooth fade-in for result cards
    // =========================================================
    const resultCard = document.querySelector(".result-card");
    if (resultCard) {
        resultCard.style.opacity = 0;
        setTimeout(() => {
            resultCard.style.transition = "opacity 0.4s ease, transform 0.4s ease";
            resultCard.style.opacity = 1;
            resultCard.style.transform = "translateY(0)";
        }, 80);
    }
});