Cookie Clicker Helper

Helpful automation features for Cookie Clicker

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Cookie Clicker Helper
// @namespace    http://tampermonkey.net/
// @version      3.6
// @description  Helpful automation features for Cookie Clicker
// @author       Pyrates
// @match        https://orteil.dashnet.org/cookieclicker/
// @match        http://orteil.dashnet.org/cookieclicker/
// @grant        none
// @license      MIT
// @copyright    2025, Cookie Clicker Helper Contributors
// ==/UserScript==

/*
 * Cookie Clicker Helper - Tampermonkey Script
 * 
 * Copyright (c) 2025 Cookie Clicker Helper Contributors
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 * 
 * Cookie Clicker is created and owned by Orteil (https://orteil.dashnet.org/)
 * This script is not affiliated with or endorsed by the original game developer.
 */

(function() {
    'use strict';

    // Wait for the game to load
    function waitForGame() {
        if (typeof Game === 'undefined' || !Game.ready) {
            setTimeout(waitForGame, 100);
            return;
        }
        initHelper();
    }

    function initHelper() {
        console.log('Cookie Clicker Helper loaded!');

        // Create control panel
        const panel = document.createElement('div');
        panel.id = 'helper-panel';
        panel.style.cssText = `
            position: fixed;
            top: 10px;
            right: 10px;
            background: linear-gradient(135deg, rgba(30, 30, 50, 0.98) 0%, rgba(20, 20, 35, 0.98) 100%);
            color: white;
            padding: 0;
            border-radius: 16px;
            z-index: 10000;
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            min-width: 280px;
            cursor: move;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 1px rgba(255, 255, 255, 0.1) inset;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.1);
            transform-origin: top right;
        `;

        panel.innerHTML = `
            <div id="dragHandle" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 16px 20px; border-radius: 16px 16px 0 0; display: flex; justify-content: space-between; align-items: center; user-select: none; cursor: move;">
                <h3 style="margin: 0; font-size: 1.2em; font-weight: 600; letter-spacing: 0.5px;">🍪 Cookie Helper</h3>
                <div style="display: flex; gap: 8px; align-items: center;">
                    <button id="scaleDown" style="width: 24px; height: 24px; border-radius: 6px; border: none; background: rgba(255,255,255,0.2); color: white; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; transition: all 0.2s;" title="Scale Down">−</button>
                    <button id="scaleUp" style="width: 24px; height: 24px; border-radius: 6px; border: none; background: rgba(255,255,255,0.2); color: white; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; transition: all 0.2s;" title="Scale Up">+</button>
                    <button id="minimizeBtn" style="width: 24px; height: 24px; border-radius: 6px; border: none; background: rgba(255,255,255,0.2); color: white; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; transition: all 0.2s;" title="Minimize">−</button>
                </div>
            </div>
            <div id="panelContent" style="padding: 16px 20px; max-height: 70vh; overflow-y: auto;">
                <!-- Tab Navigation -->
                <div style="display: flex; gap: 8px; margin-bottom: 16px; border-bottom: 2px solid rgba(255,255,255,0.1); padding-bottom: 8px; flex-wrap: wrap;">
                    <button class="tab-btn active" data-tab="automation">Auto</button>
                    <button class="tab-btn" data-tab="cheats">Cheats</button>
                    <button class="tab-btn" data-tab="spawns">Spawns</button>
                    <button class="tab-btn" data-tab="minigames">Minigames</button>
                    <button class="tab-btn" data-tab="advanced">Advanced</button>
                    <button class="tab-btn" data-tab="settings">Settings</button>
                    <button class="tab-btn" data-tab="stats">Stats</button>
                </div>

                <!-- AUTOMATION TAB -->
                <div id="tab-automation" class="tab-content active">
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Basic Automation</div>
                        <button id="autoClick" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🖱️</span>
                            <span class="btn-text">Auto Click</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="autoBuy" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🏪</span>
                            <span class="btn-text">Auto Buy</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="autoGolden" class="toggle-btn" data-active="false">
                            <span class="btn-icon">✨</span>
                            <span class="btn-text">Auto Golden</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="autoAscend" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🚀</span>
                            <span class="btn-text">Auto Ascend</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="autoSave" class="toggle-btn" data-active="false">
                            <span class="btn-icon">💾</span>
                            <span class="btn-text">Auto Save (5min)</span>
                            <span class="btn-status">OFF</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Click Settings</div>
                        <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Clicks Per Second: <span id="cpsValue">20</span></label>
                        <input type="range" id="clickSpeed" min="1" max="100" value="20" style="width: 100%;">
                    </div>
                </div>

                <!-- CHEATS TAB -->
                <div id="tab-cheats" class="tab-content">
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Money Cheats</div>
                        <button id="infiniteMoney" class="toggle-btn special-btn" data-active="false">
                            <span class="btn-icon">💰</span>
                            <span class="btn-text">Infinite Money</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="freeBuildings" class="toggle-btn special-btn" data-active="false">
                            <span class="btn-icon">🆓</span>
                            <span class="btn-text">Free Buildings</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <div style="margin: 10px 0;">
                            <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Add Cookies</label>
                            <input type="text" id="cookieAmount" placeholder="e.g. 1M, 1B, 1T, 1Sx, 1Dc" 
                                style="width: 100%; padding: 10px 12px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); border-radius: 8px; color: white; font-size: 0.95em; box-sizing: border-box; margin-bottom: 8px; transition: all 0.2s;">
                            <button id="addCookies" class="action-btn" style="background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);">
                                <span class="btn-icon">➕</span>
                                <span class="btn-text">Add Cookies</span>
                            </button>
                        </div>
                        <div style="margin: 10px 0;">
                            <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">CPS Multiplier: <span id="cpsMultValue">1</span>x</label>
                            <input type="range" id="cpsMultiplier" min="1" max="1000" value="1" style="width: 100%; margin-bottom: 8px;">
                        </div>
                        <div style="margin: 10px 0;">
                            <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Click Power Multiplier: <span id="clickMultValue">1</span>x</label>
                            <input type="range" id="clickMultiplier" min="1" max="1000" value="1" style="width: 100%; margin-bottom: 8px;">
                        </div>
                        <div style="margin: 10px 0;">
                            <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Golden Cookie Multiplier: <span id="goldenMultValue">1</span>x</label>
                            <input type="range" id="goldenMultiplier" min="1" max="1000" value="1" style="width: 100%;">
                        </div>
                        <div style="margin: 10px 0;">
                            <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Buff Duration Multiplier: <span id="buffMultValue">1</span>x</label>
                            <input type="range" id="buffMultiplier" min="1" max="100" value="1" style="width: 100%;">
                        </div>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Instant Unlocks</div>
                        <button id="unlockUpgrades" class="action-btn">
                            <span class="btn-icon">🔓</span>
                            <span class="btn-text">Unlock All Upgrades</span>
                        </button>
                        <button id="unlockAchievements" class="action-btn">
                            <span class="btn-icon">🏆</span>
                            <span class="btn-text">Unlock All Achievements</span>
                        </button>
                        <button id="maxBuildings" class="action-btn">
                            <span class="btn-icon">🏗️</span>
                            <span class="btn-text">Max All Buildings (100)</span>
                        </button>
                        <button id="sellBuildings" class="action-btn">
                            <span class="btn-icon">💸</span>
                            <span class="btn-text">Sell All Buildings</span>
                        </button>
                        <button id="infiniteLumps" class="action-btn">
                            <span class="btn-icon">🍬</span>
                            <span class="btn-text">Infinite Sugar Lumps</span>
                        </button>
                    </div>
                </div>

                <!-- SPAWNS TAB -->
                <div id="tab-spawns" class="tab-content">
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Force Spawn</div>
                        <button id="spawnGolden" class="action-btn">
                            <span class="btn-icon">✨</span>
                            <span class="btn-text">Spawn Golden Cookie</span>
                        </button>
                        <button id="spawnReindeer" class="action-btn">
                            <span class="btn-icon">🦌</span>
                            <span class="btn-text">Spawn Reindeer</span>
                        </button>
                        <button id="spawnWrinklers" class="action-btn">
                            <span class="btn-icon">🐛</span>
                            <span class="btn-text">Spawn Max Wrinklers</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Quick Actions</div>
                        <button id="popWrinklers" class="action-btn">
                            <span class="btn-icon">💥</span>
                            <span class="btn-text">Pop All Wrinklers</span>
                        </button>
                        <button id="fastBuy" class="action-btn">
                            <span class="btn-icon">🛒</span>
                            <span class="btn-text">Buy 10 Most Expensive</span>
                        </button>
                        <button id="ascendLuck" class="action-btn">
                            <span class="btn-icon">🎯</span>
                            <span class="btn-text">Ascend Luck Timer</span>
                        </button>
                    </div>
                </div>

                <!-- MINIGAMES TAB -->
                <div id="tab-minigames" class="tab-content">
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Garden Automation</div>
                        <button id="autoGarden" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🌱</span>
                            <span class="btn-text">Auto-Plant Optimal</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="harvestAll" class="action-btn">
                            <span class="btn-icon">🌾</span>
                            <span class="btn-text">Harvest All Plants</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Grimoire Magic</div>
                        <button id="autoGrimoire" class="toggle-btn" data-active="false">
                            <span class="btn-icon">📖</span>
                            <span class="btn-text">Auto-Cast Spells</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="fillMagic" class="action-btn">
                            <span class="btn-icon">✨</span>
                            <span class="btn-text">Fill Magic Meter</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Stock Market</div>
                        <button id="autoStock" class="toggle-btn" data-active="false">
                            <span class="btn-icon">📈</span>
                            <span class="btn-text">Auto-Trade Stocks</span>
                            <span class="btn-status">OFF</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Pantheon</div>
                        <button id="autoPantheon" class="action-btn">
                            <span class="btn-icon">⚡</span>
                            <span class="btn-text">Optimize Pantheon</span>
                        </button>
                    </div>
                </div>

                <!-- ADVANCED TAB -->
                <div id="tab-advanced" class="tab-content">
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Game Controls</div>
                        <button id="hideUI" class="toggle-btn" data-active="false">
                            <span class="btn-icon">👁️</span>
                            <span class="btn-text">Hide Game UI</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <div style="margin: 10px 0;">
                            <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Game Speed: <span id="gameSpeedValue">1</span>x</label>
                            <input type="range" id="gameSpeed" min="0.1" max="10" step="0.1" value="1" style="width: 100%;">
                        </div>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Custom Goals</div>
                        <input type="text" id="goalAmount" placeholder="Goal (e.g. 1T)" 
                            style="width: 100%; padding: 10px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); border-radius: 8px; color: white; margin-bottom: 8px;">
                        <button id="setGoal" class="action-btn">
                            <span class="btn-icon">🎯</span>
                            <span class="btn-text">Set Cookie Goal</span>
                        </button>
                        <div id="goalProgress" style="margin-top: 10px; font-size: 0.85em; color: rgba(255,255,255,0.7);"></div>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Season Control</div>
                        <select id="seasonSelect" style="width: 100%; padding: 10px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); border-radius: 8px; color: white; margin-bottom: 8px;">
                            <option value="" style="background: #2a2a3e; color: white;">Current Season</option>
                            <option value="christmas" style="background: #2a2a3e; color: white;">Christmas</option>
                            <option value="easter" style="background: #2a2a3e; color: white;">Easter</option>
                            <option value="halloween" style="background: #2a2a3e; color: white;">Halloween</option>
                            <option value="valentines" style="background: #2a2a3e; color: white;">Valentines</option>
                        </select>
                        <button id="changeSeason" class="action-btn">
                            <span class="btn-icon">🎄</span>
                            <span class="btn-text">Change Season</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Save Management</div>
                        <button id="backupSave" class="action-btn">
                            <span class="btn-icon">💾</span>
                            <span class="btn-text">Backup Save</span>
                        </button>
                        <button id="restoreSave" class="action-btn">
                            <span class="btn-icon">📂</span>
                            <span class="btn-text">Restore Backup</span>
                        </button>
                        <button id="savePreset" class="action-btn">
                            <span class="btn-icon">💾</span>
                            <span class="btn-text">Save Configuration</span>
                        </button>
                        <button id="loadPreset" class="action-btn">
                            <span class="btn-icon">📂</span>
                            <span class="btn-text">Load Configuration</span>
                        </button>
                        <button id="exportStats" class="action-btn">
                            <span class="btn-icon">📊</span>
                            <span class="btn-text">Export Statistics</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Cheat Profiles</div>
                        <button id="idleMode" class="action-btn">
                            <span class="btn-icon">💤</span>
                            <span class="btn-text">Idle Mode (Auto Everything)</span>
                        </button>
                        <button id="activeMode" class="action-btn">
                            <span class="btn-icon">⚡</span>
                            <span class="btn-text">Active Mode (Manual + Assists)</span>
                        </button>
                        <button id="godMode" class="action-btn">
                            <span class="btn-icon">👑</span>
                            <span class="btn-text">God Mode (All Cheats)</span>
                        </button>
                    </div>
                </div>

                <!-- SETTINGS TAB -->
                <div id="tab-settings" class="tab-content">
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Panel Settings</div>
                        <label style="display: block; margin-bottom: 6px; font-size: 0.85em; color: rgba(255,255,255,0.8);">Panel Opacity: <span id="opacityValue">98</span>%</label>
                        <input type="range" id="panelOpacity" min="50" max="100" value="98" style="width: 100%; margin-bottom: 12px;">
                        
                        <div class="section-title" style="margin-top: 16px;">Position Presets</div>
                        <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 8px;">
                            <button class="action-btn" data-position="top-right">↗️ Top Right</button>
                            <button class="action-btn" data-position="top-left">↖️ Top Left</button>
                            <button class="action-btn" data-position="bottom-right">↘️ Bottom Right</button>
                            <button class="action-btn" data-position="bottom-left">↙️ Bottom Left</button>
                        </div>
                        
                        <div class="section-title" style="margin-top: 16px;">Theme</div>
                        <select id="themeSelect" style="width: 100%; padding: 10px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); border-radius: 8px; color: white;">
                            <option value="purple" style="background: #2a2a3e; color: white;">Purple (Default)</option>
                            <option value="blue" style="background: #2a2a3e; color: white;">Blue Ocean</option>
                            <option value="green" style="background: #2a2a3e; color: white;">Green Matrix</option>
                            <option value="red" style="background: #2a2a3e; color: white;">Red Fire</option>
                            <option value="gold" style="background: #2a2a3e; color: white;">Golden</option>
                        </select>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Notifications</div>
                        <button id="hideNotifications" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🔕</span>
                            <span class="btn-text">Hide All Game Notifications</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="notifyGolden" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🔔</span>
                            <span class="btn-text">Golden Cookie Alerts</span>
                            <span class="btn-status">OFF</span>
                        </button>
                        <button id="notifyAchiev" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🏆</span>
                            <span class="btn-text">Achievement Alerts</span>
                            <span class="btn-status">OFF</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Audio Controls</div>
                        <button id="muteAll" class="toggle-btn" data-active="false">
                            <span class="btn-icon">🔇</span>
                            <span class="btn-text">Mute All Sounds</span>
                            <span class="btn-status">OFF</span>
                        </button>
                    </div>
                    <div style="margin-bottom: 16px;">
                        <div class="section-title">Hotkeys</div>
                        <div style="font-size: 0.85em; color: rgba(255,255,255,0.7); line-height: 1.8;">
                            <div>Alt+C - Toggle Auto Click</div>
                            <div>Alt+B - Toggle Auto Buy</div>
                            <div>Alt+G - Toggle Auto Golden</div>
                            <div>Alt+H - Toggle Hide UI</div>
                            <div>Alt+S - Manual Save</div>
                        </div>
                    </div>
                </div>

                <!-- STATS TAB -->
                <div id="tab-stats" class="tab-content">
                    <div style="background: rgba(255,255,255,0.05); border-radius: 10px; padding: 12px; border: 1px solid rgba(255,255,255,0.1); margin-bottom: 16px;">
                        <div class="section-title">Current Statistics</div>
                        <div style="display: grid; gap: 6px; font-size: 0.9em;">
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">CPS:</span>
                                <span style="font-weight: 600; color: #4CAF50;" id="cpsDisplay">0</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Cookies:</span>
                                <span style="font-weight: 600; color: #FFC107;" id="cookieDisplay">0</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Buildings:</span>
                                <span style="font-weight: 600; color: #2196F3;" id="buildingDisplay">0</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Prestige:</span>
                                <span style="font-weight: 600; color: #9C27B0;" id="prestigeDisplay">0</span>
                            </div>
                        </div>
                    </div>
                    <div style="background: rgba(255,255,255,0.05); border-radius: 10px; padding: 12px; border: 1px solid rgba(255,255,255,0.1); margin-bottom: 16px;">
                        <div class="section-title">Session Stats</div>
                        <div style="display: grid; gap: 6px; font-size: 0.9em;">
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Session Time:</span>
                                <span style="font-weight: 600;" id="sessionTime">0:00:00</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Cookies Earned:</span>
                                <span style="font-weight: 600;" id="sessionCookies">0</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Golden Clicks:</span>
                                <span style="font-weight: 600;" id="goldenClicks">0</span>
                            </div>
                        </div>
                    </div>
                    <div style="background: rgba(255,255,255,0.05); border-radius: 10px; padding: 12px; border: 1px solid rgba(255,255,255,0.1);">
                        <div class="section-title">Efficiency</div>
                        <div style="display: grid; gap: 6px; font-size: 0.9em;">
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Best Building:</span>
                                <span style="font-weight: 600;" id="bestBuilding">-</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Next Milestone:</span>
                                <span style="font-weight: 600;" id="nextMilestone">-</span>
                            </div>
                            <div style="display: flex; justify-content: space-between;">
                                <span style="color: rgba(255,255,255,0.7);">Time to Goal:</span>
                                <span style="font-weight: 600;" id="timeToGoal">-</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <style>
                #helper-panel input:focus, #helper-panel select:focus {
                    outline: none;
                    border-color: #667eea;
                    background: rgba(255,255,255,0.15);
                }
                #helper-panel select {
                    cursor: pointer;
                }
                #helper-panel select option {
                    background: #2a2a3e;
                    color: white;
                }
                #helper-panel input[type="range"] {
                    -webkit-appearance: none;
                    background: rgba(255,255,255,0.1);
                    border-radius: 5px;
                    height: 6px;
                }
                #helper-panel input[type="range"]::-webkit-slider-thumb {
                    -webkit-appearance: none;
                    width: 16px;
                    height: 16px;
                    border-radius: 50%;
                    background: #667eea;
                    cursor: pointer;
                }
                #helper-panel .section-title {
                    font-size: 0.75em;
                    color: rgba(255,255,255,0.6);
                    text-transform: uppercase;
                    letter-spacing: 1px;
                    margin-bottom: 10px;
                    font-weight: 600;
                }
                #helper-panel .tab-btn {
                    flex: 1;
                    padding: 8px 12px;
                    background: rgba(255,255,255,0.05);
                    border: 1px solid rgba(255,255,255,0.1);
                    border-radius: 8px;
                    color: rgba(255,255,255,0.6);
                    cursor: pointer;
                    transition: all 0.2s;
                    font-size: 0.85em;
                    font-family: inherit;
                }
                #helper-panel .tab-btn:hover {
                    background: rgba(255,255,255,0.1);
                    color: rgba(255,255,255,0.9);
                }
                #helper-panel .tab-btn.active {
                    background: rgba(102, 126, 234, 0.3);
                    border-color: rgba(102, 126, 234, 0.5);
                    color: white;
                }
                #helper-panel .tab-content {
                    display: none;
                }
                #helper-panel .tab-content.active {
                    display: block;
                }
                #helper-panel .toggle-btn {
                    width: 100%;
                    margin: 6px 0;
                    padding: 12px 14px;
                    background: rgba(255,255,255,0.08);
                    border: 1px solid rgba(255,255,255,0.15);
                    border-radius: 10px;
                    color: white;
                    font-size: 0.9em;
                    cursor: pointer;
                    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    font-family: inherit;
                }
                #helper-panel .toggle-btn:hover {
                    background: rgba(255,255,255,0.12);
                    border-color: rgba(255,255,255,0.25);
                    transform: translateX(2px);
                }
                #helper-panel .toggle-btn[data-active="true"] {
                    background: linear-gradient(135deg, rgba(76, 175, 80, 0.3) 0%, rgba(56, 142, 60, 0.3) 100%);
                    border-color: rgba(76, 175, 80, 0.5);
                }
                #helper-panel .special-btn[data-active="true"] {
                    background: linear-gradient(135deg, rgba(255, 193, 7, 0.3) 0%, rgba(255, 152, 0, 0.3) 100%);
                    border-color: rgba(255, 193, 7, 0.5);
                }
                #helper-panel .action-btn {
                    width: 100%;
                    margin: 6px 0;
                    padding: 12px 14px;
                    background: rgba(102, 126, 234, 0.2);
                    border: 1px solid rgba(102, 126, 234, 0.3);
                    border-radius: 10px;
                    color: white;
                    font-size: 0.9em;
                    cursor: pointer;
                    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
                    display: flex;
                    align-items: center;
                    gap: 8px;
                    font-family: inherit;
                }
                #helper-panel .action-btn:hover {
                    background: rgba(102, 126, 234, 0.3);
                    border-color: rgba(102, 126, 234, 0.5);
                    transform: translateY(-2px);
                    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
                }
                #helper-panel .btn-icon {
                    font-size: 1.1em;
                }
                #helper-panel .btn-text {
                    flex: 1;
                    text-align: left;
                }
                #helper-panel .btn-status {
                    font-size: 0.85em;
                    padding: 2px 8px;
                    background: rgba(255,255,255,0.1);
                    border-radius: 6px;
                    font-weight: 600;
                }
                #helper-panel #scaleDown:hover, #helper-panel #scaleUp:hover, #helper-panel #minimizeBtn:hover {
                    background: rgba(255,255,255,0.3);
                    transform: scale(1.1);
                }
                #panelContent::-webkit-scrollbar {
                    width: 8px;
                }
                #panelContent::-webkit-scrollbar-track {
                    background: rgba(255,255,255,0.05);
                    border-radius: 10px;
                }
                #panelContent::-webkit-scrollbar-thumb {
                    background: rgba(102, 126, 234, 0.5);
                    border-radius: 10px;
                }
                #panelContent::-webkit-scrollbar-thumb:hover {
                    background: rgba(102, 126, 234, 0.7);
                }
            </style>
        `;

        document.body.appendChild(panel);

        // Make panel draggable - only from drag handle
        let isDragging = false;
        let currentX;
        let currentY;
        let initialX;
        let initialY;
        let xOffset = 0;
        let yOffset = 0;

        const dragHandle = document.getElementById('dragHandle');
        dragHandle.addEventListener('mousedown', dragStart);
        document.addEventListener('mousemove', drag);
        document.addEventListener('mouseup', dragEnd);

        function dragStart(e) {
            // Only drag if clicking on the drag handle itself or the title
            if (e.target.tagName === 'BUTTON' || e.target.tagName === 'INPUT' || e.target.tagName === 'SELECT') {
                return;
            }
            
            initialX = e.clientX - xOffset;
            initialY = e.clientY - yOffset;
            isDragging = true;
            dragHandle.style.cursor = 'grabbing';
        }

        function drag(e) {
            if (isDragging) {
                e.preventDefault();
                currentX = e.clientX - initialX;
                currentY = e.clientY - initialY;

                xOffset = currentX;
                yOffset = currentY;

                setTranslate(currentX, currentY, panel);
            }
        }

        function dragEnd(e) {
            initialX = currentX;
            initialY = currentY;
            isDragging = false;
            dragHandle.style.cursor = 'move';
        }

        function setTranslate(xPos, yPos, el) {
            el.style.transform = `translate3d(${xPos}px, ${yPos}px, 0) scale(${currentScale})`;
        }

        // State variables
        let autoClickEnabled = false;
        let autoBuyEnabled = false;
        let autoGoldenEnabled = false;
        let infiniteMoneyEnabled = false;
        let uiHidden = false;
        let panelMinimized = false;
        let originalGoldenCookieClick = null;
        let currentScale = 1;
        let autoAscendEnabled = false;
        let autoSaveEnabled = false;
        let notifyGoldenEnabled = false;
        let notifyAchievEnabled = false;
        let clicksPerSecond = 20;
        let cpsMultiplierValue = 1;
        let clickMultiplierValue = 1;
        let goldenMultiplierValue = 1;
        let sessionStartTime = Date.now();
        let sessionCookiesStart = 0;
        let goldenClickCount = 0;
        let presetConfig = null;

        // Scale controls
        document.getElementById('scaleUp').addEventListener('click', function(e) {
            e.stopPropagation();
            currentScale = Math.min(currentScale + 0.1, 1.5);
            panel.style.transform = `scale(${currentScale})`;
        });

        document.getElementById('scaleDown').addEventListener('click', function(e) {
            e.stopPropagation();
            currentScale = Math.max(currentScale - 0.1, 0.6);
            panel.style.transform = `scale(${currentScale})`;
        });

        // Panel toggle (minimize/maximize)
        document.getElementById('minimizeBtn').addEventListener('click', function(e) {
            e.stopPropagation();
            panelMinimized = !panelMinimized;
            const content = document.getElementById('panelContent');
            content.style.display = panelMinimized ? 'none' : 'block';
            this.textContent = panelMinimized ? '+' : '−';
        });

        // Tab switching
        document.querySelectorAll('.tab-btn').forEach(btn => {
            btn.addEventListener('click', function() {
                const tabName = this.getAttribute('data-tab');
                
                // Update buttons
                document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
                this.classList.add('active');
                
                // Update content
                document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
                document.getElementById('tab-' + tabName).classList.add('active');
            });
        });

        // Click speed slider
        document.getElementById('clickSpeed').addEventListener('input', function() {
            clicksPerSecond = parseInt(this.value);
            document.getElementById('cpsValue').textContent = clicksPerSecond;
            
            // Restart auto-clicker if active
            if (autoClickEnabled) {
                clearInterval(clickInterval);
                clickInterval = setInterval(() => {
                    Game.ClickCookie();
                }, 1000 / clicksPerSecond);
            }
        });

        // CPS Multiplier
        document.getElementById('cpsMultiplier').addEventListener('input', function() {
            cpsMultiplierValue = parseInt(this.value);
            document.getElementById('cpsMultValue').textContent = cpsMultiplierValue;
        });

        // Click Power Multiplier
        document.getElementById('clickMultiplier').addEventListener('input', function() {
            clickMultiplierValue = parseInt(this.value);
            document.getElementById('clickMultValue').textContent = clickMultiplierValue;
        });

        // Golden Multiplier Slider
        document.getElementById('goldenMultiplier').addEventListener('input', function() {
            goldenMultiplierValue = parseInt(this.value);
            document.getElementById('goldenMultValue').textContent = goldenMultiplierValue;
            setupGoldenMultiplier();
        });

        // Panel Opacity
        document.getElementById('panelOpacity').addEventListener('input', function() {
            const opacity = parseInt(this.value) / 100;
            document.getElementById('opacityValue').textContent = this.value;
            panel.style.background = `linear-gradient(135deg, rgba(30, 30, 50, ${opacity}) 0%, rgba(20, 20, 35, ${opacity}) 100%)`;
        });

        // Theme Selector
        document.getElementById('themeSelect').addEventListener('change', function() {
            const theme = this.value;
            const header = panel.querySelector('div');
            const themes = {
                purple: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
                blue: 'linear-gradient(135deg, #2196F3 0%, #1976D2 100%)',
                green: 'linear-gradient(135deg, #4CAF50 0%, #388E3C 100%)',
                red: 'linear-gradient(135deg, #f44336 0%, #d32f2f 100%)',
                gold: 'linear-gradient(135deg, #FFD700 0%, #FFA500 100%)'
            };
            header.style.background = themes[theme] || themes.purple;
        });

        // Position Presets
        document.querySelectorAll('[data-position]').forEach(btn => {
            btn.addEventListener('click', function() {
                const pos = this.getAttribute('data-position');
                panel.style.transform = `scale(${currentScale})`;
                xOffset = 0;
                yOffset = 0;
                
                switch(pos) {
                    case 'top-right':
                        panel.style.top = '10px';
                        panel.style.right = '10px';
                        panel.style.bottom = 'auto';
                        panel.style.left = 'auto';
                        break;
                    case 'top-left':
                        panel.style.top = '10px';
                        panel.style.left = '10px';
                        panel.style.bottom = 'auto';
                        panel.style.right = 'auto';
                        break;
                    case 'bottom-right':
                        panel.style.bottom = '10px';
                        panel.style.right = '10px';
                        panel.style.top = 'auto';
                        panel.style.left = 'auto';
                        break;
                    case 'bottom-left':
                        panel.style.bottom = '10px';
                        panel.style.left = '10px';
                        panel.style.top = 'auto';
                        panel.style.right = 'auto';
                        break;
                }
            });
        });

        // Notification toggles
        document.getElementById('notifyGolden').addEventListener('click', function() {
            notifyGoldenEnabled = !notifyGoldenEnabled;
            this.setAttribute('data-active', notifyGoldenEnabled);
            this.querySelector('.btn-status').textContent = notifyGoldenEnabled ? 'ON' : 'OFF';
        });

        document.getElementById('notifyAchiev').addEventListener('click', function() {
            notifyAchievEnabled = !notifyAchievEnabled;
            this.setAttribute('data-active', notifyAchievEnabled);
            this.querySelector('.btn-status').textContent = notifyAchievEnabled ? 'ON' : 'OFF';
        });

        // Infinite money toggle
        let moneyInterval;
        document.getElementById('infiniteMoney').addEventListener('click', function() {
            infiniteMoneyEnabled = !infiniteMoneyEnabled;
            this.setAttribute('data-active', infiniteMoneyEnabled);
            this.querySelector('.btn-status').textContent = infiniteMoneyEnabled ? 'ON' : 'OFF';

            if (infiniteMoneyEnabled) {
                // Set to game's absolute maximum (1.8 nonillion)
                Game.cookies = 1.8e308;
                
                // Keep it at max constantly
                moneyInterval = setInterval(() => {
                    // Double check we're still enabled and game hasn't been wiped
                    if (infiniteMoneyEnabled && Game.ready && Game.cookies < 1.8e308) {
                        Game.cookies = 1.8e308;
                    } else if (!Game.ready || (Game.cookiesEarned === 0 && Game.cookies < 1.8e308)) {
                        // Game was wiped, stop the interval
                        infiniteMoneyEnabled = false;
                        clearInterval(moneyInterval);
                    }
                }, 10);
            } else {
                clearInterval(moneyInterval);
            }
        });

        // Monitor for game resets/wipes
        let freeBuildingsInterval;
        const originalHardReset = Game.HardReset;
        Game.HardReset = function(wipe) {
            // Turn off infinite money when wiping save
            if (infiniteMoneyEnabled && wipe) {
                infiniteMoneyEnabled = false;
                clearInterval(moneyInterval);
                const infiniteBtn = document.getElementById('infiniteMoney');
                if (infiniteBtn) {
                    infiniteBtn.setAttribute('data-active', 'false');
                    infiniteBtn.querySelector('.btn-status').textContent = 'OFF';
                }
            }
            // Turn off free buildings
            if (freeBuildingsEnabled && wipe) {
                freeBuildingsEnabled = false;
                clearInterval(freeBuildingsInterval);
                const freeBtn = document.getElementById('freeBuildings');
                if (freeBtn) {
                    freeBtn.setAttribute('data-active', 'false');
                    freeBtn.querySelector('.btn-status').textContent = 'OFF';
                }
            }
            return originalHardReset.call(this, wipe);
        };

        const originalReset = Game.Reset;
        Game.Reset = function(hard) {
            // Turn off infinite money on any reset
            if (infiniteMoneyEnabled) {
                infiniteMoneyEnabled = false;
                clearInterval(moneyInterval);
                const infiniteBtn = document.getElementById('infiniteMoney');
                if (infiniteBtn) {
                    infiniteBtn.setAttribute('data-active', 'false');
                    infiniteBtn.querySelector('.btn-status').textContent = 'OFF';
                }
            }
            // Turn off free buildings
            if (freeBuildingsEnabled) {
                freeBuildingsEnabled = false;
                clearInterval(freeBuildingsInterval);
                const freeBtn = document.getElementById('freeBuildings');
                if (freeBtn) {
                    freeBtn.setAttribute('data-active', 'false');
                    freeBtn.querySelector('.btn-status').textContent = 'OFF';
                }
            }
            return originalReset.call(this, hard);
        };

        // Golden cookie multiplier setup
        document.getElementById('goldenMultiplier').addEventListener('input', function() {
            setupGoldenMultiplier();
        });

        function setupGoldenMultiplier() {
            const multiplier = parseFloat(document.getElementById('goldenMultiplier').value) || 1;
            
            // Hook into the shimmer click to multiply golden cookie effects
            if (!originalGoldenCookieClick && Game.shimmerTypes && Game.shimmerTypes.golden) {
                originalGoldenCookieClick = Game.shimmerTypes.golden.popFunc;
                
                Game.shimmerTypes.golden.popFunc = function() {
                    const result = originalGoldenCookieClick.apply(this, arguments);
                    
                    // Multiply the cookie gain from golden cookies
                    if (this.wrath === 0) { // Regular golden cookie
                        const baseGain = Game.cookiesPs * 60 * 7; // Approximate base gain
                        const bonusGain = baseGain * (multiplier - 1);
                        if (bonusGain > 0) {
                            Game.Earn(bonusGain);
                        }
                    }
                    
                    return result;
                };
            }
        }

        // Add cookies button
        document.getElementById('addCookies').addEventListener('click', function() {
            const input = document.getElementById('cookieAmount');
            let amount = input.value.trim();
            
            // Parse different formats
            if (amount) {
                // Support abbreviations like 1M, 1B, 1T, etc.
                const multipliers = {
                    'k': 1000,                          // Thousand
                    'm': 1000000,                       // Million
                    'b': 1000000000,                    // Billion
                    't': 1000000000000,                 // Trillion
                    'q': 1000000000000000,              // Quadrillion
                    'qi': 1000000000000000,             // Quadrillion (alt)
                    'sx': 1000000000000000000,          // Sextillion
                    'sp': 1000000000000000000000,       // Septillion
                    'oc': 1000000000000000000000000,    // Octillion
                    'no': 1000000000000000000000000000, // Nonillion
                    'dc': 1e30,                         // Decillion
                    'ud': 1e33                          // Undecillion
                };
                
                // Check for multi-character abbreviations first
                let matched = false;
                for (let key in multipliers) {
                    if (amount.toLowerCase().endsWith(key)) {
                        const numPart = amount.slice(0, -key.length);
                        amount = parseFloat(numPart) * multipliers[key];
                        matched = true;
                        break;
                    }
                }
                
                if (!matched) {
                    amount = parseFloat(amount);
                }
                
                if (!isNaN(amount) && amount > 0) {
                    Game.Earn(amount);
                    Game.Notify('Cookies Added!', `Added ${Beautify(amount, 2)} cookies!`, [10, 0], 3);
                    input.value = '';
                } else {
                    Game.Notify('Invalid Amount', 'Please enter a valid number!', [0, 3], 3);
                }
            }
        });

        // Allow Enter key to add cookies
        document.getElementById('cookieAmount').addEventListener('keypress', function(e) {
            if (e.key === 'Enter') {
                document.getElementById('addCookies').click();
            }
        });

        // Hide game UI toggle
        document.getElementById('hideUI').addEventListener('click', function() {
            uiHidden = !uiHidden;
            this.setAttribute('data-active', uiHidden);
            this.querySelector('.btn-status').textContent = uiHidden ? 'ON' : 'OFF';

            const elementsToHide = [
                document.getElementById('game'),
                document.getElementById('topBar'),
                document.getElementById('prefsButton')
            ];

            elementsToHide.forEach(el => {
                if (el) {
                    el.style.display = uiHidden ? 'none' : '';
                }
            });

            // Show only the big cookie when UI is hidden
            const bigCookie = document.getElementById('bigCookie');
            if (bigCookie && uiHidden) {
                bigCookie.parentElement.style.display = 'block';
                bigCookie.parentElement.style.position = 'fixed';
                bigCookie.parentElement.style.left = '50%';
                bigCookie.parentElement.style.top = '50%';
                bigCookie.parentElement.style.transform = 'translate(-50%, -50%)';
            } else if (bigCookie) {
                bigCookie.parentElement.style.position = '';
                bigCookie.parentElement.style.left = '';
                bigCookie.parentElement.style.top = '';
                bigCookie.parentElement.style.transform = '';
            }
        });

        // Auto clicker
        let clickInterval;
        document.getElementById('autoClick').addEventListener('click', function() {
            autoClickEnabled = !autoClickEnabled;
            this.setAttribute('data-active', autoClickEnabled);
            this.querySelector('.btn-status').textContent = autoClickEnabled ? 'ON' : 'OFF';

            if (autoClickEnabled) {
                clickInterval = setInterval(() => {
                    Game.ClickCookie();
                }, 50); // Click 20 times per second
            } else {
                clearInterval(clickInterval);
            }
        });

        // Auto buyer - buys the most expensive building
        let buyInterval;
        document.getElementById('autoBuy').addEventListener('click', function() {
            autoBuyEnabled = !autoBuyEnabled;
            this.setAttribute('data-active', autoBuyEnabled);
            this.querySelector('.btn-status').textContent = autoBuyEnabled ? 'ON' : 'OFF';

            if (autoBuyEnabled) {
                buyInterval = setInterval(() => {
                    buyBestBuilding();
                    buyUpgrades();
                }, 100); // Changed from 1000ms to 100ms for 10x faster buying
            } else {
                clearInterval(buyInterval);
            }
        });

        // Auto golden cookie clicker
        let goldenInterval;
        document.getElementById('autoGolden').addEventListener('click', function() {
            autoGoldenEnabled = !autoGoldenEnabled;
            this.setAttribute('data-active', autoGoldenEnabled);
            this.querySelector('.btn-status').textContent = autoGoldenEnabled ? 'ON' : 'OFF';

            if (autoGoldenEnabled) {
                goldenInterval = setInterval(() => {
                    clickGoldenCookies();
                }, 100);
            } else {
                clearInterval(goldenInterval);
            }
        });

        // Auto Ascend
        let ascendInterval;
        document.getElementById('autoAscend').addEventListener('click', function() {
            autoAscendEnabled = !autoAscendEnabled;
            this.setAttribute('data-active', autoAscendEnabled);
            this.querySelector('.btn-status').textContent = autoAscendEnabled ? 'ON' : 'OFF';

            if (autoAscendEnabled) {
                ascendInterval = setInterval(() => {
                    if (Game.Ascend && Game.prestige && Game.prestige > Game.ascendMeterLevel + 100) {
                        Game.Ascend(1);
                        setTimeout(() => { if (Game.Reincarnate) Game.Reincarnate(1); }, 1000);
                    }
                }, 5000);
            } else {
                clearInterval(ascendInterval);
            }
        });

        // Auto Save
        let saveInterval;
        document.getElementById('autoSave').addEventListener('click', function() {
            autoSaveEnabled = !autoSaveEnabled;
            this.setAttribute('data-active', autoSaveEnabled);
            this.querySelector('.btn-status').textContent = autoSaveEnabled ? 'ON' : 'OFF';

            if (autoSaveEnabled) {
                saveInterval = setInterval(() => {
                    Game.SaveTo = 'main';
                    Game.save();
                    Game.Notify('Auto-Save', 'Game saved successfully!', [10, 0], 2);
                }, 300000); // 5 minutes
            } else {
                clearInterval(saveInterval);
            }
        });

        // Unlock All Upgrades
        document.getElementById('unlockUpgrades').addEventListener('click', function() {
            let count = 0;
            for (let i in Game.Upgrades) {
                if (!Game.Upgrades[i].bought && !Game.Upgrades[i].noPerm) {
                    Game.Upgrades[i].earn();
                    count++;
                }
            }
            Game.Notify('Upgrades Unlocked!', `Unlocked ${count} upgrades!`, [10, 0], 3);
        });

        // Unlock All Achievements
        document.getElementById('unlockAchievements').addEventListener('click', function() {
            let count = 0;
            for (let i in Game.Achievements) {
                if (!Game.Achievements[i].won) {
                    Game.Win(Game.Achievements[i].name);
                    count++;
                }
            }
            Game.Notify('Achievements Unlocked!', `Unlocked ${count} achievements!`, [10, 0], 3);
        });

        // Max All Buildings
        document.getElementById('maxBuildings').addEventListener('click', function() {
            let totalBought = 0;
            Game.ObjectsById.forEach(building => {
                const toBuy = 100;
                for (let i = 0; i < toBuy; i++) {
                    if (building.price <= Game.cookies) {
                        building.buy(1);
                        totalBought++;
                    }
                }
            });
            Game.Notify('Buildings Maxed!', `Bought ${totalBought} buildings!`, [10, 0], 3);
        });

        // Infinite Sugar Lumps
        document.getElementById('infiniteLumps').addEventListener('click', function() {
            Game.lumps = 999999;
            Game.Notify('Sugar Lumps', 'Set to 999,999 lumps!', [19, 27], 3);
        });

        // Change Season
        document.getElementById('changeSeason').addEventListener('click', function() {
            const season = document.getElementById('seasonSelect').value;
            if (season) {
                const seasonIds = {
                    christmas: 'christmas',
                    easter: 'easter',
                    halloween: 'halloween',
                    valentines: 'valentines'
                };
                
                if (Game.seasonTrigger) {
                    Game.season = seasonIds[season] || '';
                    Game.seasonTrigger();
                    Game.Notify('Season Changed!', `Now celebrating ${season}!`, [16, 6], 3);
                }
            }
        });

        // Save Preset
        document.getElementById('savePreset').addEventListener('click', function() {
            presetConfig = {
                autoClick: autoClickEnabled,
                autoBuy: autoBuyEnabled,
                autoGolden: autoGoldenEnabled,
                infiniteMoney: infiniteMoneyEnabled,
                autoAscend: autoAscendEnabled,
                autoSave: autoSaveEnabled,
                clickSpeed: clicksPerSecond,
                cpsMultiplier: cpsMultiplierValue,
                clickMultiplier: clickMultiplierValue,
                goldenMultiplier: goldenMultiplierValue
            };
            localStorage.setItem('cookieHelperPreset', JSON.stringify(presetConfig));
            Game.Notify('Preset Saved!', 'Configuration saved successfully!', [10, 0], 3);
        });

        // Load Preset
        document.getElementById('loadPreset').addEventListener('click', function() {
            const saved = localStorage.getItem('cookieHelperPreset');
            if (saved) {
                presetConfig = JSON.parse(saved);
                Game.Notify('Preset Loaded!', 'Configuration restored!', [10, 0], 3);
                
                // Apply settings (would need to trigger each button/slider)
                document.getElementById('clickSpeed').value = presetConfig.clickSpeed || 20;
                document.getElementById('cpsMultiplier').value = presetConfig.cpsMultiplier || 1;
                document.getElementById('clickMultiplier').value = presetConfig.clickMultiplier || 1;
                document.getElementById('goldenMultiplier').value = presetConfig.goldenMultiplier || 1;
            } else {
                Game.Notify('No Preset Found', 'Save a preset first!', [0, 3], 3);
            }
        });

        // Export Stats
        document.getElementById('exportStats').addEventListener('click', function() {
            const stats = {
                cookies: Game.cookies,
                cookiesEarned: Game.cookiesEarned,
                cps: Game.cookiesPs,
                buildings: {},
                prestige: Game.prestige || 0,
                achievements: Object.values(Game.Achievements).filter(a => a.won).length,
                sessionTime: Date.now() - sessionStartTime,
                sessionCookies: Game.cookies - sessionCookiesStart
            };
            
            Game.ObjectsById.forEach(b => {
                stats.buildings[b.name] = b.amount;
            });
            
            const dataStr = JSON.stringify(stats, null, 2);
            const dataBlob = new Blob([dataStr], {type: 'application/json'});
            const url = URL.createObjectURL(dataBlob);
            const link = document.createElement('a');
            link.href = url;
            link.download = 'cookie-clicker-stats.json';
            link.click();
            
            Game.Notify('Stats Exported!', 'Check your downloads!', [10, 0], 3);
        });

        // Fast buy button
        document.getElementById('fastBuy').addEventListener('click', function() {
            for (let i = 0; i < 10; i++) {
                buyBestBuilding();
            }
        });

        // Pop all wrinklers button
        document.getElementById('popWrinklers').addEventListener('click', function() {
            if (Game.wrinklers) {
                let popped = 0;
                Game.wrinklers.forEach(wrinkler => {
                    if (wrinkler.phase > 0) {
                        wrinkler.hp = 0;
                        popped++;
                    }
                });
                if (popped > 0) {
                    Game.Notify('Wrinklers Popped', `Popped ${popped} wrinkler(s)!`, [19, 8]);
                }
            }
        });

        // Ascend luck notification
        document.getElementById('ascendLuck').addEventListener('click', function() {
            if (typeof Game.ascensionMode !== 'undefined') {
                const luckTime = (Math.ceil(Game.fps*60*Math.random())/Game.fps)%60;
                const currentTime = ((Date.now()-Game.startDate)/1000)%60;
                const timeUntilLuck = luckTime - currentTime;
                
                Game.Notify('Ascension Luck Timer', 
                    `Lucky time is at ${Math.floor(luckTime)} seconds in the minute cycle.<br>` +
                    `Current time: ${Math.floor(currentTime)}s<br>` +
                    `Time until next lucky window: ${timeUntilLuck > 0 ? Math.floor(timeUntilLuck) : Math.floor(60 + timeUntilLuck)}s`, 
                    [18, 7], 10);
            } else {
                Game.Notify('Ascend Info', 'Ascension mechanics not yet unlocked!', [0, 7]);
            }
        });

        // Helper functions
        function buyBestBuilding() {
            let mostExpensiveBuilding = null;
            let highestPrice = 0;

            Game.ObjectsById.forEach(building => {
                if (building.price <= Game.cookies && building.price > highestPrice) {
                    highestPrice = building.price;
                    mostExpensiveBuilding = building;
                }
            });

            if (mostExpensiveBuilding) {
                mostExpensiveBuilding.buy(1);
            }
        }

        function buyUpgrades() {
            Game.UpgradesInStore.forEach(upgrade => {
                if (upgrade.canBuy() && upgrade.pool !== 'debug') {
                    upgrade.buy();
                }
            });
        }

        function clickGoldenCookies() {
            Game.shimmers.forEach(shimmer => {
                if (shimmer.type === 'golden' || shimmer.type === 'reindeer') {
                    shimmer.pop();
                    goldenClickCount++;
                    if (notifyGoldenEnabled) {
                        Game.Notify('Golden Cookie!', 'Auto-clicked!', [10, 0], 1);
                    }
                }
            });
        }

        function setupGoldenMultiplier() {
            const multiplier = goldenMultiplierValue;
            
            // Hook into the shimmer click to multiply golden cookie effects
            if (!originalGoldenCookieClick && Game.shimmerTypes && Game.shimmerTypes.golden) {
                originalGoldenCookieClick = Game.shimmerTypes.golden.popFunc;
                
                Game.shimmerTypes.golden.popFunc = function() {
                    const result = originalGoldenCookieClick.apply(this, arguments);
                    
                    // Multiply the cookie gain from golden cookies
                    if (this.wrath === 0) { // Regular golden cookie
                        const baseGain = Game.cookiesPs * 60 * 7; // Approximate base gain
                        const bonusGain = baseGain * (multiplier - 1);
                        if (bonusGain > 0) {
                            Game.Earn(bonusGain);
                        }
                    }
                    
                    return result;
                };
            }
        }

        // Apply multipliers to game
        setInterval(() => {
            // CPS Multiplier
            if (cpsMultiplierValue > 1) {
                const baseCps = Game.cookiesPs / cpsMultiplierValue;
                Game.cookiesPs = baseCps * cpsMultiplierValue;
            }
            
            // Click Power Multiplier
            if (clickMultiplierValue > 1 && Game.computedMouseCps) {
                Game.computedMouseCps *= clickMultiplierValue;
            }
        }, 100);

        // Update display
        setInterval(() => {
            // Basic stats
            document.getElementById('cpsDisplay').textContent = 
                Beautify(Game.cookiesPs, 1);
            document.getElementById('cookieDisplay').textContent = 
                Beautify(Game.cookies, 1);
            
            // Count total buildings
            let totalBuildings = 0;
            Game.ObjectsById.forEach(building => {
                totalBuildings += building.amount;
            });
            document.getElementById('buildingDisplay').textContent = totalBuildings;
            
            // Prestige
            if (document.getElementById('prestigeDisplay')) {
                document.getElementById('prestigeDisplay').textContent = 
                    Beautify(Game.prestige || 0, 0);
            }
            
            // Session stats
            if (document.getElementById('sessionTime')) {
                const elapsed = Math.floor((Date.now() - sessionStartTime) / 1000);
                const hours = Math.floor(elapsed / 3600);
                const minutes = Math.floor((elapsed % 3600) / 60);
                const seconds = elapsed % 60;
                document.getElementById('sessionTime').textContent = 
                    `${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
            }
            
            if (document.getElementById('sessionCookies')) {
                const sessionEarned = Game.cookies - sessionCookiesStart;
                // If negative (cookies were spent/lost), show 0 instead
                document.getElementById('sessionCookies').textContent = 
                    Beautify(Math.max(0, sessionEarned), 1);
            }
            
            if (document.getElementById('goldenClicks')) {
                document.getElementById('goldenClicks').textContent = goldenClickCount;
            }
            
            // Efficiency stats
            if (document.getElementById('bestBuilding')) {
                let best = null;
                let bestEfficiency = 0;
                
                Game.ObjectsById.forEach(building => {
                    if (building.price <= Game.cookies * 10) {
                        const efficiency = building.storedCps / building.price;
                        if (efficiency > bestEfficiency) {
                            bestEfficiency = efficiency;
                            best = building;
                        }
                    }
                });
                
                document.getElementById('bestBuilding').textContent = 
                    best ? best.name : '-';
            }
            
            if (document.getElementById('nextMilestone')) {
                const milestones = [1e6, 1e9, 1e12, 1e15, 1e18, 1e21, 1e24, 1e27, 1e30];
                const next = milestones.find(m => m > Game.cookies);
                document.getElementById('nextMilestone').textContent = 
                    next ? Beautify(next, 0) : 'MAX';
            }
            
            if (document.getElementById('timeToGoal')) {
                const milestones = [1e6, 1e9, 1e12, 1e15, 1e18, 1e21, 1e24, 1e27, 1e30];
                const next = milestones.find(m => m > Game.cookies);
                if (next && Game.cookiesPs > 0) {
                    const secondsToGoal = (next - Game.cookies) / Game.cookiesPs;
                    const hours = Math.floor(secondsToGoal / 3600);
                    const minutes = Math.floor((secondsToGoal % 3600) / 60);
                    document.getElementById('timeToGoal').textContent = 
                        hours > 0 ? `${hours}h ${minutes}m` : `${minutes}m`;
                } else {
                    document.getElementById('timeToGoal').textContent = '-';
                }
            }
        }, 1000);
        
        // Track session start cookies
        setTimeout(() => {
            sessionCookiesStart = Game.cookies || 0;
        }, 1000);

        // Beautify number function (game has this built-in)
        function Beautify(num, precision) {
            if (!precision) precision = 0;
            if (num < 1000) return Math.round(num);
            if (num < 1000000) return (Math.round(num/1000*Math.pow(10,precision))/Math.pow(10,precision)) + 'K';
            if (num < 1000000000) return (Math.round(num/1000000*Math.pow(10,precision))/Math.pow(10,precision)) + 'M';
            if (num < 1000000000000) return (Math.round(num/1000000000*Math.pow(10,precision))/Math.pow(10,precision)) + 'B';
            return (Math.round(num/1000000000000*Math.pow(10,precision))/Math.pow(10,precision)) + 'T';
        }

        // Initialize golden multiplier
        setupGoldenMultiplier();

        // Hotkeys
        document.addEventListener('keydown', function(e) {
            if (e.altKey) {
                switch(e.key.toLowerCase()) {
                    case 'c':
                        e.preventDefault();
                        document.getElementById('autoClick').click();
                        break;
                    case 'b':
                        e.preventDefault();
                        document.getElementById('autoBuy').click();
                        break;
                    case 'g':
                        e.preventDefault();
                        document.getElementById('autoGolden').click();
                        break;
                    case 'h':
                        e.preventDefault();
                        document.getElementById('hideUI').click();
                        break;
                    case 's':
                        e.preventDefault();
                        Game.save();
                        Game.Notify('Manual Save', 'Game saved!', [10, 0], 2);
                        break;
                }
            }
        });

        // === NEW FEATURES ===

        // Spawn Golden Cookie
        document.getElementById('spawnGolden').addEventListener('click', function() {
            const newShimmer = new Game.shimmer('golden');
            Game.Notify('Golden Cookie Spawned!', 'Click it quick!', [10, 0], 2);
        });

        // Spawn Reindeer
        document.getElementById('spawnReindeer').addEventListener('click', function() {
            const newShimmer = new Game.shimmer('reindeer');
            Game.Notify('Reindeer Spawned!', 'Click it quick!', [12, 9], 2);
        });

        // Spawn Max Wrinklers
        document.getElementById('spawnWrinklers').addEventListener('click', function() {
            for (let i = 0; i < Game.wrinklers.length; i++) {
                if (Game.wrinklers[i].phase === 0) {
                    Game.wrinklers[i].phase = 2;
                    Game.wrinklers[i].hp = 3;
                }
            }
            Game.Notify('Wrinklers Spawned!', 'Maximum wrinklers active!', [19, 8], 2);
        });

        // Free Buildings
        let freeBuildingsEnabled = false;
        let originalPrices = {};
        document.getElementById('freeBuildings').addEventListener('click', function() {
            freeBuildingsEnabled = !freeBuildingsEnabled;
            this.setAttribute('data-active', freeBuildingsEnabled);
            this.querySelector('.btn-status').textContent = freeBuildingsEnabled ? 'ON' : 'OFF';

            if (freeBuildingsEnabled) {
                // Store original prices and set to 0
                Game.ObjectsById.forEach((building, index) => {
                    originalPrices[index] = building.price;
                });
                
                // Intercept the buy function
                freeBuildingsInterval = setInterval(() => {
                    if (freeBuildingsEnabled) {
                        Game.ObjectsById.forEach(building => {
                            building.price = 0;
                        });
                    }
                }, 10);
                
                Game.Notify('Free Buildings!', 'All buildings now cost 0!', [10, 0], 2);
            } else {
                clearInterval(freeBuildingsInterval);
                // Restore original pricing calculation
                Game.ObjectsById.forEach(building => {
                    building.price = building.basePrice * Math.pow(Game.priceIncrease, Math.max(0, building.amount - building.free));
                });
            }
        });

        // Sell All Buildings
        document.getElementById('sellBuildings').addEventListener('click', function() {
            let totalSold = 0;
            Game.ObjectsById.forEach(building => {
                while (building.amount > 0) {
                    building.sell(1);
                    totalSold++;
                }
            });
            Game.Notify('Buildings Sold!', `Sold ${totalSold} buildings!`, [10, 0], 3);
        });

        // Buff Multiplier
        let buffMultiplierValue = 1;
        document.getElementById('buffMultiplier').addEventListener('input', function() {
            buffMultiplierValue = parseInt(this.value);
            document.getElementById('buffMultValue').textContent = buffMultiplierValue;
        });

        setInterval(() => {
            if (buffMultiplierValue > 1) {
                for (let i in Game.buffs) {
                    Game.buffs[i].time *= 1.01;
                }
            }
        }, 1000);

        // Game Speed
        document.getElementById('gameSpeed').addEventListener('input', function() {
            const speed = parseFloat(this.value);
            document.getElementById('gameSpeedValue').textContent = speed.toFixed(1);
            Game.fps = Math.round(30 * speed);
        });

        // Custom Goals
        let customGoal = 0;
        document.getElementById('setGoal').addEventListener('click', function() {
            const input = document.getElementById('goalAmount').value.trim();
            if (input) {
                const multipliers = {
                    'k': 1000, 'm': 1000000, 'b': 1000000000, 't': 1000000000000,
                    'q': 1000000000000000, 'qi': 1000000000000000, 'sx': 1000000000000000000,
                    'sp': 1000000000000000000000, 'oc': 1000000000000000000000000,
                    'no': 1000000000000000000000000000, 'dc': 1e30, 'ud': 1e33
                };
                
                let amount = input;
                for (let key in multipliers) {
                    if (amount.toLowerCase().endsWith(key)) {
                        amount = parseFloat(amount.slice(0, -key.length)) * multipliers[key];
                        break;
                    }
                }
                customGoal = parseFloat(amount);
                Game.Notify('Goal Set!', `Target: ${Beautify(customGoal, 2)} cookies!`, [10, 0], 3);
            }
        });

        setInterval(() => {
            if (customGoal > 0 && document.getElementById('goalProgress')) {
                const progress = (Game.cookies / customGoal * 100).toFixed(1);
                const remaining = customGoal - Game.cookies;
                const timeLeft = remaining / Game.cookiesPs;
                document.getElementById('goalProgress').innerHTML = `
                    Progress: ${progress}%<br>
                    Remaining: ${Beautify(remaining, 1)}<br>
                    Time: ${timeLeft > 3600 ? Math.floor(timeLeft/3600) + 'h' : Math.floor(timeLeft/60) + 'm'}
                `;
            }
        }, 1000);

        // Backup/Restore Save
        let backupSaveData = null;
        document.getElementById('backupSave').addEventListener('click', function() {
            backupSaveData = Game.WriteSave(1);
            localStorage.setItem('cookieHelperBackup', backupSaveData);
            Game.Notify('Backup Created!', 'Save backed up successfully!', [10, 0], 3);
        });

        document.getElementById('restoreSave').addEventListener('click', function() {
            const backup = localStorage.getItem('cookieHelperBackup');
            if (backup) {
                Game.LoadSave(backup);
                Game.Notify('Backup Restored!', 'Save restored successfully!', [10, 0], 3);
            } else {
                Game.Notify('No Backup Found!', 'Create a backup first!', [0, 3], 3);
            }
        });

        // Hide Notifications
        let hideNotificationsEnabled = false;
        let originalNotify = null;
        document.getElementById('hideNotifications').addEventListener('click', function() {
            hideNotificationsEnabled = !hideNotificationsEnabled;
            this.setAttribute('data-active', hideNotificationsEnabled);
            this.querySelector('.btn-status').textContent = hideNotificationsEnabled ? 'ON' : 'OFF';

            if (hideNotificationsEnabled && !originalNotify) {
                originalNotify = Game.Notify;
                Game.Notify = function() {};
            } else if (!hideNotificationsEnabled && originalNotify) {
                Game.Notify = originalNotify;
            }
        });

        // Mute All
        document.getElementById('muteAll').addEventListener('click', function() {
            const muted = Game.volume === 0;
            this.setAttribute('data-active', !muted);
            this.querySelector('.btn-status').textContent = !muted ? 'ON' : 'OFF';
            Game.volume = muted ? 1 : 0;
        });

        // Cheat Profiles
        document.getElementById('idleMode').addEventListener('click', function() {
            if (!autoClickEnabled) document.getElementById('autoClick').click();
            if (!autoBuyEnabled) document.getElementById('autoBuy').click();
            if (!autoGoldenEnabled) document.getElementById('autoGolden').click();
            if (!autoSaveEnabled) document.getElementById('autoSave').click();
            Game.Notify('Idle Mode!', 'All automation enabled!', [10, 0], 3);
        });

        document.getElementById('activeMode').addEventListener('click', function() {
            if (autoClickEnabled) document.getElementById('autoClick').click();
            if (!autoGoldenEnabled) document.getElementById('autoGolden').click();
            Game.Notify('Active Mode!', 'Manual clicking + assists!', [10, 0], 3);
        });

        document.getElementById('godMode').addEventListener('click', function() {
            if (!infiniteMoneyEnabled) document.getElementById('infiniteMoney').click();
            if (!freeBuildingsEnabled) document.getElementById('freeBuildings').click();
            document.getElementById('cpsMultiplier').value = 1000;
            document.getElementById('cpsMultValue').textContent = '1000';
            cpsMultiplierValue = 1000;
            document.getElementById('clickMultiplier').value = 1000;
            document.getElementById('clickMultValue').textContent = '1000';
            clickMultiplierValue = 1000;
            document.getElementById('goldenMultiplier').value = 1000;
            document.getElementById('goldenMultValue').textContent = '1000';
            goldenMultiplierValue = 1000;
            Game.Notify('GOD MODE!', 'UNLIMITED POWER!', [10, 0], 5);
        });

        // Minigame: Fill Magic
        document.getElementById('fillMagic').addEventListener('click', function() {
            if (Game.Objects['Wizard tower'].minigame) {
                Game.Objects['Wizard tower'].minigame.magic = Game.Objects['Wizard tower'].minigame.magicM;
                Game.Notify('Magic Filled!', 'Magic meter at maximum!', [10, 0], 2);
            } else {
                Game.Notify('Grimoire Not Unlocked!', 'Unlock the Wizard Tower minigame first!', [0, 3], 3);
            }
        });

        // Minigame: Harvest All
        document.getElementById('harvestAll').addEventListener('click', function() {
            if (Game.Objects['Farm'].minigame) {
                const garden = Game.Objects['Farm'].minigame;
                let harvested = 0;
                for (let y = 0; y < 6; y++) {
                    for (let x = 0; x < 6; x++) {
                        if (garden.plot[y][x][0] > 0) {
                            garden.harvest(x, y);
                            harvested++;
                        }
                    }
                }
                Game.Notify('Harvest Complete!', `Harvested ${harvested} plants!`, [10, 0], 3);
            } else {
                Game.Notify('Garden Not Unlocked!', 'Unlock the Farm minigame first!', [0, 3], 3);
            }
        });

        // Minigame: Optimize Pantheon
        document.getElementById('autoPantheon').addEventListener('click', function() {
            if (Game.Objects['Temple'].minigame) {
                const pantheon = Game.Objects['Temple'].minigame;
                
                // Best general-purpose god setup
                const optimalGods = {
                    0: 'godzamok',      // Diamond slot - Godzamok (sell buildings for power)
                    1: 'mokalsium',     // Ruby slot - Mokalsium (golden cookies)
                    2: 'holobore'       // Jade slot - Holobore (buildings production)
                };
                
                // Find and slot gods
                for (let slot in optimalGods) {
                    const godName = optimalGods[slot];
                    const god = pantheon.godsById.find(g => g.name.toLowerCase().includes(godName));
                    
                    if (god) {
                        pantheon.slotGod(god, parseInt(slot));
                    }
                }
                
                Game.Notify('Pantheon Optimized!', 'Best spirits slotted!', [10, 0], 3);
            } else {
                Game.Notify('Pantheon Not Unlocked!', 'Unlock the Temple minigame first!', [0, 3], 3);
            }
        });

        // Minigame Toggles (full implementations)
        let autoGardenEnabled = false;
        let autoGardenInterval;
        document.getElementById('autoGarden').addEventListener('click', function() {
            autoGardenEnabled = !autoGardenEnabled;
            this.setAttribute('data-active', autoGardenEnabled);
            this.querySelector('.btn-status').textContent = autoGardenEnabled ? 'ON' : 'OFF';
            
            if (autoGardenEnabled) {
                autoGardenInterval = setInterval(() => {
                    if (Game.Objects['Farm'].minigame) {
                        const garden = Game.Objects['Farm'].minigame;
                        
                        // Auto-harvest mature plants
                        for (let y = 0; y < 6; y++) {
                            for (let x = 0; x < 6; x++) {
                                const tile = garden.plot[y][x];
                                if (tile[0] >= 1) { // Has a plant
                                    const plant = garden.plantsById[tile[0] - 1];
                                    const age = tile[1];
                                    if (plant && age >= plant.mature) {
                                        garden.harvest(x, y);
                                    }
                                }
                            }
                        }
                        
                        // Auto-plant profitable crops in empty spots
                        const bestPlants = ['queenbeet', 'duketater', 'drowsyfern'];
                        for (let y = 0; y < 6; y++) {
                            for (let x = 0; x < 6; x++) {
                                if (garden.plot[y][x][0] === 0) { // Empty spot
                                    for (let plantName of bestPlants) {
                                        const plant = garden.plantsById.find(p => p.key === plantName);
                                        if (plant && garden.plantsUnlocked[plant.id]) {
                                            garden.clickTile(x, y);
                                            if (garden.seedSelected === plant.id) {
                                                garden.clickTile(x, y);
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }, 5000); // Check every 5 seconds
                Game.Notify('Auto Garden', 'Enabled! Auto-harvesting and planting!', [10, 0], 2);
            } else {
                clearInterval(autoGardenInterval);
                Game.Notify('Auto Garden', 'Disabled!', [10, 0], 2);
            }
        });

        let autoGrimoireEnabled = false;
        let autoGrimoireInterval;
        document.getElementById('autoGrimoire').addEventListener('click', function() {
            autoGrimoireEnabled = !autoGrimoireEnabled;
            this.setAttribute('data-active', autoGrimoireEnabled);
            this.querySelector('.btn-status').textContent = autoGrimoireEnabled ? 'ON' : 'OFF';
            
            if (autoGrimoireEnabled) {
                autoGrimoireInterval = setInterval(() => {
                    if (Game.Objects['Wizard tower'].minigame) {
                        const grimoire = Game.Objects['Wizard tower'].minigame;
                        const magic = grimoire.magic;
                        const maxMagic = grimoire.magicM;
                        
                        // Cast best spell when we have enough magic
                        if (magic >= maxMagic * 0.9) { // 90% or more magic
                            // Priority: Force the Hand of Fate > Gambler's Fever Dream
                            if (grimoire.spells['hand of fate'] && grimoire.spells['hand of fate'].costM <= magic) {
                                grimoire.castSpell(grimoire.spells['hand of fate']);
                            } else if (grimoire.spells['gambler\'s fever dream'] && grimoire.spells['gambler\'s fever dream'].costM <= magic) {
                                grimoire.castSpell(grimoire.spells['gambler\'s fever dream']);
                            } else if (grimoire.spells['spontaneous edifice'] && grimoire.spells['spontaneous edifice'].costM <= magic) {
                                grimoire.castSpell(grimoire.spells['spontaneous edifice']);
                            }
                        }
                    }
                }, 10000); // Check every 10 seconds
                Game.Notify('Auto Grimoire', 'Enabled! Auto-casting spells!', [10, 0], 2);
            } else {
                clearInterval(autoGrimoireInterval);
                Game.Notify('Auto Grimoire', 'Disabled!', [10, 0], 2);
            }
        });

        let autoStockEnabled = false;
        let autoStockInterval;
        let stockHistory = {};
        document.getElementById('autoStock').addEventListener('click', function() {
            autoStockEnabled = !autoStockEnabled;
            this.setAttribute('data-active', autoStockEnabled);
            this.querySelector('.btn-status').textContent = autoStockEnabled ? 'ON' : 'OFF';
            
            if (autoStockEnabled) {
                autoStockInterval = setInterval(() => {
                    if (Game.Objects['Bank'].minigame) {
                        const market = Game.Objects['Bank'].minigame;
                        
                        // Trade each stock
                        for (let i = 0; i < market.goods.length; i++) {
                            const good = market.goods[i];
                            const price = good.val;
                            const stockId = good.id;
                            
                            // Initialize history
                            if (!stockHistory[stockId]) {
                                stockHistory[stockId] = [];
                            }
                            stockHistory[stockId].push(price);
                            
                            // Keep only last 10 prices
                            if (stockHistory[stockId].length > 10) {
                                stockHistory[stockId].shift();
                            }
                            
                            if (stockHistory[stockId].length >= 5) {
                                const avgPrice = stockHistory[stockId].reduce((a, b) => a + b) / stockHistory[stockId].length;
                                
                                // Buy if price is significantly below average and we have money
                                if (price < avgPrice * 0.7 && Game.cookies > good.val * 100) {
                                    market.buyGood(i, 10); // Buy 10
                                }
                                
                                // Sell if price is significantly above average and we own some
                                if (price > avgPrice * 1.3 && good.stock > 0) {
                                    market.sellGood(i, Math.min(10, good.stock)); // Sell up to 10
                                }
                            }
                        }
                    }
                }, 30000); // Check every 30 seconds
                Game.Notify('Auto Stock', 'Enabled! Auto-trading stocks!', [10, 0], 2);
            } else {
                clearInterval(autoStockInterval);
                stockHistory = {};
                Game.Notify('Auto Stock', 'Disabled!', [10, 0], 2);
            }
        });
    }

    // Start the script
    waitForGame();
})();