Showing source for: https://www.kongregate.com/en/accounts/katherinetaylor8
Duration: 0.271257s
Server: nginx

<!DOCTYPE html>
<html lang="en" class="scroll-smooth dark">
<head>
  <title>katherinetaylor8&#39;s profile on Kongregate</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="Kongregate is a portal for free online games that features user-created content, chat, badges, and player achievements.">
  <link rel="canonical" href="https://www.kongregate.com/en/accounts/katherinetaylor8">
  
  <!-- Hreflang links for multilingual SEO -->
    <link rel="alternate" hreflang="en" href="https://www.kongregate.com/en/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="es" href="https://www.kongregate.com/es/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="de" href="https://www.kongregate.com/de/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="fr" href="https://www.kongregate.com/fr/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="id" href="https://www.kongregate.com/id/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="it" href="https://www.kongregate.com/it/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="ja" href="https://www.kongregate.com/ja/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="ko" href="https://www.kongregate.com/ko/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="tl" href="https://www.kongregate.com/tl/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="ms" href="https://www.kongregate.com/ms/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="pl" href="https://www.kongregate.com/pl/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="pt" href="https://www.kongregate.com/pt/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="th" href="https://www.kongregate.com/th/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="tr" href="https://www.kongregate.com/tr/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="zh-cn" href="https://www.kongregate.com/zh-cn/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="zh-tw" href="https://www.kongregate.com/zh-tw/accounts/katherinetaylor8" />
    <link rel="alternate" hreflang="zh-hk" href="https://www.kongregate.com/zh-hk/accounts/katherinetaylor8" />
  <link rel="alternate" hreflang="x-default" href="https://www.kongregate.com/en/accounts/katherinetaylor8" />
  
  <!-- Favicon and PWA -->
  <link rel="icon" href="/favicon.ico" sizes="32x32">
  <link rel="icon" href="/icon.svg" type="image/svg+xml">
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
  <link rel="manifest" href="/site.webmanifest">
  <meta name="theme-color" content="#1a1625">
  <!-- Capture PWA install prompt early, before Stimulus loads -->
  <script>
    window.deferredPwaPrompt = null;
    window.addEventListener('beforeinstallprompt', function(e) {
      e.preventDefault();
      window.deferredPwaPrompt = e;
    });
  </script>
  <link rel="preconnect" href="https://www.google.com" crossorigin>
  <link rel="preconnect" href="https://www.gstatic.com" crossorigin>
  <link rel="preconnect" href="https://cdn4.kongcdn.com" crossorigin>
  <meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="j0-qcWOdHuyKe6e1rCUI97HE1xyIlZ4Zx-Qni5oDa1rRX1EuC_kOxlb-VZ1GdOx5b0jhJVubMF9z4XuTBfYiRg" />
  
  <meta name="user-authenticated" content="false">
  <meta name="user-id" content="">
  <meta name="svid" content="">
    <!-- Google Tag Manager -->
  <script>
    // Initialize dataLayer with ui_version and user login status before GTM loads
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      'ui_version': 'preview_ui',
      'is_signed_in': false,
      'likely_bot': true
    });
    
    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '&gtm_auth=PTv0C-TWRC_LC4qezSAJBw&gtm_preview=env-1&gtm_cookies_win=x';f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-589V58Z');

  </script>
  <!-- End Google Tag Manager -->

  <link rel="stylesheet" href="https://drxfab1qw1oer.cloudfront.net/compiled-assets/application.tailwind-51c2b678227be1f2567d145dde1986dc74c7c1222a6272d270c184f06779c15b.css" data-turbo-track="reload" />
  <script src="https://drxfab1qw1oer.cloudfront.net/compiled-assets/application-213cec649d1a91269ada173e218e028305c68d0d3866a3b447a4729b22c2030f.js" data-turbo-track="reload"></script>
  <link rel="stylesheet" href="https://drxfab1qw1oer.cloudfront.net/compiled-assets/preview-d2527a6c8eed311717841bb46eb39f4820a8dabe29699f5fd687dd360e8c35e5.css" data-turbo-track="reload" />
  
  <script>
    // Apply saved theme before render to prevent flash of wrong theme
    (function() {
      var theme = localStorage.getItem('kong_theme');
      if (theme === 'light') {
        document.documentElement.classList.remove('dark');
        document.documentElement.classList.add('light');
      }
    })();
  </script>
  <script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" async="async"></script>
  <script src="https://analytics.ahrefs.com/analytics.js" data-key="b2q7SvwYy/tzbmkr3tb0zQ" async></script>
</head>
<body class="flex flex-col min-h-screen dark preview-layout" 
      style="background-color: hsl(var(--background)); color: hsl(var(--foreground));"
      data-controller="metric-tracker active-user"
      data-metric-tracker-analytics-code-value="GTM-589V58Z"
      data-metric-tracker-max-event-time-value="60000"
      data-active-user-domain-value="kongregate.com"
      data-active-user-single-cdn-domain-value="cdn1.kongcdn.com"
      data-active-user-trusted-domain-value="internal.kongregate.com"
      data-active-user-game-page-value="false"
      data-active-user-user-data-value="{&quot;username&quot;:&quot;Guest&quot;,&quot;id&quot;:0,&quot;chat_username&quot;:&quot;Guest_233827db559d391ba7cdc9fb1184f62c&quot;,&quot;chat_password&quot;:&quot;995062f817492dce9bf57cb06e0a4c95&quot;,&quot;mobile_user_agent&quot;:false,&quot;generated_at&quot;:1792313799000,&quot;version&quot;:1,&quot;country_code&quot;:null,&quot;in_eu_consent_country&quot;:false,&quot;age_of_consent&quot;:13,&quot;gameplays_count&quot;:0,&quot;ratings_count&quot;:0,&quot;level&quot;:null,&quot;last_levelup_at&quot;:null,&quot;first_visit_date&quot;:null,&quot;kong_source&quot;:null,&quot;split_treatments&quot;:{&quot;feature_roll&quot;:{}},&quot;kred_buyer_type&quot;:&quot;non-buyer&quot;,&quot;current_locale&quot;:&quot;en&quot;,&quot;current_locale_is_default&quot;:true,&quot;current_preffered_locale&quot;:&quot;en&quot;,&quot;underage&quot;:null,&quot;hide_rate_this_game_tab&quot;:false,&quot;botd_badge_id&quot;:3326,&quot;botd_name&quot;:&quot;Light Creator&quot;,&quot;botd_description&quot;:&quot;Create 500 Light&quot;,&quot;botd_icon_uri&quot;:&quot;/badge_icons/0000/6651/Ale.png&quot;,&quot;botd_game_uri&quot;:&quot;http://www.kongregate.com/en/games/Ryu82/idling-to-become-god&quot;,&quot;botd_game_name&quot;:&quot;Idling to Rule the Gods&quot;,&quot;botd_reward_points&quot;:5,&quot;user_agent&quot;:{&quot;browser&quot;:&quot;Safari&quot;,&quot;version&quot;:&quot;&quot;,&quot;platform&quot;:&quot;KHTML, like Gecko&quot;}}">
  
<!--   -->
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-589V58Z&gtm_auth=PTv0C-TWRC_LC4qezSAJBw&gtm_preview=env-1&gtm_cookies_win=x"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
<!--   -->
  
  <!-- Admin Links - Only visible to admins/moderators -->
  
  
  <!-- Header - Exact match with React app -->
  <!-- Header component based on Figma design with responsive layout for desktop, tablet, and mobile -->
