Files
dustins-fault/www/index.html
hobokenchicken 9579f814c5 fix: remove adult content to prevent site flagging
- Replaced profane words with family-friendly alternatives:
  - 'clusterfuck' → 'mess'
  - 'fuckups' → 'incidents'
  - 'bullshit' → 'questionable'
  - 'shit' → removed or replaced
- Updated CSS class names from 'shit-list' to 'blame-list'
- Removed encouragement to use profanity in form placeholder
- Updated JavaScript variable names and text content
- Maintained humorous tone while making site family-friendly
- Should prevent adult content filters from flagging the site
2026-03-02 12:14:00 -05:00

842 lines
27 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>IT'S DUSTIN'S FAULT — Official Blame Portal</title>
<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=IBM+Plex+Mono:wght@400;600;700&family=Share+Tech+Mono&display=swap" rel="stylesheet">
<style>
:root {
--terminal-bg: #000;
--terminal-text: #0f0;
--terminal-red: #f00;
--terminal-yellow: #ff0;
--terminal-cyan: #0ff;
--terminal-magenta: #f0f;
--terminal-amber: #ff9900;
--terminal-green: #00ff00;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'IBM Plex Mono', monospace;
background: var(--terminal-bg);
color: var(--terminal-text);
min-height: 100vh;
padding: 10px;
overflow-x: hidden;
position: relative;
}
@media (min-width: 768px) {
body {
padding: 20px;
}
}
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: repeating-linear-gradient(
0deg,
rgba(0, 255, 0, 0.03) 0px,
rgba(0, 255, 0, 0.03) 1px,
transparent 1px,
transparent 2px
);
pointer-events: none;
z-index: 9999;
}
.scanline {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(to bottom, transparent, rgba(0, 255, 0, 0.3), transparent);
animation: scan 3s linear infinite;
pointer-events: none;
z-index: 10000;
}
@keyframes scan {
0% { top: 0; }
100% { top: 100%; }
}
.header {
text-align: center;
margin-bottom: 20px;
padding: 15px;
border: 3px solid var(--terminal-red);
background: rgba(255, 0, 0, 0.1);
position: relative;
overflow: hidden;
}
@media (min-width: 768px) {
.header {
margin-bottom: 30px;
padding: 20px;
}
}
.header::before {
content: '⚠️ WARNING: DUSTIN DETECTED ⚠️';
position: absolute;
top: 0;
left: 0;
right: 0;
background: var(--terminal-red);
color: black;
font-weight: bold;
padding: 5px;
animation: warning-blink 1s infinite;
}
.dustin-face {
font-size: 3em;
margin-bottom: 10px;
animation: face-shake 3s infinite;
}
@keyframes face-shake {
0%, 100% { transform: rotate(0deg); }
25% { transform: rotate(5deg); }
75% { transform: rotate(-5deg); }
}
@keyframes warning-blink {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.title {
font-family: 'Share Tech Mono', monospace;
font-size: 2em;
color: var(--terminal-red);
text-shadow: 0 0 10px var(--terminal-red);
margin: 15px 0;
letter-spacing: 1px;
}
@media (min-width: 480px) {
.title {
font-size: 2.5em;
letter-spacing: 2px;
}
}
@media (min-width: 768px) {
.title {
font-size: 3.5em;
margin: 20px 0;
}
}
.subtitle {
color: var(--terminal-yellow);
font-size: 1.2em;
margin-bottom: 10px;
}
.tagline {
color: var(--terminal-cyan);
font-style: italic;
margin-bottom: 20px;
}
.stats-grid {
display: grid;
grid-template-columns: 1fr;
gap: 15px;
margin-bottom: 30px;
}
@media (min-width: 480px) {
.stats-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 768px) {
.stats-grid {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
}
}
.stat-card {
background: rgba(0, 255, 0, 0.05);
border: 1px solid var(--terminal-green);
padding: 15px;
border-radius: 5px;
position: relative;
overflow: hidden;
}
@media (min-width: 768px) {
.stat-card {
padding: 20px;
}
}
.stat-card.critical {
border-color: var(--terminal-red);
background: rgba(255, 0, 0, 0.1);
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { box-shadow: 0 0 5px var(--terminal-red); }
50% { box-shadow: 0 0 20px var(--terminal-red); }
}
.stat-label {
color: var(--terminal-cyan);
font-size: 0.9em;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 10px;
}
.stat-value {
font-size: 1.8em;
font-weight: bold;
color: var(--terminal-red);
}
@media (min-width: 480px) {
.stat-value {
font-size: 2.2em;
}
}
@media (min-width: 768px) {
.stat-value {
font-size: 2.5em;
}
}
.stat-value.green {
color: var(--terminal-green);
}
.stat-value.yellow {
color: var(--terminal-yellow);
}
.rage-meter {
height: 10px;
background: rgba(255, 0, 0, 0.2);
border-radius: 5px;
margin-top: 10px;
overflow: hidden;
}
.rage-fill {
height: 100%;
background: linear-gradient(90deg, var(--terminal-red), var(--terminal-amber));
border-radius: 5px;
transition: width 0.5s ease;
}
.blame-list {
margin-top: 20px;
padding-top: 15px;
border-top: 1px solid var(--terminal-green);
}
.blame-list-title {
color: var(--terminal-yellow);
font-weight: bold;
margin-bottom: 10px;
font-size: 1.1em;
}
.blame-item {
padding: 8px 0;
border-bottom: 1px dashed rgba(0, 255, 0, 0.3);
color: var(--terminal-text);
font-size: 0.9em;
}
.blame-item:last-child {
border-bottom: none;
}
.footer {
text-align: center;
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid var(--terminal-green);
color: var(--terminal-cyan);
font-size: 0.9em;
}
.footer p {
margin: 10px 0;
}
.easter-egg {
color: var(--terminal-magenta);
cursor: pointer;
text-decoration: underline;
margin-top: 15px;
display: inline-block;
}
.easter-egg:hover {
color: var(--terminal-red);
}
.main-content {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
margin-bottom: 30px;
}
@media (min-width: 1024px) {
.main-content {
grid-template-columns: 2fr 1fr;
gap: 30px;
}
}
.incident-log {
background: rgba(0, 0, 0, 0.8);
border: 2px solid var(--terminal-green);
padding: 15px;
border-radius: 5px;
max-height: 400px;
overflow-y: auto;
}
@media (min-width: 768px) {
.incident-log {
padding: 20px;
max-height: 600px;
}
}
.sidebar {
background: rgba(0, 0, 0, 0.8);
border: 2px solid var(--terminal-green);
padding: 20px;
border-radius: 5px;
display: flex;
flex-direction: column;
gap: 20px;
}
@media (min-width: 768px) {
.sidebar {
padding: 25px;
}
}
.log-header {
display: flex;
flex-direction: column;
gap: 15px;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid var(--terminal-green);
}
@media (min-width: 768px) {
.log-header {
flex-direction: row;
justify-content: space-between;
align-items: center;
}
}
.log-title {
font-size: 1.5em;
color: var(--terminal-yellow);
}
.controls {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
}
@media (min-width: 768px) {
.controls {
justify-content: flex-end;
}
}
.control-btn {
background: var(--terminal-bg);
border: 1px solid var(--terminal-cyan);
color: var(--terminal-cyan);
padding: 8px 15px;
cursor: pointer;
font-family: 'IBM Plex Mono', monospace;
border-radius: 3px;
transition: all 0.3s;
}
.control-btn:hover {
background: var(--terminal-cyan);
color: var(--terminal-bg);
}
.control-btn.danger {
border-color: var(--terminal-red);
color: var(--terminal-red);
}
.control-btn.danger:hover {
background: var(--terminal-red);
color: var(--terminal-bg);
}
.form-group {
margin-bottom: 20px;
}
.form-group label {
display: block;
color: var(--terminal-yellow);
margin-bottom: 8px;
font-weight: bold;
}
.form-group select,
.form-group textarea {
width: 100%;
background: rgba(0, 0, 0, 0.7);
border: 1px solid var(--terminal-green);
color: var(--terminal-text);
font-family: 'IBM Plex Mono', monospace;
padding: 10px;
border-radius: 3px;
font-size: 0.9em;
}
.form-group select:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--terminal-cyan);
box-shadow: 0 0 10px var(--terminal-cyan);
}
.form-group textarea {
min-height: 100px;
resize: vertical;
}
.blame-generator, .apology-generator {
background: rgba(0, 0, 0, 0.7);
border: 2px solid var(--terminal-green);
padding: 20px;
border-radius: 5px;
margin-bottom: 20px;
}
.blame-title, .apology-title {
color: var(--terminal-red);
font-weight: bold;
text-align: center;
margin-bottom: 15px;
font-size: 1.2em;
text-transform: uppercase;
letter-spacing: 1px;
border-bottom: 1px solid var(--terminal-green);
padding-bottom: 10px;
}
.apology-title {
color: var(--terminal-magenta);
}
.apology-display {
background: rgba(0, 0, 0, 0.9);
border: 1px solid var(--terminal-magenta);
padding: 15px;
border-radius: 3px;
min-height: 80px;
margin-bottom: 15px;
font-style: italic;
color: var(--terminal-text);
}
.submit-btn, .generate-btn, .nuclear-option {
background: var(--terminal-bg);
border: 2px solid var(--terminal-red);
color: var(--terminal-red);
padding: 12px 20px;
cursor: pointer;
font-family: 'IBM Plex Mono', monospace;
font-weight: bold;
border-radius: 5px;
transition: all 0.3s;
width: 100%;
margin-top: 15px;
text-transform: uppercase;
letter-spacing: 1px;
}
.submit-btn:hover {
background: var(--terminal-red);
color: var(--terminal-bg);
box-shadow: 0 0 15px var(--terminal-red);
}
.generate-btn {
border-color: var(--terminal-magenta);
color: var(--terminal-magenta);
}
.generate-btn:hover {
background: var(--terminal-magenta);
color: var(--terminal-bg);
box-shadow: 0 0 15px var(--terminal-magenta);
}
.nuclear-option {
border-color: var(--terminal-amber);
color: var(--terminal-amber);
font-size: 1.1em;
padding: 15px;
margin-top: 20px;
animation: nuclear-pulse 2s infinite;
}
.nuclear-option:hover {
background: var(--terminal-amber);
color: var(--terminal-bg);
box-shadow: 0 0 20px var(--terminal-amber);
animation: none;
}
@keyframes nuclear-pulse {
0%, 100% { box-shadow: 0 0 10px var(--terminal-amber); }
50% { box-shadow: 0 0 25px var(--terminal-amber); }
}
.incident {
margin-bottom: 15px;
padding: 15px;
border-left: 4px solid var(--terminal-green);
background: rgba(0, 255, 0, 0.05);
animation: fadeIn 0.5s;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
</style>
</head>
<body>
<div class="scanline"></div>
<div class="header">
<div class="dustin-face">🤦‍♂️</div>
<h1 class="title">IT'S DUSTIN'S FAULT</h1>
<div class="subtitle">Official Corporate Blame Allocation System</div>
<div class="tagline">Because someone has to take responsibility for this mess</div>
</div>
<div class="stats-grid">
<div class="stat-card critical">
<div class="stat-label">Total Incidents Blamed on Dustin</div>
<div class="stat-value" id="total-incidents">1,247</div>
<div class="rage-meter">
<div class="rage-fill" id="rage-meter" style="width: 100%"></div>
</div>
</div>
<div class="stat-card">
<div class="stat-label">Current Blame Percentage</div>
<div class="stat-value" id="blame-percentage">100%</div>
<div class="stat-label">(Yes, even for things that haven't happened yet)</div>
</div>
<div class="stat-card">
<div class="stat-label">Dustin's Apologies Generated</div>
<div class="stat-value green" id="apologies-count">42</div>
<div class="stat-label">(All of them questionable)</div>
</div>
<div class="stat-card">
<div class="stat-label">Hours Wasted Blaming Dustin</div>
<div class="stat-value yellow" id="hours-wasted">3,728</div>
<div class="stat-label">(Productivity: -∞)</div>
</div>
</div>
<div class="main-content">
<div class="incident-log">
<div class="log-header">
<div class="log-title">LIVE INCIDENT FEED — Everything is Dustin's Fault</div>
<div class="controls">
<button class="control-btn" id="auto-add">Auto-Blame Dustin</button>
<button class="control-btn danger" id="clear-log">Clear Log (Dustin's Idea)</button>
<span class="sound-toggle" id="sound-toggle">🔊 Sound: ON</span>
</div>
</div>
<div id="log">
<!-- Incidents will be added here -->
</div>
<div class="blame-list">
<div class="blame-list-title">Dustin's Greatest Hits (Recent Incidents):</div>
<div class="blame-item">Spilled coffee on the CEO's laptop during board meeting</div>
<div class="blame-item">Accidentally deleted the entire customer database (twice)</div>
<div class="blame-item">Set the office thermostat to "Sahara Desert" mode</div>
<div class="blame-item">Replied-all to company-wide email with questionable content</div>
<div class="blame-item">Scheduled server maintenance for Christmas Day</div>
</div>
</div>
<div class="sidebar">
<div class="blame-generator">
<div class="blame-title">OFFICIAL BLAME SUBMISSION FORM</div>
<form class="blame-form" id="blame-form">
<div class="form-group">
<label for="severity">How Bad Did Dustin Mess Up?</label>
<select id="severity" required>
<option value="minor">Minor Inconvenience (Dustin's specialty)</option>
<option value="warning">Warning Level (Dustin was involved)</option>
<option value="critical" selected>Critical Failure (Classic Dustin)</option>
<option value="apocalyptic">Apocalyptic Disaster (Dustin was in charge)</option>
</select>
</div>
<div class="form-group">
<label for="description">Describe Dustin's Latest Mess-up:</label>
<textarea id="description" placeholder="Be specific. We won't judge." required></textarea>
</div>
<button type="submit" class="submit-btn">BLAME DUSTIN OFFICIALLY</button>
</form>
</div>
<div class="apology-generator">
<div class="apology-title">DUSTIN'S APOLOGY GENERATOR™</div>
<div class="apology-display" id="apology-display">
Click below to generate a fresh questionable apology from Dustin...
</div>
<button class="generate-btn" id="generate-apology">GENERATE QUESTIONABLE APOLOGY</button>
<div style="text-align: center; margin-top: 10px; font-size: 0.8em; color: var(--terminal-magenta);">
Sincerity Level: <span id="sincerity-level">0%</span>
</div>
</div>
<button class="nuclear-option" id="nuclear-option">
🚨 NUCLEAR OPTION: FIRE DUSTIN 🚨
</button>
<div style="text-align: center; margin-top: 20px;">
<a href="/cgi-bin/blame-dustin.cgi" style="color: var(--terminal-cyan); text-decoration: none; border: 1px solid var(--terminal-cyan); padding: 10px; display: block;">
🐄 ACCESS THE COWSAY BLAME INTERFACE 🐄
</a>
</div>
</div>
</div>
<div class="footer">
<p>© 2026 Corporate Blame Allocation Division — All faults reserved.</p>
<p>This system is 100% accurate because Dustin is always at fault. Don't @ us.</p>
<p>Total system uptime: <span id="uptime">99.9%</span> (the 0.1% downtime was Dustin's fault too)</p>
<p class="easter-egg" id="easter-egg">Click here if you actually like Dustin (you monster)</p>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
// DOM Elements
const blameForm = document.getElementById('blame-form');
const generateApologyBtn = document.getElementById('generate-apology');
const nuclearOptionBtn = document.getElementById('nuclear-option');
const autoAddBtn = document.getElementById('auto-add');
const clearLogBtn = document.getElementById('clear-log');
const soundToggle = document.getElementById('sound-toggle');
const logContainer = document.getElementById('log');
const totalIncidents = document.getElementById('total-incidents');
const apologiesCount = document.getElementById('apologies-count');
const hoursWasted = document.getElementById('hours-wasted');
const apologyDisplay = document.getElementById('apology-display');
const sincerityLevel = document.getElementById('sincerity-level');
const easterEgg = document.getElementById('easter-egg');
// State
let soundEnabled = true;
let incidentCount = 1247;
let apologyCount = 42;
let hoursCount = 3728;
// Incident templates
const incidents = [
"Dustin forgot to renew the SSL certificate — again.",
"Dustin scheduled the database backup during peak hours.",
"Dustin 'accidentally' pushed to production on a Friday afternoon.",
"Dustin's 'quick fix' broke the entire login system.",
"Dustin used the CEO's account to test the new spam filter.",
"Dustin thought 'rm -rf /' was a good way to free up disk space.",
"Dustin set the password policy to 'password123' for 'convenience'.",
"Dustin uploaded the customer database to a public GitHub repo.",
"Dustin replied to a phishing email with admin credentials.",
"Dustin thought blockchain would solve our inventory tracking issues."
];
// Apology templates
const apologies = [
"My bad, I thought that was the test environment. Whoops!",
"In my defense, the documentation was unclear. And by unclear, I mean non-existent.",
"That was a feature, not a bug. You just don't understand my vision.",
"It worked on my machine. Must be a you problem.",
"I was following industry best practices. From 1998.",
"The AI told me to do it. Can't argue with the algorithm, right?",
"I was trying to be proactive. Turns out, proactivity causes outages.",
"It's not my fault — the system was designed to fail. I just... helped.",
"I was optimizing for scalability. Current scalability: zero.",
"Look, we all make mistakes. Mine just happen to take down entire systems."
];
// Sound effects
function playSound(type) {
if (!soundEnabled) return;
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const oscillator = audioContext.createOscillator();
const gainNode = audioContext.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioContext.destination);
switch(type) {
case 'blame':
oscillator.frequency.setValueAtTime(440, audioContext.currentTime);
oscillator.type = 'sawtooth';
gainNode.gain.setValueAtTime(0.1, audioContext.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
oscillator.start();
oscillator.stop(audioContext.currentTime + 0.5);
break;
case 'apology':
oscillator.frequency.setValueAtTime(220, audioContext.currentTime);
oscillator.type = 'sine';
gainNode.gain.setValueAtTime(0.05, audioContext.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 1);
oscillator.start();
oscillator.stop(audioContext.currentTime + 1);
break;
case 'nuclear':
oscillator.frequency.setValueAtTime(55, audioContext.currentTime);
oscillator.frequency.exponentialRampToValueAtTime(880, audioContext.currentTime + 2);
oscillator.type = 'square';
gainNode.gain.setValueAtTime(0.2, audioContext.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 2);
oscillator.start();
oscillator.stop(audioContext.currentTime + 2);
break;
}
}
// Add incident to log
function addIncident(text, severity = 'critical') {
const incident = document.createElement('div');
incident.className = 'incident';
const timestamp = new Date().toLocaleTimeString();
const severityColors = {
minor: 'var(--terminal-green)',
warning: 'var(--terminal-yellow)',
critical: 'var(--terminal-red)',
apocalyptic: 'var(--terminal-magenta)'
};
incident.innerHTML = `
<div style="display: flex; justify-content: space-between; margin-bottom: 5px;">
<strong style="color: ${severityColors[severity]}">[${severity.toUpperCase()}]</strong>
<span style="color: var(--terminal-cyan); font-size: 0.9em;">${timestamp}</span>
</div>
<div>${text}</div>
`;
logContainer.insertBefore(incident, logContainer.firstChild);
// Limit log to 20 items
if (logContainer.children.length > 20) {
logContainer.removeChild(logContainer.lastChild);
}
// Update stats
incidentCount++;
hoursCount += Math.floor(Math.random() * 5) + 1;
updateStats();
// Play sound
playSound('blame');
}
// Update statistics display
function updateStats() {
totalIncidents.textContent = incidentCount.toLocaleString();
apologiesCount.textContent = apologyCount;
hoursWasted.textContent = hoursCount.toLocaleString();
}
// Generate random apology
function generateApology() {
const apology = apologies[Math.floor(Math.random() * apologies.length)];
const sincerity = Math.floor(Math.random() * 101);
apologyDisplay.textContent = `"${apology}"`;
sincerityLevel.textContent = `${sincerity}%`;
apologyCount++;
updateStats();
// Play sound
playSound('apology');
// Visual feedback
apologyDisplay.style.animation = 'none';
setTimeout(() => {
apologyDisplay.style.animation = 'fadeIn 0.5s';
}, 10);
}
// Nuclear option
function activateNuclearOption() {
if (!confirm("🚨 WARNING: This will fire Dustin permanently! 🚨\n\nAre you absolutely sure? (This action cannot be undone and will probably make things worse)")) {
return;
}
// Clear the log
logContainer.innerHTML = '';
// Add nuclear incident
addIncident("🚨 NUCLEAR OPTION ACTIVATED: DUSTIN HAS BEEN TERMINATED 🚨", 'apocalyptic');
addIncident("System stability: CRITICAL - Without Dustin to blame, reality is collapsing", 'apocalyptic');
addIncident("Paradox detected: If Dustin is fired, who do we blame for firing Dustin?", 'apocalyptic');
// Update stats dramatically
incidentCount += 1000;
hoursCount += 500;
updateStats();
// Play nuclear sound
playSound('nuclear');
// Visual effects
document.body.style.animation = 'none';
setTimeout(() => {
document.body.style.animation = 'shake 0.5s';
}, 10);
// Disable nuclear button
nuclearOptionBtn.disabled = true;
nuclearOptionBtn.textContent = "🚨 DUSTIN TERMINATED 🚨";
nuclearOptionBtn.style.opacity = '0.5';
nuclearOptionBtn.style.cursor = 'not-allowed';
}
// Event Listeners
blameForm.addEventListener('submit', function(e) {
e.preventDefault();
const severity = document.getElementById('severity').value;
const description = document.getElementById('description').value.trim();
if (!description) {
alert("Please describe Dustin's mess-up. Be creative!");
return;
}
addIncident(description, severity);
// Reset form
document.getElementById('description').value = '';
document.getElementById('severity').value = 'critical';
// Visual feedback
blameForm.style.animation = 'none';
setTimeout(() => {
blameForm.style.animation = 'fadeIn 0.5s';
}, 10);
});
generateApologyBtn.addEventListener('click', generateApology);
nuclearOptionBtn.addEventListener('click', activateNuclearOption);
autoAddBtn.addEventListener('click', function() {
const randomIncident = incidents[Math.floor(Math.random() * incidents.length)];
const severities = ['minor', 'warning', 'critical', 'apocalyptic'];
const randomSeverity = severities[Math.floor(Math.random() * severities.length)];
addIncident(randomIncident, randomSeverity);
});
clearLogBtn.addEventListener('click', function() {
if (confirm("Clear the entire incident log? (Dustin probably suggested this)")) {
logContainer.innerHTML = '';
addIncident("Incident log cleared. This was definitely Dustin's idea.", 'warning');
}
});
soundToggle.addEventListener('click', function() {
soundEnabled = !soundEnabled;
soundToggle.textContent = soundEnabled ? "🔊 Sound: ON" : "🔇 Sound: OFF";
});
easterEgg.addEventListener('click', function() {
alert("You monster! Dustin actually appreciates your support.\n\nHe's still at fault for everything, but thanks for trying.");
addIncident("Someone actually clicked the 'like Dustin' button. Investigation required.", 'critical');
});
// Add shake animation for nuclear option
const style = document.createElement('style');
style.textContent = `
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); }
20%, 40%, 60%, 80% { transform: translateX(10px); }
}
`;
document.head.appendChild(style);
// Initialize with some incidents
setTimeout(() => {
addIncident("System initialized. Ready to blame Dustin for everything.", 'warning');
addIncident("Dustin already blamed for today's coffee machine outage.", 'minor');
addIncident("Dustin suspected in DNS resolution issues. Investigation ongoing.", 'critical');
}, 1000);
});
</script>
</body>
</html>