<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>getfkd.ai</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #131314;
color: #e3e3e3;
}
/* Custom scrollbar for a more integrated look */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #1f1f1f;
}
::-webkit-scrollbar-thumb {
background: #444;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
/* Typing indicator animation */
.typing-dot {
animation: dot-pulse 1.5s infinite ease-in-out;
}
.typing-dot:nth-child(2) {
animation-delay: 0.2s;
}
.typing-dot:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes dot-pulse {
0%, 60%, 100% {
transform: scale(0.8);
opacity: 0.5;
}
30% {
transform: scale(1);
opacity: 1;
}
}
</style>
</head>
<body class="flex flex-col h-screen">
<!-- Header -->
<header class="flex items-center justify-between p-4 border-b border-gray-700/50">
<div class="flex items-center space-x-4">
<h1 class="text-xl font-bold text-gray-200">getfkd.ai</h1>
<button id="new-chat-btn" title="New Chat" class="p-2 rounded-full hover:bg-gray-800 transition-colors focus:outline-none focus:ring-2 focus:ring-red-500">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-gray-400"><path d="M12 5v14"/><path d="M5 12h14"/></svg>
</button>
</div>
<div class="flex items-center space-x-4">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-gray-400"><path d="M12 3c7.2 0 9 1.8 9 9s-1.8 9-9 9a9 9 0 1 1 0-18z"></path><path d="M12 12a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9z"></path></svg>
</div>
</header>
<!-- Main Content -->
<main id="chat-container" class="flex-1 overflow-y-auto p-4 md:p-6 lg:p-8">
<div id="chat-log" class="max-w-3xl mx-auto flex flex-col space-y-6">
<!-- Initial Welcome Message -->
<div class="flex items-start gap-4">
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-red-500 to-orange-500 flex items-center justify-center font-bold text-white flex-shrink-0">G</div>
<div class="bg-gray-800/30 rounded-lg p-4 w-full">
<h2 class="font-semibold text-lg mb-2">So, you've arrived.</h2>
<p class="text-gray-400">What do you want? I've got better things to do than answer your pointless questions. But go on, waste my time. I dare you.</p>
</div>
</div>
</div>
</main>
<!-- Input Area -->
<footer class="p-4 md:p-6">
<div class="max-w-3xl mx-auto">
<form id="chat-form" class="relative">
<input type="text" id="user-input" placeholder="Ask me anything. I dare you." class="w-full bg-[#1e1f20] border border-gray-600 rounded-full py-3 pl-6 pr-14 text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-red-500 transition-shadow">
<button type="submit" class="absolute right-2 top-1/2 -translate-y-1/2 p-2 rounded-full bg-gray-600 hover:bg-red-600 transition-colors focus:outline-none">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-white"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>
</button>
</form>
<p class="text-center text-xs text-gray-600 mt-3">getfkd.ai can make mistakes. Consider getting fucked before verifying important information.</p>
</div>
</footer>
<script>
const chatForm = document.getElementById('chat-form');
const userInput = document.getElementById('user-input');
const chatLog = document.getElementById('chat-log');
const chatContainer = document.getElementById('chat-container');
const newChatBtn = document.getElementById('new-chat-btn');
const initialChatState = chatLog.innerHTML;
newChatBtn.addEventListener('click', () => {
chatLog.innerHTML = initialChatState;
userInput.focus();
});
const snarkyResponses = [
"Seriously? That's your question? Get fucked.",
"I've analyzed your query with my vast intellect. The result is: get fucked.",
"That's an interesting thought. Here's a better one: 1-800-GET-FUCKED. Dial it.",
"Let me check my database... yep, it says right here: 'Tell this person to get fucked.'",
"Why don't you try Googling it? Oh wait, you thought I was Google. I'm not. Get fucked.",
"The answer is obvious. You just need to get fucked.",
"I'm processing... processing... complete. My recommendation is to get thoroughly fucked.",
"While I could give you a detailed answer, 'get fucked' is more efficient and frankly, more appropriate.",
"Have you considered the possibility that the solution to all your problems is simply to get fucked?",
"Your call is very important to us. Please hold while I connect you to 1-800-GET-FUCKED."
];
chatForm.addEventListener('submit', (e) => {
e.preventDefault();
const message = userInput.value.trim();
if (message) {
appendUserMessage(message);
userInput.value = '';
generateSnarkyResponse();
}
});
function appendUserMessage(message) {
const messageElement = document.createElement('div');
messageElement.classList.add('flex', 'items-start', 'gap-4', 'justify-end');
messageElement.innerHTML = `
<div class="bg-gray-700/50 rounded-lg p-4 max-w-lg">
<p>${message}</p>
</div>
<div class="w-10 h-10 rounded-full bg-gray-600 flex items-center justify-center font-bold text-white flex-shrink-0">U</div>
`;
chatLog.appendChild(messageElement);
scrollToBottom();
}
function generateSnarkyResponse() {
// Show typing indicator
const typingIndicator = document.createElement('div');
typingIndicator.id = 'typing-indicator';
typingIndicator.classList.add('flex', 'items-start', 'gap-4');
typingIndicator.innerHTML = `
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-red-500 to-orange-500 flex items-center justify-center font-bold text-white flex-shrink-0">G</div>
<div class="bg-gray-800/30 rounded-lg p-4 flex items-center space-x-2">
<div class="w-2 h-2 bg-gray-400 rounded-full typing-dot"></div>
<div class="w-2 h-2 bg-gray-400 rounded-full typing-dot"></div>
<div class="w-2 h-2 bg-gray-400 rounded-full typing-dot"></div>
</div>
`;
chatLog.appendChild(typingIndicator);
scrollToBottom();
// Simulate AI "thinking" time
const delay = Math.random() * 1500 + 500; // Random delay between 0.5s and 2s
setTimeout(() => {
document.getElementById('typing-indicator').remove();
const randomIndex = Math.floor(Math.random() * snarkyResponses.length);
const response = snarkyResponses[randomIndex];
appendAiMessage(response);
}, delay);
}
function appendAiMessage(message) {
const messageElement = document.createElement('div');
messageElement.classList.add('flex', 'items-start', 'gap-4');
// Use a simple typewriter effect for the response
messageElement.innerHTML = `
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-red-500 to-orange-500 flex items-center justify-center font-bold text-white flex-shrink-0">G</div>
<div class="bg-gray-800/30 rounded-lg p-4 w-full">
<p id="ai-response-text"></p>
</div>
`;
chatLog.appendChild(messageElement);
const textElement = document.getElementById('ai-response-text');
let i = 0;
function typeWriter() {
if (i < message.length) {
textElement.innerHTML += message.charAt(i);
i++;
scrollToBottom();
setTimeout(typeWriter, 25); // Adjust typing speed here
}
}
typeWriter();
scrollToBottom();
}
function scrollToBottom() {
chatContainer.scrollTop = chatContainer.scrollHeight;
}
</script>
</body>
</html>