ys 6 miesięcy temu
rodzic
commit
4659ff9bde

+ 2 - 2
exgame/index.html

@@ -3,8 +3,8 @@
   <head>
     <meta charset="UTF-8" />
     <link rel="icon" type="image/svg+xml" href="/vite.svg" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Vite + Vue</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <title>🎊 特价优惠广告页 🎊</title>
   </head>
   <body>
     <div id="app"></div>

+ 12 - 22
exgame/src/App.vue

@@ -1,18 +1,13 @@
-<script setup>
-// 不需要额外引入组件,路由会自动处理
-</script>
-
 <template>
-  <div class="app-container">
-    <!-- 路由视图 -->
-    <router-view v-slot="{ Component }">
-      <transition name="fade" mode="out-in">
-        <component :is="Component" />
-      </transition>
-    </router-view>
+  <div id="app">
+    <Home />
   </div>
 </template>
 
+<script setup>
+import Home from './views/Home.vue'
+</script>
+
 <style>
 /* 全局样式 */
 * {
@@ -21,21 +16,16 @@
   box-sizing: border-box;
 }
 
-html, body {
-  height: 100%;
-  width: 100%;
-  overflow: hidden;
-}
-
 body {
-  font-family: 'Arial', sans-serif;
-  background-color: #f5f5f5;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
 }
 
-.app-container {
-  width: 100%;
+#app {
+  width: 100vw;
   height: 100vh;
-  position: relative;
+  overflow: hidden;
 }
 
 /* 淡入淡出过渡效果 */

+ 0 - 448
exgame/src/components/AnnoyingEffects.vue

@@ -1,448 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-const showCursor = ref(false);
-const cursorPosition = ref({ x: 0, y: 0 });
-const showFakeError = ref(false);
-const showFakeUpdate = ref(false);
-const showAutoPopup = ref(false);
-const redirectTimer = ref(null);
-const mouseTrackInterval = ref(null);
-const autoPopupInterval = ref(null);
-
-// 随机弹窗文本
-const popupTexts = [
-  "您的设备已被锁定!请立即支付解锁费用!",
-  "警告:您的账户已被盗用!请立即验证身份!",
-  "检测到您的设备性能下降80%!点击立即优化!",
-  "恭喜!您是第10000000位访问者!点击领取奖品!",
-  "系统检测到您的浏览器已过期!立即更新!",
-  "您的IP地址已被记录,您正在访问违规内容!",
-  "警告:您的设备已感染5个高危病毒!立即清除!"
-];
-
-// 跟踪鼠标位置
-const trackMouse = (e) => {
-  cursorPosition.value = {
-    x: e.clientX,
-    y: e.clientY
-  };
-};
-
-// 显示跟随鼠标的弹窗
-const showMouseFollower = () => {
-  showCursor.value = true;
-  document.addEventListener('mousemove', trackMouse);
-  
-  // 每隔一段时间改变跟随鼠标的内容
-  mouseTrackInterval.value = setInterval(() => {
-    // 切换显示状态,制造闪烁效果
-    showCursor.value = !showCursor.value;
-    setTimeout(() => {
-      showCursor.value = true;
-    }, 100);
-  }, 3000);
-};
-
-// 随机跳转页面
-const randomRedirect = () => {
-  const pages = ['/ad', '/virus', '/winning'];
-  const randomPage = pages[Math.floor(Math.random() * pages.length)];
-  router.push(randomPage);
-};
-
-// 显示假系统错误
-const showSystemError = () => {
-  showFakeError.value = true;
-  
-  // 5秒后自动跳转
-  setTimeout(() => {
-    showFakeError.value = false;
-    randomRedirect();
-  }, 5000);
-};
-
-// 显示假更新提示
-const showUpdateNotice = () => {
-  showFakeUpdate.value = true;
-};
-
-// 自动弹出广告
-const startAutoPopups = () => {
-  autoPopupInterval.value = setInterval(() => {
-    showAutoPopup.value = true;
-    
-    // 3秒后隐藏,然后再次显示
-    setTimeout(() => {
-      showAutoPopup.value = false;
-    }, 3000);
-  }, 8000);
-};
-
-// 禁用右键菜单
-const disableRightClick = () => {
-  document.addEventListener('contextmenu', (e) => {
-    e.preventDefault();
-    showSystemError();
-    return false;
-  });
-};
-
-// 禁用后退按钮
-const disableBackButton = () => {
-  window.history.pushState(null, "", window.location.href);
-  window.onpopstate = function() {
-    window.history.pushState(null, "", window.location.href);
-    showUpdateNotice();
-  };
-};
-
-// 随机开始重定向倒计时
-const startRedirectTimer = () => {
-  const randomTime = Math.floor(Math.random() * 20000) + 10000; // 10-30秒
-  redirectTimer.value = setTimeout(() => {
-    randomRedirect();
-  }, randomTime);
-};
-
-// 创建全屏覆盖层
-const createFullscreenOverlay = () => {
-  const overlay = document.createElement('div');
-  overlay.style.position = 'fixed';
-  overlay.style.top = '0';
-  overlay.style.left = '0';
-  overlay.style.width = '100vw';
-  overlay.style.height = '100vh';
-  overlay.style.backgroundColor = 'transparent';
-  overlay.style.zIndex = '9998';
-  document.body.appendChild(overlay);
-  
-  overlay.addEventListener('click', (e) => {
-    e.stopPropagation();
-    showSystemError();
-  });
-};
-
-onMounted(() => {
-  // 延迟启动各种恶心效果
-  setTimeout(() => {
-    showMouseFollower();
-    disableRightClick();
-    disableBackButton();
-    startAutoPopups();
-    startRedirectTimer();
-    createFullscreenOverlay();
-    
-    // 随机决定是否显示系统错误
-    if (Math.random() > 0.5) {
-      setTimeout(() => {
-        showSystemError();
-      }, 5000);
-    }
-  }, 2000);
-});
-
-onUnmounted(() => {
-  // 清理所有定时器和事件监听
-  document.removeEventListener('mousemove', trackMouse);
-  clearInterval(mouseTrackInterval.value);
-  clearInterval(autoPopupInterval.value);
-  clearTimeout(redirectTimer.value);
-});
-</script>
-
-<template>
-  <div class="annoying-effects-container">
-    <!-- 鼠标跟随弹窗 -->
-    <div 
-      v-if="showCursor" 
-      class="cursor-follower"
-      :style="{
-        left: cursorPosition.x + 'px',
-        top: cursorPosition.y + 'px'
-      }"
-    >
-      <div class="cursor-content">
-        <p>点击此处获取优惠!</p>
-        <button @click="randomRedirect">立即领取</button>
-      </div>
-    </div>
-    
-    <!-- 假系统错误 -->
-    <div v-if="showFakeError" class="fake-error">
-      <div class="error-content">
-        <div class="error-header">
-          <div class="error-icon">!</div>
-          <h3>系统错误</h3>
-        </div>
-        <div class="error-body">
-          <p>错误代码: 0x8007007E</p>
-          <p>您的系统遇到了严重问题,需要立即修复。</p>
-          <p>正在收集错误信息... 请稍候</p>
-          <div class="fake-progress">
-            <div class="progress-bar"></div>
-          </div>
-        </div>
-      </div>
-    </div>
-    
-    <!-- 假更新提示 -->
-    <div v-if="showFakeUpdate" class="fake-update">
-      <div class="update-content">
-        <h3>重要系统更新</h3>
-        <p>您的浏览器需要立即更新以继续浏览网页</p>
-        <div class="update-progress">
-          <div class="progress-bar"></div>
-        </div>
-        <p class="update-status">正在下载更新 (23%)...</p>
-        <p class="update-warning">请勿关闭此窗口</p>
-      </div>
-    </div>
-    
-    <!-- 自动弹出广告 -->
-    <div v-if="showAutoPopup" class="auto-popup">
-      <div class="popup-content">
-        <h4>特别通知</h4>
-        <p>{{ popupTexts[Math.floor(Math.random() * popupTexts.length)] }}</p>
-        <div class="popup-buttons">
-          <button @click="randomRedirect" class="popup-btn">确定</button>
-          <button @click="showAutoPopup = false" class="fake-close-btn">关闭</button>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-/* 鼠标跟随弹窗样式 */
-.cursor-follower {
-  position: fixed;
-  z-index: 9999;
-  transform: translate(10px, 10px);
-  pointer-events: none;
-  transition: opacity 0.2s;
-}
-
-.cursor-content {
-  background-color: rgba(255, 255, 0, 0.9);
-  padding: 10px;
-  border-radius: 5px;
-  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
-  width: 150px;
-  pointer-events: auto;
-  text-align: center;
-}
-
-.cursor-content p {
-  margin: 0 0 8px;
-  font-size: 12px;
-  font-weight: bold;
-}
-
-.cursor-content button {
-  background-color: #ff4500;
-  color: white;
-  border: none;
-  padding: 5px 10px;
-  border-radius: 3px;
-  cursor: pointer;
-  font-size: 12px;
-}
-
-/* 假系统错误样式 */
-.fake-error {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(0, 0, 0, 0.8);
-  z-index: 10000;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.error-content {
-  background-color: #f0f0f0;
-  width: 80%;
-  max-width: 500px;
-  border-radius: 5px;
-  overflow: hidden;
-}
-
-.error-header {
-  background-color: #0078d7;
-  color: white;
-  padding: 15px;
-  display: flex;
-  align-items: center;
-}
-
-.error-icon {
-  width: 30px;
-  height: 30px;
-  background-color: white;
-  color: #0078d7;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-weight: bold;
-  font-size: 20px;
-  margin-right: 15px;
-}
-
-.error-body {
-  padding: 20px;
-}
-
-.fake-progress {
-  height: 20px;
-  background-color: #ddd;
-  border-radius: 10px;
-  margin: 20px 0;
-  overflow: hidden;
-}
-
-.fake-progress .progress-bar {
-  height: 100%;
-  width: 75%;
-  background-color: #0078d7;
-  animation: progress 3s infinite;
-}
-
-/* 假更新提示样式 */
-.fake-update {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(0, 0, 0, 0.9);
-  z-index: 10000;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.update-content {
-  background-color: #fff;
-  padding: 30px;
-  border-radius: 8px;
-  width: 80%;
-  max-width: 500px;
-  text-align: center;
-}
-
-.update-content h3 {
-  margin-bottom: 20px;
-  color: #333;
-}
-
-.update-progress {
-  height: 20px;
-  background-color: #eee;
-  border-radius: 10px;
-  margin: 20px 0;
-  overflow: hidden;
-}
-
-.update-progress .progress-bar {
-  height: 100%;
-  width: 23%;
-  background-color: #4CAF50;
-  animation: progress-pulse 2s infinite;
-}
-
-.update-status {
-  color: #666;
-  margin-bottom: 10px;
-}
-
-.update-warning {
-  color: #e74c3c;
-  font-weight: bold;
-}
-
-/* 自动弹出广告样式 */
-.auto-popup {
-  position: fixed;
-  bottom: 20px;
-  right: 20px;
-  z-index: 9999;
-  animation: popup-slide 0.5s ease-out;
-}
-
-.popup-content {
-  background-color: #fff;
-  padding: 15px;
-  border-radius: 8px;
-  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.3);
-  width: 300px;
-}
-
-.popup-content h4 {
-  margin: 0 0 10px;
-  color: #e74c3c;
-}
-
-.popup-buttons {
-  display: flex;
-  justify-content: space-between;
-  margin-top: 15px;
-}
-
-.popup-btn {
-  padding: 8px 15px;
-  background-color: #e74c3c;
-  color: white;
-  border: none;
-  border-radius: 4px;
-  cursor: pointer;
-}
-
-.fake-close-btn {
-  padding: 8px 15px;
-  background-color: #95a5a6;
-  color: white;
-  border: none;
-  border-radius: 4px;
-  cursor: pointer;
-}
-
-/* 动画效果 */
-@keyframes progress {
-  0% { width: 0; }
-  50% { width: 75%; }
-  100% { width: 75%; }
-}
-
-@keyframes progress-pulse {
-  0% { opacity: 0.8; }
-  50% { opacity: 1; }
-  100% { opacity: 0.8; }
-}
-
-@keyframes popup-slide {
-  from { transform: translateY(100px); opacity: 0; }
-  to { transform: translateY(0); opacity: 1; }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .cursor-content {
-    width: 120px;
-  }
-  
-  .popup-content {
-    width: 250px;
-  }
-  
-  .error-content, .update-content {
-    width: 90%;
-  }
-}
-</style> 

+ 0 - 252
exgame/src/components/FakeDownload.vue

@@ -1,252 +0,0 @@
-<script setup>
-import { ref, onMounted } from 'vue';
-
-const downloadProgress = ref(0);
-const showDownload = ref(false);
-const downloadInterval = ref(null);
-const downloadSpeed = ref('2.3 MB/s');
-const timeRemaining = ref('1分钟');
-const fileSize = ref('127.8 MB');
-const downloadText = ref('正在下载 setup_installer.exe...');
-
-// 随机改变下载速度
-const updateDownloadSpeed = () => {
-  const speeds = ['1.8 MB/s', '2.3 MB/s', '1.2 MB/s', '3.4 MB/s', '0.9 MB/s', '2.7 MB/s'];
-  const times = ['1分钟', '2分钟', '30秒', '45秒', '3分钟', '1分12秒'];
-  
-  downloadSpeed.value = speeds[Math.floor(Math.random() * speeds.length)];
-  timeRemaining.value = times[Math.floor(Math.random() * times.length)];
-};
-
-// 开始假下载进度
-const startFakeDownload = () => {
-  showDownload.value = true;
-  
-  downloadInterval.value = setInterval(() => {
-    if (downloadProgress.value < 99) {
-      // 随机增加下载进度
-      downloadProgress.value += Math.random() * 2;
-      
-      if (downloadProgress.value > 99) {
-        downloadProgress.value = 99;
-      }
-      
-      // 随机更新下载速度
-      if (Math.random() > 0.7) {
-        updateDownloadSpeed();
-      }
-    } else {
-      // 保持在99%,永远不会完成
-      clearInterval(downloadInterval.value);
-      downloadText.value = '正在验证下载...';
-      timeRemaining.value = '计算中...';
-    }
-  }, 800);
-};
-
-// 取消下载(实际上不会真的取消)
-const cancelDownload = () => {
-  // 显示取消中...但实际上不会取消
-  downloadText.value = '正在取消下载...';
-  
-  // 2秒后继续下载
-  setTimeout(() => {
-    downloadText.value = '正在下载 setup_installer.exe...';
-    startFakeDownload();
-  }, 2000);
-};
-
-onMounted(() => {
-  // 延迟显示下载窗口
-  setTimeout(() => {
-    startFakeDownload();
-  }, 5000);
-});
-</script>
-
-<template>
-  <div class="fake-download-container">
-    <div v-if="showDownload" class="download-popup">
-      <div class="download-header">
-        <span class="download-title">文件下载</span>
-        <button class="close-btn" @click="cancelDownload">×</button>
-      </div>
-      
-      <div class="download-content">
-        <div class="download-icon"></div>
-        
-        <div class="download-info">
-          <p class="download-text">{{ downloadText }}</p>
-          
-          <div class="progress-container">
-            <div class="progress-bar">
-              <div class="progress" :style="{ width: downloadProgress + '%' }"></div>
-            </div>
-            <p class="progress-text">{{ Math.floor(downloadProgress) }}% 完成</p>
-          </div>
-          
-          <div class="download-details">
-            <p>下载速度: <span>{{ downloadSpeed }}</span></p>
-            <p>剩余时间: <span>{{ timeRemaining }}</span></p>
-            <p>文件大小: <span>{{ fileSize }}</span></p>
-          </div>
-        </div>
-        
-        <div class="download-actions">
-          <button class="cancel-btn" @click="cancelDownload">取消</button>
-          <button class="pause-btn">暂停</button>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.fake-download-container {
-  position: fixed;
-  bottom: 20px;
-  right: 20px;
-  z-index: 9995;
-}
-
-.download-popup {
-  width: 400px;
-  background-color: #fff;
-  border-radius: 8px;
-  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.3);
-  overflow: hidden;
-  animation: slide-in 0.5s ease;
-}
-
-.download-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  padding: 12px 15px;
-  background-color: #f8f8f8;
-  border-bottom: 1px solid #ddd;
-}
-
-.download-title {
-  font-weight: bold;
-  color: #333;
-}
-
-.close-btn {
-  background: none;
-  border: none;
-  font-size: 20px;
-  cursor: pointer;
-  color: #666;
-}
-
-.download-content {
-  padding: 20px;
-}
-
-.download-icon {
-  width: 40px;
-  height: 40px;
-  background-color: #4CAF50;
-  border-radius: 50%;
-  margin: 0 auto 15px;
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>');
-  background-repeat: no-repeat;
-  background-position: center;
-}
-
-.download-text {
-  text-align: center;
-  margin-bottom: 15px;
-  font-size: 14px;
-  color: #333;
-}
-
-.progress-container {
-  margin-bottom: 15px;
-}
-
-.progress-bar {
-  height: 15px;
-  background-color: #eee;
-  border-radius: 10px;
-  overflow: hidden;
-  margin-bottom: 5px;
-}
-
-.progress {
-  height: 100%;
-  background-color: #4CAF50;
-  transition: width 0.3s ease;
-}
-
-.progress-text {
-  text-align: right;
-  font-size: 12px;
-  color: #666;
-}
-
-.download-details {
-  display: grid;
-  grid-template-columns: repeat(3, 1fr);
-  gap: 10px;
-  margin-bottom: 20px;
-}
-
-.download-details p {
-  font-size: 12px;
-  color: #666;
-}
-
-.download-details span {
-  font-weight: bold;
-  color: #333;
-}
-
-.download-actions {
-  display: flex;
-  justify-content: flex-end;
-  gap: 10px;
-}
-
-.cancel-btn, .pause-btn {
-  padding: 8px 15px;
-  border: none;
-  border-radius: 4px;
-  cursor: pointer;
-  font-size: 14px;
-}
-
-.cancel-btn {
-  background-color: #f44336;
-  color: white;
-}
-
-.pause-btn {
-  background-color: #2196F3;
-  color: white;
-}
-
-@keyframes slide-in {
-  from {
-    transform: translateY(100%);
-    opacity: 0;
-  }
-  to {
-    transform: translateY(0);
-    opacity: 1;
-  }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .download-popup {
-    width: 90%;
-    max-width: 350px;
-  }
-  
-  .download-details {
-    grid-template-columns: 1fr;
-  }
-}
-</style> 

+ 0 - 277
exgame/src/components/FakeNotifications.vue

@@ -1,277 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-const notifications = ref([]);
-const notificationInterval = ref(null);
-const maxNotifications = 5;
-
-// 通知类型和内容
-const notificationTypes = [
-  {
-    type: 'warning',
-    title: '系统警告',
-    messages: [
-      '您的设备已被感染,点击立即清理',
-      '检测到异常活动,请立即验证身份',
-      '您的账户安全风险较高,请更新密码',
-      '系统更新可用,请立即安装',
-      '您的设备性能下降50%,点击优化'
-    ]
-  },
-  {
-    type: 'info',
-    title: '系统通知',
-    messages: [
-      '您有一条新消息',
-      '您的订单已发货',
-      '新版本可用,点击更新',
-      '您的账户已登录',
-      '您有未读邮件'
-    ]
-  },
-  {
-    type: 'success',
-    title: '恭喜',
-    messages: [
-      '您已获得一次抽奖机会',
-      '您已成功注册会员',
-      '您已获得100积分',
-      '您已获得一次免费体验机会',
-      '您已成功参与活动'
-    ]
-  },
-  {
-    type: 'error',
-    title: '错误',
-    messages: [
-      '连接失败,请重试',
-      '操作超时,请稍后再试',
-      '服务暂时不可用',
-      '请求被拒绝',
-      '未知错误,请联系客服'
-    ]
-  }
-];
-
-// 创建随机通知
-const createRandomNotification = () => {
-  // 随机选择通知类型
-  const typeIndex = Math.floor(Math.random() * notificationTypes.length);
-  const notificationType = notificationTypes[typeIndex];
-  
-  // 随机选择通知内容
-  const messageIndex = Math.floor(Math.random() * notificationType.messages.length);
-  const message = notificationType.messages[messageIndex];
-  
-  // 创建通知对象
-  const notification = {
-    id: Date.now(),
-    type: notificationType.type,
-    title: notificationType.title,
-    message: message,
-    time: new Date().toLocaleTimeString()
-  };
-  
-  // 添加到通知列表
-  notifications.value.push(notification);
-  
-  // 如果超过最大数量,移除最早的通知
-  if (notifications.value.length > maxNotifications) {
-    notifications.value.shift();
-  }
-  
-  // 设置自动消失
-  setTimeout(() => {
-    removeNotification(notification.id);
-  }, 5000);
-};
-
-// 移除通知
-const removeNotification = (id) => {
-  notifications.value = notifications.value.filter(n => n.id !== id);
-};
-
-// 点击通知
-const handleNotificationClick = () => {
-  // 随机跳转到其他页面
-  const pages = ['/ad', '/virus', '/winning'];
-  const randomPage = pages[Math.floor(Math.random() * pages.length)];
-  router.push(randomPage);
-};
-
-// 开始定时发送通知
-const startNotifications = () => {
-  // 先发送一条初始通知
-  setTimeout(() => {
-    createRandomNotification();
-  }, 2000);
-  
-  // 设置定时发送
-  notificationInterval.value = setInterval(() => {
-    if (Math.random() > 0.3) { // 70%的概率发送通知
-      createRandomNotification();
-    }
-  }, 8000);
-};
-
-onMounted(() => {
-  startNotifications();
-});
-
-onUnmounted(() => {
-  if (notificationInterval.value) {
-    clearInterval(notificationInterval.value);
-  }
-});
-</script>
-
-<template>
-  <div class="notifications-container">
-    <transition-group name="notification">
-      <div 
-        v-for="notification in notifications" 
-        :key="notification.id" 
-        class="notification" 
-        :class="notification.type"
-        @click="handleNotificationClick"
-      >
-        <div class="notification-icon" :class="notification.type"></div>
-        <div class="notification-content">
-          <div class="notification-header">
-            <div class="notification-title">{{ notification.title }}</div>
-            <div class="notification-time">{{ notification.time }}</div>
-          </div>
-          <div class="notification-message">{{ notification.message }}</div>
-        </div>
-        <button class="close-btn" @click.stop="removeNotification(notification.id)">×</button>
-      </div>
-    </transition-group>
-  </div>
-</template>
-
-<style scoped>
-.notifications-container {
-  position: fixed;
-  top: 20px;
-  right: 20px;
-  width: 320px;
-  z-index: 9997;
-  display: flex;
-  flex-direction: column;
-  gap: 10px;
-  pointer-events: none;
-}
-
-.notification {
-  background-color: white;
-  border-radius: 8px;
-  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
-  padding: 15px;
-  display: flex;
-  align-items: flex-start;
-  position: relative;
-  pointer-events: auto;
-  cursor: pointer;
-  transition: transform 0.2s, box-shadow 0.2s;
-}
-
-.notification:hover {
-  transform: translateY(-3px);
-  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
-}
-
-.notification-icon {
-  width: 24px;
-  height: 24px;
-  border-radius: 50%;
-  margin-right: 12px;
-  flex-shrink: 0;
-  background-position: center;
-  background-repeat: no-repeat;
-  background-size: 14px;
-}
-
-.notification-icon.warning {
-  background-color: #f39c12;
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>');
-}
-
-.notification-icon.info {
-  background-color: #3498db;
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>');
-}
-
-.notification-icon.success {
-  background-color: #2ecc71;
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>');
-}
-
-.notification-icon.error {
-  background-color: #e74c3c;
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>');
-}
-
-.notification-content {
-  flex: 1;
-}
-
-.notification-header {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 5px;
-}
-
-.notification-title {
-  font-weight: bold;
-  color: #333;
-}
-
-.notification-time {
-  font-size: 12px;
-  color: #999;
-}
-
-.notification-message {
-  font-size: 14px;
-  color: #666;
-}
-
-.close-btn {
-  background: none;
-  border: none;
-  font-size: 16px;
-  color: #999;
-  cursor: pointer;
-  position: absolute;
-  top: 5px;
-  right: 5px;
-  padding: 0;
-  line-height: 1;
-}
-
-.notification-enter-active,
-.notification-leave-active {
-  transition: all 0.5s ease;
-}
-
-.notification-enter-from {
-  opacity: 0;
-  transform: translateX(50px);
-}
-
-.notification-leave-to {
-  opacity: 0;
-  transform: translateX(50px);
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .notifications-container {
-    width: 90%;
-    max-width: 300px;
-    right: 10px;
-  }
-}
-</style> 

+ 0 - 511
exgame/src/components/FloatingAds.vue

@@ -1,511 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-const showBannerAd = ref(false);
-const showSideAd = ref(false);
-const showPopupAd = ref(false);
-const showFullScreenAd = ref(false);
-const showCornerAds = ref(false);
-const adIntervals = ref([]);
-
-// 广告文本数组
-const adTexts = [
-  "单身?点击查看附近的美女",
-  "恭喜!您的手机已被选中获得奖励",
-  "震惊!这个秘密会让你一夜暴富",
-  "医生不会告诉你的减肥秘诀",
-  "这款游戏会让你欲罢不能",
-  "只需一招,轻松赚取10000元",
-  "本地妈妈发现了惊人的赚钱方法",
-  "点击测试你的智商水平",
-  "警告:您的手机需要立即清理",
-  "最后一台iPhone特价销售中"
-];
-
-// 随机获取广告文本
-const getRandomAdText = () => {
-  return adTexts[Math.floor(Math.random() * adTexts.length)];
-};
-
-// 显示横幅广告
-const showBanner = () => {
-  showBannerAd.value = true;
-  
-  // 设置横幅广告的动画效果
-  const bannerInterval = setInterval(() => {
-    showBannerAd.value = !showBannerAd.value;
-    setTimeout(() => {
-      showBannerAd.value = true;
-    }, 200);
-  }, 5000);
-  
-  adIntervals.value.push(bannerInterval);
-};
-
-// 显示侧边广告
-const showSide = () => {
-  showSideAd.value = true;
-  
-  // 让侧边广告每隔一段时间改变位置
-  const sideInterval = setInterval(() => {
-    const sideAd = document.querySelector('.side-ad');
-    if (sideAd) {
-      sideAd.style.right = sideAd.style.right === '0px' ? '-150px' : '0px';
-    }
-  }, 3000);
-  
-  adIntervals.value.push(sideInterval);
-};
-
-// 显示弹出广告
-const showPopup = () => {
-  // 随机延迟显示弹出广告
-  setTimeout(() => {
-    showPopupAd.value = true;
-    
-    // 3秒后自动关闭
-    setTimeout(() => {
-      showPopupAd.value = false;
-      
-      // 再次随机延迟后再次显示
-      setTimeout(() => {
-        showPopup();
-      }, Math.random() * 10000 + 5000);
-    }, 3000);
-  }, Math.random() * 5000 + 2000);
-};
-
-// 显示全屏广告
-const showFullScreen = () => {
-  // 随机延迟显示全屏广告
-  setTimeout(() => {
-    showFullScreenAd.value = true;
-    
-    // 5秒后自动关闭
-    setTimeout(() => {
-      showFullScreenAd.value = false;
-    }, 5000);
-  }, Math.random() * 20000 + 15000);
-};
-
-// 显示角落小广告
-const showCornerAd = () => {
-  showCornerAds.value = true;
-  
-  // 每隔一段时间移动角落广告的位置
-  const cornerInterval = setInterval(() => {
-    const cornerAds = document.querySelectorAll('.corner-ad');
-    cornerAds.forEach(ad => {
-      const randomX = Math.floor(Math.random() * 20) - 10;
-      const randomY = Math.floor(Math.random() * 20) - 10;
-      ad.style.transform = `translate(${randomX}px, ${randomY}px)`;
-    });
-  }, 500);
-  
-  adIntervals.value.push(cornerInterval);
-};
-
-// 跳转到随机页面
-const goToRandomPage = () => {
-  const pages = ['/ad', '/virus', '/winning'];
-  const randomPage = pages[Math.floor(Math.random() * pages.length)];
-  router.push(randomPage);
-};
-
-// 关闭广告(但实际上不会真正关闭)
-const closeAd = (event) => {
-  // 阻止事件冒泡
-  event.stopPropagation();
-  
-  // 有50%的概率直接跳转到另一个页面
-  if (Math.random() > 0.5) {
-    goToRandomPage();
-  } else {
-    // 假装关闭,但实际上会在稍后重新显示
-    const adType = event.target.dataset.adType;
-    
-    if (adType === 'banner') {
-      showBannerAd.value = false;
-      setTimeout(() => {
-        showBannerAd.value = true;
-      }, 3000);
-    } else if (adType === 'side') {
-      showSideAd.value = false;
-      setTimeout(() => {
-        showSideAd.value = true;
-      }, 2000);
-    } else if (adType === 'popup') {
-      showPopupAd.value = false;
-    } else if (adType === 'fullscreen') {
-      showFullScreenAd.value = false;
-    }
-  }
-};
-
-onMounted(() => {
-  // 延迟启动各种广告
-  setTimeout(() => {
-    showBanner();
-    showSide();
-    showPopup();
-    showFullScreen();
-    showCornerAd();
-  }, 2000);
-});
-
-onUnmounted(() => {
-  // 清理所有定时器
-  adIntervals.value.forEach(interval => {
-    clearInterval(interval);
-  });
-});
-</script>
-
-<template>
-  <div class="floating-ads-container">
-    <!-- 横幅广告 -->
-    <div v-if="showBannerAd" class="banner-ad animate__animated animate__flash">
-      <div class="banner-content">
-        <div class="banner-text">{{ getRandomAdText() }}</div>
-        <button class="banner-btn" @click="goToRandomPage">点击这里</button>
-        <button class="close-btn" data-ad-type="banner" @click="closeAd">×</button>
-      </div>
-    </div>
-    
-    <!-- 侧边广告 -->
-    <div v-if="showSideAd" class="side-ad">
-      <div class="side-content">
-        <div class="side-text">{{ getRandomAdText() }}</div>
-        <button class="side-btn" @click="goToRandomPage">立即查看</button>
-        <button class="close-btn" data-ad-type="side" @click="closeAd">×</button>
-      </div>
-    </div>
-    
-    <!-- 弹出广告 -->
-    <div v-if="showPopupAd" class="popup-ad animate__animated animate__zoomIn">
-      <div class="popup-content">
-        <h4>特别优惠</h4>
-        <p>{{ getRandomAdText() }}</p>
-        <button class="popup-btn" @click="goToRandomPage">了解更多</button>
-        <button class="close-btn" data-ad-type="popup" @click="closeAd">×</button>
-      </div>
-    </div>
-    
-    <!-- 全屏广告 -->
-    <div v-if="showFullScreenAd" class="fullscreen-ad animate__animated animate__fadeIn">
-      <div class="fullscreen-content">
-        <h3>限时特惠</h3>
-        <p class="big-text">{{ getRandomAdText() }}</p>
-        <div class="ad-image"></div>
-        <button class="fullscreen-btn" @click="goToRandomPage">立即抢购</button>
-        <div class="countdown">仅剩 <span class="highlight">05:00</span> 结束</div>
-        <button class="close-btn" data-ad-type="fullscreen" @click="closeAd">×</button>
-      </div>
-    </div>
-    
-    <!-- 角落小广告 -->
-    <div v-if="showCornerAds" class="corner-ads">
-      <div class="corner-ad top-left" @click="goToRandomPage">
-        <div class="corner-content">热门</div>
-      </div>
-      <div class="corner-ad top-right" @click="goToRandomPage">
-        <div class="corner-content">优惠</div>
-      </div>
-      <div class="corner-ad bottom-left" @click="goToRandomPage">
-        <div class="corner-content">折扣</div>
-      </div>
-      <div class="corner-ad bottom-right" @click="goToRandomPage">
-        <div class="corner-content">特价</div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.floating-ads-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  pointer-events: none;
-  z-index: 9990;
-}
-
-/* 横幅广告样式 */
-.banner-ad {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  background-color: #ffeb3b;
-  padding: 10px;
-  text-align: center;
-  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
-  z-index: 9991;
-  pointer-events: auto;
-}
-
-.banner-content {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  position: relative;
-}
-
-.banner-text {
-  font-weight: bold;
-  color: #333;
-  margin-right: 15px;
-}
-
-.banner-btn {
-  background-color: #e74c3c;
-  color: white;
-  border: none;
-  padding: 5px 15px;
-  border-radius: 3px;
-  cursor: pointer;
-  font-weight: bold;
-}
-
-/* 侧边广告样式 */
-.side-ad {
-  position: fixed;
-  top: 50%;
-  right: 0;
-  transform: translateY(-50%);
-  width: 150px;
-  background-color: #3498db;
-  padding: 15px;
-  border-radius: 5px 0 0 5px;
-  box-shadow: -2px 0 5px rgba(0, 0, 0, 0.2);
-  z-index: 9992;
-  pointer-events: auto;
-  transition: right 0.3s ease;
-}
-
-.side-content {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.side-text {
-  color: white;
-  font-size: 12px;
-  margin-bottom: 10px;
-  text-align: center;
-}
-
-.side-btn {
-  background-color: #2ecc71;
-  color: white;
-  border: none;
-  padding: 5px 10px;
-  border-radius: 3px;
-  cursor: pointer;
-  font-size: 12px;
-  width: 100%;
-}
-
-/* 弹出广告样式 */
-.popup-ad {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  background-color: white;
-  padding: 20px;
-  border-radius: 8px;
-  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.3);
-  z-index: 9993;
-  pointer-events: auto;
-  width: 300px;
-}
-
-.popup-content {
-  position: relative;
-}
-
-.popup-content h4 {
-  color: #e74c3c;
-  margin: 0 0 15px;
-}
-
-.popup-content p {
-  margin-bottom: 20px;
-}
-
-.popup-btn {
-  background-color: #e74c3c;
-  color: white;
-  border: none;
-  padding: 8px 15px;
-  border-radius: 4px;
-  cursor: pointer;
-  width: 100%;
-}
-
-/* 全屏广告样式 */
-.fullscreen-ad {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(0, 0, 0, 0.8);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  z-index: 9994;
-  pointer-events: auto;
-}
-
-.fullscreen-content {
-  background-color: white;
-  padding: 30px;
-  border-radius: 10px;
-  text-align: center;
-  max-width: 500px;
-  width: 80%;
-  position: relative;
-}
-
-.fullscreen-content h3 {
-  color: #e74c3c;
-  margin-bottom: 15px;
-}
-
-.big-text {
-  font-size: 20px;
-  font-weight: bold;
-  margin-bottom: 20px;
-}
-
-.ad-image {
-  height: 150px;
-  background-color: #f5f5f5;
-  margin: 20px 0;
-  border-radius: 5px;
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 24 24" fill="none" stroke="%23333" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg>');
-  background-repeat: no-repeat;
-  background-position: center;
-}
-
-.fullscreen-btn {
-  background-color: #e74c3c;
-  color: white;
-  border: none;
-  padding: 12px 30px;
-  border-radius: 30px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  margin-bottom: 15px;
-}
-
-.countdown {
-  font-size: 14px;
-  color: #666;
-}
-
-.highlight {
-  color: #e74c3c;
-  font-weight: bold;
-}
-
-/* 角落小广告样式 */
-.corner-ads {
-  pointer-events: none;
-}
-
-.corner-ad {
-  position: fixed;
-  width: 60px;
-  height: 60px;
-  background-color: rgba(255, 69, 0, 0.8);
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  cursor: pointer;
-  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
-  transition: transform 0.2s ease;
-  pointer-events: auto;
-  z-index: 9990;
-}
-
-.corner-content {
-  color: white;
-  font-weight: bold;
-  font-size: 12px;
-}
-
-.top-left {
-  top: 20px;
-  left: 20px;
-}
-
-.top-right {
-  top: 20px;
-  right: 20px;
-}
-
-.bottom-left {
-  bottom: 20px;
-  left: 20px;
-}
-
-.bottom-right {
-  bottom: 20px;
-  right: 20px;
-}
-
-/* 通用关闭按钮样式 */
-.close-btn {
-  background: none;
-  border: none;
-  font-size: 20px;
-  color: #666;
-  cursor: pointer;
-  position: absolute;
-  top: 5px;
-  right: 5px;
-  padding: 0;
-  line-height: 1;
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .banner-content {
-    flex-direction: column;
-  }
-  
-  .banner-text {
-    margin-right: 0;
-    margin-bottom: 10px;
-  }
-  
-  .side-ad {
-    width: 100px;
-  }
-  
-  .popup-ad {
-    width: 90%;
-    max-width: 300px;
-  }
-  
-  .fullscreen-content {
-    padding: 20px;
-    width: 90%;
-  }
-  
-  .corner-ad {
-    width: 40px;
-    height: 40px;
-  }
-}
-</style> 