<header 
  class="fixed top-0 left-0 right-0 z-50 transition-all duration-300 text-white h-[52px] 
  bg-[linear-gradient(to_right,#F04438_0%,#F04438_52px,#6f3d67_120px)] 
  lg:bg-[linear-gradient(to_right,#F04438_0%,#F04438_152px,#6f3d67_320px)]"
  data-controller="previews--navbar"
>
  <div class="w-full flex items-center justify-between h-full pr-2">
    <div class="flex-1 flex items-center justify-between">
      <!-- Logo section with SVG images -->
      <a href="/" class="flex-shrink-0 my-auto" aria-label="Kongregate Home">
        <div class="hidden lg:block pl-2">
          <!-- Full Kongregate logo for desktop/tablet -->
          <img src="https://drxfab1qw1oer.cloudfront.net/compiled-assets/logos/kongregate-logo-36fb64eb85f7b359a067eb8e1d989b10633a2e322d8b052c1cde7c4a01745754.svg" fetchpriority="high" alt="Kongregate" class="h-4 md:h-5 w-auto">
        </div>
        <!-- K icon logo for mobile -->
        <svg xmlns="http://www.w3.org/2000/svg" class="h-[52px] w-auto block lg:hidden" viewBox="0 0 90 90" alt="Kong Icon" part="base">
          <rect width="90" height="90" fill="#F04438"/>
          <path d="M21 20H31V40H51V50H31V70H21V20ZM51 50H57.2918C59.5644 50 61.642 51.284 62.6584 53.3167L66 60H71V70H61L51 50ZM51 40L61 20H71V30H66L62.6584 36.6833C61.642 38.716 59.5644 40 57.2918 40H51Z" fill="white"/>
        </svg>
      </a>

      <!-- Desktop Search Bar (centered, hidden on mobile) -->
      <div class="hidden sm:flex justify-center flex-grow max-w-md mx-4 relative" data-controller="previews--search-bar">
        <form class="flex items-center h-10 w-full bg-[#222222] rounded-full" data-previews--search-bar-target="searchForm" data-action="submit-&gt;previews--search-bar#handleSubmit" data-turbo-frame="_top" action="/search" accept-charset="UTF-8" method="get">
          
          <!-- Search Input -->
          <input placeholder="Search games..." class="flex-1 px-4 py-2 bg-[#262626] !text-white placeholder-gray-400 focus:outline-none transition-colors duration-200 rounded-l-full" data-previews--search-bar-target="searchInput" data-action="input-&gt;previews--search-bar#handleInput keydown-&gt;previews--search-bar#handleKeydown" autocomplete="off" type="text" name="q" id="q" />
          
          <!-- Search Submit Button -->
          <button type="submit" 
                  class="px-3 py-2 bg-[#262626] !text-white hover:text-gray-100 transition-colors duration-200 rounded-r-full"
                  aria-label="Submit search">
            <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
            </svg>
          </button>
</form>        
        <!-- Autocomplete Results Dropdown -->
        <div data-previews--search-bar-target="results"
             class="hidden absolute top-full left-0 right-0 mt-1 bg-gray-800 rounded-lg shadow-xl border border-gray-700 max-h-80 overflow-y-auto z-50"
             style="scrollbar-width: thin; scrollbar-color: #4b5563 #1f2937;">
        </div>
      </div>

      <div class="flex items-center gap-2">
        <!-- PWA Install Button (Android/Chrome - hidden until beforeinstallprompt fires) -->
        <div data-controller="previews--pwa-install" data-previews--pwa-install-enabled-value="true">
          <div class="sm:hidden">
            <div data-previews--pwa-install-target="container" class="hidden">
              <button 
                data-previews--pwa-install-target="button"
                data-action="click->previews--pwa-install#install"
                class="flex items-center gap-1 px-2 py-1 bg-white/20 hover:bg-white/30 rounded-full text-xs font-medium transition-colors"
                aria-label="Install App"
              >
                <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" />
                </svg>
                <span>Install</span>
              </button>
            </div>
          </div>

          <!-- iOS Safari Install Banner (shown for iOS Safari users) -->
          <div data-previews--pwa-install-target="iosContainer" class="hidden fixed top-[52px] left-0 right-0 z-40 sm:hidden">
            <div class="bg-gradient-to-r from-purple-900 to-purple-800 px-4 py-3 shadow-lg">
              <div class="flex items-start gap-3">
                <div class="flex-shrink-0 mt-0.5">
                  <svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" />
                  </svg>
                </div>
                <div class="flex-1 min-w-0">
                  <p class="text-sm font-medium text-white">
                    Install Kongregate
                  </p>
                  <p class="text-xs text-purple-200 mt-1">
                    Tap the Share button
                    <svg class="inline-block w-4 h-4 mx-1 align-text-bottom" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z" />
                    </svg>
                    then &quot;Add to Home Screen&quot;
                  </p>
                </div>
                <button 
                  data-action="click->previews--pwa-install#dismissIosBanner"
                  class="flex-shrink-0 p-1 text-purple-300 hover:text-white transition-colors"
                  aria-label="Dismiss"
                >
                  <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
                  </svg>
                </button>
              </div>
            </div>
          </div>
        </div>

        <!-- Theme Toggle -->
        <div data-controller="previews--theme-toggle" class="flex items-center">
          <button data-action="click->previews--theme-toggle#toggle"
                  class="p-1.5 rounded-full hover:bg-white/10 transition-colors duration-200"
                  aria-label="Toggle light/dark mode">
            <svg data-previews--theme-toggle-target="icon" class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z" />
            </svg>
          </button>
        </div>

        <!-- Auth State using Turbo Frame for dynamic updates -->
        <turbo-frame id="header_auth_state">
    <!-- Not Logged In State -->
    <div class="flex items-center gap-4">
      <!-- Mobile-only Search Icon -->
      <button type="button"
              class="sm:hidden relative px-2 py-1.5 rounded-full cursor-pointer transition-all duration-200
                     hover:scale-[1.03] active:scale-[0.98]"
              onclick="
                // Show mobile modal
                const modal = document.getElementById('mobile-search-modal');
                const input = modal.querySelector('input');
                modal.classList.remove('hidden');
                document.body.style.overflow = 'hidden';
                
                // Multiple focus attempts for better mobile compatibility
                setTimeout(() => {
                  input.focus();
                  if (document.activeElement !== input) {
                    input.focus({ preventScroll: false });
                  }
                }, 50);
                
                setTimeout(() => {
                  if (document.activeElement !== input) {
                    input.focus();
                  }
                }, 200);
              "
              aria-label="Search">
        <svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
        </svg>
      </button>
      
      <!-- Sign In Button -->
      <button 
        class="text-white px-6 py-2 text-md leading-5 font-medium flex items-center cursor-pointer
               bg-transparent border-2 border-white rounded-full
               transition-all duration-200
               hover:bg-white hover:text-[#F04438] hover:scale-[1.03] active:scale-[0.98]"
        data-action="click->previews--navbar#login"
        data-controller="previews--login-button"
        data-previews--login-button-origin-value="navbar"
        id="login-button"
      >
        <span>Sign In</span>
      </button>

      <div class="ml-3">
        <!-- Language selector dropdown -->
<div class="relative " data-controller="previews--dropdown" id="language-dropdown-guest">
  <div class="flex items-center rounded-full cursor-pointer transition-all duration-200
             hover:scale-[1.03] active:scale-[0.98]"
       data-action="click->previews--dropdown#toggle"
       id="language-dropdown-guest-button"
       title="Select Language">
    <span class="text-2xl leading-none">
      ๐Ÿ‡บ๐Ÿ‡ธ
    </span>
  </div>

  <!-- Language dropdown menu -->
  <div class="hidden absolute top-full right-0 mt-1 w-48 rounded-md shadow-lg py-1 z-20"
       style="background-color: hsl(var(--secondary)); color: hsl(var(--secondary-foreground));"
       data-previews--dropdown-target="menu"
       id="language-dropdown-guest-menu">
      <a href="/en/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                font-semibold"
         style="background-color: hsl(var(--secondary-foreground) / 0.1); color: hsl(var(--primary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;hsl(var(--secondary-foreground) / 0.1)&#39;; this.style.color = &#39;hsl(var(--primary-foreground)) !important;&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡บ๐Ÿ‡ธ</span>
        <span>English</span>
      </a>
      <a href="/es/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ช๐Ÿ‡ธ</span>
        <span>Spanish</span>
      </a>
      <a href="/de/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ฉ๐Ÿ‡ช</span>
        <span>German</span>
      </a>
      <a href="/fr/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ซ๐Ÿ‡ท</span>
        <span>French</span>
      </a>
      <a href="/id/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ฎ๐Ÿ‡ฉ</span>
        <span>Indonesian</span>
      </a>
      <a href="/it/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ฎ๐Ÿ‡น</span>
        <span>Italian</span>
      </a>
      <a href="/ja/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ฏ๐Ÿ‡ต</span>
        <span>Japanese</span>
      </a>
      <a href="/tl/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ต๐Ÿ‡ญ</span>
        <span>Filipino</span>
      </a>
      <a href="/ms/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ฒ๐Ÿ‡พ</span>
        <span>Malay</span>
      </a>
      <a href="/pl/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ต๐Ÿ‡ฑ</span>
        <span>Polish</span>
      </a>
      <a href="/pt/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ต๐Ÿ‡น</span>
        <span>Portuguese</span>
      </a>
      <a href="/th/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡น๐Ÿ‡ญ</span>
        <span>Thai</span>
      </a>
      <a href="/tr/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡น๐Ÿ‡ท</span>
        <span>Turkish</span>
      </a>
      <a href="/ko/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ฐ๐Ÿ‡ท</span>
        <span>Korean</span>
      </a>
      <a href="/zh-cn/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡จ๐Ÿ‡ณ</span>
        <span>Chinese (Simplified)</span>
      </a>
      <a href="/zh-tw/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡น๐Ÿ‡ผ</span>
        <span>Chinese (Traditional)</span>
      </a>
      <a href="/zh-hk/accounts/katherinetaylor8?set_locale=true&amp;username=katherinetaylor8" 
         class="w-full text-left px-4 py-2 text-sm flex items-center gap-2 block transition-colors duration-200
                "
         style="color: hsl(var(--secondary-foreground)) !important;"
         onmouseover="this.style.backgroundColor = 'hsl(var(--secondary-foreground) / 0.1)'; this.style.color = 'hsl(var(--primary-foreground)) !important';"
         onmouseout="this.style.backgroundColor = &#39;transparent&#39;; this.style.color = &#39;hsl(var(--secondary-foreground)) !important&#39;;"
         data-action="click->previews--dropdown#hide"
         onclick="window.location.href = this.href; return false;">
        <span class="text-lg leading-none">๐Ÿ‡ญ๐Ÿ‡ฐ</span>
        <span>Chinese (Hong Kong)</span>
      </a>
  </div>
</div>

      </div>
    </div>

  <!-- Mobile Search Modal (Full Screen) -->
  <div id="mobile-search-modal" class="hidden fixed inset-0 z-50 bg-black bg-opacity-90 backdrop-blur-sm">
    <div class="flex flex-col h-full" data-controller="previews--search-bar">
      <!-- Header with close button -->
      <div class="flex items-center justify-between p-4 border-b border-gray-700">
        <h2 class="text-lg font-medium text-white">
          Search Games
        </h2>
        <button type="button" 
                class="p-2 text-gray-300 hover:text-white transition-colors duration-200 rounded-full hover:bg-gray-800"
                onclick="
                  const modal = document.getElementById('mobile-search-modal');
                  modal.classList.add('hidden');
                  document.body.style.overflow = '';
                ">
          <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
          </svg>
        </button>
      </div>

      <!-- Search Form -->
      <div class="p-4">
        <form class="w-full" data-previews--search-bar-target="searchForm" data-turbo-frame="_top" action="/search" accept-charset="UTF-8" method="get">
          <div class="relative">
            <input placeholder="Search games..." class="w-full px-6 py-4 text-lg bg-gray-800 text-white placeholder-gray-400 rounded-full border border-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all duration-200" autocomplete="off" data-previews--search-bar-target="searchInput" onkeydown="
                    if (event.key === &#39;Escape&#39;) {
                      const modal = document.getElementById(&#39;mobile-search-modal&#39;);
                      modal.classList.add(&#39;hidden&#39;);
                      document.body.style.overflow = &#39;&#39;;
                    }
                  " type="text" name="q" id="q" />
            
            <!-- Search Button -->
            <button type="submit" 
                    class="absolute right-2 top-1/2 -translate-y-1/2 p-3 bg-blue-600 hover:bg-blue-700 text-white rounded-full transition-colors duration-200">
              <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
              </svg>
            </button>
          </div>
</form>      </div>

      <!-- Autocomplete Results (inline, not dropdown) -->
      <div data-previews--search-bar-target="results"
           class="hidden flex-1 overflow-y-auto px-4"
           style="scrollbar-width: thin; scrollbar-color: #4b5563 #1f2937;">
      </div>
      
      <!-- Search hint (shown when no results) -->
      <div id="mobile-search-hint" class="flex-1 flex items-start justify-center pt-8 text-gray-400">
        <p class="text-sm">
          Search for your favorite games...
        </p>
      </div>

      <!-- Bottom padding for safe area -->
      <div class="h-8"></div>
    </div>
  </div>
</turbo-frame>
      </div>
    </div>
  </div>
</header>

  
  <!-- Spacer to prevent content from being hidden under the fixed header -->
  <div class="h-[52px]"></div>


  <!-- Flash Messages -->
  

  <!-- Main Content - Full width to allow pages to control their own max-width -->
  <!-- Add left padding to account for sidebar: 64px on lg (collapsed), 192px on 1920px+ (full width) -->
  <main class="flex-1 w-full  pt-4 pb-2" style="min-height: calc(100vh - 16rem);">
    <div class="animate-fade-in">
      
<!-- Page Content Wrapper -->
<div class="w-full lg:max-w-5xl lg:mx-auto overflow-x-hidden account-page-content">
  <!--============ #feature ============-->
  <div id="feature">
      <!-- To be restored some day, if desired. Currently not functional due to sweeping UI updates.
            -->

      <!-- avatar change error reporting -->


      <div id="main" class="line">
        <!-- Profile Header Start -->
        <div id="profile_masthead" class="bg-gray-800 rounded-xl border border-gray-700 p-6 mb-6 overflow-visible">
        <div class="flex flex-col lg:flex-row gap-6">
          <!-- User's Avatar -->
          <div class="flex-shrink-0 w-full lg:w-auto">
            <!-- errors are reported above masthead -->
<div id="user_avatar" class="large_avatar relative" style="max-width: 300px;">
  <img class="user_avatar avatar_hideable_element w-32 h-32 rounded-lg border-2 border-gray-600" title="katherinetaylor8" alt="avatar for katherinetaylor8" src="https://cdn4.kongcdn.com/assets/avatars/defaults/ant.png?i10c=img.resize(width:140)" />
</div>

<script>
//<![CDATA[
  document.addEventListener('DOMContentLoaded', function() {
    var avatarContainer = document.getElementById('user_avatar');
    if (avatarContainer) {
      var avatarImage = avatarContainer.querySelector('img');
      if (avatarImage) {
        avatarImage.addEventListener('load', function() {
          var imageSize = avatarImage.getBoundingClientRect();
          if (imageSize) {
            var width = imageSize.width,
                height = imageSize.height;
            if (width < 140 && height < 140) {
              avatarImage.classList.add('small_avatar');
            } else if (width > height) {
              avatarImage.style.width = '140px';
              avatarImage.style.marginRight = 'auto';
              avatarImage.style.marginLeft = 'auto';
            } else {
              avatarImage.style.height = '140px';
              avatarImage.style.marginRight = 'auto';
              avatarImage.style.marginLeft = 'auto';
            }
          }
        });
      }
    }
  });

//]]>
</script>
          </div>
          
          <!-- Profile Content -->
          <div class="flex-1 min-w-0 w-full lg:w-auto">
            <!-- Profile Heading -->
              <div class="flex flex-col lg:flex-row gap-6">
                <!-- Main Profile Info -->
                <div class="flex-1 w-full">
                  <div id="profile_heading">
                    <div id="profile_hgroup" class="mb-4">
                      <div class="flex items-center gap-3 mb-2">
                        <h1 class="text-2xl font-bold text-white break-words"><span class="spritesite levelbug level_1"><span class="">katherinetaylor8</span></span></h1>
                        <a href="#" onclick="lightbox.prototype.initializePremiumMembershipPurchase(&#39;username_icon&#39;, &#39;icon_tab&#39;); return false;"><span id="premium_icon"></span></a>
                      </div>


                        <div class="bg-gray-900 rounded-lg p-4">
                          <div class="flex justify-start text-sm mb-2">
                            <span class="text-gray-400">Points needed for next level:</span>
                            <span class="text-white font-semibold pl-1">20</span>
                          </div>
                          
                          <div class="flex items-center gap-3">
                            <div class="flex-1 bg-gray-700 rounded-full h-2">
                              <div class="bg-blue-500 rounded-full h-2 transition-all duration-300" 
                                   style="width:60.0%;"></div>
                            </div>
                            <div class="flex items-center gap-1 text-sm text-gray-300">
                              <span>Level 2</span>
                            </div>
                          </div>
                        </div>

                      <!-- Profile Actions -->
                      <div id="profile_account_actions" class="border-t border-gray-700 pt-4 mt-4">
                        <div class="flex flex-wrap gap-3">
                          
                            
<script>
  // Friend toggle with manual AJAX submission
  document.addEventListener('DOMContentLoaded', function() {
    document.addEventListener('click', function(event) {
      if (event.target.matches('.friend-toggle-form button[type="submit"]')) {
        event.preventDefault();
        
        const form = event.target.closest('form');
        const button = event.target;
        
        button.innerHTML = 'Loading...';
        button.disabled = true;
        
        const formData = new FormData(form);
        
        fetch(form.action, {
          method: 'POST',
          body: formData,
          headers: {
            'X-Requested-With': 'XMLHttpRequest'
          }
        })
        .then(response => {
          if (response.ok || response.status === 204) {
            window.location.reload();
          } else {
            throw new Error(`HTTP ${response.status}: ${response.statusText}`);
          }
        })
        .catch(error => {
          button.disabled = false;
          button.innerHTML = button.innerHTML.includes('Unfriend') ? 'Unfriend' : 'Friend';
          alert('There was an error processing your request. Please try again.');
        });
      }
    });
  });
</script>

<div id="toggle_users-47575612_as_friend_1">
    <form style="display: inline;" class="friend-toggle-form" action="/en/accounts/Guest/friends/katherinetaylor8?friend_from=new_profile&amp;masthead=true" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="j0-qcWOdHuyKe6e1rCUI97HE1xyIlZ4Zx-Qni5oDa1rRX1EuC_kOxlb-VZ1GdOx5b0jhJVubMF9z4XuTBfYiRg" />
      <button name="button" type="submit" class="inline-flex items-center gap-2 bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-lg text-sm font-medium transition-colors duration-200" style="color: white !important; border: none; cursor: pointer;">Friend</button>
</form></div>

                            <div>
                                <a class="inline-flex items-center gap-2 bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg text-sm font-medium transition-colors duration-200" style="color: white !important;" title="Send katherinetaylor8 a private message" href="#" onclick="active_user.activateInlineLogin({}, true); return false;">Private Message</a>
                            </div>


                        </div>
                        <!-- Container for abuse report/mod thanks forms (populated via AJAX) -->
                        <div id="new_abuse_report" class="mt-4"></div>
                        <style>
                          /* Style the injected abuse report form to match dark theme */
                          #new_abuse_report .cntrBasic,
                          #new_abuse_report #abuse_form_internal {
                            background-color: rgb(31 41 55); /* bg-gray-800 */
                            border-radius: 0.5rem;
                            padding: 1rem;
                          }
                          #new_abuse_report label {
                            color: rgb(209 213 219); /* text-gray-300 */
                            font-size: 0.875rem;
                            display: block;
                            margin-bottom: 0.5rem;
                          }
                          #new_abuse_report textarea {
                            width: 100%;
                            background-color: rgb(17 24 39); /* bg-gray-900 */
                            border: 1px solid rgb(75 85 99); /* border-gray-600 */
                            border-radius: 0.5rem;
                            padding: 0.75rem;
                            color: white;
                            font-size: 0.875rem;
                            min-height: 100px;
                          }
                          #new_abuse_report textarea:focus {
                            outline: none;
                            border-color: rgb(59 130 246); /* border-blue-500 */
                            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.3);
                          }
                          #new_abuse_report input[type="submit"] {
                            background-color: rgb(37 99 235); /* bg-blue-600 */
                            color: white;
                            padding: 0.5rem 1rem;
                            border-radius: 0.5rem;
                            font-size: 0.875rem;
                            font-weight: 500;
                            border: none;
                            cursor: pointer;
                            margin-right: 0.5rem;
                          }
                          #new_abuse_report input[type="submit"]:hover {
                            background-color: rgb(29 78 216); /* bg-blue-700 */
                          }
                          #new_abuse_report a {
                            color: rgb(96 165 250); /* text-blue-400 */
                            font-size: 0.875rem;
                          }
                          #new_abuse_report a:hover {
                            color: rgb(147 197 253); /* text-blue-300 */
                          }
                          #new_abuse_report .report_submission {
                            margin-top: 1rem;
                          }
                          #new_abuse_report dl,
                          #new_abuse_report dd {
                            margin: 0;
                            padding: 0;
                          }
                          #new_abuse_report .error_block {
                            color: rgb(248 113 113); /* text-red-400 */
                            font-size: 0.875rem;
                          }
                        </style>
                      </div>

                      <!-- User Vitals -->
                      <div class="mt-6 space-y-2 max-w-sm">
                          <div class="flex justify-between py-1">
                            <span class="text-gray-400 text-sm font-medium">Location</span>
                            <span class="text-white text-sm" title="New York City,NY United States">New York City,NY United States</span>
                          </div>
                          <div class="flex justify-between py-1">
                            <span class="text-gray-400 text-sm font-medium">Member Since</span>
                            <span class="text-white text-sm" title="">May. 30, 2025</span>
                          </div>
                          <div class="flex justify-between py-1">
                            <span class="text-gray-400 text-sm font-medium">Website</span>
                            <span class="text-white text-sm" title="https://install-turbo-tax.com/">http://https://install-turbo-tax.com/</span>
                          </div>
                      </div>

                      <!-- User Biography -->
                          <div class="mt-6 p-4 bg-gray-900 rounded-lg">
                            <div id="user_about" class="text-gray-300 text-sm leading-relaxed mb-3">
                              <p>Hi! Iโ€™m Katherine Taylor, a tech enthusiast passionate about simplifying software installations. I specialize in guiding users through digital setups like Installturbotax com, helping them navigate the process with ease. Whether youโ€™re new to taxes or upgrading software, Iโ€™m here to ensure a smooth and stress-free installation experience.</p>
                            </div>
                            <div id="profile_bio_links" class="flex gap-4">
                                                          </div>
                          </div>

                                            </div>
                  </div>
                </div>

                <!-- Stats Sidebar -->
                <div class="w-full max-w-sm mx-auto lg:max-w-none lg:mx-0 lg:w-64 flex-shrink-0">
                  <!-- Level and Points Stats -->
                  <div class="bg-gray-900 rounded-lg p-4 mb-4">
                    <div class="text-center">
                      <div class="text-3xl font-bold text-blue-500 mb-1">1</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Level</div>
                    </div>
                  </div>
                  
                  <a class="block bg-gray-900 rounded-lg p-4 mb-4 hover:ring-2 hover:ring-blue-500 transition-all" href="/en/accounts/katherinetaylor8/points">
                    <div class="text-center">
                      <div class="text-xl font-bold text-white mb-1">30</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Points</div>
                    </div>
