"use strict"; const canvas = document.getElementById("gameCanvas"); const ctx = canvas.getContext("2d"); const ui = { pauseBtn: document.getElementById("pauseBtn"), speedBtn: document.getElementById("speedBtn"), topMenu: document.getElementById("topMenu"), topMenuBtn: document.getElementById("topMenuBtn"), topMenuPanel: document.getElementById("topMenuPanel"), ecologyBtn: document.getElementById("ecologyBtn"), soundBtn: document.getElementById("soundBtn"), soundMenu: document.getElementById("soundMenu"), soundPanel: document.getElementById("soundPanel"), soundMasterToggle: document.getElementById("soundMasterToggle"), creditsBtn: document.getElementById("creditsBtn"), saveBtn: document.getElementById("saveBtn"), visualSettingsBtn: document.getElementById("visualSettingsBtn"), visualSettingsMenu: document.getElementById("visualSettingsMenu"), visualSettingsPanel: document.getElementById("visualSettingsPanel"), resetBtn: document.getElementById("resetBtn"), creditsDialog: document.getElementById("creditsDialog"), creditsCloseBtn: document.getElementById("creditsCloseBtn"), panel: document.querySelector(".panel"), panelQuickTabs: document.getElementById("panelQuickTabs"), toolPalette: document.getElementById("toolPalette"), toolCard: document.getElementById("toolCard"), selectedCard: document.getElementById("selectedCard"), selectedCloseBtn: document.getElementById("selectedCloseBtn"), colonyChartTabs: document.getElementById("colonyChartTabs"), selectedInfo: document.getElementById("selectedInfo"), log: document.getElementById("log"), logPushControls: document.getElementById("logPushControls"), logPushEnabled: document.getElementById("logPushEnabled"), logPushOverlay: document.getElementById("logPushOverlay"), mobileModeControls: document.getElementById("mobileModeControls"), mobileRotateControls: document.getElementById("mobileRotateControls"), backToGameBtn: document.getElementById("backToGameBtn"), soundCategoryControls: document.getElementById("soundPanel"), toast: document.getElementById("toast"), statSick: document.getElementById("statSick"), statJuvenile: document.getElementById("statJuvenile"), statElder: document.getElementById("statElder"), statColonyMood: document.getElementById("statColonyMood"), temperatureValue: document.getElementById("temperatureValue"), temperatureSlider: document.getElementById("temperatureSlider"), temperatureAutoToggle: document.getElementById("temperatureAutoToggle"), tarinaiPopulationLimitSlider: document.getElementById("tarinaiPopulationLimitSlider"), tarinaiPopulationLimitInput: document.getElementById("tarinaiPopulationLimitInput"), objectLimitSlider: document.getElementById("objectLimitSlider"), objectLimitInput: document.getElementById("objectLimitInput"), colonyLimitStatus: document.getElementById("colonyLimitStatus"), statGroundType: document.getElementById("statGroundType"), groundTypeBtn: document.getElementById("groundTypeBtn"), colonyChart: document.getElementById("colonyChart"), colonyChartLegend: document.getElementById("colonyChartLegend"), archiveContent: document.getElementById("archiveContent"), archiveUpdateToggleBtn: document.getElementById("archiveUpdateToggleBtn"), archiveResetBtn: document.getElementById("archiveResetBtn"), archiveResetDialog: document.getElementById("archiveResetDialog"), archiveResetCancelBtn: document.getElementById("archiveResetCancelBtn"), archiveResetConfirmBtn: document.getElementById("archiveResetConfirmBtn"), fieldDialog: document.getElementById("fieldDialog"), fieldCancelBtn: document.getElementById("fieldCancelBtn"), fieldConfirmBtn: document.getElementById("fieldConfirmBtn"), ecologyDialog: document.getElementById("ecologyDialog"), ecologyGrid: document.getElementById("ecologyGrid"), ecologyCloseBtn: document.getElementById("ecologyCloseBtn"), }; const uiCache = { stats: {}, selectedSnapshot: "", selectedEmpty: false, showSelectedEmpty: false, selectedCollapsedCategories: new Set(), logPushEnabled: false, logPushKinds: new Set(["death", "accident", "birth"]), archiveUpdateEnabled: false, resetFieldType: "garden", resetPreset: "default", toolButtons: [], archiveVersion: "", archiveFamilyVersion: null, archiveHtmlCache: new Map(), archiveRenderTimer: 0, archiveRenderForce: false, archiveRenderRunning: false, archiveScheduled: false, archivePendingOffscreen: false, archivePendingDirtyAfterRun: false, archiveLastHiddenCheckAt: -Infinity, archiveLastRenderedAt: 0, deferArchiveUntil: 0, chartHistory: [], chartBucketStart: -Infinity, chartBucketEnd: -Infinity, chartBucketAccum: null, chartBirthEventSeen: null, chartDeathEventSeen: null, lastChartDraw: "", chartMode: "population", chartHiddenSeries: new Set(["ants"]), canvasDpr: 0, panning: false, panLastX: 0, panLastY: 0, panMoved: false, grabbing: false, grabTarget: null, grabKind: "", grabMoved: false, grabStartX: 0, grabStartY: 0, grabLastWorldX: 0, grabLastWorldY: 0, grabLastSpatialAt: 0, mobileInputMode: window.TarinaiInputMode.currentMode || "auto", touchMode: "", touchMoved: false, touchStartX: 0, touchStartY: 0, touchLastX: 0, touchLastY: 0, pinchStartDistance: 0, pinchStartZoom: 1, pinchLastCenterX: 0, pinchLastCenterY: 0, };