+ 0 - 43
exgame/src/components/HelloWorld.vue

@@ -1,43 +0,0 @@
-<script setup>
-import { ref } from 'vue'
-
-defineProps({
-  msg: String,
-})
-
-const count = ref(0)
-</script>
-
-<template>
-  <h1>{{ msg }}</h1>
-
-  <div class="card">
-    <button type="button" @click="count++">count is {{ count }}</button>
-    <p>
-      Edit
-      <code>components/HelloWorld.vue</code> to test HMR
-    </p>
-  </div>
-
-  <p>
-    Check out
-    <a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
-      >create-vue</a
-    >, the official Vue + Vite starter
-  </p>
-  <p>
-    Learn more about IDE Support for Vue in the
-    <a
-      href="https://vuejs.org/guide/scaling-up/tooling.html#ide-support"
-      target="_blank"
-      >Vue Docs Scaling up Guide</a
-    >.
-  </p>
-  <p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
-</template>
-
-<style scoped>
-.read-the-docs {
-  color: #888;
-}
-</style>

+ 1 - 178
exgame/src/main.js

@@ -1,184 +1,7 @@
 import { createApp } from 'vue'
-import { createRouter, createWebHashHistory } from 'vue-router'
-import './style.css'
-import 'animate.css'
 import App from './App.vue'
+import './style.css'
 
-// 引入路由组件
-import Home from './views/Home.vue'
-import FakeAd from './views/FakeAd.vue'
-import FakeVirus from './views/FakeVirus.vue'
-import FakeWinning from './views/FakeWinning.vue'
-
-// 定义路由
-const routes = [
-  { path: '/', component: Home },
-  { path: '/ad', component: FakeAd },
-  { path: '/virus', component: FakeVirus },
-  { path: '/winning', component: FakeWinning },
-]
-
-// 创建路由实例
-const router = createRouter({
-  history: createWebHashHistory(),
-  routes,
-})
-
-// 检测页面是否是通过刷新进入的
-const isPageRefreshed = () => {
-  // 方法1: 检查 performance.navigation.type
-  if (performance.navigation && performance.navigation.type === 1) {
-    return true;
-  }
-  
-  // 方法2: 检查 window.performance.getEntriesByType
-  const navEntries = performance.getEntriesByType('navigation');
-  if (navEntries.length > 0 && navEntries[0].type === 'reload') {
-    return true;
-  }
-  
-  // 方法3: 检查 sessionStorage 中的访问标记
-  const currentPage = window.location.hash;
-  const lastVisitedPage = sessionStorage.getItem('lastPage');
-  const isFromRefresh = lastVisitedPage === currentPage;
-  
-  sessionStorage.setItem('lastPage', currentPage);
-  
-  return isFromRefresh;
-};
-
-// 添加全局前置守卫
-router.beforeEach((to, from, next) => {
-  const prankPages = ['/virus', '/ad', '/winning'];
-  
-  // 检查冷却时间
-  const lastRandomJump = sessionStorage.getItem('lastRandomJump');
-  const now = Date.now();
-  const jumpCooldown = 1000; // 1秒冷却时间
-  
-  if (lastRandomJump && (now - parseInt(lastRandomJump)) < jumpCooldown) {
-    console.log('⏰ 跳转冷却中,直接通过');
-    next();
-    return;
-  }
-  
-  // 首页访问处理
-  if (to.path === '/' || to.path === '') {
-    sessionStorage.setItem('lastRandomJump', now.toString());
-    
-    const randomIndex = Math.floor(Math.random() * prankPages.length);
-    const randomPage = prankPages[randomIndex];
-    const randomParam = Math.random().toString(36).substring(7);
-    
-    console.log(`🎲 首页随机跳转: / → ${randomPage}?r=${randomParam}`);
-    
-    next({
-      path: randomPage,
-      query: { r: randomParam, from: 'home' }
-    });
-    return;
-  }
-  
-  // 检查是否是恶搞页面
-  const isPrankPage = prankPages.includes(to.path);
-  
-  // 如果是恶搞页面且检测到页面刷新
-  if (isPrankPage && isPageRefreshed()) {
-    sessionStorage.setItem('lastRandomJump', now.toString());
-    
-    // 过滤掉当前页面
-    const otherPages = prankPages.filter(page => page !== to.path);
-    
-    const randomIndex = Math.floor(Math.random() * otherPages.length);
-    const randomPage = otherPages[randomIndex];
-    const randomParam = Math.random().toString(36).substring(7);
-    
-    console.log(`🔄 检测到页面刷新,随机跳转: ${to.path} → ${randomPage}?r=${randomParam}`);
-    
-    next({
-      path: randomPage,
-      query: { r: randomParam, from: to.path.replace('/', '') }
-    });
-    return;
-  }
-  
-  // 其他情况正常导航
-  next();
-});
-
-// 页面加载完成后,为所有恶搞页面添加刷新监听
-router.afterEach((to) => {
-  const prankPages = ['/virus', '/ad', '/winning'];
-  
-  if (prankPages.includes(to.path)) {
-    // 延迟添加刷新监听,确保页面完全加载
-    setTimeout(() => {
-      // 监听键盘快捷键刷新
-      const handleKeyDown = (e) => {
-        // F5 或 Ctrl+R
-        if (e.key === 'F5' || (e.ctrlKey && e.key === 'r')) {
-          e.preventDefault();
-          randomJumpToOtherPage(to.path);
-        }
-      };
-      
-      // 监听浏览器刷新按钮
-      const handleBeforeUnload = (e) => {
-        // 设置刷新标记
-        sessionStorage.setItem('willRefresh', 'true');
-        sessionStorage.setItem('refreshPage', to.path);
-      };
-      
-      // 移除之前的监听器
-      document.removeEventListener('keydown', handleKeyDown);
-      window.removeEventListener('beforeunload', handleBeforeUnload);
-      
-      // 添加新的监听器
-      document.addEventListener('keydown', handleKeyDown);
-      window.addEventListener('beforeunload', handleBeforeUnload);
-    }, 500);
-  }
-});
-
-// 随机跳转到其他页面的函数
-const randomJumpToOtherPage = (currentPath) => {
-  const prankPages = ['/virus', '/ad', '/winning'];
-  const otherPages = prankPages.filter(page => page !== currentPath);
-  
-  const randomIndex = Math.floor(Math.random() * otherPages.length);
-  const randomPage = otherPages[randomIndex];
-  const randomParam = Math.random().toString(36).substring(7);
-  
-  console.log(`🎯 手动刷新检测,强制跳转: ${currentPath} → ${randomPage}?r=${randomParam}`);
-  
-  // 设置跳转时间戳
-  sessionStorage.setItem('lastRandomJump', Date.now().toString());
-  
-  // 强制跳转
-  window.location.hash = `${randomPage}?r=${randomParam}&from=${currentPath.replace('/', '')}`;
-};
-
-// 页面加载时检查是否是刷新后的页面
-window.addEventListener('load', () => {
-  const willRefresh = sessionStorage.getItem('willRefresh');
-  const refreshPage = sessionStorage.getItem('refreshPage');
-  
-  if (willRefresh === 'true' && refreshPage) {
-    sessionStorage.removeItem('willRefresh');
-    sessionStorage.removeItem('refreshPage');
-    
-    // 延迟执行跳转,确保页面完全加载
-    setTimeout(() => {
-      randomJumpToOtherPage(refreshPage);
-    }, 100);
-  }
-});
-
-// 创建Vue应用实例
 const app = createApp(App)
 
-// 使用路由
-app.use(router)
-
-// 挂载应用
 app.mount('#app')

+ 16 - 61
exgame/src/style.css

@@ -1,79 +1,34 @@
 :root {
-  font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
+  font-family: 'Microsoft YaHei', Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
   line-height: 1.5;
   font-weight: 400;
-
-  color-scheme: light dark;
-  color: rgba(255, 255, 255, 0.87);
-  background-color: #242424;
-
+  color-scheme: light;
   font-synthesis: none;
   text-rendering: optimizeLegibility;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
+  -webkit-text-size-adjust: 100%;
 }
 