</a>
                  <!-- User Metrics Grid -->
                  <div class="grid grid-cols-2 gap-3">
                    <a class="bg-gray-900 rounded-lg p-3 text-center hover:ring-2 hover:ring-blue-500 transition-all" href="/en/accounts/katherinetaylor8/badges">
                      <div class="text-lg font-bold text-white">0</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Badges</div>
</a>                    <a class="bg-gray-900 rounded-lg p-3 text-center hover:ring-2 hover:ring-blue-500 transition-all" href="/en/accounts/katherinetaylor8/comments">
                      <div class="text-lg font-bold text-white">0</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Comments</div>
</a>                    <a class="bg-gray-900 rounded-lg p-3 text-center hover:ring-2 hover:ring-blue-500 transition-all" href="/en/accounts/katherinetaylor8/favorites">
                      <div class="text-lg font-bold text-white">0</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Favorites</div>
</a>                    <a class="bg-gray-900 rounded-lg p-3 text-center hover:ring-2 hover:ring-blue-500 transition-all" href="/en/accounts/katherinetaylor8/fans">
                      <div class="text-lg font-bold text-white">0</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Fans</div>
</a>                    <a class="bg-gray-900 rounded-lg p-3 text-center hover:ring-2 hover:ring-blue-500 transition-all" href="/en/accounts/katherinetaylor8/friends">
                      <div class="text-lg font-bold text-white">0</div>
                      <div class="text-xs text-gray-400 uppercase tracking-wide">Friends</div>