-a {
-  font-weight: 500;
-  color: #646cff;
-  text-decoration: inherit;
-}
-a:hover {
-  color: #535bf2;
-}
-
-body {
+* {
   margin: 0;
-  display: flex;
-  place-items: center;
-  min-width: 320px;
-  min-height: 100vh;
+  padding: 0;
+  box-sizing: border-box;
 }
 
-h1 {
-  font-size: 3.2em;
-  line-height: 1.1;
+html, body {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
 }
 
-button {
-  border-radius: 8px;
-  border: 1px solid transparent;
-  padding: 0.6em 1.2em;
-  font-size: 1em;
-  font-weight: 500;
-  font-family: inherit;
-  background-color: #1a1a1a;
-  cursor: pointer;
-  transition: border-color 0.25s;
-}
-button:hover {
-  border-color: #646cff;
-}
-button:focus,
-button:focus-visible {
-  outline: 4px auto -webkit-focus-ring-color;
-}
-
-.card {
-  padding: 2em;
+body {
+  font-family: 'Microsoft YaHei', sans-serif;
+  background-color: #f5f5f5;
 }
 
 #app {
-  max-width: 1280px;
-  margin: 0 auto;
-  padding: 2rem;
-  text-align: center;
-}
-
-@media (prefers-color-scheme: light) {
-  :root {
-    color: #213547;
-    background-color: #ffffff;
-  }
-  a:hover {
-    color: #747bff;
-  }
-  button {
-    background-color: #f9f9f9;
-  }
+  width: 100vw;
+  height: 100vh;
+  overflow: hidden;
 }

+ 0 - 2967
exgame/src/views/FakeAd.vue

@@ -1,2967 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
-import { useRouter } from 'vue-router';
-import FloatingAds from '../components/FloatingAds.vue';
-import FakeDownload from '../components/FakeDownload.vue';
-import FakeNotifications from '../components/FakeNotifications.vue';
-
-const router = useRouter();
-
-// 恶搞状态管理
-const adPopups = ref([]);
-const popupCount = ref(0);
-const showMainAd = ref(false);
-const showOverlayAd = ref(false);
-const showFloatingAds = ref(false);
-const showFakeDownload = ref(false);
-const showNotifications = ref(false);
-const showVibrationAd = ref(false);
-const showFakeVirus = ref(false);
-const showFakeUpdate = ref(false);
-const isMouseTrapped = ref(false);
-const preventClose = ref(false);
-const audioContext = ref(null);
-const showLeaveDialog = ref(false); // 自定义离开确认对话框
-const showCustomNotification = ref(false); // 自定义通知
-const customNotificationMessage = ref(''); // 通知消息
-const showPrankDialog = ref(false); // 恶搞对话框
-const prankDialogContent = ref(''); // 恶搞对话框内容
-
-// 新增超级恶心功能状态
-const isUltraAnnoyingMode = ref(false); // 超级恶心模式
-const fakeCloseButtons = ref([]); // 假关闭按钮数组
-const movingElements = ref(false); // 移动界面元素
-const invertedControls = ref(false); // 反向控制
-const fakeLoadingScreen = ref(false); // 假加载界面
-const screenShake = ref(false); // 屏幕震动
-const rapidColorChange = ref(false); // 快速变色
-const annoyanceLevel = ref(1); // 恶心等级
-const popupBombingActive = ref(false); // 弹窗轰炸激活状态
-
-// 增强版恼人广告文本
-const ultraAnnoyingTexts = [
-  "🎪 恭喜!您已被永久绑定到广告宇宙!",
-  "🔄 正在安装999999个广告插件...",
-  "🎭 您的浏览器已被广告占领!",
-  "🚀 正在传送您到广告天堂...",
-  "🎨 您的屏幕已被广告病毒感染!",
-  "🎵 正在播放24小时不间断广告音乐...",
-  "🎪 您已成为永恒广告体验的志愿者!",
-  "🔮 广告系统正在读取您的购物欲望...",
-  "🎯 恭喜!您已被广告永久锁定!",
-  "🌟 您获得了终生广告观看资格!"
-];
-
-// 恶搞音效生成器
-const createAnnoyingSound = () => {
-  if (!audioContext.value) {
-    audioContext.value = new (window.AudioContext || window.webkitAudioContext)();
-  }
-  
-  const oscillator = audioContext.value.createOscillator();
-  const gainNode = audioContext.value.createGain();
-  
-  oscillator.connect(gainNode);
-  gainNode.connect(audioContext.value.destination);
-  
-  // 制造恼人的蜂鸣声
-  oscillator.frequency.setValueAtTime(800, audioContext.value.currentTime);
-  oscillator.frequency.exponentialRampToValueAtTime(400, audioContext.value.currentTime + 0.1);
-  
-  gainNode.gain.setValueAtTime(0.3, audioContext.value.currentTime);
-  gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.value.currentTime + 0.1);
-  
-  oscillator.start();
-  oscillator.stop(audioContext.value.currentTime + 0.1);
-};
-
-// 创建恼人弹窗音效
-const createPopupSound = () => {
-  if (!audioContext.value) {
-    audioContext.value = new (window.AudioContext || window.webkitAudioContext)();
-  }
-  
-  const oscillator = audioContext.value.createOscillator();
-  const gainNode = audioContext.value.createGain();
-  
-  oscillator.connect(gainNode);
-  gainNode.connect(audioContext.value.destination);
-  
-  oscillator.frequency.setValueAtTime(1000, audioContext.value.currentTime);
-  gainNode.gain.setValueAtTime(0.2, audioContext.value.currentTime);
-  gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.value.currentTime + 0.05);
-  
-  oscillator.start();
-  oscillator.stop(audioContext.value.currentTime + 0.05);
-};
-
-// 自定义通知函数 - 替代alert
-const showCustomNotificationFn = (message) => {
-  customNotificationMessage.value = message;
-  showCustomNotification.value = true;
-  createAnnoyingSound();
-  
-  // 3秒后自动关闭通知
-  setTimeout(() => {
-    showCustomNotification.value = false;
-  }, 3000);
-};
-
-// 自定义恶搞对话框 - 替代confirm
-const showPrankDialogFn = (content, callback = null) => {
-  prankDialogContent.value = content;
-  showPrankDialog.value = true;
-  createAnnoyingSound();
-  
-  // 如果有回调函数,保存起来
-  if (callback) {
-    window.tempPrankCallback = callback;
-  }
-};
-
-// 关闭恶搞对话框
-const closePrankDialog = (choice = false) => {
-  showPrankDialog.value = false;
-  
-  // 如果有回调函数,执行它
-  if (window.tempPrankCallback) {
-    window.tempPrankCallback(choice);
-    delete window.tempPrankCallback;
-  }
-};
-
-// 生成随机位置(确保弹窗不重叠)
-const getRandomPosition = () => {
-  const maxWidth = window.innerWidth - 300;
-  const maxHeight = window.innerHeight - 200;
-  return {
-    left: `${Math.random() * maxWidth}px`,
-    top: `${Math.random() * maxHeight}px`
-  };
-};
-
-// 创建超级恼人的弹窗
-const createAnnoyingPopup = () => {
-  const popup = {
-    id: Date.now() + Math.random(),
-    text: ultraAnnoyingTexts[Math.floor(Math.random() * ultraAnnoyingTexts.length)],
-    position: getRandomPosition(),
-    zIndex: 1000 + popupCount.value
-  };
-  
-  adPopups.value.push(popup);
-  popupCount.value++;
-  
-  // 播放恼人音效
-  createPopupSound();
-  
-  // 让页面震动(如果支持)
-  if (navigator.vibrate) {
-    navigator.vibrate([100, 50, 100]);
-  }
-  
-  // 随机改变页面标题
-  const annoyingTitles = [
-    "🚨 紧急通知!",
-    "💰 恭喜中奖!",
-    "⚠️ 安全警告!",
-    "🎉 限时特价!",
-    "📱 系统通知",
-    "🔥 爆款推荐!"
-  ];
-  document.title = annoyingTitles[Math.floor(Math.random() * annoyingTitles.length)];
-};
-
-// 强制关闭弹窗(移除恶意阻拦行为)
-const closePopup = (id) => {
-  const popup = adPopups.value.find(p => p.id === id);
-  
-  // 简化关闭逻辑,移除恶意阻拦
-  adPopups.value = adPopups.value.filter(popup => popup.id !== id);
-  
-  // 关闭弹窗后偶尔创建一个新的(而不是两个)
-  if (Math.random() > 0.7 && adPopups.value.length < 3) {
-    setTimeout(() => {
-      createAnnoyingPopup();
-    }, 1000);
-  }
-};
-
-// 点击广告的恶搞行为
-const clickAd = () => {
-  createAnnoyingSound();
-  
-  // 随机恶搞行为
-  const pranks = [
-    () => showCustomNotificationFn("恭喜!您已成功被骗!这是一个恶搞网站!😄"),
-    () => {
-      showCustomNotificationFn("正在为您下载1000个文件...");
-      showFakeDownload.value = true;
-    },
-    () => {
-      showCustomNotificationFn("检测到病毒!正在启动全盘扫描...");
-      showFakeVirus.value = true;
-      router.push('/virus');
-    },
-    () => {
-      showCustomNotificationFn("您的中奖信息已发送到火星!请等待外星人联系您!");
-      createMultiplePopups();
-    },
-    () => {
-      window.location.href = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"; // Rick Roll
-    }
-  ];
-  
-  const randomPrank = pranks[Math.floor(Math.random() * pranks.length)];
-  randomPrank();
-};
-
-// 创建多个弹窗轰炸(减少数量)
-const createMultiplePopups = () => {
-  // 减少弹窗数量从5个到3个
-  for (let i = 0; i < 3; i++) {
-    setTimeout(() => {
-      createAnnoyingPopup();
-    }, i * 500);
-  }
-};
-
-// 鼠标陷阱(鼠标移动到某些区域会触发弹窗)
-const handleMouseMove = (event) => {
-  if (isMouseTrapped.value && Math.random() > 0.98) {
-    createAnnoyingPopup();
-  }
-};
-
-// 阻止用户离开页面
-const blockPageLeave = (e) => {
-  e.preventDefault();
-  e.returnValue = '🎁 广告正在加载您的专属奖品!确定要离开吗?';
-  return '🎁 广告正在加载您的专属奖品!确定要离开吗?';
-};
-
-// 禁用各种快捷键
-const disableShortcuts = (e) => {
-  if (e.key === 'F12' || 
-      (e.ctrlKey && e.shiftKey && e.key === 'I') ||
-      (e.ctrlKey && e.key === 'u') ||
-      (e.ctrlKey && e.key === 'U') ||
-      (e.altKey && e.key === 'F4') ||
-      (e.ctrlKey && e.key === 'w') ||
-      (e.ctrlKey && e.key === 'W')) {
-    e.preventDefault();
-    showCustomNotificationFn('🚫 开发者工具已被广告商禁用!');
-    createAnnoyingSound();
-    return false;
-  }
-};
-
-// 禁用右键菜单
-const disableRightClick = (e) => {
-  e.preventDefault();
-  showCustomNotificationFn('🚫 右键功能已被广告保护!');
-  createAnnoyingSound();
-  return false;
-};
-
-// 检测页面失焦
-const handlePageBlur = () => {
-  showCustomNotificationFn('💰 检测到您想离开!广告正在为您计算奖金!');
-  window.focus();
-  createAnnoyingSound();
-};
-
-// 创建假关闭按钮
-const createFakeCloseButtons = () => {
-  for (let i = 0; i < 15; i++) {
-    fakeCloseButtons.value.push({
-      id: Date.now() + i,
-      x: Math.random() * (window.innerWidth - 60),
-      y: Math.random() * (window.innerHeight - 60),
-      clicked: false,
-      text: Math.random() > 0.5 ? '❌' : '🚪'
-    });
-  }
-};
-
-// 点击假关闭按钮
-const clickFakeCloseButton = (buttonId) => {
-  const button = fakeCloseButtons.value.find(b => b.id === buttonId);
-  if (button) {
-    button.clicked = true;
-    annoyanceLevel.value++;
-    
-    showCustomNotificationFn("😈 这也是假的关闭按钮!广告等级提升!");
-    createAnnoyingSound();
-    
-    // 创建更多假按钮
-    createFakeCloseButtons();
-    
-    // 激活更多恶心功能
-    if (annoyanceLevel.value > 3) {
-      activateUltraAnnoyingMode();
-    }
-  }
-};
-
-// 激活超级恶心模式
-const activateUltraAnnoyingMode = () => {
-  isUltraAnnoyingMode.value = true;
-  showCustomNotificationFn("🎪 恭喜解锁超级广告轰炸模式!");
-  
-  // 启动各种恶心效果
-  setTimeout(() => movingElements.value = true, 500);
-  setTimeout(() => invertedControls.value = true, 1000);
-  setTimeout(() => screenShake.value = true, 1500);
-  setTimeout(() => rapidColorChange.value = true, 2000);
-  setTimeout(() => popupBombingActive.value = true, 2500);
-  
-  // 开始疯狂弹窗轰炸
-  startPopupBombing();
-  
-  // 开始移动所有按钮
-  startMovingElements();
-};
-
-// 弹窗轰炸
-const startPopupBombing = () => {
-  if (popupBombingActive.value) {
-    setInterval(() => {
-      if (isUltraAnnoyingMode.value && adPopups.value.length < 10) {
-        for (let i = 0; i < 2; i++) {
-          setTimeout(() => {
-            createAnnoyingPopup();
-          }, i * 300);
-        }
-      }
-    }, 1500); // 更频繁的弹窗
-  }
-};
-
-// 移动元素功能
-const startMovingElements = () => {
-  setInterval(() => {
-    if (movingElements.value) {
-      // 让所有按钮随机移动位置
-      const buttons = document.querySelectorAll('.popup-btn, .mega-button, .overlay-btn');
-      buttons.forEach(button => {
-        if (Math.random() > 0.7) {
-          const randomX = (Math.random() - 0.5) * 100;
-          const randomY = (Math.random() - 0.5) * 100;
-          button.style.transform = `translate(${randomX}px, ${randomY}px) rotate(${Math.random() * 20 - 10}deg)`;
-          
-          setTimeout(() => {
-            button.style.transform = 'none';
-          }, 2000);
-        }
-      });
-    }
-  }, 3000);
-};
-
-// 增强版继续恶搞体验
-const continueAnnoyingExperience = () => {
-  annoyanceLevel.value++;
-  
-  // 根据点击次数增加恶心程度
-  if (annoyanceLevel.value <= 3) {
-    const fakeMessages = [
-      "🤡 想回去?你想多了!",
-      "😈 这里就是你的新家!",
-      "🎪 欢迎来到广告监狱!"
-    ];
-    showCustomNotificationFn(fakeMessages[annoyanceLevel.value - 1]);
-  } else if (annoyanceLevel.value <= 6) {
-    const escalationMessages = [
-      "🔥 广告强度正在飙升...",
-      "⚡ 系统正在释放更多广告能量...",
-      "🌪️ 广告风暴即将席卷而来..."
-    ];
-    showCustomNotificationFn(escalationMessages[annoyanceLevel.value - 4]);
-    
-    // 开始移动界面元素
-    movingElements.value = true;
-    createFakeCloseButtons();
-  } else if (annoyanceLevel.value <= 10) {
-    showCustomNotificationFn("🚀 恭喜触发终极广告轰炸模式!");
-    activateUltraAnnoyingMode();
-    
-    // 启动假加载
-    showFakeLoading();
-  } else {
-    // 超过10次点击,给假的"怜悯"选项
-    showPrankDialogFn(
-      '🙏 您已经尝试逃离了' + annoyanceLevel.value + '次!\n\n真的想显示离开选项吗?\n\n(提示:选"否"可能会更糟糕)',
-      (choice) => {
-        if (choice) {
-          // 即使用户选择"是",也继续恶搞
-          setTimeout(() => {
-            showCustomNotificationFn("😈 刚才只是在测试您的耐心!广告继续!");
-            activateUltraAnnoyingMode();
-            createFakeCloseButtons();
-          }, 2000);
-        } else {
-          showCustomNotificationFn("🎉 您选择了继续广告体验!恶心等级MAX!");
-          annoyanceLevel.value = 999;
-          activateUltraAnnoyingMode();
-          
-          // 疯狂轰炸
-          for (let i = 0; i < 5; i++) {
-            setTimeout(() => createAnnoyingPopup(), i * 1000);
-          }
-        }
-      }
-    );
-  }
-  
-  // 每次点击都触发更多恶搞内容
-  triggerPrankContent();
-  createAnnoyingSound();
-};
-
-// 触发恶搞内容
-const triggerPrankContent = () => {
-  const prankActions = [
-    () => createMultiplePopups(),
-    () => {
-      document.body.style.filter = 'hue-rotate(' + Math.random() * 360 + 'deg) brightness(' + (0.5 + Math.random()) + ')';
-      setTimeout(() => {
-        document.body.style.filter = 'none';
-      }, 3000);
-    },
-    () => {
-      document.body.style.transform = 'rotate(' + (Math.random() * 6 - 3) + 'deg) scale(' + (0.95 + Math.random() * 0.1) + ')';
-      setTimeout(() => {
-        document.body.style.transform = 'none';
-      }, 2000);
-    },
-    () => showFakeLoading(),
-    () => createFakeCloseButtons(),
-    () => {
-      // 让整个页面闪烁
-      document.body.style.opacity = '0.5';
-      setTimeout(() => {
-        document.body.style.opacity = '1';
-      }, 500);
-    }
-  ];
-  
-  const randomAction = prankActions[Math.floor(Math.random() * prankActions.length)];
-  randomAction();
-};
-
-// 假加载屏幕
-const showFakeLoading = () => {
-  fakeLoadingScreen.value = true;
-  showCustomNotificationFn("正在连接广告母星...");
-  
-  let progress = 0;
-  const loadingInterval = setInterval(() => {
-    progress += Math.random() * 3;
-    if (progress >= 99.8) {
-      progress = 99.8;
-      clearInterval(loadingInterval);
-      
-      // 假装加载失败,然后重新开始
-      setTimeout(() => {
-        fakeLoadingScreen.value = false;
-        showCustomNotificationFn("连接失败!正在重新建立广告链接...");
-        
-        // 重新开始假加载
-        setTimeout(() => {
-          if (isUltraAnnoyingMode.value) {
-            showFakeLoading();
-          }
-        }, 3000);
-      }, 5000);
-    }
-  }, 150);
-};
-
-// 生成随机访问者编号
-const getRandomVisitorNumber = () => {
-  return (1000000 + Math.floor(Math.random() * 1000)).toLocaleString();
-};
-
-// 生成随机倒计时
-const getRandomTime = () => {
-  const hours = Math.floor(Math.random() * 24).toString().padStart(2, '0');
-  const minutes = Math.floor(Math.random() * 60).toString().padStart(2, '0');
-  const seconds = Math.floor(Math.random() * 60).toString().padStart(2, '0');
-  return `${hours}:${minutes}:${seconds}`;
-};
-
-// 生成随机IP地址
-const getRandomIP = () => {
-  return `${Math.floor(Math.random() * 255)}.${Math.floor(Math.random() * 255)}.${Math.floor(Math.random() * 255)}.${Math.floor(Math.random() * 255)}`;
-};
-
-// 生成随机奖品价值
-const getRandomPrizeValue = () => {
-  return (Math.random() * 10000000 + 1000000).toFixed(0);
-};
-
-// 生成随机病毒数量
-const getRandomVirusCount = () => {
-  return Math.floor(Math.random() * 999) + 1;
-};
-
-// 显示自定义离开确认对话框
-const showCustomLeaveDialog = () => {
-  showLeaveDialog.value = true;
-  createAnnoyingSound();
-};
-
-// 用户确认离开
-const confirmLeave = () => {
-  const farewell = [
-    "👋 感谢体验恶搞广告!",
-    "💔 我们会想念您的!",
-    "🎭 希望您玩得开心!",
-    "🔄 随时欢迎回来继续恶搞!",
-    "😄 成功逃脱广告轰炸!"
-  ];
-  
-  showCustomNotificationFn(farewell[Math.floor(Math.random() * farewell.length)]);
-  showLeaveDialog.value = false;
-  
-  // 延迟跳转,让用户看到通知
-  setTimeout(() => {
-    router.push('/');
-  }, 1500);
-};
-
-// 用户选择继续留下
-const stayAndContinue = () => {
-  showLeaveDialog.value = false;
-  showCustomNotificationFn("🎉 明智的选择!广告轰炸继续!");
-  
-  // 重新激活所有恶搞功能
-  showMainAd.value = true;
-  showOverlayAd.value = true;
-  createMultiplePopups();
-  createAnnoyingSound();
-};
-
-// 增强版恶搞轮盘
-const showLuckyWheel = ref(false);
-const wheelSpinning = ref(false);
-const wheelResult = ref('');
-const luckyWheelPrizes = [
-  '🎁 恭喜获得空气一份!',
-  '💰 恭喜获得梦想一个!',
-  '🏠 恭喜获得云彩别墅!',
-  '🚗 恭喜获得想象跑车!',
-  '💎 恭喜获得虚拟钻石!',
-  '🎪 恭喜获得永恒恶搞!',
-  '🎭 恭喜获得无限套路!',
-  '🎨 恭喜获得画饼技能!'
-];
-
-// 疯狂弹窗类型
-const popupTypes = [
-  'urgent-winner', 'fake-security', 'celebrity-call', 'limited-time',
-  'virus-warning', 'bank-notification', 'system-update', 'exclusive-offer',
-  'friend-recommendation', 'government-notice', 'lucky-draw', 'prize-expired'
-];
-
-// 弹窗轰炸计数器
-const popupBombCount = ref(0);
-const maxPopups = ref(20); // 最大同时弹窗数
-
-// 创建疯狂弹窗
-const createCrazyPopup = (type = null) => {
-  if (adPopups.value.length >= maxPopups.value) {
-    // 如果达到最大数量,移除最老的弹窗
-    adPopups.value.shift();
-  }
-  
-  const popupType = type || popupTypes[Math.floor(Math.random() * popupTypes.length)];
-  const popup = {
-    id: Date.now() + Math.random(),
-    type: popupType,
-    text: getCrazyPopupText(popupType),
-    position: getRandomPosition(),
-    zIndex: 1000 + popupCount.value,
-    isMoving: Math.random() > 0.7,
-    color: getRandomColor(),
-    size: Math.random() > 0.5 ? 'large' : 'normal'
-  };
-  
-  adPopups.value.push(popup);
-  popupCount.value++;
-  popupBombCount.value++;
-  
-  // 播放恼人音效
-  createPopupSound();
-  
-  // 页面震动
-  if (navigator.vibrate) {
-    navigator.vibrate([100, 50, 100]);
-  }
-  
-  // 随机改变页面标题
-  updateAnnoyingTitle();
-};
-
-// 获取疯狂弹窗文本
-const getCrazyPopupText = (type) => {
-  const popupTexts = {
-    'urgent-winner': [
-      '🚨 紧急通知:您是第99999位访客!立即领取999万!',
-      '⚠️ 警告:奖品库存仅剩1份!马上领取!',
-      '🔥 热烈祝贺:您被选为超级幸运用户!'
-    ],
-    'fake-security': [
-      '🔒 安全提醒:检测到异常访问,请立即验证身份!',
-      '🛡️ 系统保护:为保护您的奖品,请完成安全认证!',
-      '⚡ 防护警告:发现可疑活动,请立即处理!'
-    ],
-    'celebrity-call': [
-      '📞 马🐴来电:恭喜您中奖!请接听重要电话!',
-      '📱 雷🐯留言:我也是在这里发家致富的!',
-      '💬 刘🐧推荐:错过这次机会您会后悔终生!'
-    ],
-    'limited-time': [
-      '⏰ 限时特价:仅剩3分59秒!错过再等100年!',
-      '⏳ 倒计时:距离活动结束还有2小时!',
-      '🕐 最后机会:优惠即将结束,立即行动!'
-    ],
-    'virus-warning': [
-      '🦠 病毒警告:检测到恶意软件!立即下载杀毒软件!',
-      '⚠️ 安全威胁:您的电脑已被感染!马上清理!',
-      '🔥 紧急:发现木马病毒!点击立即清除!'
-    ],
-    'bank-notification': [
-      '🏦 银行通知:您的账户有999万待入账!',
-      '💳 支付提醒:检测到大额转账,请确认身份!',
-      '💰 财务通知:您的投资已获得超额收益!'
-    ],
-    'system-update': [
-      '🔄 系统更新:正在安装重要安全补丁...',
-      '⚙️ 程序升级:恶搞系统正在升级到2.0版本!',
-      '🔧 维护通知:系统将在5秒后重启!'
-    ],
-    'exclusive-offer': [
-      '🎁 专属优惠:仅限今日!VIP会员免费升级!',
-      '⭐ 特别邀请:您已被选为内测用户!',
-      '🏆 独家福利:恭喜获得终身免费资格!'
-    ],
-    'friend-recommendation': [
-      '👥 好友推荐:您的朋友李小明推荐您参加!',
-      '🤝 社交分享:已有10000+好友成功中奖!',
-      '💫 口碑推荐:99.9%用户都选择了我们!'
-    ],
-    'government-notice': [
-      '🏛️ 官方通知:根据新政策,您有资格领取补贴!',
-      '📜 政府公告:恭喜您符合特殊奖励条件!',
-      '🎖️ 国家认证:您已获得官方认可资格!'
-    ],
-    'lucky-draw': [
-      '🎰 幸运抽奖:恭喜您获得转盘机会!立即参与!',
-      '🎲 运气爆棚:今天是您的幸运日!',
-      '🌟 天选之子:您的运气值已达到MAX!'
-    ],
-    'prize-expired': [
-      '⏰ 奖品到期:您的奖品将在60秒后作废!',
-      '🚨 紧急提醒:未领取的奖品即将清空!',
-      '⚠️ 最后通牒:过期奖品无法找回!'
-    ]
-  };
-  
-  const texts = popupTexts[type] || popupTexts['urgent-winner'];
-  return texts[Math.floor(Math.random() * texts.length)];
-};
-
-// 获取随机颜色
-const getRandomColor = () => {
-  const colors = [
-    'linear-gradient(45deg, #ff6b6b, #ee5a24)',
-    'linear-gradient(45deg, #feca57, #ff9ff3)',
-    'linear-gradient(45deg, #48dbfb, #0abde3)',
-    'linear-gradient(45deg, #1dd1a1, #10ac84)',
-    'linear-gradient(45deg, #a55eea, #8c7ae6)',
-    'linear-gradient(45deg, #fd79a8, #e84393)',
-    'linear-gradient(45deg, #fdcb6e, #e17055)',
-    'linear-gradient(45deg, #6c5ce7, #a29bfe)'
-  ];
-  return colors[Math.floor(Math.random() * colors.length)];
-};
-
-// 更新恼人标题
-const updateAnnoyingTitle = () => {
-  const titles = [
-    '🚨 ' + popupBombCount.value + '个弹窗已激活!',
-    '🎪 恶搞进度:' + Math.min(popupBombCount.value * 5, 100) + '%',
-    '💥 弹窗轰炸中...请勿关闭!',
-    '🎯 您已被' + popupBombCount.value + '个广告锁定!',
-    '🔥 广告强度:' + Math.min(annoyanceLevel.value * 20, 100) + '%',
-    '⚡ 系统繁忙:处理中' + popupBombCount.value + '个任务',
-    '🌪️ 广告风暴等级:' + Math.min(Math.floor(popupBombCount.value / 5), 10)
-  ];
-  document.title = titles[Math.floor(Math.random() * titles.length)];
-};
-
-// 超级弹窗轰炸模式
-const activateSuperPopupBombing = () => {
-  showCustomNotificationFn("🎪 超级弹窗轰炸模式已激活!");
-  
-  // 连续创建多个不同类型的弹窗
-  for (let i = 0; i < 5; i++) {
-    setTimeout(() => {
-      createCrazyPopup(popupTypes[i % popupTypes.length]);
-    }, i * 500);
-  }
-  
-  // 启动持续轰炸
-  const bombingInterval = setInterval(() => {
-    if (isUltraAnnoyingMode.value && adPopups.value.length < maxPopups.value) {
-      for (let i = 0; i < 3; i++) {
-        setTimeout(() => {
-          createCrazyPopup();
-        }, i * 200);
-      }
-    }
-  }, 2000);
-  
-  // 30秒后减缓频率(但不停止)
-  setTimeout(() => {
-    clearInterval(bombingInterval);
-    
-    // 启动温和一些的持续轰炸
-    setInterval(() => {
-      if (isUltraAnnoyingMode.value && Math.random() > 0.3) {
-        createCrazyPopup();
-      }
-    }, 3000);
-  }, 30000);
-};
-
-// 显示幸运转盘
-const showLuckyWheelPopup = () => {
-  showLuckyWheel.value = true;
-  showCustomNotificationFn("🎰 恭喜!您获得了专属转盘机会!");
-  createAnnoyingSound();
-};
-
-// 转动转盘
-const spinWheel = () => {
-  if (wheelSpinning.value) return;
-  
-  wheelSpinning.value = true;
-  createAnnoyingSound();
-  
-  // 模拟转盘旋转
-  setTimeout(() => {
-    wheelSpinning.value = false;
-    wheelResult.value = luckyWheelPrizes[Math.floor(Math.random() * luckyWheelPrizes.length)];
-    
-    // 显示中奖结果
-    setTimeout(() => {
-      showCustomNotificationFn(`🎉 转盘结果:${wheelResult.value}`);
-      
-      // 继续恶搞 - 要求再次转盘
-      setTimeout(() => {
-        showCustomNotificationFn("✨ 再转一次可获得更大奖品!");
-        activateSuperPopupBombing(); // 激活超级弹窗轰炸
-      }, 2000);
-    }, 1000);
-  }, 3000);
-};
-
-// 关闭幸运转盘(假的)
-const closeLuckyWheel = () => {
-  // 假装关闭,实际上创建更多弹窗
-  showLuckyWheel.value = false;
-  showCustomNotificationFn("🎪 关闭转盘?那就来更多弹窗吧!");
-  activateSuperPopupBombing();
-};
-
-// 增强版触发随机恶搞内容
-const triggerRandomPrankContent = () => {
-  const prankActions = [
-    () => createCrazyPopup('urgent-winner'),
-    () => createCrazyPopup('fake-security'), 
-    () => createCrazyPopup('celebrity-call'),
-    () => showLuckyWheelPopup(),
-    () => activateSuperPopupBombing(),
-    () => {
-      // 创建多个假关闭按钮
-      for (let i = 0; i < 10; i++) {
-        fakeCloseButtons.value.push({
-          id: Date.now() + i + Math.random(),
-          x: Math.random() * (window.innerWidth - 50),
-          y: Math.random() * (window.innerHeight - 50),
-          text: ['❌', '✕', '×', '✖', '⨯'][Math.floor(Math.random() * 5)],
-          clicked: false
-        });
-      }
-    },
-    () => {
-      // 疯狂改变页面样式
-      document.body.style.filter = `hue-rotate(${Math.random() * 360}deg) saturate(${1 + Math.random() * 2}) brightness(${0.5 + Math.random()})`;
-      setTimeout(() => {
-        document.body.style.filter = 'none';
-      }, 3000);
-    },
-    () => {
-      // 创建虚假系统消息
-      const systemMessages = [
-        'Windows正在下载更新... 99%',
-        '系统即将重启以安装更新',
-        '检测到病毒,正在清理中...',
-        '内存不足,建议关闭其他程序',
-        'CPU使用率过高,系统运行缓慢'
-      ];
-      showCustomNotificationFn(systemMessages[Math.floor(Math.random() * systemMessages.length)]);
-    }
-  ];
-  
-  // 随机执行1-3个恶搞动作
-  const actionCount = Math.floor(Math.random() * 3) + 1;
-  for (let i = 0; i < actionCount; i++) {
-    setTimeout(() => {
-      const randomAction = prankActions[Math.floor(Math.random() * prankActions.length)];
-      randomAction();
-    }, i * 1000);
-  }
-};
-
-onMounted(() => {
-  // 立即显示主广告
-  setTimeout(() => {
-    showMainAd.value = true;
-    createAnnoyingSound();
-  }, 500);
-  
-  // 减缓弹窗轰炸频率 - 从1.5秒改为3秒
-  const popupInterval = setInterval(() => {
-    // 限制最大弹窗数量
-    if (adPopups.value.length < 5) {
-      createAnnoyingPopup();
-    }
-  }, 3000);
-  
-  // 显示各种恶搞组件
-  setTimeout(() => showFloatingAds.value = true, 2000);
-  setTimeout(() => showOverlayAd.value = true, 5000);
-  setTimeout(() => showNotifications.value = true, 3000);
-  
-  // 激活鼠标陷阱
-  setTimeout(() => {
-    isMouseTrapped.value = true;
-  }, 3000);
-  
-  // 立即创建假关闭按钮
-  createFakeCloseButtons();
-
-  // 每5秒随机播放恶心音效
-  setInterval(() => {
-    if (Math.random() > 0.6) {
-      createAnnoyingSound();
-    }
-  }, 5000);
-
-  // 每3秒随机更改页面标题
-  const annoyingTitles = [
-    '🎉 恭喜中奖!点击领取百万大奖!',
-    '⚠️ 您的电脑已被感染!立即清理!',
-    '💰 限时优惠!错过再等100年!',
-    '🚨 系统警告!请勿关闭此页面!',
-    '🎁 免费iPhone等你来拿!',
-    '⭐ 广告宇宙欢迎您的到来!',
-    '🔥 热门!单身美女等你聊天!',
-    '💎 钻石会员专属特权!'
-  ];
-  
-  setInterval(() => {
-    const randomTitle = annoyingTitles[Math.floor(Math.random() * annoyingTitles.length)];
-    document.title = randomTitle;
-  }, 3000);
-
-  // 监控用户行为,恶心等级达到5时激活超级恶心模式
-  setInterval(() => {
-    if (annoyanceLevel.value >= 5 && !isUltraAnnoyingMode.value) {
-      activateUltraAnnoyingMode();
-    }
-    
-    // 如果处于超级恶心模式,随机触发恶搞内容
-    if (isUltraAnnoyingMode.value && Math.random() > 0.7) {
-      triggerPrankContent();
-    }
-  }, 2000);
-
-  // 每15秒自动增加恶心等级(最大10级)
-  setInterval(() => {
-    if (annoyanceLevel.value < 10) {
-      annoyanceLevel.value++;
-      showCustomNotificationFn(`广告恶心等级提升至 ${annoyanceLevel.value} 级!`);
-    }
-  }, 15000);
-  
-  // 添加键盘和右键限制(保留恶搞效果)
-  document.addEventListener('mousemove', handleMouseMove);
-  document.addEventListener('contextmenu', disableRightClick);
-  document.addEventListener('keydown', disableShortcuts);
-  
-  // 禁用键盘快捷键,包括F5刷新、Ctrl+W关闭等
-  document.addEventListener('keydown', (e) => {
-    // 禁用F5刷新
-    if (e.key === 'F5') {
-      e.preventDefault();
-      showCustomNotificationFn('刷新功能已被广告系统锁定!');
-      createAnnoyingSound();
-    }
-    
-    // 禁用Ctrl+W关闭窗口
-    if (e.ctrlKey && e.key === 'w') {
-      e.preventDefault();
-      showCustomNotificationFn('关闭功能已被广告系统接管!');
-      createAnnoyingSound();
-    }
-    
-    // 禁用Alt+F4
-    if (e.altKey && e.key === 'F4') {
-      e.preventDefault();
-      showCustomNotificationFn('Alt+F4已被广告系统屏蔽!');
-      createAnnoyingSound();
-    }
-    
-    // 禁用Ctrl+T新建标签页
-    if (e.ctrlKey && e.key === 't') {
-      e.preventDefault();
-      showCustomNotificationFn('新建标签页功能已被锁定!');
-    }
-    
-    // 禁用Escape键
-    if (e.key === 'Escape') {
-      e.preventDefault();
-      showCustomNotificationFn('Escape键在广告宇宙中无效!');
-      createAnnoyingSound();
-    }
-  });
-  
-  // 定时改变背景颜色制造闪烁效果
-  const colorInterval = setInterval(() => {
-    const colors = ['#ff6b6b', '#4ecdc4', '#45b7d1', '#96ceb4', '#ffeaa7'];
-    document.body.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];
-  }, 3000);
-  
-  // 页面加载完成后开始持续的音效骚扰(减少频率)
-  setTimeout(() => {
-    const soundInterval = setInterval(() => {
-      if (Math.random() > 0.8) { // 从0.7改为0.8,减少音效频率
-        createAnnoyingSound();
-      }
-    }, 8000); // 从5秒改为8秒
-  }, 10000);
-
-  // 监控页面失焦事件(用户试图离开)
-  window.addEventListener('blur', () => {
-    if (isUltraAnnoyingMode.value) {
-      showCustomNotificationFn('想逃跑?门都没有!');
-      createAnnoyingSound();
-    }
-  });
-
-  // 20秒后随机显示假加载屏幕
-  setTimeout(() => {
-    if (Math.random() > 0.5) {
-      showFakeLoading();
-    }
-  }, 20000);
-
-  // 开始监控鼠标移动(反向控制)
-  if (invertedControls.value) {
-    document.addEventListener('mousemove', (e) => {
-      if (invertedControls.value) {
-        // 反向鼠标控制
-        const invertedX = window.innerWidth - e.clientX;
-        const invertedY = window.innerHeight - e.clientY;
-        
-        // 创建虚假光标指示器
-        let fakeCursor = document.getElementById('fake-cursor');
-        if (!fakeCursor) {
-          fakeCursor = document.createElement('div');
-          fakeCursor.id = 'fake-cursor';
-          fakeCursor.style.cssText = `
-            position: fixed;
-            width: 20px;
-            height: 20px;
-            background: red;
-            border-radius: 50%;
-            pointer-events: none;
-            z-index: 10000;
-            transition: all 0.1s ease;
-          `;
-          document.body.appendChild(fakeCursor);
-        }
-        
-        fakeCursor.style.left = invertedX + 'px';
-        fakeCursor.style.top = invertedY + 'px';
-      }
-    });
-  }
-
-  // 添加页面失焦处理
-  window.addEventListener('blur', handlePageBlur);
-});
-
-onUnmounted(() => {
-  // 清理事件监听器
-  document.removeEventListener('mousemove', handleMouseMove);
-  // 移除页面离开阻拦
-  // window.removeEventListener('beforeunload', blockPageLeave);
-  document.removeEventListener('contextmenu', disableRightClick);
-  document.removeEventListener('keydown', disableShortcuts);
-
-  // 移除页面失焦处理
-  window.removeEventListener('blur', handlePageBlur);
-});
-
-// 获取弹窗标题
-const getPopupTitle = (type) => {
-  const titles = {
-    'urgent-winner': '🚨 紧急通知',
-    'fake-security': '🔒 安全提醒',
-    'celebrity-call': '📞 马🐴来电',
-    'limited-time': '⏰ 限时特价',
-    'virus-warning': '🦠 病毒警告',
-    'bank-notification': '🏦 银行通知',
-    'system-update': '🔄 系统更新',
-    'exclusive-offer': '🎁 专属优惠',
-    'friend-recommendation': '👥 好友推荐',
-    'government-notice': '🏛️ 官方通知',
-    'lucky-draw': '🎰 幸运抽奖',
-    'prize-expired': '⏰ 奖品到期'
-  };
-  return titles[type] || titles['urgent-winner'];
-};
-
-// 获取弹窗图标
-const getPopupIcon = (type) => {
-  const icons = {
-    'urgent-winner': '🏆',
-    'fake-security': '🔒',
-    'celebrity-call': '📞',
-    'limited-time': '⏰',
-    'virus-warning': '🦠',
-    'bank-notification': '🏦',
-    'system-update': '🔄',
-    'exclusive-offer': '🎁',
-    'friend-recommendation': '👥',
-    'government-notice': '🏛️',
-    'lucky-draw': '🎰',
-    'prize-expired': '⏰'
-  };
-  return icons[type] || icons['urgent-winner'];
-};
-
-// 获取按钮文本
-const getActionButtonText = (type) => {
-  const texts = {
-    'urgent-winner': '🏆 立即领取',
-    'fake-security': '🔒 立即验证',
-    'celebrity-call': '📞 接听电话',
-    'limited-time': '🕐 立即行动',
-    'virus-warning': '🦠 立即下载',
-    'bank-notification': '🏦 立即转账',
-    'system-update': '🔄 立即更新',
-    'exclusive-offer': '🎁 VIP升级',
-    'friend-recommendation': '👥 推荐好友',
-    'government-notice': '🏛️ 领取补贴',
-    'lucky-draw': '🎰 参与抽奖',
-    'prize-expired': '⚡ 紧急领取'
-  };
-  return texts[type] || texts['urgent-winner'];
-};
-
-// 获取倒计时
-const getFakeCountdown = () => {
-  const now = new Date().getTime();
-  const end = new Date(now + 1000 * 60 * 60 * 24).getTime();
-  const diff = end - now;
-  const days = Math.floor(diff / (1000 * 60 * 60 * 24));
-  const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
-  const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
-  const seconds = Math.floor((diff % (1000 * 60)) / 1000);
-  return `${days}天 ${hours}小时 ${minutes}分钟 ${seconds}秒`;
-};
-
-// 处理弹窗操作
-const handlePopupAction = (popup) => {
-  switch (popup.type) {
-    case 'urgent-winner':
-      activateSuperPopupBombing();
-      break;
-    case 'fake-security':
-      createCrazyPopup('virus-warning');
-      break;
-    case 'celebrity-call':
-      createCrazyPopup('government-notice');
-      break;
-    case 'lucky-draw':
-      showLuckyWheelPopup();
-      break;
-    case 'prize-expired':
-      triggerRandomPrankContent();
-      break;
-    default:
-      // 处理其他类型的弹窗操作
-      break;
-  }
-};
-</script>
-
-<template>
-  <div class="fake-ad-container">
-    <!-- 恶搞头部 -->
-    <div class="header">
-      <button 
-        class="back-btn" 
-        @click="continueAnnoyingExperience"
-        :class="{ 'moving': movingElements, 'shake': screenShake }"
-      >
-        继续体验
-      </button>
-      <div class="annoying-banner">
-        <span class="blink-text">🔥 超级特价!今日限时!🔥</span>
-      </div>
-    </div>
-    
-    <!-- 大量假关闭按钮 -->
-    <div 
-      v-for="btn in fakeCloseButtons" 
-      :key="btn.id"
-      class="scattered-fake-button"
-      :style="{ left: btn.x + 'px', top: btn.y + 'px' }"
-      @click="clickFakeCloseButton(btn.id)"
-      :class="{ 'clicked': btn.clicked, 'moving': movingElements }"
-    >
-      {{ btn.text }}
-    </div>
-
-    <!-- 假加载屏幕 -->
-    <div v-if="fakeLoadingScreen" class="fake-loading-overlay">
-      <div class="fake-loading-content">
-        <div class="loading-spinner"></div>
-        <h2>🎪 广告系统升级中...</h2>
-        <div class="loading-bar">
-          <div class="loading-progress"></div>
-        </div>
-        <p class="loading-text">正在下载更多广告内容... 99.8%</p>
-        <p class="loading-subtext">⚠️ 请勿离开,广告即将变得更精彩!</p>
-      </div>
-    </div>
-
-    <!-- 超级恶心模式指示器 -->
-    <div v-if="isUltraAnnoyingMode" class="ultra-mode-indicator">
-      <div class="mode-badge">🎪 超级广告模式已激活</div>
-      <div class="annoyance-meter">
-        <div class="meter-fill" :style="{ width: Math.min(annoyanceLevel * 10, 100) + '%' }"></div>
-        <span class="meter-text">恶心等级: {{ annoyanceLevel }}</span>
-      </div>
-    </div>
-
-    <!-- 移动的恶搞文本 -->
-    <div v-if="movingElements" class="moving-text-container">
-      <div class="moving-text" v-for="n in 6" :key="n">
-        🎭 您已被广告永久绑定!
-      </div>
-    </div>
-    
-    <!-- 背景恶搞效果 -->
-    <div class="background-effects">
-      <div class="floating-money">💰</div>
-      <div class="floating-money">💎</div>
-      <div class="floating-money">🎁</div>
-      <div class="floating-money">🎉</div>
-      <div class="floating-money">💸</div>
-    </div>
-    
-    <!-- 弹窗容器 -->
-    <div class="popup-container">
-      <div 
-        v-for="popup in adPopups" 
-        :key="popup.id" 
-        class="ad-popup crazy-popup"
-        :class="[
-          `popup-${popup.type}`, 
-          `popup-${popup.size}`,
-          { 'moving-popup': popup.isMoving }
-        ]"
-        :style="{ 
-          left: popup.position.left, 
-          top: popup.position.top,
-          zIndex: popup.zIndex,
-          background: popup.color
-        }"
-      >
-        <div class="popup-header crazy-header">
-          <span class="popup-title" v-html="getPopupTitle(popup.type)"></span>
-          <div class="fake-controls">
-            <span class="fake-minimize">➖</span>
-            <span class="fake-maximize">⬜</span>
-            <button 
-              class="close-btn crazy-close" 
-              @click="closePopup(popup.id)"
-              title="关闭弹窗"
-            >
-              ❌
-            </button>
-          </div>
-        </div>
-        
-        <div class="popup-body crazy-body">
-          <div class="popup-icon" v-html="getPopupIcon(popup.type)"></div>
-          <div class="popup-text" v-html="popup.text"></div>
-          
-          <!-- 根据弹窗类型显示不同按钮 -->
-          <div class="popup-actions">
-            <button 
-              v-if="popup.type === 'urgent-winner'" 
-              class="action-btn winner-btn"
-              @click="activateSuperPopupBombing"
-            >
-              🏆 立即领取
-            </button>
-            
-            <button 
-              v-if="popup.type === 'fake-security'" 
-              class="action-btn security-btn"
-              @click="createCrazyPopup('virus-warning')"
-            >
-              🔒 立即验证
-            </button>
-            
-            <button 
-              v-if="popup.type === 'celebrity-call'" 
-              class="action-btn celebrity-btn"
-              @click="createCrazyPopup('government-notice')"
-            >
-              📞 接听电话
-            </button>
-            
-            <button 
-              v-if="popup.type === 'lucky-draw'" 
-              class="action-btn lucky-btn"
-              @click="showLuckyWheelPopup"
-            >
-              🎰 参与抽奖
-            </button>
-            
-            <button 
-              v-if="popup.type === 'prize-expired'" 
-              class="action-btn urgent-btn"
-              @click="triggerRandomPrankContent"
-            >
-              ⚡ 紧急领取
-            </button>
-            
-            <!-- 通用按钮 -->
-            <button 
-              class="action-btn default-btn"
-              @click="handlePopupAction(popup)"
-            >
-              {{ getActionButtonText(popup.type) }}
-            </button>
-            
-            <button 
-              class="action-btn cancel-btn"
-              @click="createCrazyPopup()"
-            >
-              ❌ 拒绝
-            </button>
-          </div>
-        </div>
-        
-        <!-- 假的进度条 -->
-        <div v-if="popup.type === 'system-update'" class="fake-progress">
-          <div class="progress-bar">
-            <div class="progress-fill"></div>
-          </div>
-          <span class="progress-text">系统更新中... 99.9%</span>
-        </div>
-        
-        <!-- 假的倒计时 -->
-        <div v-if="popup.type === 'limited-time' || popup.type === 'prize-expired'" class="fake-countdown">
-          <span class="countdown-label">剩余时间:</span>
-          <span class="countdown-timer">{{ getFakeCountdown() }}</span>
-        </div>
-      </div>
-    </div>
-    
-    <!-- 超级恼人的主广告 -->
-    <div v-if="showMainAd" class="main-ad animate__animated animate__zoomIn">
-      <div class="main-ad-content">
-        <h3 class="rainbow-text">🎊 超级大奖 🎊</h3>
-        <p class="blink-text mega-text">您是第{{ getRandomVisitorNumber() }}位访问者!</p>
-        <div class="prize-showcase">
-          <div class="prize-item">🏠 别墅一套</div>
-          <div class="prize-item">🚗 豪车一辆</div>
-          <div class="prize-item">💰 现金100万</div>
-          <div class="prize-item">💎 黄金10公斤</div>
-        </div>
-        <p class="urgent-text">⚠️ 24小时内领取,否则自动作废!</p>
-        <button class="claim-btn mega-button animate__animated animate__pulse animate__infinite" @click="clickAd">
-          🎯 立即领取全部奖品!
-        </button>
-        <div class="fake-timer">
-          倒计时:{{ getRandomTime() }}
-        </div>
-        <button class="close-main-ad" @click="continueAnnoyingExperience">×</button>
-      </div>
-    </div>
-    
-    <!-- 全屏覆盖恶搞广告 - 永远显示 -->
-    <div v-if="showOverlayAd" class="overlay-ad animate__animated animate__fadeIn">
-      <div class="overlay-content">
-        <h2 class="rainbow-text">🎁 永恒天降大奖!🎁</h2>
-        <p class="mega-text">您的永恒IP地址 {{ getRandomIP() }}</p>
-        <div class="prize-wheel"></div>
-        <p class="blink-text">无限奖品总价值:¥{{ getRandomPrizeValue() }}</p>
-        <button class="overlay-btn mega-button" @click="clickAd">
-          🏆 永远转动幸运轮盘!
-        </button>
-        <div class="warning-text">
-          ⚠️ 不领取将永远待在这里!
-        </div>
-        <button class="overlay-close" @click="continueAnnoyingExperience">×</button>
-      </div>
-    </div>
-    
-    <!-- 假病毒警告 -->
-    <div v-if="showFakeVirus" class="virus-warning animate__animated animate__flash">
-      <h2>🚨 检测到严重病毒感染!🚨</h2>
-      <p>已发现 {{ getRandomVirusCount() }} 个恶意软件!</p>
-      <button @click="showFakeVirus = false">立即修复</button>
-    </div>
-    
-    <!-- 浮动广告组件 -->
-    <FloatingAds v-if="showFloatingAds" />
-    
-    <!-- 假下载组件 -->
-    <FakeDownload v-if="showFakeDownload" />
-    
-    <!-- 假通知组件 -->
-    <FakeNotifications v-if="showNotifications" />
-    
-    <!-- 自定义离开确认对话框 -->
-    <div v-if="showLeaveDialog" class="leave-dialog-overlay">
-      <div class="leave-dialog">
-        <div class="leave-dialog-header">
-          <h3>🎯 真的要离开广告天堂吗?</h3>
-        </div>
-        <div class="leave-dialog-content">
-          <p>离开就意味着你将错过:</p>
-          <ul class="miss-list">
-            <li>💰 100万现金大奖</li>
-            <li>🏠 豪华别墅一套</li>
-            <li>🚗 限量版跑车</li>
-            <li>💎 钻石珠宝礼盒</li>
-            <li>🎪 永恒的广告体验</li>
-          </ul>
-          <p class="final-plea">再想想吧,机会难得!</p>
-        </div>
-        <div class="leave-dialog-buttons">
-          <button @click="stayAndContinue" class="stay-button">留下来享受!</button>
-          <button @click="confirmLeave" class="leave-button">我意已决</button>
-        </div>
-      </div>
-    </div>
-    
-    <!-- 自定义通知 - 替代alert -->
-    <div v-if="showCustomNotification" class="custom-notification">
-      <div class="notification-content">
-        <div class="notification-icon">🔔</div>
-        <div class="notification-message">{{ customNotificationMessage }}</div>
-        <button class="notification-close" @click="showCustomNotification = false">×</button>
-      </div>
-    </div>
-    
-    <!-- 自定义恶搞对话框 - 替代confirm -->
-    <div v-if="showPrankDialog" class="prank-dialog-overlay">
-      <div class="prank-dialog">
-        <div class="prank-dialog-header">
-          <h3>🎭 恶搞提示</h3>
-        </div>
-        <div class="prank-dialog-content">
-          <p>{{ prankDialogContent }}</p>
-        </div>
-        <div class="prank-dialog-buttons">
-          <button @click="closePrankDialog(true)" class="prank-yes-button">是</button>
-          <button @click="closePrankDialog(false)" class="prank-no-button">否</button>
-        </div>
-      </div>
-    </div>
-
-    <!-- 幸运转盘弹窗 -->
-    <div v-if="showLuckyWheel" class="lucky-wheel-overlay">
-      <div class="lucky-wheel-container">
-        <div class="wheel-header">
-          <h2>🎰 超级幸运转盘 🎰</h2>
-          <button class="wheel-close" @click="closeLuckyWheel">❌</button>
-        </div>
-        
-        <div class="wheel-content">
-          <div class="wheel-display" :class="{ 'spinning': wheelSpinning }">
-            <div class="wheel-segment" v-for="(prize, index) in luckyWheelPrizes" :key="index">
-              {{ prize.split(' ')[0] }}
-            </div>
-            <div class="wheel-pointer">👆</div>
-          </div>
-          
-          <div class="wheel-result" v-if="wheelResult">
-            <h3>🎉 恭喜您获得:</h3>
-            <p class="result-text">{{ wheelResult }}</p>
-          </div>
-          
-          <div class="wheel-buttons">
-            <button class="spin-button" @click="spinWheel" :disabled="wheelSpinning">
-              {{ wheelSpinning ? '转盘中...' : '🎲 开始转盘' }}
-            </button>
-            <button class="spin-again-button" @click="spinWheel">
-              ✨ 再转一次
-            </button>
-          </div>
-          
-          <div class="wheel-tips">
-            <p>💡 提示:每次转盘都有惊喜!</p>
-            <p>🔥 连续转盘可获得更大奖品!</p>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.fake-ad-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
-  background-size: 400% 400%;
-  animation: gradientShift 3s ease infinite;
-  overflow: hidden;
-  font-family: 'Arial', sans-serif;
-}
-
-/* 背景渐变动画 */
-@keyframes gradientShift {
-  0% { background-position: 0% 50%; }
-  50% { background-position: 100% 50%; }
-  100% { background-position: 0% 50%; }
-}
-
-.header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  padding: 15px;
-  background: linear-gradient(90deg, #ff6b6b, #feca57);
-  box-shadow: 0 4px 20px rgba(0,0,0,0.3);
-  position: relative;
-  z-index: 100;
-}
-
-.back-btn {
-  padding: 10px 20px;
-  background: linear-gradient(45deg, #3498db, #2980b9);
-  color: white;
-  border: none;
-  border-radius: 25px;
-  cursor: pointer;
-  font-weight: bold;
-  box-shadow: 0 4px 15px rgba(52, 152, 219, 0.4);
-  transition: all 0.3s ease;
-}
-
-.back-btn:hover {
-  transform: scale(1.1);
-  box-shadow: 0 6px 20px rgba(52, 152, 219, 0.6);
-}
-
-.annoying-banner {
-  flex: 1;
-  text-align: center;
-  font-size: 18px;
-  font-weight: bold;
-  color: white;
-  text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
-}
-
-/* 漂浮背景效果 */
-.background-effects {
-  position: absolute;
-  width: 100%;
-  height: 100%;
-  overflow: hidden;
-  pointer-events: none;
-}
-
-.floating-money {
-  position: absolute;
-  font-size: 40px;
-  opacity: 0.7;
-  animation: float 6s ease-in-out infinite;
-}
-
-.floating-money:nth-child(1) { left: 10%; animation-delay: 0s; }
-.floating-money:nth-child(2) { left: 30%; animation-delay: 1s; }
-.floating-money:nth-child(3) { left: 50%; animation-delay: 2s; }
-.floating-money:nth-child(4) { left: 70%; animation-delay: 3s; }
-.floating-money:nth-child(5) { left: 90%; animation-delay: 4s; }
-
-@keyframes float {
-  0%, 100% { transform: translateY(100vh) rotate(0deg); }
-  50% { transform: translateY(-100px) rotate(180deg); }
-}
-
-.popup-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  pointer-events: none;
-  z-index: 9999;
-}
-
-.crazy-popup {
-  position: absolute;
-  width: 320px;
-  min-height: 200px;
-  background: linear-gradient(135deg, #ff6b6b, #feca57, #48dbfb, #ff9ff3);
-  background-size: 400% 400%;
-  animation: gradientShift 2s ease infinite;
-  border-radius: 15px;
-  box-shadow: 0 15px 35px rgba(0, 0, 0, 0.3);
-  border: 3px solid #fff;
-  pointer-events: auto;
-  overflow: hidden;
-  transform-origin: center;
-}
-
-.popup-small { width: 280px; min-height: 180px; }
-.popup-medium { width: 350px; min-height: 220px; }
-.popup-large { width: 420px; min-height: 280px; }
-
-/* 不同类型弹窗的特殊样式 */
-.popup-urgent-winner {
-  border: 5px solid #ff0000;
-  box-shadow: 0 0 20px rgba(255, 0, 0, 0.6);
-  animation: urgentPulse 1s infinite, gradientShift 2s ease infinite;
-}
-
-.popup-fake-security {
-  border: 3px solid #ffd700;
-  background: linear-gradient(135deg, #ff4757, #ffa502);
-}
-
-.popup-celebrity-call {
-  border: 3px solid #00ff00;
-  background: linear-gradient(135deg, #26de81, #20bf6b);
-  animation: phoneCall 2s infinite;
-}
-
-.popup-virus-warning {
-  border: 5px solid #ff0000;
-  background: linear-gradient(135deg, #ff3838, #ff6b6b);
-  animation: virusAlert 0.5s infinite;
-}
-
-.popup-system-update {
-  border: 3px solid #007bff;
-  background: linear-gradient(135deg, #3742fa, #2f3542);
-}
-
-/* 疯狂头部样式 */
-.crazy-header {
-  background: linear-gradient(90deg, #ff4757, #ff3838);
-  color: white;
-  padding: 12px 15px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  font-weight: bold;
-  position: relative;
-}
-
-.popup-title {
-  font-size: 16px;
-  font-weight: bold;
-  animation: titleBlink 1s infinite;
-}
-
-.fake-controls {
-  display: flex;
-  gap: 8px;
-  align-items: center;
-}
-
-.fake-minimize, .fake-maximize {
-  padding: 2px 6px;
-  background: rgba(255,255,255,0.2);
-  border-radius: 3px;
-  cursor: pointer;
-  font-size: 12px;
-}
-
-.crazy-close {
-  background: rgba(255,255,255,0.2);
-  border: none;
-  color: white;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  width: 25px;
-  height: 25px;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  transition: all 0.3s ease;
-}
-
-.crazy-close:hover {
-  background: rgba(255,255,255,0.4);
-  transform: rotate(90deg);
-}
-
-/* 疯狂内容样式 */
-.crazy-body {
-  padding: 20px;
-  text-align: center;
-  color: white;
-  font-weight: bold;
-}
-
-.popup-icon {
-  font-size: 48px;
-  margin-bottom: 15px;
-  animation: iconBounce 2s infinite;
-}
-
-.popup-text {
-  font-size: 16px;
-  line-height: 1.5;
-  margin-bottom: 20px;
-  text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
-}
-
-/* 弹窗按钮样式 */
-.popup-actions {
-  display: flex;
-  flex-direction: column;
-  gap: 10px;
-}
-
-.action-btn {
-  padding: 12px 20px;
-  border: none;
-  border-radius: 25px;
-  font-size: 14px;
-  font-weight: bold;
-  cursor: pointer;
-  transition: all 0.3s ease;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-}
-
-.winner-btn {
-  background: linear-gradient(45deg, #ffd700, #ffb347);
-  color: #333;
-  animation: goldenShine 2s infinite;
-}
-
-.security-btn {
-  background: linear-gradient(45deg, #ff4757, #ff3838);
-  color: white;
-}
-
-.celebrity-btn {
-  background: linear-gradient(45deg, #26de81, #20bf6b);
-  color: white;
-}
-
-.lucky-btn {
-  background: linear-gradient(45deg, #3742fa, #2f3542);
-  color: white;
-}
-
-.urgent-btn {
-  background: linear-gradient(45deg, #ff6348, #ff4757);
-  color: white;
-  animation: urgentGlow 1s infinite;
-}
-
-.default-btn {
-  background: linear-gradient(45deg, #48dbfb, #0abde3);
-  color: white;
-}
-
-.cancel-btn {
-  background: linear-gradient(45deg, #747d8c, #57606f);
-  color: white;
-}
-
-.action-btn:hover {
-  transform: translateY(-3px);
-  box-shadow: 0 8px 25px rgba(0,0,0,0.2);
-}
-
-/* 假进度条 */
-.fake-progress {
-  margin-top: 15px;
-  padding: 10px;
-  background: rgba(255,255,255,0.1);
-  border-radius: 8px;
-}
-
-.progress-bar {
-  width: 100%;
-  height: 20px;
-  background: rgba(255,255,255,0.2);
-  border-radius: 10px;
-  overflow: hidden;
-  position: relative;
-}
-
-.progress-fill {
-  height: 100%;
-  width: 99.9%;
-  background: linear-gradient(90deg, #26de81, #20bf6b);
-  border-radius: 10px;
-  animation: progressBlink 2s infinite;
-}
-
-.progress-text {
-  color: white;
-  font-size: 12px;
-  margin-top: 8px;
-  display: block;
-}
-
-/* 假倒计时 */
-.fake-countdown {
-  margin-top: 15px;
-  padding: 10px;
-  background: rgba(255,255,255,0.1);
-  border-radius: 8px;
-  color: white;
-}
-
-.countdown-label {
-  font-size: 14px;
-  color: #feca57;
-}
-
-.countdown-timer {
-  font-size: 16px;
-  font-weight: bold;
-  color: #ff6348;
-  animation: countdownBlink 1s infinite;
-}
-
-/* 移动弹窗动画 */
-.moving-popup {
-  animation: crazyMove 3s infinite linear;
-}
-
-/* 动画关键帧 */
-@keyframes urgentPulse {
-  0%, 100% { 
-    transform: scale(1); 
-    box-shadow: 0 0 20px rgba(255, 0, 0, 0.6);
-  }
-  50% { 
-    transform: scale(1.05); 
-    box-shadow: 0 0 30px rgba(255, 0, 0, 0.9);
-  }
-}
-
-@keyframes phoneCall {
-  0%, 100% { transform: rotate(0deg); }
-  25% { transform: rotate(-5deg); }
-  75% { transform: rotate(5deg); }
-}
-
-@keyframes virusAlert {
-  0%, 100% { background-position: 0% 50%; }
-  50% { background-position: 100% 50%; }
-}
-
-@keyframes titleBlink {
-  0%, 50% { opacity: 1; }
-  51%, 100% { opacity: 0.7; }
-}
-
-@keyframes iconBounce {
-  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
-  40% { transform: translateY(-10px); }
-  60% { transform: translateY(-5px); }
-}
-
-@keyframes goldenShine {
-  0% { background-position: -200px; }
-  100% { background-position: 200px; }
-}
-
-@keyframes urgentGlow {
-  0%, 100% { box-shadow: 0 0 5px rgba(255, 99, 72, 0.5); }
-  50% { box-shadow: 0 0 20px rgba(255, 99, 72, 0.8); }
-}
-
-@keyframes progressBlink {
-  0%, 50% { width: 99.9%; }
-  51%, 100% { width: 99.8%; }
-}
-
-@keyframes countdownBlink {
-  0%, 50% { color: #ff6348; }
-  51%, 100% { color: #feca57; }
-}
-
-@keyframes crazyMove {
-  0% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(50px, -30px) rotate(5deg); }
-  50% { transform: translate(-30px, 50px) rotate(-5deg); }
-  75% { transform: translate(40px, -20px) rotate(3deg); }
-  100% { transform: translate(0, 0) rotate(0deg); }
-}
-
-@keyframes gradientShift {
-  0% { background-position: 0% 50%; }
-  50% { background-position: 100% 50%; }
-  100% { background-position: 0% 50%; }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .crazy-popup {
-    width: 280px;
-    min-height: 180px;
-  }
-  
-  .popup-large {
-    width: 300px;
-    min-height: 200px;
-  }
-  
-  .action-btn {
-    padding: 10px 15px;
-    font-size: 12px;
-  }
-  
-  .popup-icon {
-    font-size: 36px;
-  }
-}
-
-/* 主广告超级恶搞样式 */
-.main-ad {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  width: 90%;
-  max-width: 600px;
-  background: linear-gradient(135deg, #fff, #f8f9fa);
-  border-radius: 20px;
-  box-shadow: 0 20px 60px rgba(0,0,0,0.6);
-  z-index: 9999;
-  text-align: center;
-  padding: 30px;
-  border: 5px solid #ff6b6b;
-  animation: megaPulse 1s ease-in-out infinite;
-}
-
-@keyframes megaPulse {
-  0%, 100% { transform: translate(-50%, -50%) scale(1); }
-  50% { transform: translate(-50%, -50%) scale(1.05); }
-}
-
-.rainbow-text {
-  background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #feca57);
-  -webkit-background-clip: text;
-  -webkit-text-fill-color: transparent;
-  background-clip: text;
-  font-size: 28px;
-  font-weight: bold;
-  animation: rainbowShift 2s ease-in-out infinite;
-}
-
-@keyframes rainbowShift {
-  0%, 100% { filter: hue-rotate(0deg); }
-  50% { filter: hue-rotate(180deg); }
-}
-
-.mega-text {
-  font-size: 20px;
-  font-weight: bold;
-  color: #e74c3c;
-  margin: 15px 0;
-}
-
-.prize-showcase {
-  display: grid;
-  grid-template-columns: 1fr 1fr;
-  gap: 10px;
-  margin: 20px 0;
-}
-
-.prize-item {
-  background: linear-gradient(45deg, #feca57, #ff9ff3);
-  padding: 10px;
-  border-radius: 10px;
-  font-weight: bold;
-  color: #2c3e50;
-  border: 2px solid #ff6b6b;
-}
-
-.urgent-text {
-  color: #e74c3c;
-  font-weight: bold;
-  font-size: 16px;
-  margin: 15px 0;
-}
-
-.mega-button {
-  padding: 15px 30px;
-  background: linear-gradient(45deg, #e74c3c, #c0392b);
-  color: white;
-  border: none;
-  border-radius: 30px;
-  font-size: 18px;
-  font-weight: bold;
-  cursor: pointer;
-  box-shadow: 0 8px 25px rgba(231, 76, 60, 0.4);
-  transition: all 0.3s ease;
-  margin: 10px;
-}
-
-.mega-button:hover {
-  transform: scale(1.1);
-  box-shadow: 0 12px 35px rgba(231, 76, 60, 0.6);
-}
-
-.fake-timer {
-  background: #2c3e50;
-  color: #ecf0f1;
-  padding: 10px;
-  border-radius: 8px;
-  font-family: 'Courier New', monospace;
-  font-weight: bold;
-  margin-top: 15px;
-}
-
-.close-main-ad {
-  position: absolute;
-  top: -15px;
-  right: -15px;
-  width: 40px;
-  height: 40px;
-  border-radius: 50%;
-  background: linear-gradient(45deg, #2c3e50, #34495e);
-  color: white;
-  border: none;
-  font-size: 20px;
-  font-weight: bold;
-  cursor: pointer;
-  box-shadow: 0 4px 15px rgba(0,0,0,0.3);
-}
-
-/* 全屏覆盖恶搞广告 */
-.overlay-ad {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: linear-gradient(45deg, rgba(231, 76, 60, 0.95), rgba(155, 89, 182, 0.95));
-  z-index: 10000;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  backdrop-filter: blur(10px);
-}
-
-.overlay-content {
-  text-align: center;
-  padding: 40px;
-  max-width: 600px;
-  background: rgba(255, 255, 255, 0.95);
-  border-radius: 20px;
-  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
-  animation: overlayBounce 2s ease-in-out infinite;
-}
-
-@keyframes overlayBounce {
-  0%, 100% { transform: scale(1); }
-  50% { transform: scale(1.05); }
-}
-
-.prize-wheel {
-  width: 200px;
-  height: 200px;
-  margin: 20px auto;
-  border-radius: 50%;
-  background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #feca57, #ff9ff3);
-  animation: spin 3s linear infinite;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 40px;
-}
-
-@keyframes spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
-}
-
-.warning-text {
-  color: #e74c3c;
-  font-weight: bold;
-  margin-top: 20px;
-  font-size: 16px;
-}
-
-/* 假病毒警告 */
-.virus-warning {
-  position: fixed;
-  top: 20px;
-  right: 20px;
-  background: linear-gradient(45deg, #e74c3c, #c0392b);
-  color: white;
-  padding: 20px;
-  border-radius: 10px;
-  box-shadow: 0 8px 25px rgba(231, 76, 60, 0.4);
-  z-index: 9998;
-  text-align: center;
-  border: 3px solid #fff;
-}
-
-/* 闪烁文本动画 */
-.blink-text {
-  animation: blink 1s ease-in-out infinite;
-}
-
-@keyframes blink {
-  0%, 100% { opacity: 1; }
-  50% { opacity: 0.3; }
-}
-
-.blink-button {
-  animation: buttonPulse 1.5s ease-in-out infinite;
-}
-
-@keyframes buttonPulse {
-  0%, 100% { transform: scale(1); box-shadow: 0 8px 25px rgba(231, 76, 60, 0.4); }
-  50% { transform: scale(1.1); box-shadow: 0 12px 35px rgba(231, 76, 60, 0.8); }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .ad-popup {
-    width: 280px;
-  }
-  
-  .main-ad {
-    width: 95%;
-    padding: 20px;
-  }
-  
-  .rainbow-text {
-    font-size: 22px;
-  }
-  
-  .mega-text {
-    font-size: 16px;
-  }
-  
-  .prize-showcase {
-    grid-template-columns: 1fr;
-  }
-  
-  .mega-button {
-    padding: 12px 25px;
-    font-size: 16px;
-  }
-  
-  .overlay-content {
-    padding: 30px;
-    margin: 20px;
-  }
-  
-  .prize-wheel {
-    width: 150px;
-    height: 150px;
-    font-size: 30px;
-  }
-}
-
-@keyframes bounceIn {
-  0% { transform: scale(0.3); opacity: 0; }
-  50% { transform: scale(1.05); opacity: 0.8; }
-  70% { transform: scale(0.9); opacity: 0.9; }
-  100% { transform: scale(1); opacity: 1; }
-}
-
-/* 自定义离开确认对话框样式 */
-.leave-dialog-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: rgba(0, 0, 0, 0.8);
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  z-index: 10000;
-  animation: fadeIn 0.3s ease-in-out;
-}
-
-.leave-dialog {
-  background: linear-gradient(135deg, #ff6b6b, #feca57, #48dbfb, #ff9ff3);
-  background-size: 400% 400%;
-  animation: gradientShift 3s ease infinite, dialogBounce 0.5s ease-out;
-  border-radius: 20px;
-  padding: 30px;
-  max-width: 500px;
-  width: 90%;
-  text-align: center;
-  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
-  border: 3px solid #fff;
-}
-
-.leave-dialog-header h3 {
-  margin: 0 0 20px 0;
-  font-size: 24px;
-  font-weight: bold;
-  color: #fff;
-  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
-}
-
-.leave-dialog-content {
-  margin-bottom: 25px;
-  color: #fff;
-  font-size: 16px;
-}
-
-.leave-dialog-content p {
-  margin: 10px 0;
-  font-weight: bold;
-}
-
-.miss-list {
-  list-style: none;
-  padding: 0;
-  margin: 15px 0;
-}
-
-.miss-list li {
-  margin: 8px 0;
-  padding: 8px;
-  background: rgba(255, 255, 255, 0.2);
-  border-radius: 10px;
-  font-weight: bold;
-  animation: listItemPulse 2s ease-in-out infinite;
-}
-
-.miss-list li:nth-child(odd) {
-  animation-delay: 0.5s;
-}
-
-.final-plea {
-  font-style: italic;
-  color: #ffff00;
-  font-size: 18px;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.7);
-}
-
-.leave-dialog-buttons {
-  display: flex;
-  gap: 15px;
-  justify-content: center;
-}
-
-.leave-dialog-buttons button {
-  padding: 12px 25px;
-  border: none;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  transition: all 0.3s ease;
-  text-transform: uppercase;
-}
-
-.stay-button {
-  background: linear-gradient(45deg, #00f260, #0575e6);
-  color: white;
-  box-shadow: 0 4px 15px rgba(0, 242, 96, 0.4);
-}
-
-.stay-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(0, 242, 96, 0.6);
-}
-
-.leave-button {
-  background: linear-gradient(45deg, #ff416c, #ff4b2b);
-  color: white;
-  box-shadow: 0 4px 15px rgba(255, 65, 108, 0.4);
-}
-
-.leave-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(255, 65, 108, 0.6);
-}
-
-@keyframes gradientShift {
-  0% { background-position: 0% 50%; }
-  50% { background-position: 100% 50%; }
-  100% { background-position: 0% 50%; }
-}
-
-@keyframes dialogBounce {
-  0% { transform: scale(0.3) rotate(-10deg); opacity: 0; }
-  50% { transform: scale(1.1) rotate(5deg); opacity: 0.8; }
-  100% { transform: scale(1) rotate(0deg); opacity: 1; }
-}
-
-@keyframes listItemPulse {
-  0%, 100% { transform: scale(1); }
-  50% { transform: scale(1.05); }
-}
-
-@keyframes fadeIn {
-  from { opacity: 0; }
-  to { opacity: 1; }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .leave-dialog {
-    padding: 20px;
-    margin: 20px;
-  }
-  
-  .leave-dialog-header h3 {
-    font-size: 20px;
-  }
-  
-  .leave-dialog-content {
-    font-size: 14px;
-  }
-  
-  .leave-dialog-buttons {
-    flex-direction: column;
-  }
-  
-  .leave-dialog-buttons button {
-    width: 100%;
-    margin-bottom: 10px;
-  }
-}
-
-/* 自定义通知 - 替代alert */
-.custom-notification {
-  position: fixed;
-  top: 20px;
-  right: 20px;
-  background: rgba(255, 255, 255, 0.9);
-  padding: 10px 20px;
-  border-radius: 10px;
-  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
-  z-index: 10000;
-}
-
-.notification-content {
-  display: flex;
-  align-items: center;
-}
-
-.notification-icon {
-  font-size: 24px;
-  margin-right: 10px;
-}
-
-.notification-message {
-  font-size: 16px;
-  font-weight: bold;
-}
-
-.notification-close {
-  background: none;
-  border: none;
-  font-size: 20px;
-  cursor: pointer;
-  margin-left: auto;
-}
-
-/* 自定义恶搞对话框 - 替代confirm */
-.prank-dialog-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: rgba(0, 0, 0, 0.8);
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  z-index: 10000;
-  animation: fadeIn 0.3s ease-in-out;
-}
-
-.prank-dialog {
-  background: linear-gradient(135deg, #ff6b6b, #feca57, #48dbfb, #ff9ff3);
-  background-size: 400% 400%;
-  animation: gradientShift 3s ease infinite, dialogBounce 0.5s ease-out;
-  border-radius: 20px;
-  padding: 30px;
-  max-width: 500px;
-  width: 90%;
-  text-align: center;
-  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
-  border: 3px solid #fff;
-}
-
-.prank-dialog-header h3 {
-  margin: 0 0 20px 0;
-  font-size: 24px;
-  font-weight: bold;
-  color: #fff;
-  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
-}
-
-.prank-dialog-content {
-  margin-bottom: 25px;
-  color: #fff;
-  font-size: 16px;
-}
-
-.prank-dialog-buttons {
-  display: flex;
-  gap: 15px;
-  justify-content: center;
-}
-
-.prank-yes-button, .prank-no-button {
-  padding: 12px 25px;
-  border: none;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  transition: all 0.3s ease;
-  text-transform: uppercase;
-}
-
-.prank-yes-button {
-  background: linear-gradient(45deg, #00f260, #0575e6);
-  color: white;
-  box-shadow: 0 4px 15px rgba(0, 242, 96, 0.4);
-}
-
-.prank-yes-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(0, 242, 96, 0.6);
-}
-
-.prank-no-button {
-  background: linear-gradient(45deg, #ff416c, #ff4b2b);
-  color: white;
-  box-shadow: 0 4px 15px rgba(255, 65, 108, 0.4);
-}
-
-.prank-no-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(255, 65, 108, 0.6);
-}
-
-/* 自定义恶搞对话框 - 替代confirm */
-.prank-dialog-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: rgba(0, 0, 0, 0.8);
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  z-index: 10000;
-  animation: fadeIn 0.3s ease-in-out;
-}
-
-.prank-dialog {
-  background: linear-gradient(135deg, #ff6b6b, #feca57, #48dbfb, #ff9ff3);
-  background-size: 400% 400%;
-  animation: gradientShift 3s ease infinite, dialogBounce 0.5s ease-out;
-  border-radius: 20px;
-  padding: 30px;
-  max-width: 500px;
-  width: 90%;
-  text-align: center;
-  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
-  border: 3px solid #fff;
-}
-
-.prank-dialog-header h3 {
-  margin: 0 0 20px 0;
-  font-size: 24px;
-  font-weight: bold;
-  color: #fff;
-  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
-}
-
-.prank-dialog-content {
-  margin-bottom: 25px;
-  color: #fff;
-  font-size: 16px;
-}
-
-.prank-dialog-buttons {
-  display: flex;
-  gap: 15px;
-  justify-content: center;
-}
-
-.prank-yes-button, .prank-no-button {
-  padding: 12px 25px;
-  border: none;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  transition: all 0.3s ease;
-  text-transform: uppercase;
-}
-
-.prank-yes-button {
-  background: linear-gradient(45deg, #00f260, #0575e6);
-  color: white;
-  box-shadow: 0 4px 15px rgba(0, 242, 96, 0.4);
-}
-
-.prank-yes-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(0, 242, 96, 0.6);
-}
-
-.prank-no-button {
-  background: linear-gradient(45deg, #ff416c, #ff4b2b);
-  color: white;
-  box-shadow: 0 4px 15px rgba(255, 65, 108, 0.4);
-}
-
-.prank-no-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(255, 65, 108, 0.6);
-}
-
-/* 超级恶心模式新增样式 */
-
-/* 散落的假关闭按钮 */
-.scattered-fake-button {
-  position: fixed;
-  width: 50px;
-  height: 50px;
-  background: linear-gradient(45deg, #e74c3c, #c0392b);
-  color: white;
-  border: none;
-  border-radius: 50%;
-  font-size: 24px;
-  cursor: pointer;
-  z-index: 9999;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  box-shadow: 0 4px 15px rgba(231, 76, 60, 0.4);
-  animation: floatAroundCrazy 3s ease-in-out infinite;
-  transition: all 0.3s ease;
-}
-
-.scattered-fake-button:hover {
-  transform: scale(1.3);
-  background: linear-gradient(45deg, #ff0000, #cc0000);
-  box-shadow: 0 6px 20px rgba(255, 0, 0, 0.6);
-}
-
-.scattered-fake-button.clicked {
-  background: linear-gradient(45deg, #2ecc71, #27ae60);
-  animation: clickedExplosion 1s ease-out;
-}
-
-.scattered-fake-button.moving {
-  animation: crazyMove 2s linear infinite;
-}
-
-@keyframes floatAroundCrazy {
-  0%, 100% { transform: translate(0, 0) rotate(0deg) scale(1); }
-  25% { transform: translate(20px, -30px) rotate(90deg) scale(1.1); }
-  50% { transform: translate(-20px, 20px) rotate(180deg) scale(0.9); }
-  75% { transform: translate(30px, 10px) rotate(270deg) scale(1.2); }
-}
-
-@keyframes clickedExplosion {
-  0% { transform: scale(1) rotate(0deg); }
-  25% { transform: scale(2) rotate(90deg); opacity: 1; }
-  50% { transform: scale(3) rotate(180deg); opacity: 0.5; }
-  75% { transform: scale(4) rotate(270deg); opacity: 0.2; }
-  100% { transform: scale(1) rotate(360deg); opacity: 1; }
-}
-
-@keyframes crazyMove {
-  0% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(100px, -50px) rotate(180deg); }
-  50% { transform: translate(-100px, 100px) rotate(360deg); }
-  75% { transform: translate(50px, -100px) rotate(540deg); }
-  100% { transform: translate(0, 0) rotate(720deg); }
-}
-
-/* 假加载屏幕 */
-.fake-loading-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: linear-gradient(45deg, #1a1a1a, #2c3e50, #34495e);
-  background-size: 400% 400%;
-  animation: gradientShift 2s ease infinite;
-  z-index: 10003;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.fake-loading-content {
-  text-align: center;
-  color: white;
-  padding: 50px;
-  background: rgba(0, 0, 0, 0.9);
-  border-radius: 20px;
-  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.7);
-  border: 3px solid #e74c3c;
-  animation: loadingContentPulse 1.5s ease-in-out infinite;
-}
-
-.loading-spinner {
-  width: 100px;
-  height: 100px;
-  margin: 0 auto 30px;
-  border: 10px solid #3498db;
-  border-top: 10px solid #e74c3c;
-  border-right: 10px solid #f39c12;
-  border-bottom: 10px solid #2ecc71;
-  border-radius: 50%;
-  animation: spinCrazy 0.8s linear infinite;
-}
-
-@keyframes spinCrazy {
-  0% { transform: rotate(0deg) scale(1); }
-  25% { transform: rotate(90deg) scale(1.1); }
-  50% { transform: rotate(180deg) scale(0.9); }
-  75% { transform: rotate(270deg) scale(1.2); }
-  100% { transform: rotate(360deg) scale(1); }
-}
-
-.loading-bar {
-  width: 400px;
-  height: 30px;
-  background: #34495e;
-  border-radius: 15px;
-  margin: 25px auto;
-  overflow: hidden;
-  box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.5);
-}
-
-.loading-progress {
-  height: 100%;
-  background: linear-gradient(45deg, #e74c3c, #f39c12, #2ecc71, #3498db);
-  background-size: 400% 400%;
-  width: 99.8%;
-  animation: loadingProgressShift 2s ease-in-out infinite;
-  border-radius: 15px;
-}
-
-@keyframes loadingProgressShift {
-  0%, 100% { background-position: 0% 50%; width: 99.8%; }
-  50% { background-position: 100% 50%; width: 99.85%; }
-}
-
-@keyframes loadingContentPulse {
-  0%, 100% { transform: scale(1); }
-  50% { transform: scale(1.02); }
-}
-
-/* 超级恶心模式指示器 */
-.ultra-mode-indicator {
-  position: fixed;
-  top: 50%;
-  left: 20px;
-  transform: translateY(-50%);
-  background: rgba(0, 0, 0, 0.9);
-  padding: 20px;
-  border-radius: 15px;
-  z-index: 9998;
-  border: 3px solid #e74c3c;
-  animation: indicatorPulse 2s ease-in-out infinite;
-}
-
-.mode-badge {
-  background: linear-gradient(45deg, #e74c3c, #f39c12);
-  color: white;
-  padding: 10px 15px;
-  border-radius: 20px;
-  font-weight: bold;
-  text-align: center;
-  margin-bottom: 15px;
-  animation: badgeBlink 1s ease-in-out infinite;
-}
-
-.annoyance-meter {
-  position: relative;
-  width: 200px;
-  height: 25px;
-  background: #34495e;
-  border-radius: 12px;
-  overflow: hidden;
-}
-
-.meter-fill {
-  height: 100%;
-  background: linear-gradient(45deg, #2ecc71, #f39c12, #e74c3c);
-  transition: width 0.5s ease;
-  border-radius: 12px;
-}
-
-.meter-text {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  color: white;
-  font-weight: bold;
-  font-size: 12px;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
-}
-
-@keyframes indicatorPulse {
-  0%, 100% { transform: translateY(-50%) scale(1); }
-  50% { transform: translateY(-50%) scale(1.05); }
-}
-
-@keyframes badgeBlink {
-  0%, 100% { opacity: 1; }
-  50% { opacity: 0.7; }
-}
-
-/* 移动文本容器 */
-.moving-text-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  pointer-events: none;
-  z-index: 9997;
-}
-
-.moving-text {
-  position: absolute;
-  font-size: 28px;
-  font-weight: bold;
-  color: #e74c3c;
-  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
-  animation: textCrazyMove 6s linear infinite;
-}
-
-.moving-text:nth-child(1) {
-  left: 5%;
-  animation-delay: 0s;
-  color: #e74c3c;
-}
-
-.moving-text:nth-child(2) {
-  left: 25%;
-  animation-delay: 1s;
-  color: #f39c12;
-}
-
-.moving-text:nth-child(3) {
-  left: 45%;
-  animation-delay: 2s;
-  color: #2ecc71;
-}
-
-.moving-text:nth-child(4) {
-  left: 65%;
-  animation-delay: 3s;
-  color: #3498db;
-}
-
-.moving-text:nth-child(5) {
-  left: 85%;
-  animation-delay: 4s;
-  color: #9b59b6;
-}
-
-.moving-text:nth-child(6) {
-  left: 95%;
-  animation-delay: 5s;
-  color: #e91e63;
-}
-
-@keyframes textCrazyMove {
-  0% { transform: translateY(100vh) rotate(0deg) scale(1); opacity: 1; }
-  25% { transform: translateY(75vh) rotate(90deg) scale(1.2); opacity: 0.8; }
-  50% { transform: translateY(50vh) rotate(180deg) scale(0.8); opacity: 0.9; }
-  75% { transform: translateY(25vh) rotate(270deg) scale(1.5); opacity: 0.7; }
-  100% { transform: translateY(-50px) rotate(360deg) scale(1); opacity: 0; }
-}
-
-/* 移动和震动效果 */
-.moving {
-  animation: elementMove 4s ease-in-out infinite !important;
-}
-
-.shake {
-  animation: violentShake 0.3s ease-in-out infinite !important;
-}
-
-@keyframes elementMove {
-  0%, 100% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(15px, -10px) rotate(2deg); }
-  50% { transform: translate(-10px, 15px) rotate(-2deg); }
-  75% { transform: translate(10px, -5px) rotate(1deg); }
-}
-
-@keyframes violentShake {
-  0%, 100% { transform: translate(0, 0) rotate(0deg); }
-  10% { transform: translate(-3px, 2px) rotate(1deg); }
-  20% { transform: translate(3px, -2px) rotate(-1deg); }
-  30% { transform: translate(-2px, 3px) rotate(1deg); }
-  40% { transform: translate(2px, -3px) rotate(-1deg); }
-  50% { transform: translate(-3px, -2px) rotate(1deg); }
-  60% { transform: translate(3px, 2px) rotate(-1deg); }
-  70% { transform: translate(-2px, -3px) rotate(1deg); }
-  80% { transform: translate(2px, 3px) rotate(-1deg); }
-  90% { transform: translate(-3px, 2px) rotate(1deg); }
-}
-
-/* 全局恶心效果增强 */
-.fake-ad-container.ultra-annoying {
-  animation: containerCrazy 3s ease-in-out infinite;
-}
-
-@keyframes containerCrazy {
-  0%, 100% { 
-    transform: translateX(0) scale(1); 
-    filter: hue-rotate(0deg);
-  }
-  25% { 
-    transform: translateX(-3px) scale(1.01); 
-    filter: hue-rotate(90deg);
-  }
-  50% { 
-    transform: translateX(3px) scale(0.99); 
-    filter: hue-rotate(180deg);
-  }
-  75% { 
-    transform: translateX(-2px) scale(1.01); 
-    filter: hue-rotate(270deg);
-  }
-}
-
-/* 快速变色效果增强 */
-.rapid-color-change {
-  animation: rapidColorCrazy 0.3s ease-in-out infinite;
-}
-
-@keyframes rapidColorCrazy {
-  0% { filter: hue-rotate(0deg) saturate(2) brightness(1.2); }
-  20% { filter: hue-rotate(72deg) saturate(3) brightness(0.8); }
-  40% { filter: hue-rotate(144deg) saturate(1.5) brightness(1.5); }
-  60% { filter: hue-rotate(216deg) saturate(2.5) brightness(0.6); }
-  80% { filter: hue-rotate(288deg) saturate(1.8) brightness(1.3); }
-  100% { filter: hue-rotate(360deg) saturate(2) brightness(1.2); }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .scattered-fake-button {
-    width: 40px;
-    height: 40px;
-    font-size: 18px;
-  }
-  
-  .fake-loading-content {
-    padding: 30px;
-    margin: 20px;
-  }
-  
-  .loading-spinner {
-    width: 70px;
-    height: 70px;
-  }
-  
-  .loading-bar {
-    width: 280px;
-    height: 25px;
-  }
-  
-  .moving-text {
-    font-size: 20px;
-  }
-  
-  .ultra-mode-indicator {
-    left: 10px;
-    padding: 15px;
-  }
-  
-  .annoyance-meter {
-    width: 150px;
-    height: 20px;
-  }
-}
-
-/* 幸运转盘弹窗 */
-.lucky-wheel-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: rgba(0, 0, 0, 0.8);
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  z-index: 10001;
-  animation: fadeIn 0.3s ease-in-out;
-}
-
-.lucky-wheel-container {
-  background: linear-gradient(135deg, #ff6b6b, #feca57, #48dbfb, #ff9ff3);
-  background-size: 400% 400%;
-  animation: gradientShift 3s ease infinite, dialogBounce 0.5s ease-out;
-  border-radius: 20px;
-  padding: 30px;
-  max-width: 500px;
-  width: 90%;
-  text-align: center;
-  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
-  border: 3px solid #fff;
-}
-
-.wheel-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  padding: 12px;
-  background: linear-gradient(45deg, #ff6b6b, #ee5a52);
-  color: white;
-  font-weight: bold;
-}
-
-.wheel-close {
-  background: rgba(255,255,255,0.2);
-  border: none;
-  color: white;
-  font-size: 18px;
-  font-weight: bold;
-  cursor: pointer;
-  width: 30px;
-  height: 30px;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.wheel-content {
-  margin-top: 20px;
-}
-
-.wheel-display {
-  position: relative;
-  width: 200px;
-  height: 200px;
-  margin: 0 auto;
-  border-radius: 50%;
-  background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #feca57, #ff9ff3);
-  animation: spin 3s linear infinite;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 40px;
-}
-
-@keyframes spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
-}
-
-.wheel-pointer {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  font-size: 30px;
-  color: white;
-  animation: pointerMove 3s linear infinite;
-}
-
-@keyframes pointerMove {
-  0% { transform: translate(-50%, -50%) rotate(0deg); }
-  50% { transform: translate(-50%, -50%) rotate(180deg); }
-  100% { transform: translate(-50%, -50%) rotate(360deg); }
-}
-
-.wheel-result {
-  margin-top: 20px;
-  color: white;
-  font-size: 24px;
-  font-weight: bold;
-}
-
-.result-text {
-  margin-top: 10px;
-  font-size: 18px;
-}
-
-.wheel-buttons {
-  display: flex;
-  justify-content: space-between;
-  margin-top: 20px;
-}
-
-.spin-button, .spin-again-button {
-  flex: 1;
-  padding: 12px 25px;
-  border: none;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  transition: all 0.3s ease;
-}
-
-.spin-button:hover, .spin-again-button:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 6px 20px rgba(255, 65, 108, 0.6);
-}
-
-.wheel-tips {
-  margin-top: 20px;
-  color: white;
-  font-size: 16px;
-}
-</style> 

+ 0 - 808
exgame/src/views/FakeVirus.vue

@@ -1,808 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-const countdownTime = ref(180); // 3分钟倒计时(秒)
-const countdownInterval = ref(null);
-const virusCount = ref(147);
-const virusInterval = ref(null);
-const alertSound = ref(null);
-const flashEffect = ref(false);
-const flashInterval = ref(null);
-const scrollingText = ref('VIRUS DETECTED! SYSTEM COMPROMISED! DATA BEING STOLEN! ');
-
-// 恶意病毒名称 - 更加可怕
-const virusNames = [
-  'SYSTEM_DESTROYER.EXE',
-  'BANKING_STEALER_2024.DLL',
-  'RANSOMWARE_CRYPTO_LOCKER',
-  'KEYLOGGER_STEALTH_PRO',
-  'WEBCAM_SPY_MONITOR',
-  'CREDIT_CARD_HARVESTER',
-  'PASSWORD_CRACKER_ELITE',
-  'ROOTKIT_INVISIBLE_GHOST',
-  'TROJAN_BACKDOOR_MASTER',
-  'BITCOIN_MINER_DESTROYER',
-  'FILE_ENCRYPTION_DEMON',
-  'IDENTITY_THEFT_BOT',
-  'NETWORK_HIJACKER_PRO',
-  'ANTIVIRUS_KILLER_2024',
-  'SYSTEM_REGISTRY_BOMBER'
-];
-
-// 被攻击的文件和数据
-const compromisedData = [
-  '银行密码已被窃取',
-  '信用卡信息正在传输',
-  '个人照片被加密',
-  '联系人列表已泄露',
-  '浏览记录被监控',
-  '邮箱密码已破解',
-  '社交媒体账号被盗',
-  '文档文件被锁定',
-  '系统注册表损坏',
-  '防火墙已被关闭'
-];
-
-// 返回主页
-const goHome = () => {
-  router.push('/');
-};
-
-// 格式化倒计时
-const formatCountdown = () => {
-  const minutes = Math.floor(countdownTime.value / 60);
-  const seconds = countdownTime.value % 60;
-  return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
-};
-
-// 开始倒计时
-const startCountdown = () => {
-  countdownInterval.value = setInterval(() => {
-    if (countdownTime.value > 0) {
-      countdownTime.value--;
-      
-      // 最后10秒加强恐吓效果
-      if (countdownTime.value <= 10 && countdownTime.value > 0) {
-        // 加快闪烁
-        startFlashEffect();
-        // 播放更急促的警报
-        if (countdownTime.value % 2 === 0) {
-          playAlertSound();
-        }
-      }
-    } else {
-      // 倒计时结束后重新开始,永远循环
-      const scaryMessages = [
-        '💀 时间到!系统正在格式化... 重新扫描发现更多病毒!',
-        '🔥 硬盘已烧毁!正在重建... 检测到新的威胁!',
-        '⚡ 数据全部丢失!系统重启中... 发现超级病毒!',
-        '👾 外星病毒已完全控制您的计算机!继续扫描...',
-        '🌪️ 系统崩溃!正在紧急修复... 病毒变异了!',
-        '🚨 红色警报!系统重置失败,病毒进化中...'
-      ];
-      
-      alert(scaryMessages[Math.floor(Math.random() * scaryMessages.length)]);
-      
-      // 重置倒计时到一个随机时间(15-45秒)
-      countdownTime.value = Math.floor(Math.random() * 30) + 15;
-      
-      // 增加病毒数量
-      virusCount.value += Math.floor(Math.random() * 500) + 100;
-      if (virusCount.value > 9999) {
-        virusCount.value = 9999;
-      }
-      
-      // 重新启动所有恶搞效果
-      startFlashEffect();
-      playAlertSound();
-      
-      // 额外的恐吓消息
-      setTimeout(() => {
-        alert('🔄 病毒已进化!新的威胁正在扫描中...');
-      }, 2000);
-    }
-  }, 1000);
-};
-
-// 病毒数量增长
-const startVirusCounter = () => {
-  virusInterval.value = setInterval(() => {
-    virusCount.value += Math.floor(Math.random() * 15) + 5;
-    if (virusCount.value > 9999) {
-      virusCount.value = 9999;
-    }
-  }, 800);
-};
-
-// 闪烁效果
-const startFlashEffect = () => {
-  flashInterval.value = setInterval(() => {
-    flashEffect.value = !flashEffect.value;
-  }, 300);
-};
-
-// 播放警报声音
-const playAlertSound = () => {
-  try {
-    // 创建音频上下文来播放警报声
-    const audioContext = new (window.AudioContext || window.webkitAudioContext)();
-    const oscillator = audioContext.createOscillator();
-    const gainNode = audioContext.createGain();
-    
-    oscillator.connect(gainNode);
-    gainNode.connect(audioContext.destination);
-    
-    oscillator.frequency.setValueAtTime(800, audioContext.currentTime);
-    oscillator.frequency.setValueAtTime(400, audioContext.currentTime + 0.5);
-    oscillator.type = 'sawtooth';
-    
-    gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
-    gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 1);
-    
-    oscillator.start(audioContext.currentTime);
-    oscillator.stop(audioContext.currentTime + 1);
-    
-    // 重复播放
-    setTimeout(() => {
-      if (countdownTime.value > 0) {
-        playAlertSound();
-      }
-    }, 2000);
-  } catch (e) {
-    console.log('音频播放失败');
-  }
-};
-
-// 阻止用户离开页面
-const blockExit = (e) => {
-  e.preventDefault();
-  e.returnValue = '🚨 警告:您的系统正在遭受严重攻击!关闭此窗口将导致数据永久丢失!';
-  return '🚨 警告:您的系统正在遭受严重攻击!关闭此窗口将导致数据永久丢失!';
-};
-
-// 禁用右键和快捷键
-const disableShortcuts = (e) => {
-  // 禁用F12, Ctrl+Shift+I, Ctrl+U等开发者工具快捷键
-  if (e.key === 'F12' || 
-      (e.ctrlKey && e.shiftKey && e.key === 'I') ||
-      (e.ctrlKey && e.key === 'u') ||
-      (e.ctrlKey && e.key === 'U')) {
-    e.preventDefault();
-    alert('🚨 系统安全锁定!开发者工具已被禁用!');
-    return false;
-  }
-};
-
-// 禁用右键菜单
-const disableRightClick = (e) => {
-  e.preventDefault();
-  alert('🚨 右键菜单已被病毒锁定!');
-  return false;
-};
-
-const fakeCleanVirus = () => {
-  // 伪造的清除病毒功能 - 永远不会真正结束
-  const annoyingMessages = [
-    '🦠 病毒清除失败!发现新的永恒病毒!',
-    '⚠️ 警告:系统感染程度加深!',
-    '🔥 您的计算机正在燃烧!立即断网!',
-    '💀 病毒已进化,无法清除!',
-    '🚨 检测到量子病毒,正在穿越时空!',
-    '👾 外星病毒入侵,地球危险!',
-    '⚡ 病毒正在上传您的所有数据!',
-    '🌪️ 龙卷风病毒正在摧毁硬盘!'
-  ];
-  
-  alert(annoyingMessages[Math.floor(Math.random() * annoyingMessages.length)]);
-  
-  // 重置倒计时并加速
-  countdownTime.value = Math.max(15, countdownTime.value - 5);
-  
-  // 增强恶搞效果
-  startFlashEffect();
-  playAlertSound();
-  
-  // 随机弹出更多警告
-  setTimeout(() => {
-    alert('🔄 病毒自我复制中... 数量翻倍!');
-  }, 1000);
-};
-
-const continueVirusExperience = () => {
-  // 永远继续病毒体验的函数
-  const messages = [
-    '🚫 退出失败!病毒已控制系统!',
-    '💀 您无法逃脱病毒的魔爪!',
-    '🔒 系统已被永久锁定!',
-    '⚡ 试图关闭?病毒强度增加!',
-    '🌪️ 逃跑是不可能的!',
-    '👾 病毒笑了:哈哈哈哈哈!'
-  ];
-  
-  alert(messages[Math.floor(Math.random() * messages.length)]);
-  
-  // 重新启动所有效果
-  startFlashEffect();
-  playAlertSound();
-  
-  // 随机重置倒计时
-  countdownTime.value = Math.floor(Math.random() * 20) + 10;
-};
-
-onMounted(() => {
-  // 立即开始所有效果
-  startCountdown();
-  startVirusCounter();
-  startFlashEffect();
-  
-  // 延迟播放声音(避免浏览器阻止)
-  setTimeout(() => {
-    playAlertSound();
-  }, 1000);
-  
-  // 添加事件监听器
-  window.addEventListener('beforeunload', blockExit);
-  document.addEventListener('keydown', disableShortcuts);
-  document.addEventListener('contextmenu', disableRightClick);
-  
-  // 尝试全屏
-  setTimeout(() => {
-    try {
-      const elem = document.documentElement;
-      if (elem.requestFullscreen) {
-        elem.requestFullscreen().catch(() => {});
-      } else if (elem.webkitRequestFullscreen) {
-        elem.webkitRequestFullscreen();
-      } else if (elem.msRequestFullscreen) {
-        elem.msRequestFullscreen();
-      }
-    } catch (e) {
-      console.log('全屏请求失败');
-    }
-  }, 500);
-  
-  // 让页面标题闪烁
-  let titleFlash = true;
-  setInterval(() => {
-    document.title = titleFlash ? '🚨 病毒警告!系统已被感染!' : '⚠️ 立即处理!数据正在丢失!';
-    titleFlash = !titleFlash;
-  }, 1000);
-});
-
-onUnmounted(() => {
-  // 清除所有定时器和事件监听器
-  if (countdownInterval.value) clearInterval(countdownInterval.value);
-  if (virusInterval.value) clearInterval(virusInterval.value);
-  if (flashInterval.value) clearInterval(flashInterval.value);
-  
-  window.removeEventListener('beforeunload', blockExit);
-  document.removeEventListener('keydown', disableShortcuts);
-  document.removeEventListener('contextmenu', disableRightClick);
-  
-  // 恢复标题
-  document.title = '整蛊游戏';
-  
-  // 退出全屏
-  if (document.exitFullscreen && document.fullscreenElement) {
-    document.exitFullscreen().catch(() => {});
-  }
-});
-</script>
-
-<template>
-  <div class="virus-container" :class="{ 'flash-red': flashEffect }">
-    <!-- 全屏病毒警告 -->
-    <div class="fullscreen-virus-alert">
-      <!-- 顶部滚动警告条 -->
-      <div class="scrolling-banner">
-        <div class="scrolling-text">
-          {{ scrollingText.repeat(10) }}
-        </div>
-      </div>
-      
-      <!-- 主要警告内容 -->
-      <div class="main-alert">
-        <div class="skull-icon">💀</div>
-        <h1 class="main-title blink-fast">⚠️ 严重系统感染 ⚠️</h1>
-        <h2 class="sub-title">您的设备已被 {{ virusCount }} 个恶意病毒感染!</h2>
-        
-        <div class="danger-stats">
-          <div class="stat-item">
-            <span class="stat-number">{{ virusCount }}</span>
-            <span class="stat-label">活跃病毒</span>
-          </div>
-          <div class="stat-item">
-            <span class="stat-number">{{ compromisedData.length }}</span>
-            <span class="stat-label">数据泄露</span>
-          </div>
-          <div class="stat-item">
-            <span class="stat-number">{{ formatCountdown() }}</span>
-            <span class="stat-label">系统销毁倒计时</span>
-          </div>
-        </div>
-        
-        <div class="virus-effects">
-          <h3>🔥 正在发生的攻击:</h3>
-          <div class="effects-grid">
-            <div v-for="(effect, index) in compromisedData" :key="index" class="effect-item blink">
-              <span class="effect-icon">🚨</span>
-              <span class="effect-text">{{ effect }}</span>
-            </div>
-          </div>
-        </div>
-        
-        <div class="virus-list">
-          <h3>🦠 检测到的病毒:</h3>
-          <div class="virus-grid">
-            <div v-for="(virus, index) in virusNames.slice(0, 8)" :key="index" class="virus-item">
-              <span class="virus-icon">☠️</span>
-              <span class="virus-name">{{ virus }}</span>
-              <span class="virus-status">ACTIVE</span>
-            </div>
-          </div>
-        </div>
-        
-        <div class="fake-console">
-          <div class="console-header">系统日志 - 实时威胁监控</div>
-          <div class="console-content">
-            <div v-for="i in 15" :key="i" class="console-line">
-              <span class="timestamp">{{ new Date().toLocaleTimeString() }}</span>
-              <span class="error-text">ERROR: {{ virusNames[Math.floor(Math.random() * virusNames.length)] }} - 系统文件损坏</span>
-            </div>
-          </div>
-        </div>
-        
-        <div class="countdown-section">
-          <h2 class="countdown-title">⏰ 系统自毁倒计时</h2>
-          <div class="countdown-display blink-fast">{{ formatCountdown() }}</div>
-          <p class="countdown-warning">时间到达后,您的所有数据将被永久销毁!</p>
-        </div>
-        
-        <div class="action-section">
-          <button class="emergency-btn pulse" @click="fakeCleanVirus">🆘 紧急修复系统</button>
-          <button class="call-btn pulse">📞 联系技术支持</button>
-          <button class="exit-btn" @click="continueVirusExperience">❌ 强制退出(数据将丢失)</button>
-        </div>
-        
-        <div class="warning-footer">
-          <p class="footer-text">
-            ⚠️ 警告:这是一个严重的安全威胁!您的个人信息、银行详情和重要文件正在被窃取!
-            立即采取行动以防止不可逆转的损害!
-          </p>
-        </div>
-      </div>
-      
-      <!-- 底部闪烁警告 -->
-      <div class="bottom-warning blink">
-        🚨 CRITICAL SYSTEM FAILURE - IMMEDIATE ACTION REQUIRED 🚨
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-* {
-  margin: 0;
-  padding: 0;
-  box-sizing: border-box;
-}
-
-.virus-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  width: 100vw;
-  height: 100vh;
-  background: linear-gradient(45deg, #8B0000, #FF0000, #DC143C);
-  background-size: 400% 400%;
-  animation: gradientShift 2s ease-in-out infinite alternate;
-  overflow: hidden;
-  z-index: 99999;
-  font-family: 'Arial', sans-serif;
-}
-
-.flash-red {
-  background: #FF0000 !important;
-}
-
-.fullscreen-virus-alert {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  flex-direction: column;
-  color: white;
-  text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
-}
-
-.scrolling-banner {
-  background: #000;
-  color: #FF0000;
-  height: 40px;
-  overflow: hidden;
-  display: flex;
-  align-items: center;
-  border-bottom: 3px solid #FF0000;
-}
-
-.scrolling-text {
-  white-space: nowrap;
-  animation: scroll-left 10s linear infinite;
-  font-weight: bold;
-  font-size: 18px;
-}
-
-.main-alert {
-  flex: 1;
-  padding: 20px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: flex-start;
-  overflow-y: auto;
-  text-align: center;
-}
-
-.skull-icon {
-  font-size: 80px;
-  margin-bottom: 20px;
-  animation: rotate 2s linear infinite;
-}
-
-.main-title {
-  font-size: 48px;
-  font-weight: bold;
-  margin-bottom: 10px;
-  text-transform: uppercase;
-  letter-spacing: 3px;
-}
-
-.sub-title {
-  font-size: 24px;
-  margin-bottom: 30px;
-  color: #FFD700;
-}
-
-.danger-stats {
-  display: flex;
-  justify-content: center;
-  gap: 40px;
-  margin-bottom: 30px;
-  flex-wrap: wrap;
-}
-
-.stat-item {
-  background: rgba(0,0,0,0.7);
-  padding: 15px 25px;
-  border-radius: 10px;
-  border: 2px solid #FF0000;
-  min-width: 150px;
-}
-
-.stat-number {
-  display: block;
-  font-size: 36px;
-  font-weight: bold;
-  color: #FF0000;
-}
-
-.stat-label {
-  display: block;
-  font-size: 14px;
-  color: #FFD700;
-  text-transform: uppercase;
-}
-
-.virus-effects {
-  margin-bottom: 30px;
-  width: 100%;
-  max-width: 1000px;
-}
-
-.virus-effects h3 {
-  font-size: 24px;
-  margin-bottom: 15px;
-  color: #FFD700;
-}
-
-.effects-grid {
-  display: grid;
-  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
-  gap: 10px;
-}
-
-.effect-item {
-  background: rgba(0,0,0,0.8);
-  padding: 10px;
-  border-radius: 5px;
-  border-left: 4px solid #FF0000;
-  display: flex;
-  align-items: center;
-  gap: 10px;
-}
-
-.effect-icon {
-  font-size: 20px;
-}
-
-.effect-text {
-  font-size: 16px;
-  color: #FFF;
-}
-
-.virus-list {
-  margin-bottom: 30px;
-  width: 100%;
-  max-width: 1000px;
-}
-
-.virus-list h3 {
-  font-size: 24px;
-  margin-bottom: 15px;
-  color: #FFD700;
-}
-
-.virus-grid {
-  display: grid;
-  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
-  gap: 10px;
-}
-
-.virus-item {
-  background: rgba(0,0,0,0.8);
-  padding: 15px;
-  border-radius: 5px;
-  border: 1px solid #FF0000;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.virus-icon {
-  font-size: 20px;
-}
-
-.virus-name {
-  flex: 1;
-  margin-left: 10px;
-  font-family: monospace;
-  font-size: 14px;
-}
-
-.virus-status {
-  background: #FF0000;
-  color: white;
-  padding: 4px 8px;
-  border-radius: 3px;
-  font-size: 12px;
-  font-weight: bold;
-}
-
-.fake-console {
-  background: #000;
-  border: 2px solid #FF0000;
-  border-radius: 5px;
-  width: 100%;
-  max-width: 1000px;
-  margin-bottom: 30px;
-  height: 200px;
-  display: flex;
-  flex-direction: column;
-}
-
-.console-header {
-  background: #FF0000;
-  color: white;
-  padding: 8px 15px;
-  font-weight: bold;
-  font-size: 14px;
-}
-
-.console-content {
-  flex: 1;
-  padding: 10px;
-  overflow-y: auto;
-  font-family: monospace;
-  font-size: 12px;
-}
-
-.console-line {
-  margin-bottom: 5px;
-  display: flex;
-  gap: 10px;
-}
-
-.timestamp {
-  color: #00FF00;
-}
-
-.error-text {
-  color: #FF0000;
-}
-
-.countdown-section {
-  margin-bottom: 30px;
-}
-
-.countdown-title {
-  font-size: 28px;
-  margin-bottom: 15px;
-  color: #FFD700;
-}
-
-.countdown-display {
-  font-size: 72px;
-  font-weight: bold;
-  color: #FF0000;
-  background: rgba(0,0,0,0.8);
-  padding: 20px 40px;
-  border-radius: 15px;
-  border: 3px solid #FF0000;
-  margin-bottom: 15px;
-  font-family: monospace;
-}
-
-.countdown-warning {
-  font-size: 18px;
-  color: #FFD700;
-  font-weight: bold;
-}
-
-.action-section {
-  display: flex;
-  gap: 20px;
-  margin-bottom: 30px;
-  flex-wrap: wrap;
-  justify-content: center;
-}
-
-.emergency-btn, .call-btn {
-  background: linear-gradient(45deg, #FF0000, #FF4500);
-  color: white;
-  border: none;
-  padding: 15px 30px;
-  font-size: 18px;
-  font-weight: bold;
-  border-radius: 25px;
-  cursor: pointer;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  box-shadow: 0 4px 15px rgba(255,0,0,0.4);
-}
-
-.exit-btn {
-  background: #666;
-  color: white;
-  border: none;
-  padding: 12px 25px;
-  font-size: 16px;
-  border-radius: 20px;
-  cursor: pointer;
-}
-
-.warning-footer {
-  background: rgba(0,0,0,0.9);
-  padding: 20px;
-  border-radius: 10px;
-  border: 2px solid #FFD700;
-  max-width: 1000px;
-}
-
-.footer-text {
-  font-size: 16px;
-  line-height: 1.5;
-  color: #FFD700;
-  font-weight: bold;
-}
-
-.bottom-warning {
-  background: #000;
-  color: #FF0000;
-  padding: 15px;
-  text-align: center;
-  font-size: 20px;
-  font-weight: bold;
-  border-top: 3px solid #FF0000;
-}
-
-/* 动画效果 */
-@keyframes gradientShift {
-  0% { background-position: 0% 50%; }
-  100% { background-position: 100% 50%; }
-}
-
-@keyframes scroll-left {
-  0% { transform: translateX(100%); }
-  100% { transform: translateX(-100%); }
-}
-
-@keyframes rotate {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
-}
-
-@keyframes blink {
-  0%, 50% { opacity: 1; }
-  25%, 75% { opacity: 0.5; }
-}
-
-@keyframes blink-fast {
-  0%, 50% { opacity: 1; }
-  25%, 75% { opacity: 0.3; }
-}
-
-@keyframes pulse {
-  0% { transform: scale(1); }
-  50% { transform: scale(1.05); }
-  100% { transform: scale(1); }
-}
-
-.blink {
-  animation: blink 1s infinite;
-}
-
-.blink-fast {
-  animation: blink-fast 0.5s infinite;
-}
-
-.pulse {
-  animation: pulse 1.5s ease-in-out infinite;
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .main-title {
-    font-size: 32px;
-  }
-  
-  .sub-title {
-    font-size: 18px;
-  }
-  
-  .danger-stats {
-    flex-direction: column;
-    gap: 15px;
-  }
-  
-  .countdown-display {
-    font-size: 48px;
-    padding: 15px 25px;
-  }
-  
-  .effects-grid, .virus-grid {
-    grid-template-columns: 1fr;
-  }
-  
-  .action-section {
-    flex-direction: column;
-    align-items: center;
-  }
-  
-  .emergency-btn, .call-btn {
-    width: 100%;
-    max-width: 300px;
-  }
-}
-
-@media (max-height: 600px) {
-  .skull-icon {
-    font-size: 40px;
-    margin-bottom: 10px;
-  }
-  
-  .main-title {
-    font-size: 24px;
-  }
-  
-  .countdown-display {
-    font-size: 36px;
-  }
-  
-  .main-alert {
-    padding: 10px;
-  }
-}
-</style> 

+ 0 - 1517
exgame/src/views/FakeWinning.vue

@@ -1,1517 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-
-// 超级恼人的状态管理
-const showMainPopup = ref(true);
-const showSecondaryPopup = ref(false);
-const showFakeClose = ref(true);
-const showCelebrity = ref(false);
-const showFakeNews = ref(false);
-const showPhishing = ref(false);
-const countdown = ref(30); // 30秒紧急倒计时
-const urgentLevel = ref(1); // 紧急等级 1-5
-const annoying = ref(true);
-const popupCount = ref(0);
-const showLeaveDialog = ref(false); // 显示离开确认对话框
-const showCustomNotification = ref(false); // 自定义通知
-const customNotificationMessage = ref(''); // 通知消息
-
-// 新增恶心功能状态
-const isUltraAnnoyingMode = ref(false); // 超级恶心模式
-const fakeCloseButtons = ref([]); // 假关闭按钮数组
-const movingElements = ref(false); // 移动界面元素
-const invertedControls = ref(false); // 反向控制
-const fakeLoadingScreen = ref(false); // 假加载界面
-const multipleCursors = ref(false); // 多个鼠标光标
-const screenShake = ref(false); // 屏幕震动
-const updownText = ref(false); // 文字上下颠倒
-const rapidColorChange = ref(false); // 快速变色
-const mouseFollower = ref(null); // 鼠标跟踪元素
-const annoyanceLevel = ref(1); // 恶心等级
-
-// 超级恶心的广告文本数组
-const ultraAnnoyingTexts = [
-  "🎪 恭喜!您已被永久绑定到恶搞宇宙!",
-  "🔄 正在安装1000000个恶搞插件...",
-  "🎭 您的现实已被修改!欢迎来到恶搞维度!",
-  "🚀 正在传送您到火星恶搞基地...",
-  "🎨 您的屏幕已被恶搞病毒感染!",
-  "🎵 正在播放10小时循环恶搞音乐...",
-  "🎪 您已成为永恒恶搞实验的志愿者!",
-  "🔮 正在读取您的内心想法...",
-  "🎯 恶搞系统已锁定您的灵魂!",
-  "🌟 您获得了永生恶搞体验资格!"
-];
-
-// 恼人弹窗内容
-const annoyingPopups = [
-  "🚨 警告:您即将错过价值999万的超级大奖!",
-  "⚠️ 系统检测到您想要关闭页面!这样做将失去所有奖品!",
-  "🎉 等等!还有更多惊喜等着您!",
-  "💰 您确定要放弃成为百万富翁的机会吗?",
-  "🔥 最后机会!点击确定继续领奖!",
-  "🎁 您的朋友们都在这里中奖了!不要错过!",
-  "🏆 这是您人生的转折点!请不要放弃!",
-  "💎 钻石会员专享:额外获得豪车一辆!"
-];
-
-// 假新闻内容
-const fakeNewsContent = [
-  "【重磅】某大学生通过此网站中奖500万,当天辞职创业!",
-  "【震惊】90后女孩中奖后买房买车,人生逆袭!",
-  "【爆料】知名企业家透露:我的第一桶金来自这个幸运网站!",
-  "【独家】明星们都在偷偷使用的中奖秘密网站曝光!"
-];
-
-// 假名人推荐
-const fakeCelebrityEndorsements = [
-  { name: "马🐴", quote: "我就是在这里中的第一个100万!", avatar: "👨‍💼" },
-  { name: "雷🐯", quote: "小米的创业资金全靠这个网站!", avatar: "👔" },
-  { name: "刘🐧", quote: "京东的成功离不开这里的财运!", avatar: "🤵" },
-  { name: "王🐒", quote: "美团能上市,多亏了这个幸运平台!", avatar: "👨‍💻" }
-];
-
-// 音频上下文
-const audioContext = ref(null);
-
-// 创建超级烦人的蜂鸣声
-const createAnnoyingBeep = () => {
-  if (!audioContext.value) {
-    audioContext.value = new (window.AudioContext || window.webkitAudioContext)();
-  }
-  
-  const oscillator = audioContext.value.createOscillator();
-  const gainNode = audioContext.value.createGain();
-  
-  oscillator.connect(gainNode);
-  gainNode.connect(audioContext.value.destination);
-  
-  // 超级尖锐刺耳的声音
-  oscillator.frequency.setValueAtTime(2000, audioContext.value.currentTime);
-  oscillator.frequency.setValueAtTime(500, audioContext.value.currentTime + 0.1);
-  
-  gainNode.gain.setValueAtTime(0.3, audioContext.value.currentTime);
-  gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.value.currentTime + 0.2);
-  
-  oscillator.start();
-  oscillator.stop(audioContext.value.currentTime + 0.2);
-};
-
-// 创建恼人的警报声
-const createAlarmSound = () => {
-  if (!audioContext.value) {
-    audioContext.value = new (window.AudioContext || window.webkitAudioContext)();
-  }
-  
-  const oscillator = audioContext.value.createOscillator();
-  const gainNode = audioContext.value.createGain();
-  
-  oscillator.connect(gainNode);
-  gainNode.connect(audioContext.value.destination);
-  
-  oscillator.frequency.setValueAtTime(800, audioContext.value.currentTime);
-  oscillator.frequency.setValueAtTime(1200, audioContext.value.currentTime + 0.3);
-  oscillator.frequency.setValueAtTime(800, audioContext.value.currentTime + 0.6);
-  
-  gainNode.gain.setValueAtTime(0.4, audioContext.value.currentTime);
-  gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.value.currentTime + 0.9);
-  
-  oscillator.start();
-  oscillator.stop(audioContext.value.currentTime + 0.9);
-};
-
-// 修改倒计时功能 - 循环重置而不是结束
-let countdownTimer = null;
-const startCountdown = () => {
-  countdownTimer = setInterval(() => {
-    if (countdown.value > 0) {
-      countdown.value--;
-      
-      // 最后10秒疯狂提醒
-      if (countdown.value <= 10) {
-        createAlarmSound();
-        document.title = `🚨${countdown.value}秒!奖品即将作废!`;
-        
-        if (navigator.vibrate) {
-          navigator.vibrate([200, 100, 200, 100, 200]);
-        }
-      }
-      
-      // 每5秒播放烦人声音
-      if (countdown.value % 5 === 0) {
-        createAnnoyingBeep();
-      }
-    } else {
-      // 时间到了自动重置,继续恶搞!
-      countdown.value = 30;
-      urgentLevel.value = 1;
-      popupCount.value = 0;
-      
-      // 播放"恭喜"音效并显示新的恶搞内容
-      createAnnoyingBeep();
-      showFakeNewsPopup();
-      
-      // 随机改变奖品金额,继续诱惑
-      setTimeout(() => {
-        showCelebrityPopup();
-      }, 2000);
-    }
-  }, 1000);
-};
-
-// 移除真正的返回主页功能 - 替换为继续恶搞
-const continueExperience = () => {
-  // 不再提供真正的退出,而是继续恶搞
-  showCustomNotificationFn("🎉 您选择继续体验!准备更多惊喜!");
-  
-  // 重置所有状态,开始新一轮恶搞
-  countdown.value = 30;
-  urgentLevel.value = 1;
-  popupCount.value = 0;
-  showMainPopup.value = true;
-  showSecondaryPopup.value = false;
-  showFakeNews.value = false;
-  showCelebrity.value = false;
-  showPhishing.value = false;
-  
-  // 立即开始新的恶搞轮次
-  setTimeout(() => {
-    showFakeNewsPopup();
-  }, 1000);
-  
-  setTimeout(() => {
-    showCelebrityPopup();
-  }, 3000);
-  
-  createAnnoyingBeep();
-};
-
-// 创建假关闭按钮
-const createFakeCloseButtons = () => {
-  for (let i = 0; i < 20; i++) {
-    fakeCloseButtons.value.push({
-      id: Date.now() + i,
-      x: Math.random() * (window.innerWidth - 50),
-      y: Math.random() * (window.innerHeight - 50),
-      clicked: false
-    });
-  }
-};
-
-// 点击假关闭按钮
-const clickFakeCloseButton = (buttonId) => {
-  const button = fakeCloseButtons.value.find(b => b.id === buttonId);
-  if (button) {
-    button.clicked = true;
-    annoyanceLevel.value++;
-    
-    showCustomNotificationFn("😈 哈哈!这是假的关闭按钮!恶搞等级提升!");
-    createAnnoyingSound();
-    
-    // 创建更多假按钮
-    createFakeCloseButtons();
-    
-    // 激活更多恶心功能
-    if (annoyanceLevel.value > 3) {
-      activateUltraAnnoyingMode();
-    }
-  }
-};
-
-// 激活超级恶心模式
-const activateUltraAnnoyingMode = () => {
-  isUltraAnnoyingMode.value = true;
-  showCustomNotificationFn("🎪 恭喜!您已解锁超级恶心模式!");
-  
-  // 启动各种恶心效果
-  setTimeout(() => movingElements.value = true, 1000);
-  setTimeout(() => invertedControls.value = true, 2000);
-  setTimeout(() => multipleCursors.value = true, 3000);
-  setTimeout(() => screenShake.value = true, 4000);
-  setTimeout(() => updownText.value = true, 5000);
-  setTimeout(() => rapidColorChange.value = true, 6000);
-  
-  // 开始疯狂弹窗轰炸
-  startPopupBombing();
-  
-  // 开始鼠标跟踪恶搞
-  startMouseFollowing();
-};
-
-// 弹窗轰炸
-const startPopupBombing = () => {
-  setInterval(() => {
-    if (isUltraAnnoyingMode.value) {
-      for (let i = 0; i < 3; i++) {
-        setTimeout(() => {
-          createAnnoyingPopup();
-        }, i * 200);
-      }
-    }
-  }, 2000);
-};
-
-// 鼠标跟踪恶搞
-const startMouseFollowing = () => {
-  document.addEventListener('mousemove', (e) => {
-    if (isUltraAnnoyingMode.value && Math.random() > 0.95) {
-      createFollowerElement(e.clientX, e.clientY);
-    }
-  });
-};
-
-// 创建跟踪元素
-const createFollowerElement = (x, y) => {
-  const follower = document.createElement('div');
-  follower.className = 'mouse-follower';
-  follower.style.left = x + 'px';
-  follower.style.top = y + 'px';
-  follower.innerHTML = ultraAnnoyingTexts[Math.floor(Math.random() * ultraAnnoyingTexts.length)];
-  document.body.appendChild(follower);
-  
-  setTimeout(() => {
-    if (follower.parentNode) {
-      follower.parentNode.removeChild(follower);
-    }
-  }, 3000);
-};
-
-// 假加载屏幕
-const showFakeLoading = () => {
-  fakeLoadingScreen.value = true;
-  showCustomNotificationFn("正在连接恶搞服务器...");
-  
-  let progress = 0;
-  const loadingInterval = setInterval(() => {
-    progress += Math.random() * 5;
-    if (progress >= 99) {
-      progress = 99;
-      clearInterval(loadingInterval);
-      
-      // 假装加载失败
-      setTimeout(() => {
-        fakeLoadingScreen.value = false;
-        showCustomNotificationFn("加载失败!正在重新尝试...");
-        
-        // 重新开始假加载
-        setTimeout(() => {
-          showFakeLoading();
-        }, 2000);
-      }, 3000);
-    }
-  }, 100);
-};
-
-// 反向鼠标控制恶搞
-const handleMouseMoveReverse = (e) => {
-  if (invertedControls.value && Math.random() > 0.9) {
-    const reverseX = window.innerWidth - e.clientX;
-    const reverseY = window.innerHeight - e.clientY;
-    
-    // 创建假光标
-    const fakeCursor = document.createElement('div');
-    fakeCursor.className = 'fake-cursor';
-    fakeCursor.style.left = reverseX + 'px';
-    fakeCursor.style.top = reverseY + 'px';
-    document.body.appendChild(fakeCursor);
-    
-    setTimeout(() => {
-      if (fakeCursor.parentNode) {
-        fakeCursor.parentNode.removeChild(fakeCursor);
-      }
-    }, 1000);
-  }
-};
-
-// 增强版假关闭功能
-const fakeCloseClick = () => {
-  popupCount.value++;
-  
-  // 根据点击次数增加恶心程度
-  if (popupCount.value <= 3) {
-    const fakeMessages = [
-      "🤡 关闭?不存在的!",
-      "😈 您想多了!这只是开始!",
-      "🎪 欢迎来到恶搞地狱!"
-    ];
-    showCustomNotificationFn(fakeMessages[popupCount.value - 1]);
-  } else if (popupCount.value <= 6) {
-    const escalationMessages = [
-      "🔥 恶搞强度正在上升...",
-      "⚡ 系统正在释放更多恶搞能量...",
-      "🌪️ 恶搞风暴即将来临..."
-    ];
-    showCustomNotificationFn(escalationMessages[popupCount.value - 4]);
-    
-    // 开始移动界面元素
-    movingElements.value = true;
-  } else if (popupCount.value <= 10) {
-    showCustomNotificationFn("🚀 恭喜触发终极恶搞模式!");
-    activateUltraAnnoyingMode();
-    
-    // 创建大量假关闭按钮
-    createFakeCloseButtons();
-    
-    // 开始假加载
-    showFakeLoading();
-  } else {
-    // 超过10次点击后,显示"怜悯"选项
-    showPrankDialogFn(
-      '🙏 您已经被恶搞了' + popupCount.value + '次!\n\n是否显示真正的离开选项?\n\n(提示:选"否"会让情况变得更糟)',
-      (choice) => {
-        if (choice) {
-          // 即使用户选择"是",也给假选项
-          setTimeout(() => {
-            showCustomNotificationFn("😈 刚才是在骗您!恶搞继续!");
-            activateUltraAnnoyingMode();
-          }, 2000);
-        } else {
-          showCustomNotificationFn("🎉 您选择了继续被恶搞!恶搞等级MAX!");
-          annoyanceLevel.value = 999;
-          activateUltraAnnoyingMode();
-        }
-      }
-    );
-  }
-  
-  // 每次点击都增加更多恶搞内容
-  triggerPrankContent();
-  createAnnoyingSound();
-};
-
-// 触发恶搞内容
-const triggerPrankContent = () => {
-  const prankActions = [
-    () => createMultiplePopups(),
-    () => {
-      document.body.style.filter = 'hue-rotate(' + Math.random() * 360 + 'deg)';
-      setTimeout(() => {
-        document.body.style.filter = 'none';
-      }, 2000);
-    },
-    () => {
-      document.body.style.transform = 'rotate(' + (Math.random() * 10 - 5) + 'deg)';
-      setTimeout(() => {
-        document.body.style.transform = 'none';
-      }, 1000);
-    },
-    () => showFakeLoading(),
-    () => createFakeCloseButtons()
-  ];
-  
-  const randomAction = prankActions[Math.floor(Math.random() * prankActions.length)];
-  randomAction();
-};
-
-// 显示虚假客服
-const showFakeCustomerService = () => {
-  const customerServiceMessage = `🎧 在线客服小美:
-
-亲爱的用户您好!我是专属客服小美~
-
-您刚才是想要关闭页面吗?
-作为VIP用户,我们为您准备了额外福利:
-
-🎁 额外奖励:iPhone 15 Pro Max
-💰 现金红包:88888元
-🏆 神秘大奖:价值不详
-
-请不要离开,让我为您详细介绍吧~ 💕`;
-  
-  showCustomNotificationFn(customerServiceMessage);
-  showSecondaryPopup.value = true;
-};
-
-// 显示假新闻
-const showFakeNewsPopup = () => {
-  const randomNews = fakeNewsContent[Math.floor(Math.random() * fakeNewsContent.length)];
-  showCustomNotificationFn(`📰 热点新闻:\n\n${randomNews}\n\n点击确定查看详情!`);
-  showFakeNews.value = true;
-};
-
-// 显示名人代言
-const showCelebrityPopup = () => {
-  const randomCelebrity = fakeCelebrityEndorsements[Math.floor(Math.random() * fakeCelebrityEndorsements.length)];
-  showCustomNotificationFn(`${randomCelebrity.avatar} ${randomCelebrity.name}说:\n\n"${randomCelebrity.quote}"\n\n连名人都在用,您还在犹豫什么?`);
-  showCelebrity.value = true;
-};
-
-// 阻止用户离开页面的功能
-const blockPageLeave = (e) => {
-  e.preventDefault();
-  e.returnValue = '🎁 您即将错过百万大奖!确定要离开吗?';
-  return '🎁 您即将错过百万大奖!确定要离开吗?';
-};
-
-// 禁用各种快捷键
-const disableShortcuts = (e) => {
-  // 禁用F12, Ctrl+Shift+I, Ctrl+U, Alt+F4等
-  if (e.key === 'F12' || 
-      (e.ctrlKey && e.shiftKey && e.key === 'I') ||
-      (e.ctrlKey && e.key === 'u') ||
-      (e.ctrlKey && e.key === 'U') ||
-      (e.altKey && e.key === 'F4') ||
-      (e.ctrlKey && e.key === 'w') ||
-      (e.ctrlKey && e.key === 'W')) {
-    e.preventDefault();
-    showCustomNotificationFn('🚫 快捷键已被禁用!您必须完成抽奖!');
-    createAnnoyingBeep();
-    return false;
-  }
-};
-
-// 禁用右键菜单
-const disableRightClick = (e) => {
-  e.preventDefault();
-  showCustomNotificationFn('🚫 右键菜单已被锁定!请继续您的抽奖!');
-  createAnnoyingBeep();
-  return false;
-};
-
-// 检测页面失焦(试图切换到其他程序)
-const handlePageBlur = () => {
-  showCustomNotificationFn('🎯 检测到您想逃跑!奖品正在等您领取!');
-  window.focus();
-  createAnnoyingBeep();
-};
-
-// 移除浏览器原生的离开确认,改用自定义UI
-const showCustomLeaveDialog = () => {
-  showLeaveDialog.value = true;
-  createAnnoyingBeep();
-};
-
-// 用户选择离开
-const confirmLeave = () => {
-  const finalMessages = [
-    "💸 真的要放弃999万大奖吗?",
-    "😭 我们会想念您的!",
-    "🎭 感谢体验恶搞游戏!",
-    "🎪 您随时可以回来继续恶搞!",
-    "🌟 希望您玩得开心!"
-  ];
-  
-  showCustomNotificationFn(finalMessages[Math.floor(Math.random() * finalMessages.length)]);
-  showLeaveDialog.value = false;
-  
-  // 延迟跳转,让用户看到通知
-  setTimeout(() => {
-    router.push('/');
-  }, 1500);
-};
-
-// 用户选择继续留下
-const stayAndContinue = () => {
-  showLeaveDialog.value = false;
-  showCustomNotificationFn("🎉 明智的选择!让我们继续这美妙的恶搞之旅!");
-  
-  // 重新激活恶搞效果
-  countdown.value = 30;
-  urgentLevel.value = Math.min(urgentLevel.value + 1, 5);
-  showFakeNewsPopup();
-  createAnnoyingBeep();
-};
-
-// 自定义通知函数 - 替代alert
-const showCustomNotificationFn = (message) => {
-  customNotificationMessage.value = message;
-  showCustomNotification.value = true;
-  createAnnoyingBeep();
-  
-  // 3秒后自动关闭通知
-  setTimeout(() => {
-    showCustomNotification.value = false;
-  }, 3000);
-};
-
-onMounted(() => {
-  // 立即开始倒计时循环
-  startCountdown();
-  
-  // 延迟显示各种弹窗和功能
-  setTimeout(() => showSecondaryPopup.value = true, 3000);
-  setTimeout(() => showFakeNews.value = true, 5000);
-  setTimeout(() => showCelebrity.value = true, 8000);
-  setTimeout(() => showPhishing.value = true, 12000);
-  
-  // 移除页面离开阻拦 - 改用自定义UI
-  // 添加键盘快捷键保护
-  document.addEventListener('keydown', disableShortcuts);
-  document.addEventListener('contextmenu', disableRightClick);
-  
-  // 定期播放恼人音效
-  setInterval(() => {
-    if (Math.random() > 0.5) {
-      createAnnoyingBeep();
-    }
-  }, 5000);
-  
-  // 定期更改页面标题制造恶搞效果
-  setInterval(() => {
-    const annoyingTitles = [
-      "🚨 您已中奖!",
-      "💰 恭喜发财!",
-      "⚠️ 系统警告!",
-      "🎉 限时优惠!",
-      "🔥 火爆促销!",
-      "💎 钻石会员特权!",
-      "🎪 永恒恶搞模式!"
-    ];
-    document.title = annoyingTitles[Math.floor(Math.random() * annoyingTitles.length)];
-  }, 3000);
-
-  // 立即创建一些假关闭按钮
-  createFakeCloseButtons();
-  
-  // 添加鼠标移动监听 - 用于反向控制和跟踪
-  document.addEventListener('mousemove', handleMouseMoveReverse);
-  
-  // 定期检查用户行为并升级恶搞等级
-  setInterval(() => {
-    if (annoyanceLevel.value >= 5 && !isUltraAnnoyingMode.value) {
-      activateUltraAnnoyingMode();
-    }
-    
-    // 随机触发恶搞内容
-    if (Math.random() > 0.9 && isUltraAnnoyingMode.value) {
-      triggerPrankContent();
-    }
-  }, 5000);
-  
-  // 自动增加恶心等级
-  setInterval(() => {
-    if (annoyanceLevel.value < 10) {
-      annoyanceLevel.value++;
-    }
-  }, 10000);
-  
-  // 页面失焦检测 - 试图离开页面时的恶搞
-  window.addEventListener('blur', () => {
-    if (isUltraAnnoyingMode.value) {
-      showCustomNotificationFn("😈 想偷偷离开?被发现了!");
-      createAnnoyingSound();
-      // 重新聚焦到当前页面
-      setTimeout(() => {
-        window.focus();
-      }, 500);
-    }
-  });
-  
-  // 开始假加载循环(在超级恶心模式下)
-  setTimeout(() => {
-    if (Math.random() > 0.7) {
-      showFakeLoading();
-    }
-  }, 20000);
-});
-
-onUnmounted(() => {
-  if (countdownTimer) {
-    clearInterval(countdownTimer);
-  }
-  document.removeEventListener('keydown', disableShortcuts);
-  document.removeEventListener('contextmenu', disableRightClick);
-  window.removeEventListener('blur', handlePageBlur);
-});
-</script>
-
-<template>
-  <div class="fake-winning-container">
-    <!-- 超级烦人模式指示器 -->
-    <div v-if="isUltraAnnoyingMode" class="ultra-mode-indicator">
-      <div class="mode-status">🔥 超级恶搞模式已激活</div>
-      <div class="annoyance-meter">
-        <div class="annoyance-fill" :style="{ width: (annoyanceLevel * 10) + '%' }"></div>
-      </div>
-      <div class="level-text">恶搞等级: {{ annoyanceLevel }}/10</div>
-    </div>
-
-    <!-- 假的关闭按钮 -->
-    <button 
-      class="fake-close-button" 
-      @click="fakeCloseClick"
-      :class="{ 'moving': movingElements, 'shake': screenShake }"
-    >
-      ❌ 真正的关闭按钮
-    </button>
-
-    <!-- 大量假关闭按钮 -->
-    <div 
-      v-for="btn in fakeCloseButtons" 
-      :key="btn.id"
-      class="scattered-fake-button"
-      :style="{ left: btn.x + 'px', top: btn.y + 'px' }"
-      @click="clickFakeCloseButton(btn.id)"
-      :class="{ 'clicked': btn.clicked }"
-    >
-      ❌
-    </div>
-
-    <!-- 假加载屏幕 -->
-    <div v-if="fakeLoadingScreen" class="fake-loading-overlay">
-      <div class="fake-loading-content">
-        <div class="loading-spinner"></div>
-        <h2>🎪 恶搞系统加载中...</h2>
-        <div class="loading-bar">
-          <div class="loading-progress"></div>
-        </div>
-        <p class="loading-text">正在初始化恶搞模块... 99%</p>
-        <p class="loading-subtext">⚠️ 请勿关闭此窗口,否则后果自负!</p>
-      </div>
-    </div>
-
-    <!-- 鼠标跟踪恶搞元素 -->
-    <div v-if="isUltraAnnoyingMode" class="mouse-tracking-container">
-      <!-- 这些会通过JavaScript动态创建 -->
-    </div>
-
-    <!-- 移动的恶搞文本 -->
-    <div v-if="movingElements" class="moving-text-container">
-      <div class="moving-text" v-for="n in 5" :key="n">
-        🎪 您已被永久恶搞!
-      </div>
-    </div>
-
-    <!-- 屏幕边缘的恶搞提示 -->
-    <div v-if="isUltraAnnoyingMode" class="edge-pranks">
-      <div class="edge-prank top">👆 想往上逃?不可能!</div>
-      <div class="edge-prank bottom">👇 向下也逃不掉!</div>
-      <div class="edge-prank left">👈 左边没有出路!</div>
-      <div class="edge-prank right">👉 右边也是死路!</div>
-    </div>
-
-    <!-- 假的进度条 -->
-    <div v-if="isUltraAnnoyingMode" class="fake-progress-container">
-      <div class="fake-progress-bar">
-        <div class="fake-progress-fill"></div>
-      </div>
-      <p class="progress-text">恶搞进度:99.9999%</p>
-    </div>
-
-    <!-- 超级烦人的主弹窗 - 永远显示 -->
-    <div class="main-annoying-popup">
-      <div class="popup-content mega-annoying">
-        <div class="flashing-header">
-          <h1 class="super-title blink-text">🎊🎊 永恒大奖中心 🎊🎊</h1>
-          <div class="fake-close-area" @click="fakeClose">
-            <span class="fake-x">✕</span>
-          </div>
-        </div>
-        
-        <!-- 恶心的奖品展示 -->
-        <div class="disgusting-prize-display">
-          <div class="prize-wheel spinning" :style="{ transform: `rotate(${popupCount * 360}deg)` }">
-            <div class="wheel-segment">💰</div>
-            <div class="wheel-segment">🏠</div>
-            <div class="wheel-segment">🚗</div>
-            <div class="wheel-segment">💎</div>
-          </div>
-          
-          <div class="prize-announcement animate__animated animate__bounce animate__infinite">
-            <p class="mega-text rainbow-text">恭喜您中得永恒大奖!</p>
-            <p class="prize-amount glow-text">¥{{ (999000 + Math.floor(Math.random() * 999000)).toLocaleString() }}</p>
-            <p class="winner-number">您是第{{ (1000000 + Math.floor(Math.random() * 9999999)).toLocaleString() }}位永恒用户!</p>
-            <p class="infinite-text blink-text">🔄 恶搞模式:永久激活 🔄</p>
-          </div>
-        </div>
-        
-        <!-- 超级烦人的无限倒计时 -->
-        <div class="annoying-countdown" :class="`urgent-level-${urgentLevel}`">
-          <div class="countdown-label blink-text">⚠️ 无限循环倒计时 ⚠️</div>
-          <div class="countdown-display">
-            <span class="countdown-number">{{ countdown.toString().padStart(2, '0') }}</span>
-            <span class="countdown-unit">秒</span>
-          </div>
-          <div class="countdown-warning pulse-text">永不过期!永不结束!</div>
-        </div>
-        
-        <!-- 虚假的奖品列表 -->
-        <div class="fake-prize-list">
-          <div class="prize-item premium">
-            <span class="prize-icon">🏆</span>
-            <span class="prize-name">无限现金</span>
-            <span class="prize-value">999万</span>
-          </div>
-          <div class="prize-item gold">
-            <span class="prize-icon">🏠</span>
-            <span class="prize-name">梦想别墅</span>
-            <span class="prize-value">500万</span>
-          </div>
-          <div class="prize-item silver">
-            <span class="prize-icon">🚗</span>
-            <span class="prize-name">豪华跑车</span>
-            <span class="prize-value">200万</span>
-          </div>
-          <div class="prize-item bronze">
-            <span class="prize-icon">🎭</span>
-            <span class="prize-name">永恒体验</span>
-            <span class="prize-value">无价</span>
-          </div>
-        </div>
-        
-        <!-- 烦人的按钮区域 - 所有按钮都不会真正结束 -->
-        <div class="annoying-buttons">
-          <button class="claim-btn super-annoying animate__animated animate__pulse animate__infinite" @click="fakeClose">
-            🎯 领取无限奖品 🎯
-          </button>
-          <button class="info-btn annoying" @click="showFakeNewsPopup">
-            📰 查看永恒案例
-          </button>
-          <button class="celebrity-btn annoying" @click="showCelebrityPopup">
-            ⭐ 无限推荐
-          </button>
-          <button class="continue-btn annoying" @click="continueExperience">
-            🔄 重新开始恶搞
-          </button>
-        </div>
-        
-        <!-- 恶心的滚动文字 -->
-        <div class="scrolling-text">
-          <marquee behavior="scroll" direction="left" scrollamount="8">
-            🔥 永恒恶搞!张三中奖999次!🔥 李四获得无限别墅!🔥 王五中得永恒现金!🔥 这里永远不会结束!🔥
-          </marquee>
-        </div>
-        
-        <!-- 假的安全认证 -->
-        <div class="fake-security">
-          <span class="security-badge">🔒 永恒认证</span>
-          <span class="security-badge">🛡️ 无限安全</span>
-          <span class="security-badge">⚡ 永不到账</span>
-          <span class="security-badge">🏆 恶搞保障</span>
-        </div>
-      </div>
-    </div>
-    
-    <!-- 次级烦人弹窗 -->
-    <div class="secondary-popup" v-if="showSecondaryPopup">
-      <div class="popup-overlay"></div>
-      <div class="popup-box annoying-shake">
-        <h3 class="popup-title blink-text">🚨 重要提醒 🚨</h3>
-        <p class="popup-text">检测到您想要离开页面!</p>
-        <p class="popup-text">这样做将永久失去以下奖品:</p>
-        <ul class="lost-prizes">
-          <li>💰 现金大奖:999万元</li>
-          <li>🏠 豪华别墅:一套</li>
-          <li>🚗 豪华跑车:一辆</li>
-          <li>💎 钻石珠宝:一套</li>
-        </ul>
-        <div class="popup-buttons">
-          <button class="stay-btn pulse-btn" @click="showSecondaryPopup = false">继续领奖</button>
-          <button class="leave-btn danger-btn" @click="continueExperience">放弃奖品</button>
-        </div>
-      </div>
-    </div>
-    
-    <!-- 虚假新闻弹窗 -->
-    <div class="fake-news-popup" v-if="showFakeNews">
-      <div class="news-header">📰 今日头条</div>
-      <div class="news-content">
-        <p v-for="(news, index) in fakeNewsContent" :key="index" class="news-item">
-          {{ news }}
-        </p>
-      </div>
-      <button class="close-news" @click="showFakeNews = false">关闭新闻</button>
-    </div>
-    
-    <!-- 名人代言弹窗 -->
-    <div class="celebrity-popup" v-if="showCelebrity">
-      <div class="celebrity-header">⭐ 名人强烈推荐 ⭐</div>
-      <div class="celebrity-content">
-        <div v-for="(celebrity, index) in fakeCelebrityEndorsements" :key="index" class="celebrity-item">
-          <span class="celebrity-avatar">{{ celebrity.avatar }}</span>
-          <span class="celebrity-name">{{ celebrity.name }}</span>
-          <p class="celebrity-quote">"{{ celebrity.quote }}"</p>
-        </div>
-      </div>
-      <button class="close-celebrity" @click="showCelebrity = false">我也要中奖</button>
-    </div>
-    
-    <!-- 钓鱼信息收集弹窗 -->
-    <div class="phishing-popup" v-if="showPhishing">
-      <div class="phishing-header">🔐 身份验证</div>
-      <div class="phishing-content">
-        <p>为确保奖品安全发放,请输入以下信息:</p>
-        <div class="fake-form">
-          <input type="text" placeholder="真实姓名" class="fake-input">
-          <input type="text" placeholder="身份证号" class="fake-input">
-          <input type="text" placeholder="银行卡号" class="fake-input">
-          <input type="password" placeholder="支付密码" class="fake-input">
-          <button class="verify-btn" @click="alert('哈哈!差点上当了吧?这是恶搞网站!'); showPhishing = false">
-            验证身份
-          </button>
-        </div>
-      </div>
-      <div class="phishing-warning">⚠️ 这是恶搞测试,请勿输入真实信息!</div>
-    </div>
-    
-    <!-- 自定义离开确认对话框 -->
-    <div class="leave-dialog-overlay" v-if="showLeaveDialog">
-      <div class="leave-dialog">
-        <div class="leave-dialog-header">
-          <h3>🚪 真的要离开吗?</h3>
-        </div>
-        <div class="leave-dialog-content">
-          <div class="leave-warning">
-            <p>😱 您即将错过以下丰厚奖品:</p>
-            <ul class="missed-rewards">
-              <li>💰 现金大奖:999万元</li>
-              <li>🏠 豪华别墅:价值500万</li>
-              <li>🚗 豪华跑车:价值200万</li>
-              <li>💎 钻石珠宝:价值100万</li>
-              <li>🎭 永恒恶搞体验:无价之宝</li>
-            </ul>
-            <p class="final-plea">🙏 最后一次机会,真的不再考虑一下吗?</p>
-          </div>
-        </div>
-        <div class="leave-dialog-buttons">
-          <button class="stay-button" @click="stayAndContinue">
-            💝 我要留下来领奖!
-          </button>
-          <button class="leave-button" @click="confirmLeave">
-            😔 我决定离开
-          </button>
-        </div>
-      </div>
-    </div>
-    
-    <!-- 自定义通知 - 替代alert -->
-    <div v-if="showCustomNotification" class="custom-notification">
-      <div class="notification-content">
-        <div class="notification-icon">🔔</div>
-        <div class="notification-message">{{ customNotificationMessage }}</div>
-        <button class="notification-close" @click="showCustomNotification = false">×</button>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-/* 基础容器样式 */
-.fake-winning-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  background: linear-gradient(45deg, #ff0066, #ff6600, #ffff00, #66ff00, #0066ff, #6600ff);
-  background-size: 400% 400%;
-  animation: rainbow-bg 3s ease infinite;
-  overflow: hidden;
-  font-family: 'Microsoft YaHei', sans-serif;
-  z-index: 999999;
-}
-
-/* 彩虹背景动画 */
-@keyframes rainbow-bg {
-  0%, 100% { background-position: 0% 50%; }
-  50% { background-position: 100% 50%; }
-}
-
-/* 主关闭按钮 - 会移动的 */
-.fake-close-button {
-  position: fixed;
-  top: 20px;
-  right: 20px;
-  padding: 10px 20px;
-  background: linear-gradient(45deg, #e74c3c, #c0392b);
-  color: white;
-  border: none;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  z-index: 10001;
-  box-shadow: 0 4px 15px rgba(231, 76, 60, 0.4);
-  transition: all 0.3s ease;
-}
-
-.fake-close-button.moving {
-  animation: randomMove 3s ease-in-out infinite;
-}
-
-.fake-close-button.shake {
-  animation: violentShake 0.5s ease-in-out infinite;
-}
-
-@keyframes randomMove {
-  0%, 100% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(50px, 30px) rotate(10deg); }
-  50% { transform: translate(-30px, 50px) rotate(-5deg); }
-  75% { transform: translate(40px, -20px) rotate(15deg); }
-}
-
-@keyframes violentShake {
-  0%, 100% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(-5px, 5px) rotate(2deg); }
-  50% { transform: translate(5px, -5px) rotate(-2deg); }
-  75% { transform: translate(-3px, -3px) rotate(1deg); }
-}
-
-/* 分散的假关闭按钮样式 */
-.scattered-fake-button {
-  position: fixed;
-  width: 30px;
-  height: 30px;
-  background: linear-gradient(45deg, #ff6b6b, #ee5a52);
-  border: 2px solid #fff;
-  border-radius: 50%;
-  color: white;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  z-index: 999999;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  transition: all 0.3s ease;
-  animation: floatAroundCrazy 3s ease-in-out infinite;
-  box-shadow: 0 4px 15px rgba(255, 107, 107, 0.6);
-}
-
-.scattered-fake-button:hover {
-  transform: scale(1.2) rotate(45deg);
-  background: linear-gradient(45deg, #e74c3c, #c0392b);
-  animation: clickedExplosion 0.5s ease-out;
-}
-
-.scattered-fake-button.clicked {
-  animation: clickedExplosion 0.5s ease-out, crazyMove 2s infinite;
-  background: linear-gradient(45deg, #e74c3c, #c0392b);
-}
-
-/* 假加载屏幕样式 */
-.fake-loading-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-  z-index: 1000000;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  animation: loadingPulse 2s ease-in-out infinite;
-}
-
-.fake-loading-content {
-  text-align: center;
-  color: white;
-  padding: 40px;
-  background: rgba(0, 0, 0, 0.3);
-  border-radius: 20px;
-  border: 3px solid #fff;
-}
-
-.loading-spinner {
-  width: 60px;
-  height: 60px;
-  border: 6px solid rgba(255, 255, 255, 0.3);
-  border-top: 6px solid #fff;
-  border-radius: 50%;
-  animation: spin 1s linear infinite;
-  margin: 0 auto 20px auto;
-}
-
-.loading-bar {
-  width: 300px;
-  height: 20px;
-  background: rgba(255, 255, 255, 0.2);
-  border-radius: 10px;
-  overflow: hidden;
-  margin: 20px auto;
-}
-
-.loading-progress {
-  height: 100%;
-  width: 99%;
-  background: linear-gradient(90deg, #feca57, #ff9ff3);
-  border-radius: 10px;
-  animation: progressFlicker 2s ease-in-out infinite;
-}
-
-.loading-text {
-  font-size: 18px;
-  font-weight: bold;
-  margin-bottom: 10px;
-}
-
-.loading-subtext {
-  font-size: 14px;
-  color: #feca57;
-}
-
-/* 移动文本容器样式 */
-.moving-text-container {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  pointer-events: none;
-  z-index: 999998;
-}
-
-.moving-text {
-  position: absolute;
-  color: #ff6b6b;
-  font-size: 24px;
-  font-weight: bold;
-  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
-  animation: crazyMove 5s infinite linear;
-  white-space: nowrap;
-}
-
-.moving-text:nth-child(1) { top: 10%; animation-delay: 0s; }
-.moving-text:nth-child(2) { top: 25%; animation-delay: 1s; }
-.moving-text:nth-child(3) { top: 50%; animation-delay: 2s; }
-.moving-text:nth-child(4) { top: 75%; animation-delay: 3s; }
-.moving-text:nth-child(5) { top: 90%; animation-delay: 4s; }
-
-/* 边缘恶搞元素样式 */
-.edge-pranks {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  pointer-events: none;
-  z-index: 999997;
-}
-
-.edge-prank {
-  position: absolute;
-  background: linear-gradient(45deg, #ff6b6b, #feca57);
-  color: white;
-  padding: 10px 20px;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  animation: edgeBounce 2s ease-in-out infinite;
-  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
-}
-
-.edge-prank.top {
-  top: 10px;
-  left: 50%;
-  transform: translateX(-50%);
-}
-
-.edge-prank.bottom {
-  bottom: 10px;
-  left: 50%;
-  transform: translateX(-50%);
-}
-
-.edge-prank.left {
-  left: 10px;
-  top: 50%;
-  transform: translateY(-50%) rotate(-90deg);
-}
-
-.edge-prank.right {
-  right: 10px;
-  top: 50%;
-  transform: translateY(-50%) rotate(90deg);
-}
-
-/* 假进度条容器样式 */
-.fake-progress-container {
-  position: fixed;
-  bottom: 20px;
-  left: 50%;
-  transform: translateX(-50%);
-  background: rgba(0, 0, 0, 0.8);
-  padding: 15px 30px;
-  border-radius: 15px;
-  border: 2px solid #ff6b6b;
-  z-index: 999996;
-}
-
-.fake-progress-bar {
-  width: 300px;
-  height: 20px;
-  background: rgba(255, 255, 255, 0.2);
-  border-radius: 10px;
-  overflow: hidden;
-  margin-bottom: 10px;
-}
-
-.fake-progress-fill {
-  height: 100%;
-  width: 99.9%;
-  background: linear-gradient(90deg, #ff6b6b, #feca57);
-  border-radius: 10px;
-  animation: progressStuck 3s ease-in-out infinite;
-}
-
-.progress-text {
-  color: white;
-  text-align: center;
-  font-size: 14px;
-  font-weight: bold;
-}
-
-/* 超级烦人模式指示器样式 */
-.ultra-mode-indicator {
-  position: fixed;
-  top: 20px;
-  left: 20px;
-  background: linear-gradient(45deg, #ff0000, #ff6b6b);
-  color: white;
-  padding: 15px 25px;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  z-index: 1000001;
-  animation: ultraPulse 1s ease-in-out infinite;
-  border: 3px solid #fff;
-  box-shadow: 0 0 20px rgba(255, 0, 0, 0.6);
-}
-
-.mode-status {
-  display: block;
-  margin-bottom: 5px;
-}
-
-.annoyance-meter {
-  background: rgba(255, 255, 255, 0.2);
-  border-radius: 10px;
-  height: 8px;
-  width: 100px;
-  overflow: hidden;
-}
-
-.annoyance-fill {
-  height: 100%;
-  background: linear-gradient(90deg, #feca57, #ff0000);
-  border-radius: 10px;
-  transition: width 0.5s ease;
-}
-
-/* 动画关键帧 */
-@keyframes floatAroundCrazy {
-  0%, 100% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(10px, -10px) rotate(90deg); }
-  50% { transform: translate(-10px, 10px) rotate(180deg); }
-  75% { transform: translate(10px, 10px) rotate(270deg); }
-}
-
-@keyframes clickedExplosion {
-  0% { transform: scale(1); }
-  50% { transform: scale(1.5) rotate(180deg); }
-  100% { transform: scale(1) rotate(360deg); }
-}
-
-@keyframes crazyMove {
-  0% { transform: translate(0, 0) rotate(0deg); }
-  25% { transform: translate(100px, -50px) rotate(90deg); }
-  50% { transform: translate(-100px, 100px) rotate(180deg); }
-  75% { transform: translate(150px, -75px) rotate(270deg); }
-  100% { transform: translate(0, 0) rotate(360deg); }
-}
-
-@keyframes loadingPulse {
-  0%, 100% { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
-  50% { background: linear-gradient(135deg, #764ba2 0%, #667eea 100%); }
-}
-
-@keyframes spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
-}
-
-@keyframes progressFlicker {
-  0%, 90% { width: 99%; }
-  95% { width: 99.5%; }
-  100% { width: 99%; }
-}
-
-@keyframes progressStuck {
-  0%, 95% { width: 99.9%; }
-  97% { width: 99.95%; }
-  100% { width: 99.9%; }
-}
-
-@keyframes edgeBounce {
-  0%, 100% { transform: translateX(-50%) scale(1); }
-  50% { transform: translateX(-50%) scale(1.1); }
-}
-
-@keyframes ultraPulse {
-  0%, 100% { 
-    transform: scale(1); 
-    box-shadow: 0 0 20px rgba(255, 0, 0, 0.6);
-  }
-  50% { 
-    transform: scale(1.05); 
-    box-shadow: 0 0 30px rgba(255, 0, 0, 0.9);
-  }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .scattered-fake-button {
-    width: 25px;
-    height: 25px;
-    font-size: 14px;
-  }
-  
-  .fake-loading-content {
-    padding: 20px;
-  }
-  
-  .loading-bar {
-    width: 200px;
-  }
-  
-  .moving-text {
-    font-size: 18px;
-  }
-  
-  .edge-prank {
-    font-size: 14px;
-    padding: 8px 16px;
-  }
-  
-  .fake-progress-bar {
-    width: 200px;
-  }
-  
-  .ultra-mode-indicator {
-    top: 10px;
-    left: 10px;
-    padding: 10px 15px;
-    font-size: 14px;
-  }
-}
-
-/* 自定义离开确认对话框样式 */
-.leave-dialog-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-  height: 100vh;
-  background: rgba(0, 0, 0, 0.8);
-  backdrop-filter: blur(10px);
-  z-index: 1000005;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  animation: fadeIn 0.3s ease;
-}
-
-@keyframes fadeIn {
-  from { opacity: 0; }
-  to { opacity: 1; }
-}
-
-.leave-dialog {
-  background: linear-gradient(135deg, #fff, #f8f9fa);
-  border: 5px solid #ff6b6b;
-  border-radius: 20px;
-  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
-  max-width: 500px;
-  width: 90%;
-  animation: slideIn 0.5s ease;
-  overflow: hidden;
-}
-
-@keyframes slideIn {
-  from { transform: scale(0.8) translateY(-50px); opacity: 0; }
-  to { transform: scale(1) translateY(0); opacity: 1; }
-}
-
-.leave-dialog-header {
-  background: linear-gradient(45deg, #ff6b6b, #ee5a24);
-  color: white;
-  padding: 20px;
-  text-align: center;
-  border-radius: 15px 15px 0 0;
-}
-
-.leave-dialog-header h3 {
-  margin: 0;
-  font-size: 24px;
-  font-weight: bold;
-  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
-}
-
-.leave-dialog-content {
-  padding: 30px;
-  text-align: center;
-}
-
-.leave-warning {
-  margin-bottom: 20px;
-}
-
-.leave-warning p {
-  font-size: 18px;
-  color: #333;
-  margin: 15px 0;
-  font-weight: bold;
-}
-
-.missed-rewards {
-  text-align: left;
-  margin: 20px 0;
-  padding: 20px;
-  background: linear-gradient(135deg, #ffeaa7, #fdcb6e);
-  border-radius: 10px;
-  border: 3px solid #e17055;
-}
-
-.missed-rewards li {
-  margin: 10px 0;
-  font-weight: bold;
-  color: #e17055;
-  font-size: 16px;
-  list-style-type: none;
-  position: relative;
-  padding-left: 10px;
-}
-
-.final-plea {
-  color: #e74c3c !important;
-  font-size: 20px !important;
-  font-weight: bold;
-  animation: pulse-text 1s ease-in-out infinite;
-}
-
-.leave-dialog-buttons {
-  display: flex;
-  gap: 15px;
-  padding: 0 30px 30px 30px;
-}
-
-.stay-button, .leave-button {
-  flex: 1;
-  padding: 15px 20px;
-  border: none;
-  border-radius: 25px;
-  font-size: 16px;
-  font-weight: bold;
-  cursor: pointer;
-  transition: all 0.3s ease;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
-}
-
-.stay-button {
-  background: linear-gradient(45deg, #00b894, #00a085);
-  color: white;
-  animation: buttonPulse 2s ease-in-out infinite;
-}
-
-.leave-button {
-  background: linear-gradient(45deg, #636e72, #2d3436);
-  color: white;
-}
-
-.stay-button:hover {
-  transform: scale(1.05);
-  box-shadow: 0 8px 20px rgba(0, 184, 148, 0.4);
-}
-
-.leave-button:hover {
-  transform: scale(1.05);
-  box-shadow: 0 8px 20px rgba(99, 110, 114, 0.4);
-}
-
-@keyframes buttonPulse {
-  0%, 100% { transform: scale(1); }
-  50% { transform: scale(1.02); }
-}
-
-/* 自定义通知样式 - 替代alert */
-.custom-notification {
-  position: fixed;
-  top: 20px;
-  right: 20px;
-  background: linear-gradient(135deg, #ff6b6b, #feca57);
-  border-radius: 15px;
-  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
-  z-index: 1000006;
-  animation: slideInFromRight 0.5s ease-out, notificationPulse 2s ease-in-out infinite;
-  border: 3px solid #fff;
-  max-width: 400px;
-  min-width: 300px;
-}
-
-.notification-content {
-  display: flex;
-  align-items: center;
-  padding: 15px 20px;
-  gap: 15px;
-}
-
-.notification-icon {
-  font-size: 24px;
-  animation: bounce 1s ease-in-out infinite;
-}
-
-.notification-message {
-  flex: 1;
-  font-size: 16px;
-  font-weight: bold;
-  color: #fff;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  line-height: 1.4;
-  white-space: pre-line;
-}
-
-.notification-close {
-  background: rgba(255, 255, 255, 0.3);
-  border: none;
-  color: #fff;
-  font-size: 20px;
-  font-weight: bold;
-  cursor: pointer;
-  width: 30px;
-  height: 30px;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  transition: all 0.3s ease;
-}
-
-.notification-close:hover {
-  background: rgba(255, 255, 255, 0.5);
-  transform: scale(1.1);
-}
-
-@keyframes slideInFromRight {
-  from { transform: translateX(100%); opacity: 0; }
-  to { transform: translateX(0); opacity: 1; }
-}
-
-@keyframes notificationPulse {
-  0%, 100% { transform: scale(1); }
-  50% { transform: scale(1.02); }
-}
-
-@keyframes bounce {
-  0%, 100% { transform: translateY(0); }
-  50% { transform: translateY(-5px); }
-}
-
-/* 响应式通知设计 */
-@media (max-width: 768px) {
-  .custom-notification {
-    top: 10px;
-    right: 10px;
-    left: 10px;
-    max-width: none;
-    min-width: 0;
-  }
-  
-  .notification-message {
-    font-size: 14px;
-  }
-}
-</style> 

+ 1459 - 33
exgame/src/views/Home.vue

@@ -1,65 +1,1491 @@
 <script setup>
-import { onMounted } from 'vue';
+import { ref, onMounted, onUnmounted } from 'vue'
+
+// 弹窗数据
+const popups = ref([])
+let popupIdCounter = 0
+let intervalId = null
+let escalationLevel = ref(0) // 升级等级:0=初始,1=轻微,2=中度,3=重度,4=地狱
+const escalationTimer = ref(null)
+
+// 性能优化相关变量
+const MAX_POPUPS = 20 // 最大弹窗数量限制,避免卡死
+const ANIMATION_FRAME_ID = ref(null) // requestAnimationFrame ID
+const LAST_CREATION_TIME = ref(0) // 上次创建弹窗的时间,用于节流
+const CREATION_THROTTLE = 200 // 弹窗创建节流时间(毫秒)
+const PERFORMANCE_CHECK_INTERVAL = 5000 // 性能检查间隔(毫秒)
+let lastPerformanceCheck = Date.now()
+
+// 时间推移相关变量
+const startTime = Date.now() // 记录开始时间
+const timeMultiplier = ref(1.0) // 时间倍数,影响弹窗生成概率和数量
+
+// 显示说明相关变量
+const showInstructions = ref(false)
+
+// 切换说明显示
+const toggleInstructions = () => {
+  showInstructions.value = !showInstructions.value
+}
+
+// 计算时间倍数(随时间推移增加难度)
+const updateTimeMultiplier = () => {
+  const elapsed = Date.now() - startTime
+  const minutes = elapsed / (1000 * 60) // 转换为分钟
+  
+  // 每过1分钟,倍数增加0.5,最大到5倍
+  timeMultiplier.value = Math.min(1 + (minutes * 0.5), 5)
+  
+  console.log(`时间倍数: ${timeMultiplier.value.toFixed(2)}x (已运行 ${minutes.toFixed(1)} 分钟)`)
+}
+
+// 病毒广告类型的标题
+const virusAdTitles = [
+  '🎊 恭喜!您获得了iPhone 15!',
+  '💰 点击此处赚取1000万!',
+  '👙 单身美女在您附近!',
+  '🔥 免费下载最新游戏!',
+  '💊 神奇减肥药,一周瘦20斤!',
+  '🏆 您是第100万位访客!领取奖品!',
+  '📱 免费手机等您来拿!',
+  '💳 信用卡快速审批!',
+  '🎯 您已被选中参与调研!',
+  '🎮 免费下载破解游戏!'
+]
+
+// 恶心病毒广告内容
+const virusAdContents = [
+  '恭喜您获得价值9999元的iPhone!请立即点击领取,仅限今日!',
+  '在家躺赚1000万!无需技能,点击立即开始您的致富之路!',
+  '附近的单身美女正在等您!立即注册开始聊天约会!',
+  '最新3A大作免费下载!无需付费,点击立即获取!',
+  '明星同款减肥药!一周瘦20斤,不瘦退全款!',
+  '您是我们的幸运用户!iPhone、现金大奖等您拿!',
+  '限时免费!最新款手机0元购,仅限前100名!',
+  '1分钟极速下卡!额度高达50万,点击申请!',
+  '参与问卷调研赢取现金红包!每题10元,轻松赚钱!',
+  '全网最全破解游戏合集!免费下载,无限金币版!'
+]
+
+// 可怕的病毒警告
+const virusWarnings = [
+  '⚠️ 严重警告:检测到木马病毒!',
+  '🚨 紧急通知:系统已被入侵!',
+  '💀 危险:勒索软件正在运行!',
+  '🔥 警报:CPU温度过高!',
+  '💥 错误:硬盘即将损坏!',
+  '🕷️ 发现:间谍软件已激活!',
+  '👻 检测:僵尸网络感染!',
+  '🦠 病毒:蠕虫程序扩散中!'
+]
+
+const virusWarningContents = [
+  '您的电脑已感染17种病毒!立即清理否则将丢失所有数据!',
+  '黑客正在窃取您的银行密码!请立即点击修复!',
+  '勒索软件已加密您的文件!支付赎金以解锁!',
+  'CPU温度已达危险值!立即关机以免硬件损坏!',
+  '硬盘故障即将发生!请立即备份重要文件!',
+  '检测到间谍软件正在监控您的一举一动!',
+  '您的电脑已成为僵尸网络的一部分!',
+  '蠕虫病毒正在感染网络中的其他设备!'
+]
+
+// 弹窗类型
+const popupTypes = ['ad', 'warning', 'fake_system']
+
+// 随机恶心颜色
+const nastYColors = [
+  '#ff0000', '#ff3300', '#ff6600', '#ff9900', '#ffcc00',
+  '#ccff00', '#99ff00', '#66ff00', '#33ff00', '#00ff00',
+  '#00ff33', '#00ff66', '#00ff99', '#00ffcc', '#00ffff',
+  '#00ccff', '#0099ff', '#0066ff', '#0033ff', '#0000ff',
+  '#3300ff', '#6600ff', '#9900ff', '#cc00ff', '#ff00ff',
+  '#ff00cc', '#ff0099', '#ff0066', '#ff0033', '#8b0000'
+]
+
+// 性能监控函数
+const checkPerformance = () => {
+  const now = Date.now()
+  if (now - lastPerformanceCheck > PERFORMANCE_CHECK_INTERVAL) {
+    // 如果弹窗过多,强制清理一些老的弹窗
+    if (popups.value.length > MAX_POPUPS * 0.8) {
+      console.warn('性能警告:弹窗数量过多,正在清理...')
+      const removeCount = Math.floor(popups.value.length * 0.3)
+      popups.value.splice(0, removeCount)
+    }
+    lastPerformanceCheck = now
+  }
+}
+
+// 移动端检测
+const isMobile = ref(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))
+
+// 移动端适配的弹窗尺寸计算
+const getMobileAdaptedSize = () => {
+  const screenWidth = window.innerWidth
+  const screenHeight = window.innerHeight
+  
+  if (isMobile.value) {
+    // 移动端弹窗尺寸更大,占据更多屏幕空间
+    return {
+      width: Math.min(screenWidth * 0.9, Math.random() * 100 + 280), // 最大90%屏幕宽度
+      height: Math.min(screenHeight * 0.6, Math.random() * 120 + 200)  // 最大60%屏幕高度
+    }
+  } else {
+    // 桌面端保持原来的尺寸
+    return {
+      width: Math.random() * 200 + 280,
+      height: Math.random() * 150 + 220
+    }
+  }
+}
+
+// 创建弹窗(带性能优化)
+const createPopup = (forceType = null) => {
+  const now = Date.now()
+  
+  // 节流控制:限制弹窗创建频率
+  if (now - LAST_CREATION_TIME.value < CREATION_THROTTLE) {
+    return
+  }
+  
+  // 硬性限制:超过最大数量时删除最老的弹窗
+  if (popups.value.length >= MAX_POPUPS) {
+    popups.value.shift() // 删除最老的弹窗
+  }
+  
+  // 性能检查
+  checkPerformance()
+  
+  LAST_CREATION_TIME.value = now
+  
+  const randomSize = getMobileAdaptedSize()
+  
+  // 根据时间倍数选择弹窗类型
+  updateTimeMultiplier()
+  const popupType = forceType || (timeMultiplier.value <= 1.5 ? 'ad' : popupTypes[Math.floor(Math.random() * popupTypes.length)])
+  
+  let title, content, buttons
+  
+  if (popupType === 'ad') {
+    title = virusAdTitles[Math.floor(Math.random() * virusAdTitles.length)]
+    content = virusAdContents[Math.floor(Math.random() * virusAdContents.length)]
+    buttons = ['🎁 立即领取', '❌ 不感兴趣', '📞 联系客服']
+  } else if (popupType === 'warning') {
+    title = virusWarnings[Math.floor(Math.random() * virusWarnings.length)]
+    content = virusWarningContents[Math.floor(Math.random() * virusWarningContents.length)]
+    buttons = ['🛡️ 立即修复', '🚫 忽略警告', '📋 查看详情']
+  } else {
+    title = '💀 系统错误 - 致命异常'
+    content = '发生了不可恢复的系统错误。您的所有数据可能已经丢失。请立即重启计算机。'
+    buttons = ['🔄 强制重启', '💣 格式化硬盘', '👻 接受死亡']
+  }
+  
+  const popup = {
+    id: ++popupIdCounter,
+    type: popupType,
+    title,
+    content,
+    buttons,
+    x: Math.random() * (window.innerWidth - randomSize.width),
+    y: Math.random() * (window.innerHeight - randomSize.height),
+    width: randomSize.width,
+    height: randomSize.height,
+    color: nastYColors[Math.floor(Math.random() * nastYColors.length)],
+    backgroundColor: nastYColors[Math.floor(Math.random() * nastYColors.length)],
+    rotation: Math.random() * 40 - 20,
+    scale: Math.random() * 0.5 + 0.8,
+    opacity: Math.random() * 0.3 + 0.8,
+    borderWidth: Math.random() * 8 + 3,
+    fontSize: Math.random() * 6 + 13,
+    blinkSpeed: Math.random() * 0.5 + 0.3,
+    shakeIntensity: Math.random() * 15 + 8,
+    canClose: true, // 现在所有弹窗都可以关闭
+    isMoving: timeMultiplier.value >= 2, // 2倍时间后开始移动
+    moveDirection: { x: (Math.random() - 0.5) * 4 * timeMultiplier.value, y: (Math.random() - 0.5) * 4 * timeMultiplier.value },
+    createdAt: now // 添加创建时间,用于性能优化
+  }
+  
+  popups.value.push(popup)
+  
+  // 启动移动动画(如果需要)
+  if (popup.isMoving && !ANIMATION_FRAME_ID.value) {
+    movePopups()
+  }
+}
+
+// 优化的移动弹窗函数(使用requestAnimationFrame)
+const movePopups = () => {
+  const movingPopups = popups.value.filter(popup => popup.isMoving)
+  
+  movingPopups.forEach(popup => {
+    popup.x += popup.moveDirection.x
+    popup.y += popup.moveDirection.y
+    
+    // 边界反弹
+    if (popup.x <= 0 || popup.x >= window.innerWidth - popup.width) {
+      popup.moveDirection.x *= -1
+    }
+    if (popup.y <= 0 || popup.y >= window.innerHeight - popup.height) {
+      popup.moveDirection.y *= -1
+    }
+    
+    // 保持在屏幕内
+    popup.x = Math.max(0, Math.min(popup.x, window.innerWidth - popup.width))
+    popup.y = Math.max(0, Math.min(popup.y, window.innerHeight - popup.height))
+  })
+  
+  // 只有当有移动的弹窗时才继续动画循环
+  if (movingPopups.length > 0) {
+    ANIMATION_FRAME_ID.value = requestAnimationFrame(movePopups)
+  }
+}
+
+// 基于时间的自动弹窗生成系统
+const startTimeBasedSystem = () => {
+  const createAutoPopup = () => {
+    updateTimeMultiplier()
+    
+    // 基础生成概率和间隔
+    const baseChance = 0.2 // 基础20%概率
+    const baseInterval = 1000 // 1秒基础间隔
+    
+    // 随时间调整
+    const timeAdjustedChance = baseChance * timeMultiplier.value
+    const timeAdjustedInterval = Math.max(baseInterval / Math.sqrt(timeMultiplier.value), 500) // 最快0.5秒
+    
+    const finalChance = Math.min(timeAdjustedChance, 0.7) // 最高70%概率
+    
+    console.log(`自动生成检查: ${(finalChance * 100).toFixed(1)}% 概率, 下次检查间隔: ${(timeAdjustedInterval/1000).toFixed(1)}s`)
+    
+    // 检查是否生成新弹窗
+    if (Math.random() < finalChance && popups.value.length < MAX_POPUPS) {
+      // 根据时间倍数可能生成多个
+      const count = Math.floor(Math.random() * Math.min(timeMultiplier.value, 3)) + 1
+      console.log(`自动生成 ${count} 个弹窗`)
+      
+      for (let i = 0; i < count; i++) {
+        setTimeout(() => {
+          if (popups.value.length < MAX_POPUPS) {
+            createPopup()
+          }
+        }, i * 300)
+      }
+    }
+    
+    // 设置下次检查
+    setTimeout(createAutoPopup, timeAdjustedInterval)
+  }
+  
+  // 立即开始自动生成(3秒后第一次检查)
+  setTimeout(createAutoPopup, 3000)
+}
+
+// 额外的每秒概率生成系统
+const startContinuousGeneration = () => {
+  const continuousCheck = () => {
+    updateTimeMultiplier()
+    
+    // 每秒都有基础概率生成弹窗
+    const baseChance = 0.15 // 基础15%概率
+    const timeAdjustedChance = baseChance * (timeMultiplier.value * 0.8) // 稍微温和一点
+    const finalChance = Math.min(timeAdjustedChance, 0.6) // 最高60%概率
+    
+    if (Math.random() < finalChance && popups.value.length < MAX_POPUPS) {
+      console.log(`🎯 连续生成触发!概率: ${(finalChance * 100).toFixed(1)}%`)
+      createPopup()
+      
+      // 高倍数时可能连续生成
+      if (timeMultiplier.value > 2 && Math.random() < 0.3) {
+        setTimeout(() => {
+          if (popups.value.length < MAX_POPUPS) {
+            console.log('🔥 连击生成!')
+            createPopup()
+          }
+        }, 500)
+      }
+    }
+  }
+  
+  // 每秒检查一次
+  setInterval(continuousCheck, 1000)
+}
+
+// 真正的关闭弹窗方法(但有概率产生新的)
+const realClosePopup = (popup, event) => {
+  event.stopPropagation()
+  
+  // 先真正关闭当前弹窗
+  const index = popups.value.findIndex(p => p.id === popup.id)
+  if (index !== -1) {
+    popups.value.splice(index, 1)
+    console.log('弹窗已关闭,ID:', popup.id)
+  }
+  
+  // 更新时间倍数
+  updateTimeMultiplier()
+  
+  // 计算概率(随时间推移增加)
+  const baseCloseSpawnChance = 0.3 // 基础30%概率
+  const timeAdjustedChance = baseCloseSpawnChance * timeMultiplier.value
+  const finalChance = Math.min(timeAdjustedChance, 0.95) // 最高95%概率
+  
+  console.log(`关闭概率: ${(finalChance * 100).toFixed(1)}% (倍数: ${timeMultiplier.value.toFixed(2)}x)`)
+  
+  // 随机判断是否生成新弹窗
+  if (Math.random() < finalChance) {
+    // 计算生成数量(随时间推移增加)
+    const baseCount = 1
+    const timeAdjustedCount = Math.floor(baseCount * timeMultiplier.value)
+    const finalCount = Math.min(timeAdjustedCount, 8) // 最多8个
+    
+    console.log(`将生成 ${finalCount} 个新弹窗`)
+    
+    // 生成新弹窗,添加延迟使其更自然
+    for (let i = 0; i < finalCount; i++) {
+      const delay = i * (Math.random() * 300 + 100) // 100-400ms随机延迟
+      setTimeout(() => {
+        if (popups.value.length < MAX_POPUPS) {
+          createPopup()
+        }
+      }, delay)
+    }
+    
+    // 额外概率生成更多弹窗(恶魔时刻)
+    const demonChance = (timeMultiplier.value - 1) * 0.15 // 时间越长恶魔概率越高
+    if (Math.random() < demonChance) {
+      console.log('💀 恶魔时刻触发!')
+      const demonCount = Math.floor(Math.random() * 5) + 2
+      for (let i = 0; i < demonCount; i++) {
+        setTimeout(() => {
+          if (popups.value.length < MAX_POPUPS) {
+            createPopup()
+          }
+        }, (finalCount * 300) + (i * 200))
+      }
+    }
+  } else {
+    console.log('🍀 幸运!没有生成新弹窗')
+  }
+}
+
+// 紧急清理所有弹窗(隐藏功能)
+const emergencyCleanup = () => {
+  popups.value = []
+  if (intervalId) {
+    clearInterval(intervalId)
+    intervalId = null
+  }
+  if (escalationTimer.value) {
+    clearInterval(escalationTimer.value)
+    escalationTimer.value = null
+  }
+  if (ANIMATION_FRAME_ID.value) {
+    cancelAnimationFrame(ANIMATION_FRAME_ID.value)
+    ANIMATION_FRAME_ID.value = null
+  }
+  escalationLevel.value = 0
+  document.title = '😊 欢迎访问!'
+  console.log('紧急清理完成!所有弹窗已清除,系统已重置')
+}
+
+// 隐藏的快捷键处理
+const handleSecretKeys = (e) => {
+  // Ctrl + Shift + Q = 紧急清理所有弹窗
+  if (e.ctrlKey && e.shiftKey && e.key === 'Q') {
+    e.preventDefault()
+    emergencyCleanup()
+    return
+  }
+  
+  // Ctrl + Shift + C = 关闭最新的弹窗
+  if (e.ctrlKey && e.shiftKey && e.key === 'C') {
+    e.preventDefault()
+    if (popups.value.length > 0) {
+      const lastPopup = popups.value[popups.value.length - 1]
+      realClosePopup(lastPopup, e)
+    }
+    return
+  }
+}
+
+// 按钮点击处理(简化版)
+const handleButtonClick = (popup, buttonIndex, event) => {
+  event.stopPropagation()
+  
+  updateTimeMultiplier()
+  
+  // 基础概率和数量
+  const baseChance = 0.5
+  const baseCount = 1
+  
+  // 时间调整
+  const timeAdjustedChance = baseChance * timeMultiplier.value
+  const timeAdjustedCount = Math.floor(baseCount * timeMultiplier.value)
+  
+  const finalChance = Math.min(timeAdjustedChance, 0.9) // 最高90%概率
+  const finalCount = Math.min(timeAdjustedCount, 6) // 最多6个
+  
+  console.log(`按钮点击: ${(finalChance * 100).toFixed(1)}% 概率生成 ${finalCount} 个弹窗`)
+  
+  // 生成新弹窗
+  if (Math.random() < finalChance) {
+    for (let i = 0; i < finalCount; i++) {
+      setTimeout(() => {
+        if (popups.value.length < MAX_POPUPS) {
+          createPopup()
+        }
+      }, i * (Math.random() * 200 + 100))
+    }
+  }
+  
+  // 更新页面标题
+  const minutes = (Date.now() - startTime) / (1000 * 60)
+  if (minutes < 1) {
+    document.title = '🎊 感谢您的点击!'
+  } else if (minutes < 3) {
+    document.title = '😈 情况开始有趣了...'
+  } else if (minutes < 5) {
+    document.title = '💀 现在想逃已经晚了!'
+  } else {
+    document.title = '🔥 欢迎来到地狱!'
+  }
+}
+
+// 页面点击处理(简化版)
+const handlePageClick = () => {
+  updateTimeMultiplier()
+  
+  // 只有在时间倍数较高时才触发
+  const triggerChance = Math.max(0, (timeMultiplier.value - 2) * 0.1) // 2倍后开始有概率
+  
+  if (Math.random() < triggerChance && popups.value.length < MAX_POPUPS) {
+    console.log('页面点击触发新弹窗')
+    createPopup()
+  }
+}
+
+// 移动端触摸事件处理
+const handleMobileTouch = (event) => {
+  if (!isMobile.value) return
+  
+  updateTimeMultiplier()
+  
+  // 触摸屏幕有概率生成弹窗
+  const touchChance = Math.max(0, (timeMultiplier.value - 1) * 0.2) // 1倍后开始有概率
+  
+  if (Math.random() < touchChance && popups.value.length < MAX_POPUPS) {
+    console.log('📱 触摸触发新弹窗')
+    createPopup()
+  }
+}
+
+// 清理函数
+const cleanup = () => {
+  if (intervalId) {
+    clearInterval(intervalId)
+    intervalId = null
+  }
+  if (escalationTimer.value) {
+    clearInterval(escalationTimer.value)
+    escalationTimer.value = null
+  }
+  if (ANIMATION_FRAME_ID.value) {
+    cancelAnimationFrame(ANIMATION_FRAME_ID.value)
+    ANIMATION_FRAME_ID.value = null
+  }
+  popups.value = [] // 清空所有弹窗
+  document.removeEventListener('click', handlePageClick)
+}
+
+// 移动端震动功能(如果支持)
+const triggerMobileVibration = () => {
+  if (isMobile.value && navigator.vibrate) {
+    // 随机震动模式
+    const vibrationPatterns = [
+      [100, 50, 100], // 短震动
+      [200, 100, 200, 100, 200], // 长震动
+      [50, 50, 50, 50, 50], // 快速震动
+      [300] // 单次长震动
+    ]
+    const pattern = vibrationPatterns[Math.floor(Math.random() * vibrationPatterns.length)]
+    navigator.vibrate(pattern)
+    console.log('📳 移动端震动触发')
+  }
+}
+
+// 移动端特殊处理的关闭弹窗
+const realClosePopupMobile = (popup, event) => {
+  if (isMobile.value) {
+    triggerMobileVibration() // 关闭时震动
+  }
+  realClosePopup(popup, event)
+}
+
+// 移动端特殊处理的按钮点击
+const handleButtonClickMobile = (popup, buttonIndex, event) => {
+  if (isMobile.value) {
+    triggerMobileVibration() // 点击时震动
+  }
+  handleButtonClick(popup, buttonIndex, event)
+}
 
-// 全局路由守卫已经处理随机跳转,这里只显示加载界面
 onMounted(() => {
-  console.log('🏠 访问首页,全局路由守卫将处理随机跳转');
-});
+  // 开始时只创建一个弹窗
+  createPopup('ad')
+  
+  // 5秒后再来一个,确保用户体验到"恶心"
+  setTimeout(() => {
+    if (popups.value.length < MAX_POPUPS) {
+      createPopup('ad')
+    }
+  }, 5000)
+  
+  // 启动基于时间的自动生成系统
+  startTimeBasedSystem()
+  
+  // 启动每秒概率生成系统
+  startContinuousGeneration()
+  
+  // 每30秒更新一次时间倍数(用于调试和显示)
+  setInterval(() => {
+    updateTimeMultiplier()
+    const minutes = (Date.now() - startTime) / (1000 * 60)
+    if (minutes > 0.5) { // 30秒后开始更新标题
+      document.title = `⏰ 运行 ${minutes.toFixed(1)} 分钟 | 难度 ${timeMultiplier.value.toFixed(1)}x`
+    }
+  }, 30000)
+  
+  // 监听事件
+  document.addEventListener('click', handlePageClick)
+  
+  // 移动端触摸事件监听
+  if (isMobile.value) {
+    document.addEventListener('touchstart', handleMobileTouch)
+    document.addEventListener('touchend', handleMobileTouch)
+    console.log('📱 移动端模式已激活')
+  }
+  
+  // 首先添加隐藏快捷键监听
+  document.addEventListener('keydown', handleSecretKeys)
+  
+  // 根据时间倍数禁用快捷键
+  document.addEventListener('keydown', (e) => {
+    // 先检查是否是隐藏快捷键,如果是则不阻止
+    if ((e.ctrlKey && e.shiftKey && (e.key === 'Q' || e.key === 'C'))) {
+      return // 让隐藏快捷键正常工作
+    }
+    
+    updateTimeMultiplier()
+    if (timeMultiplier.value >= 1.5) {
+      const blockedKeys = ['F5', 'F4', 'Escape', 'Tab']
+      if (e.ctrlKey || e.altKey || blockedKeys.includes(e.key)) {
+        e.preventDefault()
+        if (timeMultiplier.value >= 2.5 && popups.value.length < MAX_POPUPS) {
+          createPopup() // 高倍数时按键就创建弹窗
+        }
+      }
+    }
+  })
+  
+  // 阻止页面关闭(时间倍数足够高时)
+  window.addEventListener('beforeunload', (e) => {
+    updateTimeMultiplier()
+    if (timeMultiplier.value >= 2) {
+      e.preventDefault()
+      e.returnValue = '您确定要离开吗?时间越长越有趣!'
+      // 创建一些弹窗作为惩罚
+      for (let i = 0; i < Math.min(timeMultiplier.value, 5) && popups.value.length < MAX_POPUPS; i++) {
+        setTimeout(() => createPopup(), i * 100)
+      }
+      return '还没体验完整个进化过程呢!'
+    }
+  })
+  
+  // 窗口失焦时创建弹窗(时间倍数足够高时)
+  window.addEventListener('blur', () => {
+    updateTimeMultiplier()
+    if (timeMultiplier.value >= 1.5 && popups.value.length < MAX_POPUPS) {
+      document.title = '🚨 快回来继续体验!'
+      createPopup()
+    }
+  })
+  
+  // 移动端特殊处理
+  if (isMobile.value) {
+    // 阻止移动端缩放
+    document.addEventListener('touchstart', (e) => {
+      if (e.touches.length > 1) {
+        e.preventDefault() // 阻止双指缩放
+      }
+    }, { passive: false })
+    
+    document.addEventListener('gesturestart', (e) => {
+      e.preventDefault() // 阻止手势缩放
+    })
+    
+    // 阻止长按选择文本
+    document.addEventListener('selectstart', (e) => {
+      if (timeMultiplier.value >= 1.5) {
+        e.preventDefault()
+      }
+    })
+    
+    // 移动端特有的页面震动
+    const mobileShake = () => {
+      if (timeMultiplier.value >= 2) {
+        document.body.style.transform = `translateX(${Math.random() * 4 - 2}px) translateY(${Math.random() * 4 - 2}px)`
+        setTimeout(() => {
+          document.body.style.transform = 'none'
+        }, 100)
+      }
+    }
+    
+    // 每5秒随机震动页面
+    setInterval(() => {
+      if (Math.random() < timeMultiplier.value * 0.1) {
+        mobileShake()
+      }
+    }, 5000)
+    
+    console.log('📱 移动端恶心功能已激活:阻止缩放、阻止选择、页面震动')
+  }
+})
+
+onUnmounted(() => {
+  cleanup()
+})
 </script>
 
 <template>
-  <div class="redirect-container">
-    <!-- 简单的加载提示,用户几乎看不到 -->
-    <div class="loading-spinner">🎲</div>
-    <p>正在随机分配恶搞内容...</p>
+  <div class="container">
+    <!-- 主背景区域 -->
+    <div class="main-content">
+      <h1>🎊 特价优惠广告页 🎊</h1>
+      <p>欢迎访问我们的特价商品页面!</p>
+      <div class="info-text">
+        📢 当前系统状态:{{ 
+          !timeMultiplier.value || timeMultiplier.value < 1.5 ? '正常运行' : 
+          timeMultiplier.value < 2.5 ? '开始异常...' : 
+          timeMultiplier.value < 3.5 ? '系统失控!' : 
+          timeMultiplier.value < 4.5 ? '完全崩溃!' : '地狱模式!'
+        }} ({{ timeMultiplier.value ? timeMultiplier.value.toFixed(1) : '1.0' }}x)
+      </div>
+      <div v-if="timeMultiplier.value && timeMultiplier.value >= 2" class="warning-text">
+        ⚠️ 注意:难度正在随时间增加 ⚠️
+      </div>
+      
+      <!-- 隐藏的使用说明 -->
+      <div class="secret-instructions" @dblclick="toggleInstructions">
+        <div v-if="showInstructions" class="instructions-content">
+          <h3>🔧 使用说明</h3>
+          <p><strong>关闭弹窗:</strong>点击右上角 × 按钮(有概率产生新弹窗)</p>
+          <p><strong>时间机制:</strong>运行时间越长,难度越高</p>
+          <p v-if="!isMobile"><strong>紧急退出:</strong>Ctrl + Shift + Q (清理所有弹窗)</p>
+          <p v-if="!isMobile"><strong>关闭单个:</strong>Ctrl + Shift + C (关闭最新弹窗)</p>
+          <p v-if="isMobile"><strong>📱 移动端特色:</strong>震动反馈、阻止缩放、触摸生成</p>
+          <p v-if="isMobile"><strong>📳 震动模式:</strong>每次操作都有震动反馈</p>
+          <p><strong>显示说明:</strong>双击此区域</p>
+        </div>
+        <div v-else class="instructions-hint">
+          💡 双击此处查看使用说明
+        </div>
+      </div>
+    </div>
+
+    <!-- 弹窗层 -->
+    <div 
+      v-for="popup in popups" 
+      :key="popup.id" 
+      class="popup-overlay" 
+      :style="{ zIndex: 1000 + popup.id }"
+    >
+      <div 
+        class="popup-box" 
+        :class="[
+          `popup-${popup.type}`,
+          { 'moving': popup.isMoving },
+          { 'unclosable': !popup.canClose }
+        ]"
+        :style="{ 
+          left: popup.x + 'px', 
+          top: popup.y + 'px',
+          width: popup.width + 'px',
+          height: popup.height + 'px',
+          borderColor: popup.color,
+          backgroundColor: popup.backgroundColor,
+          borderWidth: popup.borderWidth + 'px',
+          transform: `rotate(${popup.rotation}deg) scale(${popup.scale})`,
+          opacity: popup.opacity,
+          fontSize: popup.fontSize + 'px',
+          animation: `popupShake ${popup.blinkSpeed}s infinite, colorFlash ${popup.blinkSpeed * 2}s infinite`
+        }"
+      >
+        <div class="popup-header" :style="{ 
+          backgroundColor: popup.color,
+          animation: `headerPulse ${popup.blinkSpeed}s infinite`
+        }">
+          <span class="popup-title">{{ popup.title }}</span>
+          <div class="close-buttons">
+            <!-- 关闭按钮 -->
+            <button 
+              class="popup-close" 
+              @click.stop="realClosePopupMobile(popup, $event)"
+              title="关闭弹窗(可能产生新弹窗)"
+            >
+              ×
+            </button>
+          </div>
+        </div>
+        <div class="popup-content" :style="{ 
+          background: `linear-gradient(45deg, ${popup.backgroundColor}, white)`,
+          animation: `contentBlink ${popup.blinkSpeed * 1.5}s infinite`
+        }">
+          <p :style="{ 
+            color: popup.color,
+            animation: `textShake ${popup.blinkSpeed * 0.8}s infinite`
+          }">{{ popup.content }}</p>
+          
+          <!-- 根据弹窗类型显示不同内容 -->
+          <div v-if="popup.type === 'ad'" class="ad-elements">
+            <div class="fake-timer">⏰ 限时优惠:{{ Math.floor(Math.random() * 60) }}分钟后结束!</div>
+            <div class="fake-count">🔥 仅剩{{ Math.floor(Math.random() * 50) + 1 }}个名额!</div>
+          </div>
+          
+          <div v-if="popup.type === 'warning'" class="warning-elements">
+            <div class="fake-scan">🔍 正在扫描... {{ Math.floor(Math.random() * 100) }}%</div>
+            <div class="threat-level">威胁等级:⚠️ {{ ['低', '中', '高', '极高'][Math.floor(Math.random() * 4)] }}</div>
+          </div>
+          
+          <div v-if="popup.type === 'fake_system'" class="system-elements">
+            <div class="error-code">错误代码:0x{{ Math.random().toString(16).substr(2, 8).toUpperCase() }}</div>
+            <div class="memory-usage">内存使用率:{{ Math.floor(Math.random() * 40) + 60 }}%</div>
+          </div>
+          
+          <div class="popup-buttons">
+            <button 
+              class="popup-btn primary" 
+              @click.stop="handleButtonClickMobile(popup, 0, $event)"
+              :style="{ 
+                backgroundColor: popup.color,
+                animation: `buttonBounce ${popup.blinkSpeed * 0.6}s infinite`
+              }"
+            >
+              {{ popup.buttons[0] }}
+            </button>
+            <button 
+              class="popup-btn secondary" 
+              @click.stop="handleButtonClickMobile(popup, 1, $event)"
+              :style="{ 
+                backgroundColor: popup.backgroundColor,
+                color: popup.color,
+                animation: `buttonWobble ${popup.blinkSpeed * 0.7}s infinite`
+              }"
+            >
+              {{ popup.buttons[1] }}
+            </button>
+            <button 
+              class="popup-btn danger" 
+              @click.stop="handleButtonClickMobile(popup, 2, $event)"
+              :style="{ 
+                background: `linear-gradient(45deg, ${popup.color}, ${popup.backgroundColor})`,
+                animation: `buttonCrazy ${popup.blinkSpeed * 0.5}s infinite`
+              }"
+            >
+              {{ popup.buttons[2] }}
+            </button>
+          </div>
+        </div>
+      </div>
+    </div>
   </div>
 </template>
 
 <style scoped>
-.redirect-container {
+.container {
+  width: 100vw;
+  height: 100vh;
+  background: linear-gradient(45deg, #ff0000, #ff6600, #ffff00, #00ff00, #0066ff, #6600ff);
+  background-size: 400% 400%;
+  animation: crazyBackground 2s ease infinite;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-family: 'Microsoft YaHei', sans-serif;
+  overflow: hidden;
+}
+
+@keyframes crazyBackground {
+  0%, 100% { background-position: 0% 50%; }
+  50% { background-position: 100% 50%; }
+}
+
+.main-content {
+  text-align: center;
+  color: white;
+  z-index: 1;
+  text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
+}
+
+.main-content h1 {
+  font-size: 3rem;
+  margin-bottom: 1rem;
+  font-weight: bold;
+  animation: shake 0.5s infinite;
+}
+
+@keyframes shake {
+  0%, 100% { transform: translateX(0); }
+  25% { transform: translateX(-5px); }
+  75% { transform: translateX(5px); }
+}
+
+.main-content p {
+  font-size: 1.5rem;
+  opacity: 0.9;
+  animation: pulse 1s infinite;
+}
+
+@keyframes pulse {
+  0%, 100% { opacity: 0.9; }
+  50% { opacity: 1; }
+}
+
+.warning-text {
+  margin-top: 20px;
+  font-size: 1.2rem;
+  color: #ffff00;
+  font-weight: bold;
+  animation: blink 0.5s infinite;
+}
+
+@keyframes blink {
+  0%, 50% { opacity: 1; }
+  51%, 100% { opacity: 0; }
+}
+
+.info-text {
+  margin-top: 15px;
+  font-size: 1.1rem;
+  color: #00ff00;
+  font-weight: normal;
+  opacity: 0.9;
+}
+
+/* 隐藏说明区域样式 */
+.secret-instructions {
+  margin-top: 20px;
+  padding: 10px;
+  background: rgba(0, 0, 0, 0.3);
+  border-radius: 8px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  max-width: 400px;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.secret-instructions:hover {
+  background: rgba(0, 0, 0, 0.5);
+  transform: scale(1.02);
+}
+
+.instructions-hint {
+  color: rgba(255, 255, 255, 0.6);
+  font-size: 0.9rem;
+  text-align: center;
+  font-style: italic;
+}
+
+.instructions-content {
+  color: #00ff00;
+  font-size: 0.85rem;
+  line-height: 1.4;
+}
+
+.instructions-content h3 {
+  color: #ffff00;
+  margin: 0 0 10px 0;
+  font-size: 1rem;
+  text-align: center;
+}
+
+.instructions-content p {
+  margin: 5px 0;
+  text-align: left;
+}
+
+.instructions-content strong {
+  color: #ff6600;
+}
+
+/* 弹窗样式 - 超级恶心版本 */
+.popup-overlay {
   position: fixed;
   top: 0;
   left: 0;
   width: 100vw;
   height: 100vh;
+  background: rgba(255, 0, 0, 0.1);
+  z-index: 1000;
+  pointer-events: none; /* 让overlay不拦截点击事件 */
+}
+
+.popup-box {
+  position: absolute;
+  background: white;
+  border: 3px solid #ff0000;
+  box-shadow: 0 0 20px rgba(255, 0, 0, 0.5), 0 0 40px rgba(255, 255, 0, 0.3);
+  font-family: 'Microsoft YaHei', sans-serif;
+  pointer-events: auto; /* 弹窗本身可以接收点击事件 */
+  border-style: dashed;
+  overflow: hidden;
+}
+
+/* 基础摇摆动画 */
+@keyframes popupShake {
+  0%, 100% { transform: translateX(0) translateY(0); }
+  10% { transform: translateX(2px) translateY(1px); }
+  20% { transform: translateX(-1px) translateY(-2px); }
+  30% { transform: translateX(-3px) translateY(0px); }
+  40% { transform: translateX(1px) translateY(2px); }
+  50% { transform: translateX(-1px) translateY(-1px); }
+  60% { transform: translateX(-3px) translateY(1px); }
+  70% { transform: translateX(2px) translateY(1px); }
+  80% { transform: translateX(-1px) translateY(-1px); }
+  90% { transform: translateX(2px) translateY(2px); }
+}
+
+/* 颜色闪烁动画 */
+@keyframes colorFlash {
+  0% { filter: hue-rotate(0deg) brightness(1); }
+  25% { filter: hue-rotate(90deg) brightness(1.5); }
+  50% { filter: hue-rotate(180deg) brightness(0.8); }
+  75% { filter: hue-rotate(270deg) brightness(1.2); }
+  100% { filter: hue-rotate(360deg) brightness(1); }
+}
+
+/* 头部脉冲动画 */
+@keyframes headerPulse {
+  0%, 100% { 
+    transform: scale(1);
+    background-color: inherit;
+  }
+  50% { 
+    transform: scale(1.05);
+    filter: brightness(1.5) contrast(1.2);
+  }
+}
+
+/* 内容闪烁动画 */
+@keyframes contentBlink {
+  0%, 50% { opacity: 1; }
+  25% { opacity: 0.7; }
+  75% { opacity: 0.9; }
+}
+
+/* 文字摇摆动画 */
+@keyframes textShake {
+  0%, 100% { transform: skew(0deg, 0deg); }
+  25% { transform: skew(2deg, 1deg); }
+  50% { transform: skew(-1deg, -2deg); }
+  75% { transform: skew(-2deg, 1deg); }
+}
+
+/* 按钮跳动动画 */
+@keyframes buttonBounce {
+  0%, 100% { transform: scale(1) rotate(0deg); }
+  25% { transform: scale(1.1) rotate(1deg); }
+  50% { transform: scale(0.9) rotate(-1deg); }
+  75% { transform: scale(1.05) rotate(1deg); }
+}
+
+/* 按钮摆动动画 */
+@keyframes buttonWobble {
+  0%, 100% { transform: rotate(0deg) scale(1); }
+  15% { transform: rotate(-5deg) scale(1.02); }
+  30% { transform: rotate(3deg) scale(0.98); }
+  45% { transform: rotate(-3deg) scale(1.01); }
+  60% { transform: rotate(2deg) scale(0.99); }
+  75% { transform: rotate(-1deg) scale(1.01); }
+}
+
+/* 按钮疯狂动画 */
+@keyframes buttonCrazy {
+  0% { transform: rotate(0deg) scale(1) skew(0deg); }
+  10% { transform: rotate(3deg) scale(1.05) skew(1deg); }
+  20% { transform: rotate(-2deg) scale(0.95) skew(-1deg); }
+  30% { transform: rotate(4deg) scale(1.08) skew(2deg); }
+  40% { transform: rotate(-3deg) scale(0.92) skew(-2deg); }
+  50% { transform: rotate(2deg) scale(1.03) skew(1deg); }
+  60% { transform: rotate(-4deg) scale(0.97) skew(-1deg); }
+  70% { transform: rotate(1deg) scale(1.06) skew(2deg); }
+  80% { transform: rotate(-1deg) scale(0.94) skew(-2deg); }
+  90% { transform: rotate(2deg) scale(1.02) skew(1deg); }
+  100% { transform: rotate(0deg) scale(1) skew(0deg); }
+}
+
+/* 标题闪烁效果 - 更恶心 */
+@keyframes titleFlash {
+  0% { color: white; text-shadow: 0 0 5px red; }
+  25% { color: yellow; text-shadow: 0 0 10px orange; }
+  50% { color: lime; text-shadow: 0 0 15px green; }
+  75% { color: cyan; text-shadow: 0 0 20px blue; }
+  100% { color: magenta; text-shadow: 0 0 25px purple; }
+}
+
+/* 文字脉冲效果 - 增强版 */
+@keyframes textPulse {
+  0%, 100% { 
+    transform: scale(1);
+    text-shadow: 0 0 5px currentColor;
+  }
+  25% { 
+    transform: scale(1.08);
+    text-shadow: 0 0 15px currentColor, 0 0 25px currentColor;
+  }
+  50% { 
+    transform: scale(0.95);
+    text-shadow: 0 0 8px currentColor;
+  }
+  75% { 
+    transform: scale(1.12);
+    text-shadow: 0 0 20px currentColor, 0 0 30px currentColor;
+  }
+}
+
+.popup-header {
+  background: #ff0000;
+  padding: 12px 16px;
+  border-bottom: 2px solid #cc0000;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  position: relative;
+  overflow: hidden;
+}
+
+.popup-header::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -100%;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
+  animation: shimmer 2s infinite;
+}
+
+@keyframes shimmer {
+  0% { left: -100%; }
+  100% { left: 100%; }
+}
+
+.popup-title {
+  font-weight: bold;
+  color: white;
+  font-size: 14px;
+  animation: titleFlash 0.5s infinite;
+  text-transform: uppercase;
+  letter-spacing: 1px;
+}
+
+.popup-close {
+  background: #cc0000;
+  border: 2px solid white;
+  font-size: 18px;
+  color: white;
+  cursor: pointer;
+  padding: 2px;
+  width: 25px;
+  height: 25px;
   display: flex;
-  flex-direction: column;
   align-items: center;
   justify-content: center;
-  background: linear-gradient(45deg, #ff006e, #8338ec, #3a86ff);
-  background-size: 400% 400%;
-  animation: gradientShift 2s ease infinite;
-  color: #fff;
-  z-index: 99999;
-  font-family: 'Microsoft YaHei', sans-serif;
+  font-weight: bold;
+  transition: all 0.2s;
+  animation: buttonCrazy 0.8s infinite;
+}
+
+.popup-close:hover {
+  background: #ffffff;
+  color: #ff0000;
+  transform: scale(1.3) rotate(180deg);
+  animation: buttonCrazy 0.3s infinite;
 }
 
-.loading-spinner {
-  font-size: 4rem;
-  animation: spin 0.8s linear infinite;
-  text-shadow: 0 0 20px rgba(255, 255, 255, 0.8);
+.popup-content {
+  padding: 20px 16px 16px;
+  background: linear-gradient(45deg, #fff, #ffe6e6);
+  position: relative;
+}
+
+.popup-content::after {
+  content: '⚠️';
+  position: absolute;
+  top: 5px;
+  right: 5px;
+  font-size: 20px;
+  animation: spin 2s linear infinite;
 }
 
 @keyframes spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
+  from { transform: rotate(0deg); }
+  to { transform: rotate(360deg); }
 }
 
-@keyframes gradientShift {
-  0%, 100% { background-position: 0% 50%; }
-  50% { background-position: 100% 50%; }
+.popup-content p {
+  margin: 0 0 20px 0;
+  color: #cc0000;
+  font-size: 14px;
+  line-height: 1.5;
+  font-weight: bold;
+  animation: textPulse 0.8s infinite;
+  word-wrap: break-word;
 }
 
-p {
-  margin-top: 20px;
-  font-size: 1.4rem;
+.popup-buttons {
+  display: flex;
+  gap: 8px;
+  justify-content: space-between;
+}
+
+.popup-btn {
+  padding: 8px 12px;
+  border: 2px solid;
+  cursor: pointer;
+  font-size: 12px;
+  font-weight: bold;
+  transition: all 0.2s;
+  flex: 1;
+  position: relative;
+  overflow: hidden;
+}
+
+.popup-btn::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(255,255,255,0.3);
+  transform: translateX(-100%);
+  animation: btnSlide 1.5s infinite;
+}
+
+@keyframes btnSlide {
+  0% { transform: translateX(-100%); }
+  50% { transform: translateX(0%); }
+  100% { transform: translateX(100%); }
+}
+
+.popup-btn:hover {
+  transform: scale(1.15) rotate(5deg);
+  box-shadow: 0 0 20px currentColor, 0 0 40px currentColor;
+  z-index: 10;
+}
+
+.popup-btn.primary {
+  border-color: #ff0000;
+  color: white;
+}
+
+.popup-btn.secondary {
+  border-color: #ff6600;
+}
+
+.popup-btn.danger {
+  border-color: #ff0000;
+  color: #ff0000;
+}
+
+/* 弹窗类型样式 */
+.popup-ad {
+  border-color: #ff6600 !important;
+}
+
+.popup-warning {
+  border-color: #ff0000 !important;
+}
+
+.popup-fake_system {
+  border-color: #0066ff !important;
+}
+
+/* 移动效果 */
+.moving {
+  transition: none !important;
+}
+
+/* 无法关闭样式 */
+.unclosable {
+  box-shadow: 0 0 30px rgba(255, 0, 0, 0.8), 0 0 60px rgba(255, 0, 0, 0.5) !important;
+}
+
+.unclosable-notice {
+  margin-top: 10px;
+  padding: 8px;
+  background: rgba(255, 0, 0, 0.1);
+  border: 1px dashed #ff0000;
+  color: #ff0000;
+  font-size: 12px;
   text-align: center;
-  text-shadow: 0 0 10px rgba(255, 255, 255, 0.6);
-  animation: pulse 1.5s ease-in-out infinite;
+  animation: blink 1s infinite;
 }
 
-@keyframes pulse {
-  0%, 100% { opacity: 0.8; }
-  50% { opacity: 1; }
+/* 广告元素样式 */
+.ad-elements {
+  margin: 10px 0;
+  padding: 8px;
+  background: rgba(255, 255, 0, 0.1);
+  border-radius: 4px;
+}
+
+.fake-timer, .fake-count {
+  font-size: 11px;
+  color: #ff6600;
+  font-weight: bold;
+  margin: 3px 0;
+  animation: pulse 1.5s infinite;
+}
+
+/* 警告元素样式 */
+.warning-elements {
+  margin: 10px 0;
+  padding: 8px;
+  background: rgba(255, 0, 0, 0.1);
+  border-radius: 4px;
+}
+
+.fake-scan, .threat-level {
+  font-size: 11px;
+  color: #ff0000;
+  font-weight: bold;
+  margin: 3px 0;
+  animation: blink 0.8s infinite;
+}
+
+/* 系统元素样式 */
+.system-elements {
+  margin: 10px 0;
+  padding: 8px;
+  background: rgba(0, 0, 255, 0.1);
+  border-radius: 4px;
+  font-family: 'Courier New', monospace;
+}
+
+.error-code, .memory-usage {
+  font-size: 10px;
+  color: #0066ff;
+  font-weight: bold;
+  margin: 3px 0;
+}
+
+/* 关闭按钮容器 */
+.close-buttons {
+  display: flex;
+  gap: 5px;
+  align-items: center;
+}
+
+/* 真实关闭按钮样式 */
+.real-close-btn {
+  background: rgba(0, 0, 0, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.3);
+  font-size: 12px;
+  color: rgba(255, 255, 255, 0.6);
+  cursor: pointer;
+  padding: 1px;
+  width: 20px;
+  height: 20px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: bold;
+  transition: all 0.3s;
+  opacity: 0.3;
+  border-radius: 2px;
+}
+
+.real-close-btn:hover {
+  background: #00cc00;
+  color: white;
+  opacity: 1;
+  transform: scale(1.2);
+  box-shadow: 0 0 10px #00cc00;
+}
+
+.real-close-btn:active {
+  background: #00ff00;
+  transform: scale(1.4);
+}
+
+/* 移动端适配样式 */
+@media (max-width: 768px) {
+  .container {
+    padding: 10px;
+  }
+  
+  .main-content h1 {
+    font-size: 2rem; /* 移动端标题更小 */
+    margin-bottom: 0.5rem;
+  }
+  
+  .main-content p {
+    font-size: 1.2rem; /* 移动端文字更小 */
+  }
+  
+  .info-text {
+    font-size: 0.9rem;
+    padding: 8px;
+    background: rgba(0, 0, 0, 0.4);
+    border-radius: 6px;
+    margin: 10px auto;
+    max-width: 90%;
+  }
+  
+  .warning-text {
+    font-size: 1rem;
+    margin-top: 10px;
+  }
+  
+  .secret-instructions {
+    margin-top: 15px;
+    padding: 8px;
+    max-width: 90%;
+    font-size: 0.8rem;
+  }
+  
+  /* 移动端弹窗样式调整 */
+  .popup-box {
+    min-width: 250px !important;
+    max-width: 95vw !important;
+    max-height: 70vh !important;
+    overflow-y: auto; /* 移动端允许滚动 */
+    touch-action: manipulation; /* 优化触摸体验 */
+  }
+  
+  .popup-header {
+    padding: 10px 12px;
+    font-size: 0.9rem;
+  }
+  
+  .popup-title {
+    font-size: 0.9rem !important;
+    word-wrap: break-word;
+    line-height: 1.3;
+  }
+  
+  .popup-close {
+    width: 30px !important;
+    height: 30px !important;
+    font-size: 20px !important;
+    /* 移动端关闭按钮更大,更容易点击 */
+  }
+  
+  .popup-content {
+    padding: 15px 12px 12px;
+    font-size: 0.85rem;
+  }
+  
+  .popup-content p {
+    font-size: 0.85rem !important;
+    line-height: 1.4;
+    word-wrap: break-word;
+  }
+  
+  .popup-buttons {
+    flex-direction: column; /* 移动端按钮垂直排列 */
+    gap: 6px;
+  }
+  
+  .popup-btn {
+    padding: 10px 8px;
+    font-size: 0.85rem;
+    min-height: 40px; /* 移动端按钮更高,更容易点击 */
+    word-wrap: break-word;
+  }
+  
+  /* 移动端特定的动画优化 */
+  .popup-box {
+    animation-duration: 0.8s !important; /* 移动端动画稍微慢一点 */
+  }
+  
+  /* 移动端元素样式 */
+  .ad-elements, .warning-elements, .system-elements {
+    padding: 6px;
+    margin: 8px 0;
+    font-size: 0.75rem;
+  }
+  
+  .fake-timer, .fake-count, .fake-scan, .threat-level, .error-code, .memory-usage {
+    font-size: 0.7rem !important;
+    margin: 2px 0;
+  }
+}
+
+/* 超小屏幕适配 (手机竖屏) */
+@media (max-width: 480px) {
+  .main-content h1 {
+    font-size: 1.5rem;
+  }
+  
+  .main-content p {
+    font-size: 1rem;
+  }
+  
+  .popup-box {
+    min-width: 200px !important;
+    max-width: 98vw !important;
+    font-size: 0.8rem !important;
+  }
+  
+  .popup-content p {
+    font-size: 0.8rem !important;
+  }
+  
+  .popup-btn {
+    padding: 12px 6px;
+    font-size: 0.8rem;
+    min-height: 44px; /* iOS 推荐的最小触摸目标 */
+  }
+  
+  .info-text {
+    font-size: 0.8rem;
+  }
+}
+
+/* 移动端横屏适配 */
+@media (max-width: 768px) and (orientation: landscape) {
+  .main-content h1 {
+    font-size: 1.8rem;
+    margin-bottom: 0.3rem;
+  }
+  
+  .popup-box {
+    max-height: 85vh !important;
+  }
+}
+
+/* 触摸设备优化 */
+@media (hover: none) and (pointer: coarse) {
+  .popup-btn:hover {
+    transform: scale(1.05) !important; /* 触摸设备减少hover效果 */
+  }
+  
+  .popup-close:hover {
+    transform: scale(1.1) !important;
+  }
+  
+  /* 增加触摸目标大小 */
+  .popup-close {
+    min-width: 35px;
+    min-height: 35px;
+  }
+  
+  .popup-btn {
+    min-height: 44px; /* Apple Human Interface Guidelines 推荐 */
+  }
 }
 </style>