</a>                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- Profile Header End -->
      <!-- Admin Section Start -->
      
      <!-- Admin Section End -->

      <!-- Games By User -->
      
            <!-- OAuth Apps By User -->
      
            <!-- Activity Feed and Sidebar -->
      <div class="flex flex-col lg:flex-row gap-6 mt-6">
        <!-- Activity Feed Start -->
        <div id="profile_activity_container" class="w-full lg:flex-1 lg:min-w-0">
          <div id="profile_activity_feed" class="bg-gray-800 rounded-xl border border-gray-700 p-6">
            <h2 class="text-lg font-semibold text-white mb-4">Activity Feed</h2>
              <div class="leave_message">
    <form id="shout-form" class="w-full">
      <div id="profile_comment_form" class="flex gap-3 guest_variant">
        
        <div class="flex-1 min-w-0">
          <div class="space-y-3">
            <textarea name="shout[content]" id="shout_content"
                rows="2" 
                class="w-full bg-gray-700 border border-gray-600 rounded-lg p-3 text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none" 
                placeholder="Start typing to leave katherinetaylor8 a shout..."></textarea>
            
            <div class="error_message text-red-400 text-sm" id="shout_error_message" style="display:none;"></div>
            
            <div class="flex justify-end">
              <button type="submit" id="shout_box_submission_button"
                      class="bg-blue-600 hover:bg-blue-700 disabled:bg-gray-600 text-white px-4 py-2 rounded-lg font-medium text-sm transition-colors duration-200 registered_only">
                Shout
              </button>
            </div>
          </div>
        </div>
      </div>
    </form>
  </div>
  
  <script>
//<![CDATA[
      // Execute immediately if active_user is already available
      if (typeof active_user !== 'undefined' && active_user.addCapturedSelector) {
        active_user.addCapturedSelector('.registered_only', true);
      } else {
        // Wait for DOM content loaded in case active_user is being loaded asynchronously
        document.addEventListener('DOMContentLoaded', function() {
          if (typeof active_user !== 'undefined' && active_user.addCapturedSelector) {
            active_user.addCapturedSelector('.registered_only', true);
          }
        });
      }

//]]>
</script>  
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      const form = document.getElementById('shout-form');
      const textarea = document.getElementById('shout_content');
      const submitButton = document.getElementById('shout_box_submission_button');
      const errorDiv = document.getElementById('shout_error_message');
      
      if (!form || !textarea || !submitButton) return;
      
      form.addEventListener('submit', function(e) {
        e.preventDefault();
        
        const content = textarea.value.trim();
        if (!content) {
          showError('Please enter a message');
          return;
        }
        
        // Disable form during submission
        submitButton.disabled = true;
        submitButton.textContent = 'Posting...';
        hideError();
        
        // Submit via fetch
        fetch('/en/accounts/katherinetaylor8/messages.json', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            'X-Requested-With': 'XMLHttpRequest',
            'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content
          },
          body: JSON.stringify({
            shout: {
              content: content
            }
          })
        })
        .then(response => response.json())
        .then(data => {
          if (data.error) {
            showError(data.error);
          } else {
            // Success - clear form and reload feed
            textarea.value = '';
            hideError();
            // Reload the page to show new shout (simple approach)
            window.location.reload();
          }
        })
        .catch(error => {
          console.error('Shout submission error:', error);
          showError('Failed to post shout. Please try again.');
        })
        .finally(() => {
          // Re-enable form
          submitButton.disabled = false;
          submitButton.textContent = 'Shout';
        });
      });
      
      function showError(message) {
        errorDiv.textContent = message;
        errorDiv.style.display = 'block';
      }
      
      function hideError() {
        errorDiv.style.display = 'none';
      }
    });
  </script>


            <script>
//<![CDATA[
      if (typeof FeedHandler !== 'undefined') {
        feedHandler =
          new FeedHandler(
            "self",
            'feed_items_container',
            15,
            '/en/accounts/katherinetaylor8/more_feed_items',
            '/en/accounts/katherinetaylor8/destroy_feed_items'
          );
      } else {
        console.warn('FeedHandler class not loaded - feed functionality may not work');
      }

//]]>
</script>
<ul class="mt-4 clearfix" id="feed_items_container">
    <p id="empty_activit_feed" class="regtextLrg phl"><strong>katherinetaylor8 has not published any activity yet.</strong>Would you like to <a href="https://www.kongregate.com/en/accounts/katherinetaylor8/messages?focus=true">post a shout</a> to welcome them to Kongregate?</p>

</ul>
<script>
//<![CDATA[
      // Execute immediately if active_user is already available
      if (typeof active_user !== 'undefined' && active_user.addCapturedSelector) {
        active_user.addCapturedSelector('.registered_only', true);
      } else {
        // Wait for DOM content loaded in case active_user is being loaded asynchronously
        document.addEventListener('DOMContentLoaded', function() {
          if (typeof active_user !== 'undefined' && active_user.addCapturedSelector) {
            active_user.addCapturedSelector('.registered_only', true);
          }
        });
      }

//]]>
</script><script>
//<![CDATA[
setTimeout(function() { if (typeof feedHandler !== 'undefined') { feedHandler.requestNextPageIfMoreItemsNeeded(); } }, 0);
//]]>
</script>
            <div class="mt-4">
              <a href="/accounts/katherinetaylor8/messages" class="text-blue-400 hover:text-blue-300 text-sm">See all shouts ยป</a>
            </div>
          </div>
        </div>
        <!-- Activity Feed End -->
        
        <!-- Profile Aside Start -->
        <div id="profile_aside" class="w-full flex-shrink-0" style="width: 400px !important; min-width: 400px !important;">
          <div class="space-y-4">

          <!-- Stickers Pod -->
          

          <!-- Awards Pod -->
          

          
          <!-- Connections Pod -->
            <div class="bg-gray-800 rounded-lg border border-gray-700 p-4 min-w-0">
              <h3 class="text-md font-semibold text-white mb-4">Friends</h3>
                <div class="text-center py-6">
  <div class="text-gray-400 text-sm mb-4">
    ๐Ÿ‘ค katherinetaylor8 has no fans. Be their first!
  </div>
</div>

            </div>
          <!-- Badges Pods -->
            
          <!-- Favorite Games Pod -->
          
        </div>
        </div>
        <!-- Profile Aside End -->
      </div>
  </div>

  <!-- Client-side Flash Messages -->
  <script>
    // Client-side flash message system
    function showFlashMessage(message, type = 'error') {
      // Remove any existing client flash messages
      clearClientFlashMessages();
      
      // Create the flash message element
      const flashContainer = document.getElementById('feature');
      const flashElement = document.createElement('div');
      
      let bgColor, borderColor, textColor;
      switch(type) {
        case 'notice':
        case 'success':
          bgColor = 'bg-green-900/50';
          borderColor = 'border-green-700';
          textColor = 'text-green-200';
          break;
        case 'error':
          bgColor = 'bg-red-900/50';
          borderColor = 'border-red-700';
          textColor = 'text-red-200';
          break;
        case 'message':
        case 'info':
          bgColor = 'bg-blue-900/50';
          borderColor = 'border-blue-700';
          textColor = 'text-blue-200';
          break;
        default:
          bgColor = 'bg-gray-900/50';
          borderColor = 'border-gray-700';
          textColor = 'text-gray-200';
      }
      
      flashElement.className = `${bgColor} border ${borderColor} rounded-lg p-3 mb-4 client-flash-message`;
      flashElement.innerHTML = `<div class="${textColor} text-sm">${message}</div>`;
      
      // Insert after any existing server flash messages
      const existingFlashes = flashContainer.querySelectorAll('.bg-green-900\\/50, .bg-red-900\\/50, .bg-blue-900\\/50');
      const insertAfter = existingFlashes.length > 0 ? existingFlashes[existingFlashes.length - 1] : null;
      
      if (insertAfter) {
        insertAfter.insertAdjacentElement('afterend', flashElement);
      } else {
        // Insert at the beginning of the feature section
        const firstChild = flashContainer.firstElementChild;
        if (firstChild) {
          flashContainer.insertBefore(flashElement, firstChild);
        } else {
          flashContainer.appendChild(flashElement);
        }
      }
      
      // Auto-remove after 10 seconds
      setTimeout(() => {
        if (flashElement.parentNode) {
          flashElement.remove();
        }
      }, 10000);
    }
    
    function clearClientFlashMessages() {
      document.querySelectorAll('.client-flash-message').forEach(el => el.remove());
    }
  </script>

  <!-- Tools Dropdown JavaScript -->
  <script>
    function toggleToolsDropdown() {
      const dropdown = document.getElementById('profile_tools_dropdown');
      const isVisible = dropdown.style.display !== 'none';
      dropdown.style.display = isVisible ? 'none' : 'block';
    }

    function connectFacebook(link) {
      link.innerHTML = '<span class="text-gray-400">Loading...</span>';
      if (typeof FacebookAuthenticator !== 'undefined') {
        new FacebookAuthenticator();
      } else {
        // Fallback if FacebookAuthenticator is not available
        setTimeout(() => {
          link.innerHTML = 'Connect with Facebook';
        }, 2000);
      }
    }

    // Close dropdown when clicking outside
    document.addEventListener('click', function(event) {
      const container = document.getElementById('profile_tools_container');
      const dropdown = document.getElementById('profile_tools_dropdown');
      
      if (container && !container.contains(event.target)) {
        dropdown.style.display = 'none';
      }
    });

    // AJAX functions for non-owner actions
    // The server returns JavaScript like: $("new_abuse_report").update("...html...")
    // We parse out the HTML and insert it using vanilla JS instead of Prototype.js
    function extractHtmlFromPrototypeJs(js) {
      // Match pattern: $("new_abuse_report").update("...escaped html...")
      const match = js.match(/\$\("new_abuse_report"\)\.update\("(.*)"\);?$/s);
      if (match && match[1]) {
        // Unescape the HTML content
        return match[1]
          .replace(/\\u003c/g, '<')
          .replace(/\\u003e/g, '>')
          .replace(/\\u0026/g, '&')
          .replace(/\\u0027/g, "'")
          .replace(/\\"/g, '"')
          .replace(/\\n/g, '\n')
          .replace(/\\t/g, '\t');
      }
      return null;
    }

    // Override the form's onsubmit to use fetch instead of Prototype.js Ajax.Request
    function setupAbuseReportFormSubmission() {
      const container = document.getElementById('new_abuse_report');
      const form = container.querySelector('form');
      if (!form) return;

      // Remove the inline onsubmit handler
      form.removeAttribute('onsubmit');
      
      form.addEventListener('submit', function(e) {
        e.preventDefault();
        
        const formData = new FormData(form);
        const submitBtn = form.querySelector('input[type="submit"]');
        if (submitBtn) {
          submitBtn.disabled = true;
          submitBtn.value = 'Submitting...';
        }

        fetch(form.action, {
          method: 'POST',
          headers: {
            'X-Requested-With': 'XMLHttpRequest',
            'Accept': 'text/javascript'
          },
          body: formData
        }).then(response => {
          if (!response.ok) {
            throw new Error('Network response was not ok: ' + response.status);
          }
          return response.text();
        }).then(js => {
          // Parse the JS response and extract HTML
          const html = extractHtmlFromPrototypeJs(js);
          if (html) {
            container.innerHTML = html;
            // If the response contains a form (re-rendered with errors), re-attach the submit handler
            if (container.querySelector('form')) {
              setupAbuseReportFormSubmission();
            }
          } else {
            // If we can't parse it, show a success message
            container.innerHTML = '<div class="p-4 bg-green-900/50 border border-green-700 rounded-lg text-green-200">Your report has been submitted. Thank you!</div>';
          }
        }).catch((error) => {
          console.error('Error submitting form:', error);
          container.innerHTML = '<div class="p-4 bg-red-900/50 border border-red-700 rounded-lg text-red-200">Failed to submit report: ' + error.message + '</div>';
        });
      });
    }

    function loadAbuseReport() {
      fetch('/en/accounts/katherinetaylor8/abuse_reports/new', {
        method: 'GET',
        headers: {
          'X-Requested-With': 'XMLHttpRequest',
          'Accept': 'text/javascript'
        }
      }).then(response => {
        if (!response.ok) {
          throw new Error('Network response was not ok: ' + response.status);
        }
        return response.text();
      })
      .then(js => {
        const html = extractHtmlFromPrototypeJs(js);
        if (html) {
          document.getElementById('new_abuse_report').innerHTML = html;
          // Override the form submission to use fetch
          setupAbuseReportFormSubmission();
        } else {
          console.error('Could not parse JS response:', js);
          throw new Error('Could not parse response');
        }
        document.getElementById('profile_tool_abuse_report_spinner').style.display = 'none';
      }).catch((error) => {
        console.error('Error loading abuse report:', error);
        document.getElementById('profile_tool_abuse_report_spinner').style.display = 'none';
        document.getElementById('profile_tool_abuse_report_link').style.display = 'block';
        alert('Failed to load abuse report form: ' + error.message);
      });
    }

    function loadModThanks() {
      fetch('/en/accounts/katherinetaylor8/abuse_reports/new?type=ModeratorThanks', {
        method: 'GET',
        headers: {
          'X-Requested-With': 'XMLHttpRequest',
          'Accept': 'text/javascript'
        }
      }).then(response => {
        if (!response.ok) {
          throw new Error('Network response was not ok: ' + response.status);
        }
        return response.text();
      })
      .then(js => {
        const html = extractHtmlFromPrototypeJs(js);
        if (html) {
          document.getElementById('new_abuse_report').innerHTML = html;
          // Override the form submission to use fetch
          setupAbuseReportFormSubmission();
        } else {
          console.error('Could not parse JS response:', js);
          throw new Error('Could not parse response');
        }
        document.getElementById('profile_mod_thanks_report_spinner').style.display = 'none';
      }).catch((error) => {
        console.error('Error loading mod thanks:', error);
        document.getElementById('profile_mod_thanks_report_spinner').style.display = 'none';
        document.getElementById('profile_mod_thanks_report_link').style.display = 'block';
        alert('Failed to load moderator thanks form: ' + error.message);
      });
    }

    function spamAccount() {
      if (confirm('This will permaban the account and mark all comments and forum posts as spam. Are you sure?')) {
        fetch('/en/accounts/katherinetaylor8/mark_as_spam', {
          method: 'POST',
          headers: {
            'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content,
            'Accept': 'text/html'
          }
        }).then(() => {
          window.location.reload();
        }).catch((error) => {
          console.error('Error:', error);
          alert('Failed to spam account');
        });
      }
    }

    function becomeUser() {
      if (confirm('Become katherinetaylor8?')) {
        fetch('/en/accounts/katherinetaylor8/become', {
          method: 'POST',
          headers: {
            'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content,
            'Accept': 'text/html'
          }
        }).then(() => {
          window.location.reload();
        }).catch((error) => {
          console.error('Error:', error);
          alert('Failed to become user');
        });
      }
    }

    // Biography editing functions
    function showEditAbout() {
      document.getElementById('about_form').style.display = 'block';
      const cancelButton = document.getElementById('cancel_about_edit');
      if (cancelButton) cancelButton.style.display = 'block';
      document.getElementById('user_about').style.display = 'none';
      document.getElementById('profile_bio_links').style.display = 'none';
    }

    function cancelEditAbout() {
      document.getElementById('about_form').style.display = 'none';
      document.getElementById('user_about').style.display = 'block';
      document.getElementById('profile_bio_links').style.display = 'block';
    }

    // Full bio functions removed as 'More About Me' link was removed
  </script>
  <div id="profile_full_user_bio_container" style="display:none;">
    <div id="profile_full_user_bio">
      <a href="#" onclick="hideFullBio(); return false;" id="full_profile_close">close</a>
      <ul class="profile_user_full_vitals">
          <li class="mbs">
            <h3 class="h6 h6_alt">Location</h3>
            <span>New York City,NY United States</span>
          </li>
        <li class="mbs">
          <h3 class="h6 h6_alt">Member Since</h3>
          <span>May. 30, 2025</span>
        </li>
          <li class="mbs">
            <h3 class="h6 h6_alt">Website</h3>
            <span>http://https://install-turbo-tax.com/</span>
          </li>
      </ul>
      <div class="profile_full_about_user ptl user_text_reset">
        <p>Hi! Iโ€™m Katherine Taylor, a tech enthusiast passionate about simplifying software installations. I specialize in guiding users through digital setups like Installturbotax com, helping them navigate the process with ease. Whether youโ€™re new to taxes or upgrading software, Iโ€™m here to ensure a smooth and stress-free installation experience.</p>
      </div>
    </div>
    <div id="profile_full_overlay"></div>
  </div>
</div>
<!-- End Page Content Wrapper -->



    </div>
  </main>
  
  <!-- Footer -->
  <footer class="border-t border-gray-700/20 mt-4 " style="background-color: hsl(var(--secondary));">
    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10">
      <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
        <div>
          <!-- Logo -->
          <div class="mb-6">
            <svg xmlns="http://www.w3.org/2000/svg" width="32px" height="32px" viewBox="0 0 90 90" fill="none" alt="Kong Icon">
              <path fill-rule="evenodd" clip-rule="evenodd" d="M10 0C4.47715 0 0 4.47715 0 10V80C0 85.5229 4.47715 90 10 90H80C85.5229 90 90 85.5229 90 80V10C90 4.47715 85.5229 0 80 0H10ZM21 20H31V40H51V50H31V70H21V20ZM51 50H57.2918C59.5644 50 61.642 51.284 62.6584 53.3167L66 60H71V70H61L51 50ZM51 40L61 20H71V30H66L62.6584 36.6833C61.642 38.716 59.5644 40 57.2918 40H51Z" fill="#FFFFFF"></path>
            </svg>
          </div>
          <p class="text-muted-foreground mb-6 max-w-md">Kongregate is a portal for free online games featuring user-created content, badges, and player achievements.</p>
          
          <!-- Social icons -->
          <div class="flex space-x-4">
            <a href="https://www.tiktok.com/@itskongregate" class="text-muted-foreground red-link" aria-label="Tiktok" title="Tiktok" target="_blank" rel="noopener noreferrer">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-.88-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z"/></svg>
</a>
            <a href="http://www.twitter.com/kongregate" class="text-muted-foreground red-link" aria-label="Twitter" title="Twitter" target="_blank" rel="noopener noreferrer">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
            <a href="https://www.linkedin.com/company/kongregate" class="text-muted-foreground red-link" aria-label="Linkedin" title="Linkedin" target="_blank" rel="noopener noreferrer">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
</a>
            <a href="https://www.youtube.com/@kongregateofficial" class="text-muted-foreground red-link" aria-label="YouTube" title="YouTube" target="_blank" rel="noopener noreferrer">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
            <a href="https://discord.com/invite/kongregate" class="text-muted-foreground red-link" aria-label="Discord" title="Discord" target="_blank" rel="noopener noreferrer">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg>
</a>
          </div>
        </div>
        
        <!-- Resources Links -->
        <div class="text-right">
          <h3 class="text-white font-semibold mb-4">Resources</h3>
          <ul class="space-y-2">
              <li>
                <a href="/developer/apply" class="text-muted-foreground red-link">
                  Become a Developer
                </a>
              </li>
            <li>
              <a href="https://kongregatedevelopers.zendesk.com/hc/en-us" class="text-muted-foreground red-link" target="_blank" rel="noopener noreferrer">
                Developers
              </a>
            </li>
            <li>
              <a href="https://kongregatesupport.zendesk.com/hc/en-us/categories/26688201255053-Players" class="text-muted-foreground red-link" target="_blank" rel="noopener noreferrer">
                Players
              </a>
            </li>
            <li>
              <a href="https://kongregatesupport.zendesk.com/hc/en-us/requests/new" class="text-muted-foreground red-link" target="_blank" rel="noopener noreferrer">
                Support
              </a>
            </li>
            <li>
              <a href="/terms-of-service" class="text-muted-foreground red-link" target="_blank" rel="noopener noreferrer">
                Terms of Service
              </a>
            </li>
            <li>
              <a href="/privacy" class="text-muted-foreground red-link" target="_blank" rel="noopener noreferrer">
                Privacy Policy
              </a>
            </li>
            <li>
              <a href="/en/pages/conduct" class="text-muted-foreground red-link" target="_blank" rel="noopener noreferrer">
                Code of Conduct
              </a>
            </li>
          </ul>
        </div>
      </div>
      
      <!-- Copyright footer section - positioned to align with bottom of resources -->
      <div class="flex justify-between items-end">
        <div class="text-muted-foreground">
          <p>ยฉ 2026 Kongregate. All rights reserved.</p>
        </div>
      </div>
    </div>
  </footer>
  
  <!-- Auth Modal Component -->
  <div id="auth-modal-wrapper" class="auth-modal-component relative" data-controller="previews--auth-modal" data-previews--auth-modal-target="modal" data-previews--auth-modal-default-tab-value="login" data-previews--auth-modal-open-value="false">
  <!-- Auth Modal Implementation -->
  <div 
    id="auth-modal"
    class="fixed inset-0 z-50 overflow-y-auto hidden"
    aria-labelledby="modal-title" 
    role="dialog" 
    aria-modal="true"
    data-previews--auth-modal-target="modalDialog"
  >
    <div class="flex min-h-screen items-center justify-center p-4 text-center sm:p-0">
      <!-- Background overlay -->
      <div 
        id="modal-backdrop"
        class="fixed inset-0 bg-black bg-opacity-75 transition-opacity"
        data-action="click->previews--auth-modal#close"
      ></div>

      <!-- Modal dialog -->
      <div 
        class="relative transform overflow-hidden rounded-lg bg-gray-900 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-lg"
      >
      <!-- Close button -->
      <button
        type="button"
        class="absolute top-3 right-3 z-10 text-gray-400 hover:text-white transition-colors focus:outline-none"
        data-action="click->previews--auth-modal#close"
        aria-label="Close"
      >
        <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
        </svg>
      </button>
      <div class="p-4 sm:p-6 text-white">
        <!-- Header -->
        <div class="space-y-3 mb-6">
          <h2 class="text-center text-2xl font-bold">
            <span data-previews--auth-modal-target="loginTitle" >
              Welcome Back!
            </span>
            <span data-previews--auth-modal-target="signupTitle" hidden>
              Join Kongregate
            </span>
          </h2>
        
          <p class="text-center text-gray-400">
            <span data-previews--auth-modal-target="loginDescription" >
              Log in to access your games, badges, and more.
            </span>
            <span data-previews--auth-modal-target="signupDescription" hidden>
              Create an account to track your progress, earn badges, and join the community.
            </span>
          </p>
        </div>
      
        <!-- Tabs Component -->
        <div class="w-full">
          <!-- Tab Buttons -->
          <div class="grid grid-cols-2 w-full mb-6 relative border-b border-gray-700">
            <!-- Login Tab -->
            <button 
              type="button"
              data-action="click->previews--auth-modal#changeTab"
              data-tab-value="login"
              data-previews--auth-modal-target="loginTab"
              class="py-2 px-4 text-center font-medium border-b-2 -mb-px transition-colors relative text-red-600 border-red-600"
              id="login-tab"
            >
              Log In
            </button>
            <!-- Signup Tab -->
            <button 
              type="button"
              data-action="click->previews--auth-modal#changeTab"
              data-tab-value="signup"
              data-previews--auth-modal-target="signupTab"
              class="py-2 px-4 text-center font-medium border-b-2 -mb-px transition-colors relative text-gray-500 border-transparent hover:text-gray-700 hover:border-gray-300"
              id="signup-tab"
            >
              Sign Up
            </button>
          </div>
        
          <!-- Login Panel -->
          <div data-previews--auth-modal-target="loginPanel" class="space-y-4 ">
            <!-- Login Form with Stimulus controller for error/MFA handling -->
            <form id="login-form" class="space-y-4" data-controller="previews--login-form" data-action="submit->previews--login-form#performLogin" onsubmit="return false;">
              <!-- Server error container for validation errors -->
              <div class="mb-4 bg-red-50 border border-red-200 text-red-600 px-4 py-3 rounded-md hidden" data-previews--login-form-target="serverError">
                <span data-previews--login-form-target="serverErrorMessage"></span>
              </div>
              <!-- Username/Email Field -->
              <div class="space-y-1">
                <label for="login-identifier" class="block text-sm font-medium">
                  Username or Email
                </label>
                <input
                  id="login-identifier"
                  name="identifier"
                  type="text"
                  autocomplete="username"
                  class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-red-500"
                  data-previews--login-form-target="identifier"
                  data-action="focus->previews--login-form#trackLoginFormStart"
                >
                <div class="text-red-500 text-sm hidden" data-previews--login-form-target="identifierError"></div>
              </div>
            
              <!-- Password Field -->
              <div class="space-y-2">
                <div class="flex justify-between">
                  <label for="login-password" class="block text-sm font-medium">
                    Password
                  </label>
                  <button type="button" tabindex="-1" class="text-sm text-red-600 hover:text-red-500" data-action="click->previews--auth-modal#showRecovery">
                    Forgot?
                  </button>
                </div>
                <input 
                  id="login-password" 
                  name="password" 
                  type="password" 
                  autocomplete="current-password"
                  class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-red-500"
                  data-previews--login-form-target="password"
                  data-action="focus->previews--login-form#trackLoginFormStart"
                >
                <div class="text-red-500 text-sm hidden" data-previews--login-form-target="passwordError"></div>
              </div>
            
              <!-- Remember Me Checkbox -->
              <div class="flex items-center">
                <input type="checkbox" id="remember-me" name="rememberMe" class="h-4 w-4 rounded border-gray-700 bg-gray-800 text-red-600 focus:ring-red-500" data-previews--login-form-target="rememberMe">
                <label for="remember-me" class="ml-2 block text-sm text-gray-300">
                  Remember me
                </label>
              </div>
            
              <!-- MFA Code Input (loaded via Turbo Frame) -->
              <div data-previews--login-form-target="mfaContainer" class="hidden">
                <turbo-frame loading="lazy" data-previews-login-form-target="mfaFrame" data-action="turbo:frame-load-&gt;previews--login-form#onMfaFrameLoad" data-auth-modal-target="mfaFrame" data-turbo-stream="true" id="mfa-form-frame" src="/mfa/form.turbo_stream">
                  <div class="flex justify-center py-4">
                    <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-red-600"></div>
                  </div>
</turbo-frame>              </div>
            
              <!-- Submit Button connected to Stimulus controller -->
              <div class="space-y-2" data-previews--login-form-target="loginButtonContainer">
                <button
                  type="submit"
                  id="login-submit-button"
                  class="w-full bg-red-600 text-white py-2 px-4 rounded-md shadow hover:bg-red-700 transition-colors focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 font-medium"
                  data-previews--login-form-target="submitButton"
                  data-action="click->previews--login-form#performLogin"
                >
                  <span data-previews--login-form-target="buttonText">Log In</span>
                  <span data-previews--login-form-target="loadingText" class="hidden">Logging in...</span>
                </button>
              </div>
            </form>
            <!-- Divider -->
            <div class="relative my-6">
              <div class="absolute inset-0 flex items-center">
                <div class="w-full border-t border-gray-700"></div>
              </div>
              <div class="relative flex justify-center text-sm">
                <span class="px-2 bg-gray-900 text-gray-400">
                  Or continue with
                </span>
              </div>
            </div>
          
            <!-- Social Login -->
            <div class="flex justify-center">
              <button type="button"
                      class="w-full flex justify-center items-center py-2 px-4 border border-gray-700 rounded-md bg-gray-800 hover:bg-gray-700 transition-colors"
                      title="Sign in with Facebook"
                      onclick="openFacebookAuth(); return false;"
                      id="facebook-login-btn">
                <svg class="h-5 w-5 mr-2" viewBox="0 0 24 24" fill="#1877F2" xmlns="http://www.w3.org/2000/svg">
                  <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
                </svg>
                <span class="text-white" id="facebook-btn-text">Continue with Facebook</span>
                <span class="hidden" id="facebook-loading-text">Connecting...</span>
              </button>
            </div>

            <script>
              // Add missing functions that the Facebook popup expects to find
              window.showMatchingUserForm = function(username, matchedOn) {
                console.log('Facebook matched user:', username, matchedOn);
                // Redirect to login page when there's a matching user
                window.location.href = '/session/new';
              };
              
              window.user_status = window.user_status || {};
              window.user_status.facebookSignInSuccess = function(accountStatus) {
                console.log('Facebook sign in success:', accountStatus);
                // Reload page to reflect new authentication state
                window.location.reload();
              };

              function openFacebookAuth() {
                const btn = document.getElementById('facebook-login-btn');
                const btnText = document.getElementById('facebook-btn-text');
                const loadingText = document.getElementById('facebook-loading-text');
                
                // Disable button and show loading state
                btn.disabled = true;
                btn.classList.add('opacity-50', 'cursor-not-allowed');
                btnText.classList.add('hidden');
                loadingText.classList.remove('hidden');
                
                // Build state parameters (matching FacebookAuthenticator logic)
                const stateParams = {};
                
                // Check for remember me checkbox (if it exists)
                const rememberMeCheckbox = document.getElementById('remember-me');
                if (rememberMeCheckbox && rememberMeCheckbox.checked) {
                  stateParams.remember_me = true;
                }
                
                // Add SSL parameter if on HTTPS
                if (location.protocol === 'https:') {
                  stateParams.ssl_page = true;
                }
                
                // Set the facebook_state_params cookie (matching original behavior)
                document.cookie = `facebook_state_params=${encodeURIComponent(JSON.stringify(stateParams))}; path=/; secure; samesite=lax`;
                
                // Build query string for state parameter
                const stateQuery = new URLSearchParams(stateParams).toString();
                
                // Open popup window using POST (required for OmniAuth 2.x)
                const popup = window.OmniAuthPopupHelper.openAuthPopup(
                  '/auth/facebook',
                  { state: stateQuery },
                  'facebook_auth',
                  'menubar=no,toolbar=no,status=no,width=600,height=400,scrollbars=yes,resizable=yes'
                );
                
                // Watch for popup to close
                const checkClosed = setInterval(() => {
                  try {
                    if (popup.closed) {
                      clearInterval(checkClosed);
                      
                      // Re-enable button
                      btn.disabled = false;
                      btn.classList.remove('opacity-50', 'cursor-not-allowed');
                      btnText.classList.remove('hidden');
                      loadingText.classList.add('hidden');
                      
                      // Reload page to check authentication status
                      setTimeout(() => {
                        window.location.reload();
                      }, 500);
                    }
                  } catch (e) {
                    clearInterval(checkClosed);
                    // Re-enable button on error
                    btn.disabled = false;
                    btn.classList.remove('opacity-50', 'cursor-not-allowed');
                    btnText.classList.remove('hidden');
                    loadingText.classList.add('hidden');
                  }
                }, 100);
              }
            </script>
          <!-- End of login form fields -->
          </div>
        
          <!-- Signup Panel -->
          <div data-previews--auth-modal-target="signupPanel" class="space-y-4 hidden">
            <!-- Signup Form with Controller -->
            <div data-controller="previews--signup-form"
                 data-accounts-url="/accounts"
                 data-previews--signup-form-messages-value="{&quot;username_required&quot;:&quot;Username is required&quot;,&quot;username_min_length&quot;:&quot;Username must be at least 3 characters&quot;,&quot;username_max_length&quot;:&quot;Username must be less than 20 characters&quot;,&quot;username_format&quot;:&quot;Username can only contain letters, numbers, and underscores&quot;,&quot;username_unavailable&quot;:&quot;Username is unavailable. Use only letters, numbers, and underscores.&quot;,&quot;email_required&quot;:&quot;Email is required&quot;,&quot;email_invalid&quot;:&quot;Please enter a valid email address&quot;,&quot;password_required&quot;:&quot;Password is required&quot;,&quot;password_min_length&quot;:&quot;Password must be at least 10 characters&quot;,&quot;password_uppercase&quot;:&quot;Password must contain at least one uppercase letter&quot;,&quot;password_lowercase&quot;:&quot;Password must contain at least one lowercase letter&quot;,&quot;password_number&quot;:&quot;Password must contain at least one number&quot;,&quot;birthdate_year_required&quot;:&quot;Please select your birth year&quot;,&quot;birthdate_full_required&quot;:&quot;Please select your full date of birth&quot;,&quot;parent_email_required&quot;:&quot;Parent/guardian email is required&quot;,&quot;parent_email_invalid&quot;:&quot;Please enter a valid email address&quot;,&quot;terms_required&quot;:&quot;You must accept the terms and conditions&quot;}"
                 class="space-y-4">
              <!-- Form Container -->
              <div data-previews--signup-form-target="formContainer">
                <form 
                  data-previews--signup-form-target="form"
                  data-action="submit->previews--signup-form#onSubmit" 
                  class="space-y-4 pb-16"
                >
                  <!-- Server error container for validation errors -->
                  <div class="mb-4 bg-red-50 border border-red-200 text-red-600 px-4 py-3 rounded-md hidden" data-previews--signup-form-target="serverError">
                    <p class="text-sm"></p>
                  </div>
                  <!-- Username Field -->
                  <div class="space-y-1">
                    <label for="signup-username" class="block text-sm font-medium">
                      Username
                    </label>
                    <input 
                      type="text" 
                      id="signup-username" 
                      name="username" 
                      class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                      required
                      autocomplete="username"
                      data-previews--signup-form-target="username"
                      data-action="focus->previews--signup-form#trackFormStart"
                    >
                    <p class="text-red-600 text-sm hidden" data-previews--signup-form-target="usernameError"></p>
                  </div>
              
                  <!-- Email Field -->
                  <div class="space-y-1">
                    <label for="signup-email" class="block text-sm font-medium">
                      Email
                    </label>
                    <input 
                      type="email" 
                      id="signup-email" 
                      name="email" 
                      class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                      required
                      autocomplete="email"
                      data-previews--signup-form-target="email"
                      data-action="focus->previews--signup-form#trackFormStart"
                    >
                    <p class="text-red-600 text-sm hidden" data-previews--signup-form-target="emailError"></p>
                  </div>
              
                  <!-- Password Field -->
                  <div class="space-y-1">
                    <label for="signup-password" class="block text-sm font-medium">
                      Password
                    </label>
                    <input 
                      id="signup-password" 
                      name="password" 
                      type="password" 
                      autocomplete="new-password"
                      class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                      data-previews--signup-form-target="password"
                      data-action="focus->previews--signup-form#trackFormStart"
                    >
                    <p class="text-white text-xs mt-1">Use at least 10 characters with a mix of uppercase, lowercase, &amp; numbers</p>
                    <div data-previews--signup-form-target="passwordError" class="text-red-500 text-sm hidden"></div>
                  </div>
              
                  <!-- Birthdate Field -->
                  <div class="space-y-1" data-previews--signup-form-target="birthdateSection">
                    <label class="block text-sm font-medium">
                      When were you born?
                    </label>
                    <div class="flex gap-2">
                      <select
                        id="signup-birth-month"
                        class="hidden flex-1 px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                        data-previews--signup-form-target="birthMonth"
                        data-action="change->previews--signup-form#onBirthdateChange"
                      >
                        <option value="">Month</option>
                          <option value="1">January</option>
                          <option value="2">February</option>
                          <option value="3">March</option>
                          <option value="4">April</option>
                          <option value="5">May</option>
                          <option value="6">June</option>
                          <option value="7">July</option>
                          <option value="8">August</option>
                          <option value="9">September</option>
                          <option value="10">October</option>
                          <option value="11">November</option>
                          <option value="12">December</option>
                      </select>
                      <select
                        id="signup-birth-day"
                        class="hidden w-20 px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                        data-previews--signup-form-target="birthDay"
                        data-action="change->previews--signup-form#onBirthdateChange"
                      >
                        <option value="">Day</option>
                          <option value="1">1</option>
                          <option value="2">2</option>
                          <option value="3">3</option>
                          <option value="4">4</option>
                          <option value="5">5</option>
                          <option value="6">6</option>
                          <option value="7">7</option>
                          <option value="8">8</option>
                          <option value="9">9</option>
                          <option value="10">10</option>
                          <option value="11">11</option>
                          <option value="12">12</option>
                          <option value="13">13</option>
                          <option value="14">14</option>
                          <option value="15">15</option>
                          <option value="16">16</option>
                          <option value="17">17</option>
                          <option value="18">18</option>
                          <option value="19">19</option>
                          <option value="20">20</option>
                          <option value="21">21</option>
                          <option value="22">22</option>
                          <option value="23">23</option>
                          <option value="24">24</option>
                          <option value="25">25</option>
                          <option value="26">26</option>
                          <option value="27">27</option>
                          <option value="28">28</option>
                          <option value="29">29</option>
                          <option value="30">30</option>
                          <option value="31">31</option>
                      </select>
                      <select
                        id="signup-birth-year"
                        class="flex-1 px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                        data-previews--signup-form-target="birthYear"
                        data-action="change->previews--signup-form#onBirthYearChange"
                      >
                        <option value="">Year</option>
                          <option value="2023">2023</option>
                          <option value="2022">2022</option>
                          <option value="2021">2021</option>
                          <option value="2020">2020</option>
                          <option value="2019">2019</option>
                          <option value="2018">2018</option>
                          <option value="2017">2017</option>
                          <option value="2016">2016</option>
                          <option value="2015">2015</option>
                          <option value="2014">2014</option>
                          <option value="2013">2013</option>
                          <option value="2012">2012</option>
                          <option value="2011">2011</option>
                          <option value="2010">2010</option>
                          <option value="2009">2009</option>
                          <option value="2008">2008</option>
                          <option value="2007">2007</option>
                          <option value="2006">2006</option>
                          <option value="2005">2005</option>
                          <option value="2004">2004</option>
                          <option value="2003">2003</option>
                          <option value="2002">2002</option>
                          <option value="2001">2001</option>
                          <option value="2000">2000</option>
                          <option value="1999">1999</option>
                          <option value="1998">1998</option>
                          <option value="1997">1997</option>
                          <option value="1996">1996</option>
                          <option value="1995">1995</option>
                          <option value="1994">1994</option>
                          <option value="1993">1993</option>
                          <option value="1992">1992</option>
                          <option value="1991">1991</option>
                          <option value="1990">1990</option>
                          <option value="1989">1989</option>
                          <option value="1988">1988</option>
                          <option value="1987">1987</option>
                          <option value="1986">1986</option>
                          <option value="1985">1985</option>
                          <option value="1984">1984</option>
                          <option value="1983">1983</option>
                          <option value="1982">1982</option>
                          <option value="1981">1981</option>
                          <option value="1980">1980</option>
                          <option value="1979">1979</option>
                          <option value="1978">1978</option>
                          <option value="1977">1977</option>
                          <option value="1976">1976</option>
                          <option value="1975">1975</option>
                          <option value="1974">1974</option>
                          <option value="1973">1973</option>
                          <option value="1972">1972</option>
                          <option value="1971">1971</option>
                          <option value="1970">1970</option>
                          <option value="1969">1969</option>
                          <option value="1968">1968</option>
                          <option value="1967">1967</option>
                          <option value="1966">1966</option>
                          <option value="1965">1965</option>
                          <option value="1964">1964</option>
                          <option value="1963">1963</option>
                          <option value="1962">1962</option>
                          <option value="1961">1961</option>
                          <option value="1960">1960</option>
                          <option value="1959">1959</option>
                          <option value="1958">1958</option>
                          <option value="1957">1957</option>
                          <option value="1956">1956</option>
                          <option value="1955">1955</option>
                          <option value="1954">1954</option>
                          <option value="1953">1953</option>
                          <option value="1952">1952</option>
                          <option value="1951">1951</option>
                          <option value="1950">1950</option>
                          <option value="1949">1949</option>
                          <option value="1948">1948</option>
                          <option value="1947">1947</option>
                          <option value="1946">1946</option>
                          <option value="1945">1945</option>
                          <option value="1944">1944</option>
                          <option value="1943">1943</option>
                          <option value="1942">1942</option>
                          <option value="1941">1941</option>
                          <option value="1940">1940</option>
                      </select>
                    </div>
                    <input type="hidden" name="age_concern" value="" data-previews--signup-form-target="ageConcern">
                    <p class="text-red-600 text-sm hidden" data-previews--signup-form-target="birthdateError"></p>
                  </div>

                  <!-- Parent Email Field (shown for EU users under age of consent) -->
                  <div class="space-y-1 hidden" data-previews--signup-form-target="parentEmailSection">
                    <label for="signup-parent-email" class="block text-sm font-medium">
                      Parent/Guardian Email
                    </label>
                    <p class="text-gray-400 text-xs mb-1">A parent or guardian must consent to your account. Please enter their email address.</p>
                    <input 
                      type="email" 
                      id="signup-parent-email" 
                      name="parent_email" 
                      class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 focus:border-red-500"
                      data-previews--signup-form-target="parentEmail"
                    >
                    <p class="text-red-600 text-sm hidden" data-previews--signup-form-target="parentEmailError"></p>
                  </div>

                  <!-- Underage Block Message (shown for users under 13) -->
                  <div class="hidden bg-red-900/30 border border-red-700 rounded-md p-3" data-previews--signup-form-target="underageBlock">
                    <p class="text-red-400 text-sm">Sorry, you do not meet the minimum age requirement to create an account on this site.</p>
                  </div>

                  <!-- Terms Agreement -->
                  <div class="flex items-start" data-previews--signup-form-target="termsSection">
                    <div class="flex items-center h-5">
                      <input 
                        type="checkbox" 
                        id="terms" 
                        name="terms" 
                        class="h-4 w-4 text-red-600 focus:ring-red-500 border-gray-300 rounded"
                        required
                        data-previews--signup-form-target="acceptTerms"
                      >
                    </div>
                    <div class="ml-3 text-sm">
                      <label for="terms" class="text-gray-600">
                        I agree to the <a href="/terms-of-service" class="text-red-600 hover:text-red-500" target="_blank">Terms of Service</a> and <a href="/privacy" class="text-red-600 hover:text-red-500" target="_blank">Privacy Policy</a>
                      </label>
                      <p class="text-red-600 text-sm hidden" data-previews--signup-form-target="termsError"></p>
                    </div>
                  </div>

                  <!-- Submit Button -->
                  <button 
                    type="submit" 
                    class="w-full bg-red-600 hover:bg-red-700 text-white font-medium py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-opacity-50 transition-colors"
                    data-previews--signup-form-target="submitButton"
                  >
                    <span data-previews--signup-form-target="buttonText">Create Account</span>
                    <span data-previews--signup-form-target="loadingText" class="hidden">
                      <svg class="animate-spin -ml-1 mr-2 h-4 w-4 text-white inline-block" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
                        <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
                        <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
                      </svg>
                      Creating Account...
                    </span>
                  </button>

                  <!-- reCAPTCHA -->
                  <div class="g-recaptcha" 
                    data-sitekey="6LdzZjQUAAAAANyruFjOROmzLKQofUeJA5sIaPf3"
                    data-size="invisible"
                    data-callback="onRecaptchaSuccess"
                    data-expired-callback="onRecaptchaExpired"
                    data-error-callback="onRecaptchaError"
                    id="signup-recaptcha">
                  </div>
                  <input type="hidden" name="recaptcha_token" class="hidden" data-previews--signup-form-target="recaptchaToken">
                </form>
              </div> <!-- Close form container -->
          
              <!-- Success Message (initially hidden) -->
              <div 
                data-previews--signup-form-target="successMessage" 
                class="hidden p-6 text-center"
              >
                <div class="mx-auto flex items-center justify-center h-12 w-12 rounded-full bg-green-100 mb-4">
                  <svg class="h-6 w-6 text-green-600" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
                  </svg>
                </div>
                <h3 class="text-lg font-medium text-white mb-2">
                  Account Created!
                </h3>
                <div class="mt-2 text-sm text-gray-300">
                  <p>Please check your email to verify your account. You&#39;ll need to verify your email before logging in.</p>
                </div>
                <div class="mt-4">
                  <button 
                    type="button" 
                    class="inline-flex justify-center rounded-md border border-transparent bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
                    data-action="click->previews--auth-modal#showLogin"
                  >
                    Back to Login
                  </button>
                </div>
              </div>
            </div>
          </div> <!-- End of signup panel -->
        
          <!-- Recovery Panel -->
          <div data-previews--auth-modal-target="recoveryPanel" class="hidden space-y-4">
            <!-- Recovery Title -->
            <h2 class="text-center text-2xl font-bold" data-previews--auth-modal-target="recoveryTitle">
              Forgot your password?
            </h2>
          
            <div class="space-y-4">
              <!-- Server error container (hidden by default) -->
              <div class="mb-4 bg-red-50 border border-red-200 text-red-600 px-4 py-3 rounded-md hidden" data-previews--auth-modal-target="recoveryError">
                <span data-previews--auth-modal-target="recoveryErrorMessage"></span>
              </div>
            
              <!-- Success message (hidden by default) -->
              <div class="mb-4 bg-green-50 border border-green-200 text-green-600 px-4 py-3 rounded-md hidden" data-previews--auth-modal-target="recoverySuccess">
                Password reset instructions have been sent to your email.
              </div>
            </div>
            <!-- Recovery Form -->
            <div data-previews--auth-modal-target="recoveryForm">
              <div class="space-y-4">
                <!-- Email Field -->
                <div class="space-y-1">
                  <label for="recovery-email" class="block text-sm font-medium">
                    Enter your Email Address or Username
                  </label>
                  <input
                    id="recovery-email"
                    type="email"
                    autocomplete="email"
                    class="w-full px-3 py-2 border border-gray-700 rounded-md bg-gray-800 text-white focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-red-500"
                    data-previews--auth-modal-target="recoveryEmail"
                    required
                  >
                  <div class="text-red-500 text-sm hidden" data-previews--auth-modal-target="recoveryEmailError"></div>
                </div>
              
                <!-- Submit Button -->
                <button
                  type="button"
                  class="w-full bg-red-600 text-white py-2 px-4 rounded-md shadow hover:bg-red-700 transition-colors focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 font-medium"
                  data-action="click->previews--auth-modal#submitRecovery"
                  data-previews--auth-modal-target="recoverySubmitButton"
                >
                  <span data-previews--auth-modal-target="recoveryButtonText">
                    Recover Password
                  </span>
                  <span class="hidden" data-previews--auth-modal-target="recoveryLoadingText">
                    Sending...
                  </span>
                </button>
              
                <!-- Back to Login Link -->
                <div class="text-center mt-4">
                  <button 
                    type="button" 
                    class="text-sm text-gray-400 hover:text-white"
                    data-action="click->previews--auth-modal#showLogin"
                  >
                    &larr; Back to Login
                  </button>
                </div>
              </div>
            </div>
          </div>
        </div> <!-- End of tabs component -->
      </div>
    </div>
  </div>
</div>
  
<!-- Toast Notifications Container -->
<div id="toast-container" class="fixed top-4 right-4 z-50"></div>
</div>

  
  <!-- Kred Purchase Modal - Global modal for in-game purchases -->
  <div data-controller="previews--kreds-purchase"
       data-previews--kreds-purchase-default-kreds-title-value="Purchase Kreds"
       data-previews--kreds-purchase-default-checkout-title-value="Review Your Purchase">
    <div data-previews--kreds-purchase-target="modal" 
         data-action="click->previews--kreds-purchase#handleBackgroundClick"
         class="fixed inset-0 bg-black bg-opacity-50 backdrop-blur-sm flex items-center justify-center z-50 p-2 sm:p-4 hidden opacity-0 transition-opacity duration-300">
      <div data-action="click->previews--kreds-purchase#handleContentClick"
           class="bg-gray-900 rounded-lg shadow-xl w-[96vw] h-[92vh] max-md:max-w-md md:w-[min(75vw,1000px)] md:h-[min(90vh,900px)] md:min-w-[600px] md:min-h-[600px] flex flex-col">
        <!-- Modal Header -->
        <div class="flex items-center justify-between p-4 border-b border-gray-700">
          <h2 class="text-xl font-semibold text-white" data-previews--kreds-purchase-target="modalTitle">Purchase Kreds</h2>
          <button data-action="click->previews--kreds-purchase#closeModal" 
                  class="text-gray-400 hover:text-gray-300 focus:outline-none">
            <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
            </svg>
          </button>
        </div>
        
        <!-- Modal Content - iframe container (populated dynamically by controller) -->
        <div class="flex-1 relative overflow-hidden">
          <iframe src="about:blank" 
                  frameborder="0" 
                  class="w-full h-full rounded-b-lg">
          </iframe>
        </div>
      </div>
    </div>
  </div>
  
  <!-- Shared Content Modal -->
  <!-- Shared Content Modal - Displays content in a floating modal -->
<div class="hidden fixed inset-0 z-40"
     data-controller="previews--content-modal"
     data-previews--content-modal-target="modal"
     data-previews--content-modal-open-value="false">
  
  <!-- Backdrop -->
  <div class="absolute inset-0 bg-black bg-opacity-50 transition-opacity"></div>
  
  <!-- Modal Content Container -->
  <div class="relative h-full flex items-start justify-end p-4 sm:p-6 pb-8 sm:pb-12">
    <!-- Modal Panel - Right side on desktop, full width on mobile -->
    <div class="relative bg-white dark:bg-gray-900 rounded-lg shadow-xl 
                w-full sm:w-[600px] h-full max-h-[calc(100%-2rem)]
                sm:mr-4 mx-auto sm:mx-0 flex flex-col
                bg-gradient-to-b from-slate-800 to-gray-700
                shadow-lg shadow-red-500/20 ring-1 ring-red-500/30"
         data-modal-panel>
      
      <!-- Close Button -->
      <button type="button"
              class="absolute top-4 right-4 z-10 text-gray-400 hover:text-white 
                     transition-colors duration-200 rounded-full p-1 
                     hover:bg-gray-800/50"
              data-action="click->previews--content-modal#close"
              data-previews--content-modal-target="closeButton"
              aria-label="Close modal">
        <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
        </svg>
      </button>
      
      <!-- Content Area (overflow handled by content) -->
      <div class="flex-1 min-h-0 overflow-hidden" data-previews--content-modal-target="content">
        <!-- Content will be loaded here dynamically -->
      </div>
    </div>
  </div>
</div>


  <!-- Text Tile Modal - Global modal for text tile expansions -->
  <!-- Text Tile Modal Container -->
<div class="fixed inset-0 z-50 hidden items-center justify-center p-4"
     data-controller="components--text-tile-modal"
     data-action="text-tile:open-modal@window->components--text-tile-modal#open click->components--text-tile-modal#closeOnBackdrop keydown.esc@window->components--text-tile-modal#close"
     data-components--text-tile-modal-target="container"
     style="background-color: rgba(0, 0, 0, 0.75);">
  
  <!-- Modal Dialog -->
  <div class="bg-gradient-to-br from-gray-800 to-gray-900 rounded-xl shadow-2xl max-w-[600px] max-h-[575px] w-full flex flex-col"
       data-components--text-tile-modal-target="dialog"
       data-action="click->components--text-tile-modal#stopPropagation">
    
    <!-- Modal Header with Close Button -->
    <div class="flex items-center justify-between p-6 border-b border-white/10 flex-shrink-0">
      <div class="flex-1" data-components--text-tile-modal-target="header">
        <!-- Header content will be injected here -->
      </div>
      <button type="button"
              class="ml-4 text-white/60 hover:text-white transition-colors flex-shrink-0"
              data-action="click->components--text-tile-modal#close"
              aria-label="Close">
        <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
        </svg>
      </button>
    </div>
    
    <!-- Modal Body - Scrollable -->
    <div class="flex-1 overflow-y-auto p-6 text-tile-content"
         data-components--text-tile-modal-target="body">
      <!-- Body content will be injected here -->
    </div>
  </div>
</div>

<style>
  /* Styling for links within text tile content */
  .text-tile-content a {
    color: rgb(96 165 250); /* blue-400 */
    text-decoration: underline;
    transition: color 0.2s;
  }
  
  .text-tile-content a:hover {
    color: rgb(147 197 253); /* blue-300 */
  }
</style>

  
</body>
</html>

Latest requests

# Url Url Source Date
1 https://www.kongregate.com/en/accoโ€ฆ 2026-10-18 08:56:39
2 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:39
3 http://m.voa-islam.com/ 2026-10-18 08:56:37
4 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:37
5 https://www.texarkanatwins.com/%25โ€ฆ 2026-10-18 08:56:36
6 https://fabrikkforextonsberg.blogsโ€ฆ 2026-10-18 08:56:36
7 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:35
8 https://moteconline.motec.com.au/ 2026-10-18 08:56:34
9 https://auth.mediacorp.sg/u/login?โ€ฆ 2026-10-18 08:56:34
10 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:33
11 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:33
12 https://lquadrat.de/hello-world/ 2026-10-18 08:56:32
13 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:32
14 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:29
15 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:29
16 https://mattolegrange.com/ 2026-10-18 08:56:28
17 https://onthisveryspot.com/ 2026-10-18 08:56:28
18 https://www.texarkanatwins.com/%25โ€ฆ 2026-10-18 08:56:27
19 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:27
20 https://www.thebolditalic.com/?gi=โ€ฆ 2026-10-18 08:56:25