MissionChief Map Command Toolkit

MissionChief operational map command centre.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         MissionChief Map Command Toolkit
// @namespace    https://github.com/Conroy1988/missionchief-map-command-toolkit
// @version      7.0.1
// @description  MissionChief operational map command centre.
// @author       Conroy1988
// @license      MIT
// @match        *://missionchief.co.uk/*
// @match        *://www.missionchief.co.uk/*
// @match        *://*.missionchief.co.uk/*
// @match        *://missionchief.com/*
// @match        *://www.missionchief.com/*
// @match        *://*.missionchief.com/*
// @match        *://leitstellenspiel.de/*
// @match        *://www.leitstellenspiel.de/*
// @match        *://*.leitstellenspiel.de/*
// @match        *://meldkamerspel.com/*
// @match        *://www.meldkamerspel.com/*
// @match        *://*.meldkamerspel.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @grant        unsafeWindow
// @connect      discord.com
// @connect      discordapp.com
// @connect      raw.githubusercontent.com
// @run-at       document-start
// ==/UserScript==

/*
MIT License

Copyright (c) 2026 Conroy1988

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files, 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.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
*/

(function () {
    'use strict';
    const pageWindow = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;
    const ALLIANCE_BUILDINGS_PATH_PATTERN = /\/(?:verband\/(?:gebauede|gebaeude|gebäude)|alliance(?:\/|_)(?:buildings|buildings_list))(?:\/|$)/iu;
    const ALLIANCE_BUILDINGS_STORAGE_KEY = 'mc_map_command_toolkit_state_v150';
    const ALLIANCE_BUILDINGS_EARLY_STYLE_ID = 'mcms-alliance-buildings-map-early-style';
    const ALLIANCE_BUILDINGS_SUPPRESSED_LAYER = Symbol('mcmsAllianceBuildingsSuppressedLayer');
    const ALLIANCE_BUILDINGS_SUPPRESSED_MAP = Symbol('mcmsAllianceBuildingsSuppressedMap');
    const protectedAllianceLeafletLibraries = new Set();
    const allianceLeafletGuardRecords = new WeakMap();
    let allianceBuildingsEarlyCheckQueued = false;
    let allianceBuildingsContextWatcherInstalled = false;
    let allianceBuildingsSuppressionActive = false;
    let allianceBuildingsHadActiveContext = false;
    let allianceLeafletAssignmentRestore = null;
    let allianceSuppressedIcon = null;
    function decodedPathname(pathname = location.pathname) {
        const value = String(pathname || '');
        try { return decodeURIComponent(value); } catch (err) { return value; }
    }
    function isAllianceBuildingsPath(pathname = location.pathname) {
        return ALLIANCE_BUILDINGS_PATH_PATTERN.test(decodedPathname(pathname));
    }
    function isActiveAllianceContextElement(element) {
        if (!element?.isConnected) return false;
        if (element.hidden || element.getAttribute?.('aria-hidden') === 'true') return false;
        let current = element;
        for (let depth = 0; current && current !== document.documentElement && depth < 8; depth += 1, current = current.parentElement) {
        if (current.hidden || current.getAttribute?.('aria-hidden') === 'true') return false;
        try {
            const style = pageWindow.getComputedStyle?.(current);
            if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse') return false;
        } catch (err) {}
        }
        try {
        const rect = element.getBoundingClientRect?.();
        if (rect && (rect.width > 1 || rect.height > 1)) return true;
        if (element.getClientRects?.().length) return true;
        } catch (err) {}
        return isAllianceBuildingsPath();
    }
    function allianceBuildingsTables() {
        return Array.from(document.querySelectorAll?.('table') || []).filter(table => {
        if (!isActiveAllianceContextElement(table)) return false;
        const buildingLinks = table.querySelectorAll?.('a[href*="/buildings/"]')?.length || 0;
        if (buildingLinks < 3) return false;
        const trainingActions = table.querySelectorAll?.('a.btn-success[href*="/buildings/"], button.btn-success, input.btn-success')?.length || 0;
        const allianceNavigationLinks = document.querySelectorAll?.('a[href*="/verband/"], a[href*="/alliance/"]')?.length || 0;
        return trainingActions >= 1 || (allianceNavigationLinks >= 3 && buildingLinks >= 8);
        });
    }
    function hasAllianceBuildingsDomContext() {
        const explicitMaps = Array.from(document.querySelectorAll?.('#verband-gebauede-map, #verband-gebaeude-map, [id*="gebauede"][id*="map"], [id*="gebaeude"][id*="map"]') || []);
        if (explicitMaps.some(isActiveAllianceContextElement)) return true;
        return allianceBuildingsTables().length > 0;
    }
    function isAllianceBuildingsContext() {
        return isAllianceBuildingsPath() || hasAllianceBuildingsDomContext();
    }
    function resolveAllianceMapContainer(target) {
        if (typeof target === 'string') return document.getElementById?.(target) || null;
        return target?.nodeType === 1 ? target : null;
    }
    function isAllianceBuildingsMapTarget(target) {
        const container = resolveAllianceMapContainer(target);
        if (isAllianceBuildingsPath()) return true;
        if (!container) return false;
        if (['verband-gebauede-map', 'verband-gebaeude-map'].includes(container.id)) return true;
        if (/(?:gebauede|gebaeude)/i.test(container.id || '') && /map/i.test(container.id || '')) return true;
        const row = container.closest?.('.row') || container.parentElement?.parentElement;
        const table = row?.querySelector?.('table') || null;
        if (!table || !isActiveAllianceContextElement(table)) return false;
        const buildingLinks = table.querySelectorAll?.('a[href*="/buildings/"]')?.length || 0;
        const trainingActions = table.querySelectorAll?.('a.btn-success[href*="/buildings/"], button.btn-success, input.btn-success')?.length || 0;
        return buildingLinks >= 3 && trainingActions >= 1;
    }
    function readAllianceBuildingsMapPreferenceEarly() {
        try {
        const raw = localStorage.getItem(ALLIANCE_BUILDINGS_STORAGE_KEY);
        if (!raw) return true;
        const parsed = JSON.parse(raw);
        return parsed?.allianceBuildingsMap !== false;
        } catch (err) {
        return true;
        }
    }
    function installAllianceBuildingsEarlyStyle() {
        if (document.getElementById(ALLIANCE_BUILDINGS_EARLY_STYLE_ID)) return;
        const style = document.createElement('style');
        style.id = ALLIANCE_BUILDINGS_EARLY_STYLE_ID;
        style.textContent = `
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] #map,
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] #map_outer,
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] #verband-gebauede-map,
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] #verband-gebaeude-map,
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] [id*="gebauede"][id*="map"],
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] [id*="gebaeude"][id*="map"],
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] .leaflet-container {
                display: none !important;
                visibility: hidden !important;
                opacity: 0 !important;
                pointer-events: none !important;
            }
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] [data-mcms-alliance-map-column="true"] {
                display: none !important;
            }
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] [data-mcms-alliance-list-column="true"] {
                width: 100% !important;
                max-width: 100% !important;
                flex: 0 0 100% !important;
                float: none !important;
                margin-left: 0 !important;
                contain: layout style paint;
            }
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] table[data-mcms-alliance-courses-table="true"] {
                width: 100% !important;
                table-layout: fixed !important;
            }
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] table[data-mcms-alliance-courses-table="true"] th:first-child,
            html[data-mcms-alliance-buildings-page="true"][data-mcms-alliance-buildings-map="disabled"] table[data-mcms-alliance-courses-table="true"] td:first-child {
                display: none !important;
            }
        `;
        const parent = document.head || document.documentElement;
        if (parent) parent.appendChild(style);
        else document.addEventListener('readystatechange', () => (document.head || document.documentElement)?.appendChild(style), { once: true });
    }
    function createSuppressedAllianceLayer() {
        const layer = {
        [ALLIANCE_BUILDINGS_SUPPRESSED_LAYER]: true,
        addTo() { return this; },
        remove() { return this; },
        bindTooltip() { return this; },
        bindPopup() { return this; },
        openTooltip() { return this; },
        closeTooltip() { return this; },
        on() { return this; },
        off() { return this; },
        once() { return this; },
        setOpacity() { return this; },
        setZIndex() { return this; },
        bringToFront() { return this; },
        bringToBack() { return this; }
        };
        return layer;
    }
    function shouldSuppressAllianceFactory() {
        return !readAllianceBuildingsMapPreferenceEarly() && allianceBuildingsSuppressionActive && isAllianceBuildingsContext();
    }
    function protectAllianceBuildingsLeaflet(Library) {
        if (!Library || protectedAllianceLeafletLibraries.has(Library)) return;
        if (!Library.Map?.prototype || typeof Library.marker !== 'function') return;
        const record = { factories: new Map(), factoryGuards: new Map(), mapInitialize: null, mapInitializeGuard: null, mapAddLayer: null, mapAddLayerGuard: null };
        allianceLeafletGuardRecords.set(Library, record);
        protectedAllianceLeafletLibraries.add(Library);
        const guardFactory = (factoryName, strategy = 'tag') => {
        const original = Library[factoryName];
        if (typeof original !== 'function') return;
        record.factories.set(factoryName, original);
        const guarded = function (...args) {
            if (shouldSuppressAllianceFactory()) {
                if (strategy === 'noop') return createSuppressedAllianceLayer();
                if (strategy === 'icon') {
                    allianceSuppressedIcon ||= { options: { ...(args[0] || {}) }, __mcmsAllianceSuppressedIcon: true };
                    return allianceSuppressedIcon;
                }
            }
            const layer = original.apply(this, args);
            if (shouldSuppressAllianceFactory() && layer) {
                try { layer[ALLIANCE_BUILDINGS_SUPPRESSED_LAYER] = true; } catch (err) {}
                if (strategy === 'marker') {
                    try { layer.bindTooltip = function () { return this; }; } catch (err) {}
                    try { layer.bindPopup = function () { return this; }; } catch (err) {}
                    try { layer.on = function () { return this; }; } catch (err) {}
                    try { layer.once = function () { return this; }; } catch (err) {}
                }
            }
            return layer;
        };
        try { Object.assign(guarded, original); } catch (err) {}
        try { Object.setPrototypeOf(guarded, Object.getPrototypeOf(original)); } catch (err) {}
        record.factoryGuards.set(factoryName, guarded);
        Library[factoryName] = guarded;
        };
        guardFactory('icon', 'icon');
        guardFactory('marker', 'marker');
        guardFactory('circleMarker', 'marker');
        guardFactory('tileLayer', 'noop');
        guardFactory('imageOverlay', 'noop');
        const mapPrototype = Library.Map.prototype;
        const originalInitialize = mapPrototype.initialize;
        if (typeof originalInitialize === 'function') {
        record.mapInitialize = originalInitialize;
        const guardedInitialize = function (target, options) {
            const result = originalInitialize.call(this, target, options);
            if (!readAllianceBuildingsMapPreferenceEarly() && isAllianceBuildingsMapTarget(target)) {
                try { this[ALLIANCE_BUILDINGS_SUPPRESSED_MAP] = true; } catch (err) {}
                allianceBuildingsSuppressionActive = true;
                allianceBuildingsHadActiveContext = true;
                document.documentElement?.setAttribute('data-mcms-alliance-buildings-page', 'true');
                document.documentElement?.setAttribute('data-mcms-alliance-buildings-map', 'disabled');
                installAllianceBuildingsEarlyStyle();
                queueAllianceBuildingsEarlyCheck();
            }
            return result;
        };
        record.mapInitializeGuard = guardedInitialize;
        mapPrototype.initialize = guardedInitialize;
        }
        const originalAddLayer = mapPrototype.addLayer;
        if (typeof originalAddLayer === 'function') {
        record.mapAddLayer = originalAddLayer;
        const guardedAddLayer = function (layer) {
            if (this?.[ALLIANCE_BUILDINGS_SUPPRESSED_MAP] || layer?.[ALLIANCE_BUILDINGS_SUPPRESSED_LAYER]) return this;
            return originalAddLayer.call(this, layer);
        };
        record.mapAddLayerGuard = guardedAddLayer;
        mapPrototype.addLayer = guardedAddLayer;
        }
    }
    function restoreAllianceBuildingsLeafletGuards() {
        for (const Library of Array.from(protectedAllianceLeafletLibraries)) {
        const record = allianceLeafletGuardRecords.get(Library);
        if (!record) continue;
        for (const [factoryName, original] of record.factories) {
            try {
                if (Library[factoryName] === record.factoryGuards.get(factoryName)) Library[factoryName] = original;
            } catch (err) {}
        }
        try {
            if (record.mapInitialize && Library.Map.prototype.initialize === record.mapInitializeGuard) Library.Map.prototype.initialize = record.mapInitialize;
            if (record.mapAddLayer && Library.Map.prototype.addLayer === record.mapAddLayerGuard) Library.Map.prototype.addLayer = record.mapAddLayer;
        } catch (err) {}
        protectedAllianceLeafletLibraries.delete(Library);
        }
        allianceSuppressedIcon = null;
    }
    function installAllianceBuildingsLeafletAssignmentGuard() {
        try { protectAllianceBuildingsLeaflet(pageWindow.L); } catch (err) {}
        if (allianceLeafletAssignmentRestore) return;
        const descriptor = Object.getOwnPropertyDescriptor(pageWindow, 'L');
        if (descriptor && !descriptor.configurable) return;
        let leafletValue;
        try { leafletValue = pageWindow.L; } catch (err) { leafletValue = undefined; }
        try {
        Object.defineProperty(pageWindow, 'L', {
            configurable: true,
            enumerable: descriptor?.enumerable ?? true,
            get() { return leafletValue; },
            set(value) {
                leafletValue = value;
                protectAllianceBuildingsLeaflet(value);
            }
        });
        allianceLeafletAssignmentRestore = () => {
            try {
                Object.defineProperty(pageWindow, 'L', {
                    configurable: true,
                    enumerable: descriptor?.enumerable ?? true,
                    writable: true,
                    value: leafletValue
                });
            } catch (err) {}
            allianceLeafletAssignmentRestore = null;
        };
        } catch (err) {}
    }
    function findAllianceBuildingsMapElementEarly() {
        const candidates = Array.from(document.querySelectorAll?.('#verband-gebauede-map, #verband-gebaeude-map, #map, #map_outer .leaflet-container, [id*="gebauede"][id*="map"], [id*="gebaeude"][id*="map"], .leaflet-container') || []);
        return candidates.find(element => {
        if (!element) return false;
        if (['verband-gebauede-map', 'verband-gebaeude-map'].includes(element.id)) return true;
        const row = element.closest?.('.row') || element.parentElement?.parentElement;
        const nearbyTable = row?.querySelector?.('table');
        return Boolean(isAllianceBuildingsPath() || (nearbyTable && isActiveAllianceContextElement(nearbyTable) && nearbyTable.querySelector('a[href*="/buildings/"]')));
        }) || null;
    }
    function markAllianceBuildingsColumnsEarly(mapElement) {
        if (!mapElement) return;
        let mapColumn = mapElement;
        for (let depth = 0; mapColumn && mapColumn !== document.body && depth < 8; depth += 1, mapColumn = mapColumn.parentElement) {
        if (/\bcol-(?:xs|sm|md|lg|xl|xxl)-\d+\b/u.test(String(mapColumn.className || ''))) break;
        }
        if (!mapColumn || mapColumn === document.body) mapColumn = mapElement.parentElement;
        mapColumn?.setAttribute?.('data-mcms-alliance-map-column', 'true');
        const row = mapColumn?.parentElement;
        const listColumn = Array.from(row?.children || []).find(child => child !== mapColumn && child.querySelector?.('table'));
        listColumn?.setAttribute?.('data-mcms-alliance-list-column', 'true');
    }
    function optimiseAllianceBuildingsCourseTableEarly() {
        for (const table of allianceBuildingsTables()) {
        table.setAttribute('data-mcms-alliance-courses-table', 'true');
        table.querySelectorAll('img').forEach(image => {
            image.loading = 'lazy';
            image.decoding = 'async';
            try { image.fetchPriority = 'low'; } catch (err) {}
        });
        }
    }
    function repairVisibleMissionChiefMapAfterAllianceExit() {
        if (!allianceBuildingsHadActiveContext) return;
        allianceBuildingsHadActiveContext = false;
        for (const delay of [0, 120, 500, 1100]) {
        pageWindow.setTimeout(() => {
            if (isAllianceBuildingsContext()) return;
            try {
                cachedMap = null;
                cachedMapElement = null;
                mapDiscoveryLastAttempt = 0;
            } catch (err) {}
            try {
                const map = typeof findLeafletMapInstance === 'function' ? findLeafletMapInstance(false) : null;
                map?.invalidateSize?.({ pan: false, animate: false });
            } catch (err) {}
            try { pageWindow.dispatchEvent(new Event('resize')); } catch (err) {}
        }, delay);
        }
    }
    function clearAllianceBuildingsEarlyContext({ restoreLeaflet = true } = {}) {
        const root = document.documentElement;
        const hadContext = allianceBuildingsSuppressionActive || root?.getAttribute('data-mcms-alliance-buildings-page') === 'true';
        allianceBuildingsSuppressionActive = false;
        root?.removeAttribute('data-mcms-alliance-buildings-page');
        document.querySelectorAll?.('[data-mcms-alliance-map-column], [data-mcms-alliance-list-column]')?.forEach(element => {
        element.removeAttribute('data-mcms-alliance-map-column');
        element.removeAttribute('data-mcms-alliance-list-column');
        });
        document.querySelectorAll?.('[data-mcms-alliance-courses-table]')?.forEach(table => table.removeAttribute('data-mcms-alliance-courses-table'));
        if (restoreLeaflet) {
        restoreAllianceBuildingsLeafletGuards();
        allianceLeafletAssignmentRestore?.();
        }
        if (hadContext) repairVisibleMissionChiefMapAfterAllianceExit();
    }
    function applyAllianceBuildingsEarlySuppression() {
        if (readAllianceBuildingsMapPreferenceEarly()) {
        clearAllianceBuildingsEarlyContext();
        return false;
        }
        if (!isAllianceBuildingsContext()) {
        clearAllianceBuildingsEarlyContext();
        return false;
        }
        allianceBuildingsSuppressionActive = true;
        allianceBuildingsHadActiveContext = true;
        installAllianceBuildingsLeafletAssignmentGuard();
        document.documentElement?.setAttribute('data-mcms-alliance-buildings-page', 'true');
        document.documentElement?.setAttribute('data-mcms-alliance-buildings-map', 'disabled');
        installAllianceBuildingsEarlyStyle();
        markAllianceBuildingsColumnsEarly(findAllianceBuildingsMapElementEarly());
        optimiseAllianceBuildingsCourseTableEarly();
        return true;
    }
    function queueAllianceBuildingsEarlyCheck() {
        if (allianceBuildingsEarlyCheckQueued) return;
        allianceBuildingsEarlyCheckQueued = true;
        queueMicrotask(() => {
        allianceBuildingsEarlyCheckQueued = false;
        applyAllianceBuildingsEarlySuppression();
        });
    }
    function installAllianceBuildingsContextWatcherEarly() {
        if (allianceBuildingsContextWatcherInstalled) return;
        allianceBuildingsContextWatcherInstalled = true;
        const armForAllianceNavigation = event => {
        const anchor = event.target?.closest?.('a[href]');
        if (!anchor) return;
        let path;
        try { path = new URL(anchor.href, location.href).pathname; } catch (err) { path = anchor.getAttribute('href') || ''; }
        if (!isAllianceBuildingsPath(path)) return;
        installAllianceBuildingsEarlyStyle();
        installAllianceBuildingsLeafletAssignmentGuard();
        };
        document.addEventListener('click', armForAllianceNavigation, true);
        const observer = new MutationObserver(mutations => {
        const relevant = mutations.some(mutation => [mutation.addedNodes, mutation.removedNodes].some(collection => Array.from(collection || []).some(node => {
            if (!node || node.nodeType !== 1) return false;
            return node.matches?.('#map, #map_outer, #verband-gebauede-map, #verband-gebaeude-map, .leaflet-container, table, [class*="col-"]') ||
                node.querySelector?.('#map, #map_outer, #verband-gebauede-map, #verband-gebaeude-map, .leaflet-container, table a[href*="/buildings/"]');
        })));
        if (relevant) queueAllianceBuildingsEarlyCheck();
        });
        const begin = () => {
        const root = document.documentElement;
        if (root) observer.observe(root, { childList: true, subtree: true });
        };
        if (document.documentElement) begin();
        else document.addEventListener('readystatechange', begin, { once: true });
        pageWindow.addEventListener?.('popstate', queueAllianceBuildingsEarlyCheck);
        pageWindow.addEventListener?.('hashchange', queueAllianceBuildingsEarlyCheck);
        pageWindow.addEventListener?.('pageshow', queueAllianceBuildingsEarlyCheck);
        pageWindow.addEventListener?.('load', queueAllianceBuildingsEarlyCheck, { once: true });
        applyAllianceBuildingsEarlySuppression();
    }
    const earlyAllianceBuildingsPage = isAllianceBuildingsPath();
    const earlyAllianceBuildingsMapEnabled = readAllianceBuildingsMapPreferenceEarly();
    if (earlyAllianceBuildingsPage) {
        document.documentElement?.setAttribute('data-mcms-alliance-buildings-page', 'true');
        document.documentElement?.setAttribute('data-mcms-alliance-buildings-map', earlyAllianceBuildingsMapEnabled ? 'enabled' : 'disabled');
    }
    if (!earlyAllianceBuildingsMapEnabled) {
        installAllianceBuildingsEarlyStyle();
        installAllianceBuildingsLeafletAssignmentGuard();
        installAllianceBuildingsContextWatcherEarly();
    }


    const SCRIPT = {
        name: 'MissionChief Map Command Toolkit',
        version: '7.0.1',
        author: 'Conroy1988',
        controlId: 'mc-map-command-toolkit-control',
        panelId: 'mc-map-command-toolkit-panel',
        toastId: 'mc-map-command-toolkit-toast',
        payoutFlashId: 'mc-map-command-toolkit-payout-flash',
        vehicleStatusId: 'mc-map-command-toolkit-vehicle-status',
        majorIncidentFeedId: 'mc-map-command-toolkit-major-incident-feed',
        transportSweepHudId: 'mc-map-command-toolkit-transport-sweep-hud',
        customVehicleBadgeStyleId: 'mcms-custom-vehicle-badge-style',
        helpCenterId: 'mc-map-command-toolkit-help-center',
        cleanExitId: 'mcms-clean-exit',
        styleId: 'mc-map-command-toolkit-style-v4146',
        oldControlId: 'mc-map-command-skins-control',
        oldGeoLabelLayerId: 'mcms-persistent-label-layer',
        storageState: 'mc_map_command_toolkit_state_v150',
        payoutHistoryState: 'mc_map_command_toolkit_payout_history_v200',
        sessionPerformanceState: 'mc_map_command_toolkit_session_v200',
        missionProgressState: 'mc_map_command_toolkit_mission_progress_v250',
        discordWebhookState: 'mc_map_command_toolkit_discord_webhook_v300',
        discordLastReportState: 'mc_map_command_toolkit_discord_last_report_v310',
        financeVaultState: 'mc_map_command_toolkit_finance_vault_v450',
        financeVaultCredentialState: 'mc_map_command_toolkit_finance_vault_credential_v450',
        financeRulesCacheState: 'mc_map_command_toolkit_finance_rules_v450',
        financePolicyCacheState: 'mc_map_command_toolkit_finance_policy_v460',
        oldStorageKeys: [
        'mc_map_command_toolkit_state_v149',
        'mc_map_command_toolkit_state_v148',
        'mc_map_command_toolkit_state_v147',
        'mc_map_command_toolkit_state_v146',
        'mc_map_command_toolkit_state_v145',
        'mc_map_command_toolkit_state_v144',
        'mc_map_command_toolkit_state_v143',
        'mc_map_command_toolkit_state_v142',
        'mc_map_command_toolkit_state_v141',
        'mc_map_command_toolkit_state_v140',
            'mc_map_command_toolkit_state_v130'
        ],
        legacyTheme: 'mc_map_command_skins_theme_v2',
        legacyPosition: 'mc_map_command_skins_position_v1'
    };
    const RUNTIME_KEY = '__MC_MAP_COMMAND_TOOLKIT_RUNTIME__';
    const previousRuntime = pageWindow[RUNTIME_KEY];
    if (previousRuntime?.version === SCRIPT.version && previousRuntime.destroyed !== true) return;
    try { previousRuntime?.destroy?.('replaced by a newer toolkit runtime'); } catch (err) {}
    const runtime = {
        version: SCRIPT.version,
        destroyed: false,
        timeouts: new Set(),
        intervals: new Set(),
        animationFrames: new Set(),
        observers: new Set(),
        waiters: new Set(),
        requests: new Set(),
        fetchControllers: new Set(),
        listeners: [],
        mapBindings: [],
        hookRestorers: [],
        cleanupCallbacks: [],
        destroy(reason = 'runtime shutdown') {
        if (this.destroyed) return;
        this.destroyed = true;
        for (const id of this.timeouts) { try { pageWindow.clearTimeout(id); } catch (err) {} }
        for (const id of this.intervals) { try { pageWindow.clearInterval(id); } catch (err) {} }
        for (const id of this.animationFrames) { try { pageWindow.cancelAnimationFrame(id); } catch (err) {} }
        this.timeouts.clear();
        this.intervals.clear();
        this.animationFrames.clear();
        for (const settle of Array.from(this.waiters)) { try { settle(false); } catch (err) {} }
        this.waiters.clear();
        for (const request of Array.from(this.requests)) { try { request.abort?.(); } catch (err) {} }
        this.requests.clear();
        for (const controller of Array.from(this.fetchControllers)) { try { controller.abort(); } catch (err) {} }
        this.fetchControllers.clear();
        for (const observer of this.observers) { try { observer.disconnect(); } catch (err) {} }
        this.observers.clear();
        for (const { target, type, listener, options } of this.listeners.splice(0)) {
            try { target.removeEventListener(type, listener, options); } catch (err) {}
        }
        for (const binding of this.mapBindings.splice(0)) {
            try { binding.map.off(binding.types, binding.handler); } catch (err) {}
        }
        for (const restore of this.hookRestorers.splice(0).reverse()) { try { restore(); } catch (err) {} }
        for (const cleanup of this.cleanupCallbacks.splice(0).reverse()) { try { cleanup(reason); } catch (err) {} }
        if (pageWindow[RUNTIME_KEY] === this) {
            try { delete pageWindow[RUNTIME_KEY]; } catch (err) { pageWindow[RUNTIME_KEY] = null; }
        }
        }
    };
    pageWindow[RUNTIME_KEY] = runtime;
    function runtimeSetTimeout(callback, delay = 0, ...args) {
        if (runtime.destroyed) return null;
        let id = null;
        id = pageWindow.setTimeout((...callbackArgs) => {
        runtime.timeouts.delete(id);
        if (!runtime.destroyed) callback(...callbackArgs);
        }, delay, ...args);
        runtime.timeouts.add(id);
        return id;
    }
    function runtimeClearTimeout(id) {
        if (id === null || id === undefined) return;
        runtime.timeouts.delete(id);
        try { pageWindow.clearTimeout(id); } catch (err) {}
    }
    function runtimeDelay(delay = 0) {
        if (runtime.destroyed) return Promise.resolve(false);
        return new Promise(resolve => {
        let timerId = null;
        let settled = false;
        const settle = completed => {
            if (settled) return;
            settled = true;
            runtime.waiters.delete(settle);
            if (timerId !== null) runtimeClearTimeout(timerId);
            resolve(Boolean(completed));
        };
        runtime.waiters.add(settle);
        timerId = runtimeSetTimeout(() => settle(true), Math.max(0, Number(delay) || 0));
        if (timerId === null) settle(false);
        });
    }
    function runtimeSetInterval(callback, delay = 0, ...args) {
        if (runtime.destroyed) return null;
        const id = pageWindow.setInterval((...callbackArgs) => {
        if (!runtime.destroyed) callback(...callbackArgs);
        }, delay, ...args);
        runtime.intervals.add(id);
        return id;
    }
    function runtimeClearInterval(id) {
        if (id === null || id === undefined) return;
        runtime.intervals.delete(id);
        try { pageWindow.clearInterval(id); } catch (err) {}
    }
    function runtimeRequestAnimationFrame(callback) {
        if (runtime.destroyed) return null;
        let id = null;
        id = pageWindow.requestAnimationFrame(timestamp => {
        runtime.animationFrames.delete(id);
        if (!runtime.destroyed) callback(timestamp);
        });
        runtime.animationFrames.add(id);
        return id;
    }
    function runtimeCancelAnimationFrame(id) {
        if (id === null || id === undefined) return;
        runtime.animationFrames.delete(id);
        try { pageWindow.cancelAnimationFrame(id); } catch (err) {}
    }
    function runtimeListen(target, type, listener, options) {
        if (!target?.addEventListener || runtime.destroyed) return listener;
        target.addEventListener(type, listener, options);
        runtime.listeners.push({ target, type, listener, options });
        return listener;
    }
    function runtimeTrackObserver(observer) {
        if (!observer) return observer;
        if (runtime.destroyed) {
        try { observer.disconnect(); } catch (err) {}
        return observer;
        }
        runtime.observers.add(observer);
        return observer;
    }
    function runtimeUntrackObserver(observer, disconnect = true) {
        if (!observer) return;
        if (disconnect) {
        try { observer.disconnect(); } catch (err) {}
        }
        runtime.observers.delete(observer);
    }
    const runtimeTasks = new Map();
    let runtimeTaskTimer = null;
    function runtimeWakeTaskScheduler(delay = 0) {
        runtimeClearTimeout(runtimeTaskTimer);
        runtimeTaskTimer = runtimeSetTimeout(runtimeRunScheduledTasks, Math.max(0, Number(delay) || 0));
    }
    function runtimeRegisterTask(name, intervalMs, callback, options = {}) {
        if (!name || typeof callback !== 'function') return null;
        const interval = Math.max(250, Number(intervalMs) || 1000);
        const initialDelay = Math.max(0, Number(options.initialDelayMs ?? interval) || 0);
        runtimeTasks.set(String(name), {
        name: String(name),
        intervalMs: interval,
        intervalResolver: typeof options.intervalResolver === 'function' ? options.intervalResolver : null,
        economyIntervalMs: Math.max(interval, Number(options.economyIntervalMs) || interval),
        economyIntervalResolver: typeof options.economyIntervalResolver === 'function' ? options.economyIntervalResolver : null,
        callback,
        runWhenHidden: Boolean(options.runWhenHidden),
        nextRun: Date.now() + initialDelay,
        running: false
        });
        runtimeWakeTaskScheduler(0);
        return String(name);
    }


    function runtimeTaskInterval(task) {
        if (!task) return 1000;
        let resolved = task.intervalMs;
        if (typeof task.intervalResolver === 'function') {
        try { resolved = Number(task.intervalResolver(task)) || resolved; } catch (err) {}
        }
        resolved = Math.max(task.intervalMs, resolved);
        if (!state?.economyMode) return resolved;
        let economyResolved = Math.max(resolved, task.economyIntervalMs || resolved);
        if (typeof task.economyIntervalResolver === 'function') {
        try { economyResolved = Number(task.economyIntervalResolver(task)) || economyResolved; } catch (err) {}
        }
        return Math.max(resolved, economyResolved);
    }
    function runtimeRescheduleTasks(runSoon = false) {
        const now = Date.now();
        for (const task of runtimeTasks.values()) task.nextRun = runSoon ? now : Math.min(task.nextRun, now + runtimeTaskInterval(task));
        runtimeWakeTaskScheduler(runSoon ? 0 : 50);
    }
    function runtimeRunScheduledTasks() {
        runtimeTaskTimer = null;
        if (runtime.destroyed || !runtimeTasks.size) return;
        const now = Date.now();
        const hidden = Boolean(document.hidden);
        let nextDelay = hidden ? 5 * 60 * 1000 : 60000;
        for (const task of runtimeTasks.values()) {
        const dueIn = task.nextRun - now;
        if (dueIn > 0) {
            nextDelay = Math.min(nextDelay, dueIn);
            continue;
        }
        if (hidden && !task.runWhenHidden) {
            const deferredInterval = Math.max(60 * 1000, runtimeTaskInterval(task));
            task.nextRun = now + deferredInterval;
            nextDelay = Math.min(nextDelay, deferredInterval);
            continue;
        }
        const effectiveInterval = runtimeTaskInterval(task);
        task.nextRun = now + effectiveInterval;
        nextDelay = Math.min(nextDelay, effectiveInterval);
        if (task.running) continue;
        task.running = true;
        try {
            const result = task.callback();
            if (result && typeof result.then === 'function') {
                Promise.resolve(result)
                    .catch(err => console.debug(`[${SCRIPT.name}] Scheduled task ${task.name} failed.`, err))
                    .finally(() => { task.running = false; });
            } else {
                task.running = false;
            }
        } catch (err) {
            task.running = false;
            console.debug(`[${SCRIPT.name}] Scheduled task ${task.name} failed.`, err);
        }
        }
        runtimeTaskTimer = runtimeSetTimeout(runtimeRunScheduledTasks, Math.max(50, Math.min(hidden ? 5 * 60 * 1000 : 60000, nextDelay)));
    }
    function runtimeOnCleanup(callback) {
        if (typeof callback === 'function') runtime.cleanupCallbacks.push(callback);
        return callback;
    }


    function runtimeRunWhenIdle(callback, timeout = STARTUP_IDLE_TIMEOUT_MS) {
        if (runtime.destroyed || typeof callback !== 'function') return null;
        const maxWait = Math.max(50, Number(timeout) || STARTUP_IDLE_TIMEOUT_MS);
        let settled = false;
        let idleId = null;
        let fallbackTimer = null;
        const run = deadline => {
        if (settled || runtime.destroyed) return;
        settled = true;
        if (fallbackTimer !== null) runtimeClearTimeout(fallbackTimer);
        fallbackTimer = null;
        callback(deadline || { didTimeout: true, timeRemaining: () => 0 });
        };
        if (typeof pageWindow.requestIdleCallback === 'function') {
        try {
            idleId = pageWindow.requestIdleCallback(run, { timeout: maxWait });
            fallbackTimer = runtimeSetTimeout(() => run(null), maxWait + 120);
            runtimeOnCleanup(() => {
                if (settled || idleId === null || typeof pageWindow.cancelIdleCallback !== 'function') return;
                try { pageWindow.cancelIdleCallback(idleId); } catch (err) {}
            });
            return idleId;
        } catch (err) {}
        }

        fallbackTimer = runtimeSetTimeout(() => run(null), Math.min(350, maxWait));
        return fallbackTimer;
    }

    function startupClock() {
        try { return Number(pageWindow.performance?.now?.()) || Date.now(); }
        catch (err) { return Date.now(); }
    }

    function recordStartupMetric(name, startedAt, extra = {}) {
        const finishedAt = startupClock();
        const elapsedMs = Math.max(0, finishedAt - Number(startedAt || finishedAt));
        const metrics = pageWindow.__MCMS_STARTUP_METRICS__ || {};
        metrics.version = SCRIPT.version;
        metrics[name] = Math.round(elapsedMs * 10) / 10;
        Object.assign(metrics, extra);
        pageWindow.__MCMS_STARTUP_METRICS__ = metrics;
        return elapsedMs;
    }

    function runtimeFetch(input, init = {}) {
        if (runtime.destroyed) return Promise.reject(new Error('Toolkit runtime stopped.'));
        const Controller = pageWindow.AbortController || globalThis.AbortController;
        const controller = typeof Controller === 'function' ? new Controller() : null;
        if (controller) runtime.fetchControllers.add(controller);
        const fetchFunction = pageWindow.fetch || globalThis.fetch;
        if (typeof fetchFunction !== 'function') {
        if (controller) runtime.fetchControllers.delete(controller);
        return Promise.reject(new Error('Browser fetch is unavailable.'));
        }
        const options = controller ? { ...init, signal: controller.signal } : init;
        return Promise.resolve(fetchFunction.call(pageWindow, input, options))
        .finally(() => { if (controller) runtime.fetchControllers.delete(controller); });
    }

    runtimeOnCleanup(() => {
        runtimeTasks.clear();
        runtimeClearTimeout(runtimeTaskTimer);
        runtimeTaskTimer = null;
    });

    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4100__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V3130__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V3121__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V380__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V341__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V340__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V318__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V317__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V316__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V315__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V314__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V313__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V311__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V310__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V300__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V290__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V287__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V286__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V285__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V284__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V283__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V282__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V281__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V280__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V272__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V271__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V270__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V263__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V262__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V261__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V260__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V251__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V250__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V240__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V230__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V220__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V210__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V411__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V420__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4130__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4131__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4132__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4133__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4134__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4135__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4136__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4137__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4138__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4139__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4140__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4141__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4142__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4143__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V4144__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V450__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V410__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V400__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V203__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V202__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V201__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V200__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V184__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V183__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V182__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V181__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V180__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V171__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V170__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V169__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V168__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V167__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V166__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V165__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V164__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V163__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V162__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V161__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V160__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V155__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V154__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V153__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V152__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V151__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V150__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V149__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V148__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V147__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V146__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V145__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V144__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V143__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V142__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V141__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V140__ = true;
    pageWindow.__MC_MAP_COMMAND_TOOLKIT_V130__ = true;

    const HELP_CENTER = Object.freeze({
        guideVersion: '4.15.2',
        rawUrl: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/help/index.html',
        sourceUrl: 'https://github.com/Conroy1988/missionchief-toolkit-assets/blob/main/help/index.html',
        requestTimeoutMs: 15000
    });

    const THEME_ASSETS = Object.freeze({
        bond007Logo: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/007-logo.svg',
        bond007CommandSeal: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/ui/mi6-command-seal.svg',
        bond007Gunbarrel: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/ui/gunbarrel-reticle.svg',
        bond007DossierGrid: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/ui/classified-dossier-grid.svg',
        bond007Agent: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/ui/agent-silhouette.svg',
        bond007Portrait: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/payout/daniel-craig-007-portrait.png',
        bond007GoldDivider: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/ui/gold-divider.svg',
        bond007PayoutSeal: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/payout/funds-authorised-seal.svg',
        umbrellaEmblem: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/ui/umbrella-containment-emblem.svg',
        umbrellaContainmentBadge: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/ui/containment-division-badge.svg',
        umbrellaFacilitySchematic: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/ui/facility-schematic.svg',
        umbrellaSurveillanceTerminal: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/ui/surveillance-terminal.svg',
        umbrellaSpecimenVial: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/ui/specimen-vial.svg',
        umbrellaPayoutSeal: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/payout/transfer-authorized-seal.svg',
        hyruleCrest: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/ui/hyrule-command-crest.svg',
        hyruleEye: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/ui/ancient-eye-rune.svg',
        hyruleEnergyRing: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/ui/zonai-energy-ring.svg',
        hyruleSwordShield: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/ui/master-sword-shield-silhouette.svg',
        hyruleMap: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/ui/parchment-command-map.svg',
        hyruleQuestSeal: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/payout/quest-complete-seal.svg',
        hyruleRupeeBurst: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/payout/rupee-burst.svg'
    });

    const UI_THEMES = Object.freeze({
        mapCommand: Object.freeze({ label: 'Map Command', short: 'DEFAULT', icon: '▦', description: 'The original operational command interface.' }),
        cyberpunk: Object.freeze({ label: 'Cyberpunk', short: 'NEON', icon: '⚡', description: 'Neon tactical interface with angular panels, signal animations and high-contrast controls.' }),
        fallout4: Object.freeze({ label: 'Fallout 4', short: 'PIP-BOY', icon: '☢', description: 'Retro-futurist Pip-Boy terminal interface with phosphor display effects and high-contrast Vault-Tec controls.' }),
        umbrella: Object.freeze({ label: 'Umbrella Containment', short: 'BSL-4', icon: '☣', description: 'Corporate BSL-4 containment interface with original transparent artwork, classified facility schematics, surveillance graphics and protected operational states.' }),
        factorio: Object.freeze({ label: 'Factorio', short: 'AUTOMATION', icon: '⚙', description: 'Industrial automation interface with riveted steel panels, copper controls, hazard markings and factory-line motion.' }),
        bond007: Object.freeze({ label: '007 Intelligence', short: 'MI6', icon: '◉', description: 'Complete Section 00 intelligence interface with original transparent MI6 artwork, gun-barrel targeting graphics, classified dossiers, champagne-gold controls and protected operational states.' }),
        hyrule: Object.freeze({ label: 'Hyrule Command', short: 'TRIFORCE', icon: '△', description: 'Fantasy command interface with parchment cartography, royal gold, ancient blue technology, green energy glyphs and transparent Hyrule-inspired artwork.' })
    });
    const UI_THEME_ORDER = Object.freeze(['mapCommand', 'cyberpunk', 'fallout4', 'umbrella', 'factorio', 'bond007', 'hyrule']);

    const THEMES = {
        default: { full: 'Default', label: 'Default', short: 'STD', icon: '□' },
        control: { full: 'Control Room', label: 'Control', short: 'CTL', icon: '◐' },
        incident: { full: 'Incident Focus', label: 'Incident', short: 'INC', icon: '▣' },
        roads: { full: 'Road Priority', label: 'Roads', short: 'RD', icon: '═' },
        urban: { full: 'Urban Grey', label: 'Urban', short: 'URB', icon: '◫' },
        rural: { full: 'Rural Watch', label: 'Rural', short: 'RUR', icon: '◇' },
        nightshift: { full: 'Night Shift', label: 'Night', short: 'NIT', icon: '◆' },
        fireCommand: { full: 'Fire Command', label: 'Fire', short: 'FIRE', icon: '🔥' },
        policeTactical: { full: 'Police Tactical', label: 'Police', short: 'POL', icon: '◆' },
        medicalControl: { full: 'Medical Control', label: 'Medical', short: 'MED', icon: '✚' },
        coastalCommand: { full: 'Coastal Command', label: 'Coastal', short: 'SEA', icon: '⚓' }
    };

    const PAYOUT_TEMPLATES = {
        gta5: { label: 'GTA V Inspired', kicker: 'PAYOUT RECEIVED', titleCase: false, particleMode: 'none' },
        viceCity: { label: 'Vice City Inspired', kicker: 'PAYOUT RECEIVED', titleCase: true, particleMode: 'none' },
        badCompany: { label: 'Bad Company Inspired', kicker: 'PAYOUT RECEIVED', titleCase: false, particleMode: 'embers' },
        scarface: { label: 'Scarface Inspired', kicker: 'EMPIRE PAYOUT CONFIRMED', titleCase: false, particleMode: 'stars' },
        cyberpunk: { label: 'Cyberpunk Inspired', kicker: 'CREDIT TRANSFER CONFIRMED', titleCase: false, particleMode: 'glitch' },
        hellfire: { label: 'Hellfire Inspired', kicker: 'REWARD CLAIMED', titleCase: false, particleMode: 'embers' },
        wasteland: { label: 'Fallout Inspired', kicker: 'VAULT-TEC REWARD AUTHORIZED', titleCase: false, particleMode: 'dust' },
        factorio: { label: 'Factorio Industrial', kicker: 'AUTOMATION REWARD CONFIRMED', titleCase: false, particleMode: 'embers' },
        galactic: { label: 'Galactic Command', kicker: 'CREDIT ALLOCATION CONFIRMED', titleCase: false, particleMode: 'stars' },
        darkFantasy: { label: 'Dark Fantasy Inspired', kicker: 'REWARD BESTOWED', titleCase: true, particleMode: 'ash' },
        biohazard: { label: 'Umbrella Containment', kicker: 'CREDIT TRANSFER AUTHORIZED', titleCase: false, particleMode: 'none' },
        underworld: { label: 'Underworld Inspired', kicker: 'REWARD CLAIMED', titleCase: true, particleMode: 'embers' },
        pixelArcade: { label: 'Pixel Arcade Inspired', kicker: 'SCORE BONUS AWARDED', titleCase: false, particleMode: 'pixels' },
        jamesBond: { label: '007 Intelligence', kicker: 'MI6 FUNDS TRANSFER AUTHORISED', titleCase: false, particleMode: 'none' },
        hyruleQuest: { label: 'Hyrule Quest Reward', kicker: 'RUPEE REWARD ACQUIRED', titleCase: false, particleMode: 'rupees' }
    };

    const PAYOUT_TEMPLATE_ORDER = ['gta5', 'viceCity', 'badCompany', 'scarface', 'cyberpunk', 'hellfire', 'wasteland', 'factorio', 'jamesBond', 'hyruleQuest', 'galactic', 'darkFantasy', 'biohazard', 'underworld', 'pixelArcade'];

    // Hosted real-audio cues remain lazy-loaded through direct raw GitHub URLs.
    // Hosted payout cues are mapped by template and lazy-loaded only when played.
    const PAYOUT_MEDIA_SOUNDS = Object.freeze({
        viceCity: Object.freeze({
        label: 'GTA Vice City Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/assets/audio/payout-presets/gta-vice-city-cashout.mp3'
        }),
        badCompany: Object.freeze({
        label: 'BF Bad Company Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/assets/audio/payout-presets/bf-bad-company-cashout.mp3'
        }),
        scarface: Object.freeze({
        label: 'Scarface Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/assets/audio/payout-presets/scarface-cashout.mp3'
        }),
        cyberpunk: Object.freeze({
        label: 'Cyberpunk Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/cyberpunk/audio/cyberpunk-cashout.mp3'
        }),
        wasteland: Object.freeze({
        label: 'Fallout Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/fallout/audio/fallout-cashout.mp3'
        }),
        factorio: Object.freeze({
        label: 'Factorio Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/factorio/audio/factorio-cashout.mp3'
        }),
        biohazard: Object.freeze({
        label: 'Umbrella Containment Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/umbrella/audio/umbrella-containment-cashout.mp3'
        }),
        jamesBond: Object.freeze({
        label: '007 Intelligence Cashout',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/james-bond/audio/james-bond-cashout.mp3'
        }),
        hyruleQuest: Object.freeze({
        label: 'Hyrule Quest Reward',
        url: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/themes/hyrule/audio/hyrule-quest-reward.mp3'
        })
    });

    const CORE_THEME_ORDER = ['default', 'control', 'incident', 'roads', 'urban', 'rural', 'nightshift'];
    const SERVICE_THEME_ORDER = ['fireCommand', 'policeTactical', 'medicalControl', 'coastalCommand'];
    const THEME_ORDER = [...CORE_THEME_ORDER, ...SERVICE_THEME_ORDER];
    const PAYOUT_FLASH_MIN_MS = 2000;
    const PAYOUT_FLASH_MAX_MS = 30000;
    const PAYOUT_FLASH_STEP_MS = 2000;
    const PAYOUT_HISTORY_LIMIT = 40;
    const PAYOUT_MATCH_WINDOW_MS = 20000;
    const MISSION_AGE_LABEL_REFRESH_MS = 60 * 1000;
    const MISSION_AGE_LABEL_RETRY_MS = 2500;
    const STUCK_MIN_MINUTES = 5;
    const STUCK_MAX_MINUTES = 180;
    const MISSION_SPAWN_DURATION_MS = 2400;
    const MAP_PROFILE_LIMIT = 5;
    const MAJOR_INCIDENT_FEED_MINIMUM_OPTIONS = [10000, 25000, 50000, 100000];
    const MAJOR_INCIDENT_FEED_MAX_ITEMS = 12;
    const MAJOR_INCIDENT_MASS_CASUALTY_PATIENTS = 10;
    const MAJOR_INCIDENT_MASS_CASUALTY_PRISONERS = 5;
    const UK_POSTCODE_PATTERN = /\b(?:GIR\s?0AA|(?:(?:[A-PR-UWYZ][0-9][0-9A-HJKSTUW]?|[A-PR-UWYZ][A-HK-Y][0-9][0-9ABEHMNPRV-Y]?)\s?[0-9][ABD-HJLNP-UW-Z]{2}))\b/iu;
    const VEHICLE_API_REFRESH_MS = 2 * 60 * 1000;
    const VEHICLE_CODE_STATUS_DEFINITIONS = Object.freeze([
        Object.freeze({ code: 1, label: 'Clear and Available' }),
        Object.freeze({ code: 2, label: 'Available at Station' }),
        Object.freeze({ code: 3, label: 'Responding' }),
        Object.freeze({ code: 4, label: 'On Scene' }),
        Object.freeze({ code: 5, label: 'Requesting Dispatch' }),
        Object.freeze({ code: 6, label: 'Out of Service' }),
        Object.freeze({ code: 7, label: 'Transporting' }),
        Object.freeze({ code: 9, label: 'Awaiting Pickup' })
    ]);
    const VEHICLE_CODE_STATUS_BY_CODE = new Map(VEHICLE_CODE_STATUS_DEFINITIONS.map(item => [item.code, item]));
    const VEHICLE_API_MIN_REFRESH_MS = 20 * 1000;
    const DOM_REFRESH_DEBOUNCE_MS = 260;
    const STARTUP_IDLE_TIMEOUT_MS = 2500;
    const STARTUP_OPERATIONAL_DELAY_MS = 700;
    const STARTUP_OBSERVER_DELAY_MS = 900;
    const STARTUP_SETTLE_WINDOW_MS = 8000;
    const STARTUP_MUTATION_DEBOUNCE_MS = 520;
    const BUILDING_VISIBILITY_RECHECK_MS = 4000;
    const MAP_DISCOVERY_RETRY_MS = 2000;
    const FALLBACK_MISSION_REFRESH_MS = 15 * 1000;
    const MISSION_PROGRESS_PAGE_REFRESH_MS = 30 * 1000;
    const MARKER_REGISTRY_CACHE_MS = 350;
    const PERSONAL_BUILDING_ID_CACHE_MS = 1200;
    const MAP_ELEMENT_CACHE_MS = 750;
    const MISSION_SNAPSHOT_REUSE_MS = 30000;
    const RUNTIME_CACHE_PRUNE_MS = 60 * 1000;
    const VEHICLE_API_ERROR_BACKOFF_MS = 60 * 1000;
    const MISSION_CACHE_RETENTION_MS = 10 * 60 * 1000;
    const RESOURCE_GAP_REFRESH_MS = 15 * 1000;
    const RESOURCE_GAP_RADIUS_OPTIONS = [10, 25, 50, 100];
    const TRANSPORT_SWEEP_DELAY_OPTIONS = [1500, 2000, 2500, 3000, 4000, 5000];
    const TRANSPORT_SWEEP_MAX_REQUESTS = 50;
    const TRANSPORT_SWEEP_MAX_CANDIDATES_PER_MISSION = 40;
    const LEGACY_THEME_MAP = { night: 'control', grey: 'urban', blue: 'nightshift', muted: 'rural', contrast: 'incident' };
    const POSITIONS = {
        tl: { label: 'Top left', short: 'TL' },
        tr: { label: 'Top right', short: 'TR' },
        bl: { label: 'Bottom left', short: 'BL' },
        br: { label: 'Bottom right', short: 'BR' }
    };

    const QUICK_PLACES = [
        { id: 'edi', label: 'EDI', name: 'Edinburgh', lat: 55.9533, lng: -3.1883, zoom: 11 },
        { id: 'fife', label: 'FIFE', name: 'Fife', lat: 56.2082, lng: -3.1495, zoom: 10 },
        { id: 'glas', label: 'GLAS', name: 'Glasgow', lat: 55.8642, lng: -4.2518, zoom: 11 },
        { id: 'dund', label: 'DUND', name: 'Dundee', lat: 56.4620, lng: -2.9707, zoom: 11 },
        { id: 'stir', label: 'STIR', name: 'Stirling', lat: 56.1165, lng: -3.9369, zoom: 11 }
    ];


    const SMART_BOOKMARK_LABEL_MAX = 12;
    const SMART_BOOKMARK_SINGLE_WORD_MAX = 5;
    const SMART_BOOKMARK_WORDS = Object.freeze({
        edinburgh: 'EDIN', glasgow: 'GLA', london: 'LDN', manchester: 'MAN', liverpool: 'LIV',
        birmingham: 'BHM', newcastle: 'NCL', aberdeen: 'ABDN', dundee: 'DND', stirling: 'STIR',
        perth: 'PER', fife: 'FIFE', wakefield: 'WKFD', livingston: 'LVSTN', kirkcaldy: 'KRKDY',
        dunfermline: 'DNFRM', musselburgh: 'MSLBG', bonnyrigg: 'BNYRG', bathgate: 'BTHGT',
        dalkeith: 'DLKTH', leith: 'LEITH', paisley: 'PSLY', ayr: 'AYR', inverness: 'INV',
        centre: 'CTR', center: 'CTR', station: 'STN', headquarters: 'HQ', airport: 'AP',
        hospital: 'HOSP', fire: 'FIRE', police: 'POL', ambulance: 'AMB', training: 'TRG',
        control: 'CTRL', dispatch: 'DSP', operations: 'OPS', response: 'RSP', depot: 'DPT',
        district: 'DIST', central: 'CEN', north: 'N', south: 'S', east: 'E', west: 'W',
        northeast: 'NE', northwest: 'NW', southeast: 'SE', southwest: 'SW',
        northern: 'N', southern: 'S', eastern: 'E', western: 'W'
    });
    const SMART_BOOKMARK_STOP_WORDS = new Set(['the', 'of', 'and', 'at', 'in', 'for', 'on', 'to']);
    const SMART_BOOKMARK_OPTIONAL_WORDS = new Set(['city', 'county', 'area', 'region']);

    const SUPPRESSION_SELECTORS = [
        '.modal.show', '.modal.in', '.modal-backdrop', '.bootbox.modal',
        '[role="dialog"][aria-modal="true"]', '.popover.show', '.popover.in',
        '.dropdown-menu.show', '.dropdown.open > .dropdown-menu', '.ui-dialog',
        '.fancybox-overlay', '#fancybox-wrap'
    ];

    let state = loadState();
    let cachedMap = null;
    let cachedMapElement = null;
    let cachedMapElementCheckedAt = 0;
    let mapDiscoveryLastAttempt = 0;
    const markerRegistryCache = new Map();
    let markerRegistryRevision = 0;
    let missionRegistryRevision = 0;
    let vehicleRegistryRevision = 0;
    let buildingRegistryRevision = 0;
    let vehicleDataRevision = 0;
    let missionMarkerIndexCache = { revision: -1, registry: null, markers: [], byId: new Map() };
    let personalVehicleRecordsCache = { vehicleRevision: -1, markerRevision: -1, apiReady: false, createdAt: 0, records: [] };
    let cachedUserId = null;
    let cachedUserIdReadAt = 0;
    let personalBuildingIdsCache = { revision: -1, userId: null, createdAt: 0, values: new Set() };
    let missionIconMarkerCache = new WeakMap();
    let panelPositionTimer = null;
    let coverageRenderSignature = '';
    let majorIncidentFeedRenderSignature = '';
    let majorIncidentFeedRenderTimer = null;
    let majorIncidentFeedLayoutFrame = null;
    let majorIncidentFeedLayoutTimer = null;
    let majorIncidentFeedMotionTimer = null;
    let majorIncidentFeedMotionRevision = 0;
    let majorIncidentFeedResizeObserver = null;
    let majorIncidentFeedObservedElement = null;
    const missionLifecycleLastSeen = new Map();
    let coverageGroup = null;
    let mutationTimer = null;
    let classifyTimer = null;
    let markerStateSyncTimer = null;
    let markerStateTrailingTimer = null;
    let coverageTimer = null;
    let fitTimer = null;
    let dragState = null;
    let suppressNextOutsideClick = false;
    const hiddenPersonalBuildingLayers = new Set();
    const personalBuildingLayerOpacity = new Map();
    let enforcingPersonalBuildingVisibility = false;
    const economyHiddenVehicleLayers = new Set();
    const economyHiddenBuildingLayers = new Set();
    const economyLeafletOptionSnapshots = new Map();
    let economyLayerSyncTimer = null;
    let economyLayerEnforcement = false;
    let economyMapMoving = false;
    let economyDeferredMapRefresh = false;
    let economyDeferredDomMutation = false;
    let economyCanvasRenderer = null;
    let allianceCreditGroup = null;
    let allianceCreditTimer = null;
    let missionAgeGroup = null;
    let missionAgeTimer = null;
    let unitCommitmentGroup = null;
    let unitCommitmentTimer = null;
    let transportWatcherGroup = null;
    let transportWatcherTimer = null;
    let resourceGapGroup = null;
    let resourceGapTimer = null;
    let missionSnapshotTimer = null;
    let bootStarted = false;
    let bootStartedAt = 0;
    let operationalStartupStarted = false;
    let operationalStartupComplete = false;
    let startupDataPassActive = false;
    let mainMutationObserver = null;
    let mainMutationObserverFallbackActive = false;
    let settingsPanelActivated = false;
    let opsRefreshTimer = null;
    let payoutFlashTimer = null;
    let toastFlashTimer = null;
    let payoutFlashFallbackInterval = null;
    let payoutFlashAnimations = [];
    let payoutAmountAnimationFrame = null;
    let payoutAudioContext = null;
    let payoutMediaAudio = null;
    let payoutMediaTemplate = '';
    let payoutMediaGeneration = 0;
    let payoutEventCounter = 0;
    let creditsValueObserver = null;
    let observedCreditsElement = null;
    let lastObservedCredits = null;
    let inlineMissionDataScanned = false;
    let missionProgressPageFetchPromise = null;
    let missionProgressPageLastFetch = 0;
    let missionProgressPageLastSuccessAt = 0;
    let missionSnapshotReady = false;
    let vehicleApiFetchPromise = null;
    let vehicleApiLastFetch = 0;
    let vehicleApiReady = false;
    let vehicleApiLastError = 0;
    let vehicleStatusLastUpdate = 0;
    let missionCommitmentIndexDirty = true;
    let operationalPanelsLastRender = 0;
    let missionLockOnMarker = null;
    let missionLockOnTravelOverlay = null;
    let missionLockOnTargetIcon = null;
    let missionLockOnTimer = null;
    let missionLockOnMoveEndMap = null;
    let missionLockOnMoveEndHandler = null;
    let missionLockOnToken = 0;
    let missionProgressSaveTimer = null;
    let stuckMissionGroup = null;
    let stuckMissionTimer = null;
    let missionSpawnArmed = false;
    let missionSpawnPrimeTimer = null;
    const missionOverlayData = new Map();
    const missionOverlayVersions = new Map();
    const missionSnapshotCache = new Map();
    const missionPanelCache = new Map();
    let liveMissionSnapshots = new Map();
    const recentCompletedMissions = [];
    const missionProgressState = loadMissionProgressState();
    const knownMissionIds = new Set();
    const stuckMissionLabels = new Map();
    const MISSION_OVERLAY_PANE = 'mcmsMissionFloatPane';
    const allianceCreditLabels = new Map();
    const missionAgeLabels = new Map();
    const unitCommitmentLabels = new Map();
    const transportWatcherLabels = new Map();
    const resourceGapLabels = new Map();
    const resourceGapAnalysisCache = new Map();
    let resourceGapVehicleContextCache = { key: '', createdAt: 0, available: [] };
    const transportSweepRuntime = {
        running: false,
        stopRequested: false,
        queue: [],
        scannedAt: 0,
        currentMissionId: null,
        currentVehicleHref: '',
        cleared: 0,
        skipped: 0,
        errors: 0,
        processed: 0,
        confirmedReleaseKeys: new Set(),
        rejectedOwn: 0,
        missionAnchorBaseline: new Set(),
        vehicleButtonBaseline: new Set(),
        ownVehicleIds: new Set(),
        missionWindowRoot: null,
        activeWindowRoot: null,
        ownedWindowLayers: new Set(),
        activeWindowCreatedLayer: false,
        lastCandidateStats: null,
        startedAt: 0,
        missionIndex: 0,
        missionTotal: 0,
        currentItem: '',
        statusMessage: '',
        statusLevel: 'info',
        hudFinal: false,
        hudDismissTimer: null,
        log: []
    };
    const personalVehicleApiCache = new Map();
    const missionCommitmentIndex = new Map();
    const payoutHistory = loadPayoutHistory();
    const sessionPerformance = loadSessionPerformance();
    let discordFinanceBusy = false;
    let discordFinanceStatus = 'Select a reporting period, then generate and post the financial intelligence report.';
    let discordFinanceStatusTone = 'neutral';
    let financeVaultStatus = 'Local Financial Archive ready.';
    let financeVaultStatusTone = 'neutral';
    let financeRuleFeedStatus = 'Built-in financial intelligence active.';
    let financeRuleFeedStatusTone = 'neutral';
    let financeArchiveScanBusy = false;
    let financeArchiveScanCancelled = false;
    let financeRuleRefreshPromise = null;
    let financePolicyRefreshPromise = null;
    let tabletModeActive = false;
    let mobileModeActive = false;
    let activeDeviceLayout = 'desktop';
    let tabletLayoutTimer = null; let visualViewportRefreshGeneration = 0;
    let tabletDockResizeObserver = null;
    let tabletDockObservedMap = null;
    let desktopPanelResizeObserver = null;
    let desktopPanelObservedElements = new Set();
    let missionValueScanTimer = null;
    let missionValueFeatureInstalled = false;
    const missionValueObservedDocuments = new WeakSet();
    const missionValueObservedFrames = new WeakSet();
    const missionValueHostObservers = new Map();
    const missionValueRetryState = new WeakMap();
    let customVehicleBadgeScanTimer = null;
    let customVehicleBadgeRefreshPromise = null;
    let customVehicleBadgeFeatureInstalled = false;
    const customVehicleBadgeObservedDocuments = new WeakSet();
    const customVehicleBadgeObservedFrames = new WeakSet();
    const customVehicleClassificationCache = new Map();
    let customVehicleClassificationRevision = -1;
    let commandBarAnimationTimer = null;
    let commandBarAnimating = false;
    let helpGuideDocumentCache = '';
    let helpGuideLoadedAt = 0;
    let helpGuideLoadPromise = null;
    let helpCenterReturnFocus = null;

    function defaultState() {
        return {
        uiTheme: 'mapCommand',
        theme: getLegacyTheme(),
        position: getLegacyPosition(),
        activeTab: 'skins',
        cleanMode: false,
        markerFocus: false,
        missionPulse: false,
        roadPriority: false,
        compactDock: false,
        commandBarOpen: true,
        economyMode: false,
        tabletMode: 'auto',
        mobileMode: 'auto',
        shortcuts: true,
        autoLoadAllVehicles: false,
        allianceBuildingsMap: true,
        majorIncidentFeed: { enabled: true, minimumCredits: 25000 },
        missionLockAudio: true,
        missionValue: true,
        customVehicleBadges: true,
        allianceCredits: false,
        allianceCreditMinimum: 0,
        missionAge: false,
        unitCommitment: false,
        transportWatcher: true,
        stuckDetector: { enabled: true, thresholdMin: 20 },
        missionSpawn: { enabled: true },
        resourceGap: { enabled: false, radiusMi: 25 },
        transportSweep: { delayMs: 2000, maxPerRun: 25 },
        payoutFlash: { enabled: true, threshold: 10000, durationMs: 4000, template: 'gta5', soundEnabled: false, soundVolume: 0.35 },
        discordReport: { webhookName: 'MissionChief Finance', topCategories: 5, period: 'today', customStart: localIsoDate(new Date(Date.now() - 6 * 86400000)), customEnd: localIsoDate(), includeChart: true, includeComparison: true, reportMode: 'fullAudit', includeForecast: true, includeRisk: true },
        financialVault: { enabled: true, ruleFeedEnabled: true, retentionDays: 'all' },
        profiles: Array.from({ length: MAP_PROFILE_LIMIT }, () => null),
        nudge: { x: 0, y: 0 },
        panelPosition: null,
        visibility: { allianceMissions: true, myMissions: true, vehicles: true, buildings: true },
        quickPins: Object.fromEntries(QUICK_PLACES.map(place => [place.id, false])),
        coverage: { enabled: false, radiusMi: 10 },
        bookmarks: [null, null, null, null, null]
        };
    }

    function normaliseLoadedState(parsed, base = defaultState()) {
        const merged = {
        ...base,
        ...parsed,
        nudge: { ...base.nudge, ...(parsed.nudge || {}) },
        visibility: { ...base.visibility, ...(parsed.visibility || {}) },
        quickPins: { ...base.quickPins, ...(parsed.quickPins || {}) },
        coverage: { ...base.coverage, ...(parsed.coverage || {}) },
        stuckDetector: { ...base.stuckDetector, ...(parsed.stuckDetector || {}) },
        missionSpawn: { ...base.missionSpawn, ...(parsed.missionSpawn || {}) },
        resourceGap: { ...base.resourceGap, ...(parsed.resourceGap || {}) },
        transportSweep: { ...base.transportSweep, ...(parsed.transportSweep || {}) },
        majorIncidentFeed: { ...base.majorIncidentFeed, ...(parsed.majorIncidentFeed || {}) },
        payoutFlash: { ...base.payoutFlash, ...(parsed.payoutFlash || {}) },
        discordReport: { ...base.discordReport, ...(parsed.discordReport || {}) },
        financialVault: { ...base.financialVault, ...(parsed.financialVault || {}) },
        profiles: Array.isArray(parsed.profiles) ? parsed.profiles.slice(0, MAP_PROFILE_LIMIT) : base.profiles,
        bookmarks: Array.isArray(parsed.bookmarks) ? parsed.bookmarks.slice(0, 5) : base.bookmarks
        };

        while (merged.bookmarks.length < 5) merged.bookmarks.push(null);
        while (merged.profiles.length < MAP_PROFILE_LIMIT) merged.profiles.push(null);

        merged.uiTheme = normaliseUiTheme(merged.uiTheme);
        merged.theme = normaliseTheme(merged.theme);
        merged.position = POSITIONS[merged.position] ? merged.position : 'bl';
        if (merged.activeTab === 'fleet') merged.activeTab = 'resources';
        merged.activeTab = ['skins', 'tools', 'resources', 'ops', 'payouts', 'discord', 'places', 'settings'].includes(merged.activeTab) ? merged.activeTab : 'skins';
        delete merged.fleetFilter;
        delete merged.heatmap;
        delete merged.autoNight;
        merged.nudge.x = clamp(merged.nudge.x, -220, 220, 0);
        merged.nudge.y = clamp(merged.nudge.y, -220, 220, 0);
        merged.coverage.radiusMi = Number(merged.coverage.radiusMi) || 10;
        merged.allianceCreditMinimum = [0, 5000, 10000, 15000, 20000].includes(Number(merged.allianceCreditMinimum)) ? Number(merged.allianceCreditMinimum) : 0;
        merged.commandBarOpen = merged.commandBarOpen !== false;
        merged.economyMode = Boolean(merged.economyMode);
        merged.autoLoadAllVehicles = merged.autoLoadAllVehicles === true;
        merged.customVehicleBadges = merged.customVehicleBadges !== false;
        merged.allianceBuildingsMap = merged.allianceBuildingsMap !== false;
        merged.majorIncidentFeed.enabled = merged.majorIncidentFeed.enabled !== false;
        merged.majorIncidentFeed.minimumCredits = MAJOR_INCIDENT_FEED_MINIMUM_OPTIONS.includes(Number(merged.majorIncidentFeed.minimumCredits)) ? Number(merged.majorIncidentFeed.minimumCredits) : 25000;
        delete merged.missionAgeWatch;
        delete merged.missionInspector;
        merged.missionLockAudio = merged.missionLockAudio !== false;
        merged.missionValue = merged.missionValue !== false;
        delete merged.operationalWindow;
        delete merged.missionRequirements;
        merged.tabletMode = ['auto', 'on', 'off'].includes(String(merged.tabletMode)) ? String(merged.tabletMode) : 'auto';
        merged.mobileMode = ['auto', 'on', 'off'].includes(String(merged.mobileMode)) ? String(merged.mobileMode) : 'auto';
        merged.transportWatcher = merged.transportWatcher !== false;
        merged.stuckDetector.enabled = merged.stuckDetector.enabled !== false;
        merged.stuckDetector.thresholdMin = Math.round(clamp(merged.stuckDetector.thresholdMin, STUCK_MIN_MINUTES, STUCK_MAX_MINUTES, 20));
        merged.missionSpawn.enabled = merged.missionSpawn.enabled !== false;
        merged.resourceGap.enabled = Boolean(merged.resourceGap.enabled);
        merged.resourceGap.radiusMi = RESOURCE_GAP_RADIUS_OPTIONS.includes(Number(merged.resourceGap.radiusMi)) ? Number(merged.resourceGap.radiusMi) : 25;
        merged.transportSweep.delayMs = TRANSPORT_SWEEP_DELAY_OPTIONS.includes(Number(merged.transportSweep.delayMs)) ? Number(merged.transportSweep.delayMs) : 2000;
        merged.transportSweep.maxPerRun = Math.round(clamp(merged.transportSweep.maxPerRun, 1, TRANSPORT_SWEEP_MAX_REQUESTS, 25));
        merged.payoutFlash.enabled = merged.payoutFlash.enabled !== false;
        merged.payoutFlash.threshold = Math.round(clamp(merged.payoutFlash.threshold, 1000, 1000000000, 10000));
        merged.payoutFlash.durationMs = normalisePayoutFlashDuration(merged.payoutFlash.durationMs);
        merged.payoutFlash.template = PAYOUT_TEMPLATES[merged.payoutFlash.template] ? merged.payoutFlash.template : 'gta5';
        merged.payoutFlash.soundEnabled = Boolean(merged.payoutFlash.soundEnabled);
        merged.payoutFlash.soundVolume = clamp(merged.payoutFlash.soundVolume, 0, 1, 0.35);
        merged.discordReport.webhookName = String(merged.discordReport.webhookName || 'MissionChief Finance').trim().slice(0, 80) || 'MissionChief Finance';
        merged.discordReport.topCategories = [3, 5, 8].includes(Number(merged.discordReport.topCategories)) ? Number(merged.discordReport.topCategories) : 5;
        merged.discordReport.period = ['today', 'yesterday', 'last24', 'last7', 'last30', 'last90', 'last180', 'last365', 'allAvailable', 'session', 'sinceLast', 'custom'].includes(merged.discordReport.period) ? merged.discordReport.period : 'today';
        merged.discordReport.customStart = /^\d{4}-\d{2}-\d{2}$/u.test(String(merged.discordReport.customStart || '')) ? String(merged.discordReport.customStart) : localIsoDate(new Date(Date.now() - 6 * 86400000));
        merged.discordReport.customEnd = /^\d{4}-\d{2}-\d{2}$/u.test(String(merged.discordReport.customEnd || '')) ? String(merged.discordReport.customEnd) : localIsoDate();
        merged.discordReport.includeChart = merged.discordReport.includeChart !== false;
        merged.discordReport.includeComparison = merged.discordReport.includeComparison !== false;
        merged.discordReport.reportMode = ['executive', 'fullAudit'].includes(String(merged.discordReport.reportMode)) ? String(merged.discordReport.reportMode) : 'fullAudit';
        merged.discordReport.includeForecast = merged.discordReport.includeForecast !== false;
        merged.discordReport.includeRisk = merged.discordReport.includeRisk !== false;
        merged.financialVault.enabled = merged.financialVault.enabled !== false;
        merged.financialVault.ruleFeedEnabled = merged.financialVault.ruleFeedEnabled !== false;
        merged.financialVault.retentionDays = String(merged.financialVault.retentionDays) === 'all'
        ? 'all'
        : ([90, 180, 365, 730, 1825].includes(Number(merged.financialVault.retentionDays)) ? Number(merged.financialVault.retentionDays) : 'all');
        delete merged.financialVault.autoSync;
        delete merged.financialVault.benchmarkOptIn;
        delete merged.financialVault.gatewayUrl;
        delete merged.discordReport.includeBenchmark;
        merged.bookmarks = merged.bookmarks.map(item => item ? {
        ...item,
        name: String(item.name || 'Bookmark').trim().slice(0, 80) || 'Bookmark',
        shortLabel: sanitiseBookmarkShortLabel(item.shortLabel || ''),
        pinned: Boolean(item.pinned)
        } : null);
        merged.profiles = merged.profiles.map(item => item && typeof item === 'object' ? item : null);

        if (!merged.panelPosition || !Number.isFinite(Number(merged.panelPosition.left)) || !Number.isFinite(Number(merged.panelPosition.top))) {
        merged.panelPosition = null;
        } else {
        merged.panelPosition = { left: Number(merged.panelPosition.left), top: Number(merged.panelPosition.top) };
        }

        delete merged.requiresAttention;
        return merged;
    }

    function loadState() {
        const base = defaultState();
        const raw = localStorage.getItem(SCRIPT.storageState) || SCRIPT.oldStorageKeys.map(key => localStorage.getItem(key)).find(Boolean);
        if (!raw) return base;

        try {
        return normaliseLoadedState(JSON.parse(raw), base);
        } catch (err) {
        return base;
        }
    }

    function saveState() {
        try {
        localStorage.setItem(SCRIPT.storageState, JSON.stringify(state));
        localStorage.setItem(SCRIPT.legacyTheme, state.theme);
        localStorage.setItem(SCRIPT.legacyPosition, state.position);
        } catch (err) {}
    }

    function getLegacyTheme() {
        return normaliseTheme(localStorage.getItem(SCRIPT.legacyTheme) || 'default');
    }

    function getLegacyPosition() {
        const saved = localStorage.getItem(SCRIPT.legacyPosition);
        return POSITIONS[saved] ? saved : 'bl';
    }

    function normaliseUiTheme(key) {
        return UI_THEMES[key] ? key : 'mapCommand';
    }

    function applyUiTheme(key, announce = false) {
        const nextTheme = normaliseUiTheme(key);
        const changed = state.uiTheme !== nextTheme;
        const pairedHyrulePayout = nextTheme === 'hyrule' && state.payoutFlash.template !== 'hyruleQuest';
        state.uiTheme = nextTheme;
        if (pairedHyrulePayout) state.payoutFlash.template = 'hyruleQuest';
        saveState();
        updateUI();
        if (announce && changed) {
        showToast(pairedHyrulePayout
            ? 'Hyrule Command interface and Quest Reward payout active'
            : `${UI_THEMES[nextTheme].label} interface active`);
        }
    }

    function normaliseTheme(key) {
        if (THEMES[key]) return key;
        if (LEGACY_THEME_MAP[key]) return LEGACY_THEME_MAP[key];
        return 'default';
    }

    function payoutTemplateMeta(key = state?.payoutFlash?.template) {
        return PAYOUT_TEMPLATES[key] || PAYOUT_TEMPLATES.gta5;
    }

    function buildPayoutTemplateOptions(selected = state?.payoutFlash?.template) {
        return PAYOUT_TEMPLATE_ORDER.map(key => `<option value="${key}"${key === selected ? ' selected' : ''}>${PAYOUT_TEMPLATES[key].label}</option>`).join('');
    }

    function payoutTitleForTemplate(presentation, template = state?.payoutFlash?.template) {
        const tier = presentation?.tier || 'standard';
        const themedTitles = {
        gta5: {
            standard: 'MISSION COMPLETE', major: 'BIG SCORE SECURED', high: 'HEIST PAYDAY', elite: 'LEGENDARY TAKE'
        },
        viceCity: {
            standard: 'Cash Collected', major: 'Miami Money', high: 'Empire Payday', elite: 'King of the City'
        },
        badCompany: {
            standard: 'CONTRACT COMPLETE', major: 'OBJECTIVE SECURED', high: 'PAYDAY EXTRACTED', elite: 'FORTUNE OF WAR'
        },
        scarface: {
            standard: 'CASHOUT COMPLETE', major: 'EMPIRE EXPANDED', high: 'POWER SECURED', elite: 'THE WORLD IS YOURS'
        },
        cyberpunk: {
            standard: 'EDdies TRANSFERRED', major: 'DATA HEIST PAID', high: 'MEGACORP JACKPOT', elite: 'NIGHT CITY LEGEND'
        },
        hellfire: {
            standard: 'BOUNTY CLAIMED', major: 'INFERNAL PAYDAY', high: 'HELLGATE FORTUNE', elite: 'CROWN OF CINDERS'
        },
        wasteland: {
            standard: 'CAPS SECURED', major: 'VAULT RESERVES INCREASED', high: 'WASTELAND FORTUNE FOUND', elite: 'JACKPOT OF THE COMMONWEALTH'
        },
        factorio: {
            standard: 'PRODUCTION TARGET MET', major: 'ASSEMBLY BONUS SECURED', high: 'MEGABASE PAYOUT', elite: 'THE FACTORY MUST GROW'
        },
        galactic: {
            standard: 'CREDITS RECEIVED', major: 'FLEET BONUS CLEARED', high: 'SECTOR TREASURY UNLOCKED', elite: 'GALACTIC FORTUNE'
        },
        darkFantasy: {
            standard: 'Reward Bestowed', major: 'Royal Bounty', high: 'Ancient Treasure Claimed', elite: 'Fortune of the Realm'
        },
        biohazard: {
            standard: 'CONTAINMENT OPERATION COMPLETE', major: 'SECURE TRANSFER RELEASED', high: 'BLACKSITE CREDIT AUTHORIZED', elite: 'OMEGA CLEARANCE AWARD'
        },
        underworld: {
            standard: 'Tribute Collected', major: 'Blood Money Secured', high: 'Dynasty Fortune', elite: 'Sovereign of the Night'
        },
        pixelArcade: {
            standard: 'STAGE CLEAR', major: 'BONUS ROUND', high: 'HIGH SCORE PAYOUT', elite: '1UP JACKPOT'
        },
        jamesBond: {
            standard: 'MISSION ACCOMPLISHED', major: 'CLASSIFIED BONUS SECURED', high: 'DOUBLE-O PAYDAY', elite: 'TOP SECRET JACKPOT'
        },
        hyruleQuest: {
            standard: 'QUEST COMPLETE', major: "HERO'S REWARD", high: 'TREASURE OF HYRULE', elite: 'LEGENDARY RELIC CLAIMED'
        }
        };
        return themedTitles[template]?.[tier] || presentation?.title || '';
    }

    function formatPayoutTitleForTemplate(title, template = state?.payoutFlash?.template) {
        const clean = String(title || '').replace(/\s+/g, ' ').trim();
        if (!payoutTemplateMeta(template).titleCase) return clean.toUpperCase();
        return clean.toLowerCase().replace(/\b\w/g, char => char.toUpperCase());
    }

    function clamp(value, min, max, fallback) {
        const num = Number(value);
        if (!Number.isFinite(num)) return fallback;
        return Math.max(min, Math.min(max, num));
    }

    function normalisePayoutFlashDuration(value) {
        const duration = Number(value);
        if (!Number.isFinite(duration)) return 4000;
        const rounded = Math.round(duration / PAYOUT_FLASH_STEP_MS) * PAYOUT_FLASH_STEP_MS;
        return Math.max(PAYOUT_FLASH_MIN_MS, Math.min(PAYOUT_FLASH_MAX_MS, rounded));
    }

    function escapeHtml(value) {
        return String(value)
        .replaceAll('&', '&amp;')
        .replaceAll('<', '&lt;')
        .replaceAll('>', '&gt;')
        .replaceAll('"', '&quot;')
        .replaceAll("'", '&#039;');
    }

    function allianceAwareHtml(value) {
        return escapeHtml(value).replace(/\balliance\b/giu, match => `<span class="mcms-alliance-text">${match}</span>`);
    }

    function closestEventTarget(event, selector) {
        const target = event?.target;
        if (target && typeof target.closest === 'function') return target.closest(selector);
        return target?.parentElement?.closest?.(selector) || null;
    }


    function decodeMissionTextEntities(value) {
        let text = String(value ?? '');
        const entityPattern = /&(?:#\d+|#x[\da-f]+|[a-z]+);/i;
        if (!entityPattern.test(text)) return text;
        try {
        const textarea = document.createElement('textarea');
            // MissionChief can return captions as either &quot; or double-escaped
            // &amp;quot;. Decode a small bounded number of passes until stable.
        for (let pass = 0; pass < 3 && entityPattern.test(text); pass += 1) {
            textarea.innerHTML = text;
            const decoded = textarea.value;
            if (decoded === text) break;
            text = decoded;
        }
        return text;
        } catch (err) {
        return text;
        }
    }

    function normaliseMissionCaption(value) {
        return decodeMissionTextEntities(value).replace(/\s+/g, ' ').trim();
    }

    function missingRequirementKeyLabel(key) {
        const clean = String(key ?? '').replace(/[_-]+/g, ' ').replace(/\s+/g, ' ').trim().toLowerCase();
        const labels = {
        vehicle: 'VEHICLES',
        vehicles: 'VEHICLES',
        personnel: 'PERSONNEL',
        staff: 'PERSONNEL',
        people: 'PERSONNEL',
        patient: 'PATIENTS',
        patients: 'PATIENTS',
        prisoner: 'PRISONERS',
        prisoners: 'PRISONERS',
        transport: 'TRANSPORT',
        other: 'OTHER'
        };
        return labels[clean] || clean.replace(/\b\w/g, char => char.toUpperCase());
    }

    function missingRequirementValueText(value) {
        if (value === undefined || value === null || value === false) return '';
        if (Array.isArray(value)) {
        return value.map(missingRequirementValueText).filter(Boolean).join(', ');
        }
        if (typeof value === 'object') {
        return Object.entries(value)
            .map(([key, nestedValue]) => {
                const nested = missingRequirementValueText(nestedValue);
                return nested ? `${missingRequirementKeyLabel(key)}: ${nested}` : '';
            })
            .filter(Boolean)
            .join(', ');
        }
        return decodeMissionTextEntities(value)
        .replace(/<[^>]*>/g, ' ')
        .replace(/\\[nrt]/g, ' ')
        .replace(/\s+/g, ' ')
        .replace(/^['"]+|['"]+$/g, '')
        .trim();
    }

    function formatMissingRequirementObject(value) {
        if (!value || typeof value !== 'object' || Array.isArray(value)) return '';
        const priority = ['vehicles', 'vehicle', 'personnel', 'staff', 'people', 'patients', 'patient', 'prisoners', 'prisoner', 'transport', 'other'];
        const entries = Object.entries(value).sort(([keyA], [keyB]) => {
        const a = priority.indexOf(String(keyA).toLowerCase());
        const b = priority.indexOf(String(keyB).toLowerCase());
        return (a < 0 ? priority.length : a) - (b < 0 ? priority.length : b);
        });
        return entries
        .map(([key, rawValue]) => {
            const formatted = missingRequirementValueText(rawValue);
            return formatted ? `${missingRequirementKeyLabel(key)}: ${formatted}` : '';
        })
        .filter(Boolean)
        .join(' • ');
    }

    function normaliseMissingRequirementText(value) {
        if (value === undefined || value === null) return '';
        if (typeof value === 'object') return formatMissingRequirementObject(value) || missingRequirementValueText(value);

        let text = decodeMissionTextEntities(value)
        .replace(/<br\s*\/?>/gi, ' ')
        .replace(/<[^>]*>/g, ' ')
        .replace(/\\[nrt]/g, ' ')
        .replace(/\s+/g, ' ')
        .trim();
        if (!text) return '';

        // MissionChief can expose the requirement payload as JSON, escaped JSON,
        // or occasionally as a key/value fragment without its opening brace.
        for (let pass = 0; pass < 3; pass += 1) {
        let candidate = text;
        if (!candidate.startsWith('{') && /^(?:["']?[a-z][\w -]*["']?)\s*:/i.test(candidate)) candidate = `{${candidate}`;
        if (candidate.startsWith('{') && !candidate.endsWith('}')) candidate += '}';
        try {
            const parsed = JSON.parse(candidate);
            if (parsed && typeof parsed === 'object') return formatMissingRequirementObject(parsed) || missingRequirementValueText(parsed);
            if (typeof parsed === 'string' && parsed.trim() && parsed.trim() !== text) {
                text = parsed.trim();
                continue;
            }
        } catch (err) {}
        break;
        }

        // Fallback for malformed but still recognisable object fragments.
        const parsedPairs = {};
        const pairPattern = /["']?([a-z][\w -]*)["']?\s*:\s*(?:"([^"]*)"|'([^']*)'|([^,}\]]+))/gi;
        let match;
        while ((match = pairPattern.exec(text))) {
        const key = match[1];
        const pairValue = match[2] ?? match[3] ?? match[4] ?? '';
        parsedPairs[key] = pairValue;
        }
        if (Object.keys(parsedPairs).length) {
        const formatted = formatMissingRequirementObject(parsedPairs);
        if (formatted) return formatted;
        }

        return text.replace(/^[{\[]+|[}\]]+$/g, '').replace(/\s+/g, ' ').trim();
    }

    function removeOldInstances() {
        document.querySelectorAll(`#${SCRIPT.controlId}, #${SCRIPT.panelId}, #${SCRIPT.toastId}, #${SCRIPT.payoutFlashId}, #${SCRIPT.vehicleStatusId}, #${SCRIPT.majorIncidentFeedId}, #${SCRIPT.helpCenterId}, #${SCRIPT.oldControlId}, #${SCRIPT.cleanExitId}, #${SCRIPT.oldGeoLabelLayerId}`)
        .forEach(el => el.remove());

        document.querySelectorAll('style').forEach(style => {
        const text = style.textContent || '';
        if (style.id.startsWith('mc-map-command-') || (text.includes('mcms-') && text.includes('data-mc-map-skin'))) {
            style.remove();
        }
        });
    }

    function addStyle(css) {
        const style = document.createElement('style');
        style.id = SCRIPT.styleId;
        style.textContent = css;
        const parent = document.head || document.documentElement;
        if (parent) parent.appendChild(style);
        else document.addEventListener('readystatechange', () => (document.head || document.documentElement)?.appendChild(style), { once: true });
    }

    let mainStylesInstalled = false;

    function installMainStyles() {
        if (mainStylesInstalled && document.getElementById(SCRIPT.styleId)) return;
        const styleStartedAt = startupClock();
        mainStylesInstalled = true;
        addStyle(`
html[data-mc-map-skin="default"] .leaflet-tile-pane img.leaflet-tile { filter: none !important; }html[data-mc-map-skin="control"] .leaflet-container { background: #111820 !important; }html[data-mc-map-skin="control"] .leaflet-tile-pane img.leaflet-tile { filter: invert(92%) hue-rotate(182deg) brightness(62%) contrast(112%) saturate(72%) !important; }html[data-mc-map-skin="incident"] .leaflet-tile-pane img.leaflet-tile { filter: brightness(108%) contrast(142%) saturate(118%) !important; }html[data-mc-map-skin="roads"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(28%) brightness(104%) contrast(126%) saturate(70%) !important; }html[data-mc-map-skin="urban"] .leaflet-container { background: #111 !important; }html[data-mc-map-skin="urban"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(100%) invert(88%) brightness(61%) contrast(122%) saturate(54%) !important; }html[data-mc-map-skin="rural"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(42%) brightness(94%) contrast(108%) saturate(58%) !important; }html[data-mc-map-skin="nightshift"] .leaflet-container { background: #07111f !important; }html[data-mc-map-skin="nightshift"] .leaflet-tile-pane img.leaflet-tile { filter: invert(88%) hue-rotate(165deg) brightness(68%) contrast(119%) saturate(72%) !important; }html[data-mc-map-skin="fireCommand"] .leaflet-container { background: #17120f !important; }html[data-mc-map-skin="fireCommand"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(38%) sepia(58%) hue-rotate(335deg) saturate(145%) brightness(76%) contrast(124%) !important; }html[data-mc-map-skin="policeTactical"] .leaflet-container { background: #071321 !important; }html[data-mc-map-skin="policeTactical"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(24%) invert(89%) sepia(18%) saturate(118%) hue-rotate(166deg) brightness(64%) contrast(126%) !important; }html[data-mc-map-skin="medicalControl"] .leaflet-container { background: #061b1c !important; }html[data-mc-map-skin="medicalControl"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(18%) invert(88%) sepia(22%) saturate(126%) hue-rotate(126deg) brightness(68%) contrast(116%) !important; }html[data-mc-map-skin="coastalCommand"] .leaflet-container { background: #061725 !important; }html[data-mc-map-skin="coastalCommand"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(22%) sepia(24%) hue-rotate(145deg) saturate(138%) brightness(82%) contrast(118%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="default"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(18%) brightness(106%) contrast(132%) saturate(82%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="control"] .leaflet-tile-pane img.leaflet-tile { filter: invert(92%) hue-rotate(182deg) brightness(68%) contrast(132%) saturate(70%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="incident"] .leaflet-tile-pane img.leaflet-tile { filter: brightness(112%) contrast(156%) saturate(110%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="roads"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(35%) brightness(110%) contrast(150%) saturate(58%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="urban"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(100%) invert(88%) brightness(68%) contrast(144%) saturate(50%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="rural"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(48%) brightness(101%) contrast(130%) saturate(52%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="nightshift"] .leaflet-tile-pane img.leaflet-tile { filter: invert(88%) hue-rotate(165deg) brightness(73%) contrast(136%) saturate(68%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="fireCommand"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(42%) sepia(62%) hue-rotate(335deg) saturate(150%) brightness(82%) contrast(142%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="policeTactical"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(28%) invert(89%) sepia(18%) saturate(112%) hue-rotate(166deg) brightness(70%) contrast(144%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="medicalControl"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(22%) invert(88%) sepia(22%) saturate(122%) hue-rotate(126deg) brightness(74%) contrast(134%) !important; }html[data-mcms-road-priority="true"][data-mc-map-skin="coastalCommand"] .leaflet-tile-pane img.leaflet-tile { filter: grayscale(26%) sepia(24%) hue-rotate(145deg) saturate(132%) brightness(88%) contrast(136%) !important; }
        @keyframes mcmsMissionPulse {
            0% { filter: drop-shadow(0 0 1px rgba(255,70,70,.25)) brightness(1); }
            50% { filter: drop-shadow(0 0 8px rgba(255,70,70,.95)) brightness(1.18); }
            100% { filter: drop-shadow(0 0 1px rgba(255,70,70,.25)) brightness(1); }}html[data-mcms-marker-focus="true"] .leaflet-marker-pane > .leaflet-marker-icon:not(.mcms-marker-mission),
        html[data-mcms-marker-focus="true"] .leaflet-marker-icon.mcms-marker-building,
        html[data-mcms-marker-focus="true"] .leaflet-marker-icon.mcms-marker-vehicle,
        html[data-mcms-marker-focus="true"] .leaflet-marker-icon[data-mcms-vehicle-marker="true"],
        html[data-mcms-marker-focus="true"] .leaflet-marker-icon[data-mcms-personal-building-marker="true"] {
            opacity: .38 !important;
            filter: grayscale(35%) brightness(.82) !important;}html[data-mcms-marker-focus="true"] .leaflet-marker-icon.mcms-marker-mission {
            opacity: 1 !important;
            filter: drop-shadow(0 0 5px rgba(255,75,75,.75)) brightness(1.12) !important;
            z-index: 999 !important;}html[data-mcms-mission-pulse="true"] .leaflet-marker-icon.mcms-marker-mission { animation: mcmsMissionPulse 1.65s ease-in-out infinite !important; }html[data-mcms-show-alliance-missions="false"] .leaflet-marker-icon.mcms-marker-alliance-mission { display: none !important; }html[data-mcms-show-my-missions="false"] .leaflet-marker-icon.mcms-marker-my-mission { display: none !important; }html[data-mcms-show-vehicles="false"] .leaflet-marker-icon.mcms-marker-vehicle,
        html[data-mcms-show-vehicles="false"] .leaflet-marker-icon[data-mcms-vehicle-marker="true"] { display: none !important; }html[data-mcms-show-buildings="false"] .leaflet-marker-icon.mcms-marker-personal-building,
        html[data-mcms-show-buildings="false"] .leaflet-marker-icon[data-mcms-personal-building-marker="true"] { display: none !important; }.leaflet-marker-icon.mcms-mission-focus {
            filter: drop-shadow(0 0 5px #fff) drop-shadow(0 0 12px #ff5252) brightness(1.22) !important;
            z-index: 1000 !important;}.mcms-mission-lock-travel-overlay,
        .mcms-mission-lock-dom,
        .leaflet-marker-icon.mcms-mission-lock-target {
            --mcms-lock-primary:#67d9ff;
            --mcms-lock-secondary:#e9fbff;
            --mcms-lock-accent:#ff5252;
            --mcms-lock-surface:rgba(3,13,22,.92);
            --mcms-lock-grid:rgba(103,217,255,.12);
            --mcms-lock-x:50%;
            --mcms-lock-y:50%;}.mcms-mission-lock-travel-overlay {
            position:absolute !important;
            inset:0 !important;
            z-index:780 !important;
            overflow:hidden !important;
            pointer-events:none !important;
            opacity:0 !important;
            background:
                linear-gradient(180deg,rgba(0,0,0,.10),transparent 28% 72%,rgba(0,0,0,.18)),
                repeating-linear-gradient(90deg,transparent 0 89px,var(--mcms-lock-grid) 90px 91px,transparent 92px 180px) !important;
            animation:mcmsIntelTravel 860ms cubic-bezier(.2,.72,.2,1) both !important;}.mcms-mission-lock-travel-overlay::before {
            content:'' !important;
            position:absolute !important;
            left:-15% !important;
            right:-15% !important;
            top:12% !important;
            height:1px !important;
            background:linear-gradient(90deg,transparent,var(--mcms-lock-primary) 22%,var(--mcms-lock-secondary) 50%,var(--mcms-lock-primary) 78%,transparent) !important;
            box-shadow:0 0 6px var(--mcms-lock-primary),0 0 14px color-mix(in srgb,var(--mcms-lock-primary) 45%,transparent) !important;
            animation:mcmsIntelTravelScan 860ms cubic-bezier(.16,.72,.18,1) both !important;}.mcms-mission-lock-travel-overlay::after {
            content:'TRACKING / COORDINATE INTERCEPT' !important;
            position:absolute !important;
            left:14px !important;
            bottom:11px !important;
            color:var(--mcms-lock-primary) !important;
            font:900 8px/1 Arial,Helvetica,sans-serif !important;
            letter-spacing:1.15px !important;
            opacity:0 !important;
            text-shadow:0 0 8px color-mix(in srgb,var(--mcms-lock-primary) 62%,transparent) !important;
            animation:mcmsIntelTravelCaption 860ms ease both !important;}.mcms-mission-lock-dom {
            position:absolute !important;
            inset:0 !important;
            z-index:790 !important;
            overflow:hidden !important;
            pointer-events:none !important;}.mcms-mission-lock-intel {
            position:absolute !important;
            inset:0 !important;
            pointer-events:none !important;}.mcms-mission-lock-beam {
            position:absolute !important;
            opacity:0 !important;
            background:linear-gradient(90deg,transparent,var(--mcms-lock-primary) 18%,var(--mcms-lock-secondary) 50%,var(--mcms-lock-primary) 82%,transparent) !important;
            filter:drop-shadow(0 0 4px var(--mcms-lock-primary)) !important;}.mcms-mission-lock-beam-left,
        .mcms-mission-lock-beam-right {
            top:calc(var(--mcms-lock-y) - .5px) !important;
            height:1px !important;}.mcms-mission-lock-beam-left {
            left:0 !important;
            width:max(0px,calc(var(--mcms-lock-x) - 54px)) !important;
            transform-origin:right center !important;
            animation:mcmsIntelBeamLeft 1100ms cubic-bezier(.18,.74,.16,1) 40ms both !important;}.mcms-mission-lock-beam-right {
            left:calc(var(--mcms-lock-x) + 54px) !important;
            right:0 !important;
            transform-origin:left center !important;
            animation:mcmsIntelBeamRight 1100ms cubic-bezier(.18,.74,.16,1) 40ms both !important;}.mcms-mission-lock-beam-top,
        .mcms-mission-lock-beam-bottom {
            left:calc(var(--mcms-lock-x) - .5px) !important;
            width:1px !important;
            background:linear-gradient(180deg,transparent,var(--mcms-lock-primary) 18%,var(--mcms-lock-secondary) 50%,var(--mcms-lock-primary) 82%,transparent) !important;}.mcms-mission-lock-beam-top {
            top:0 !important;
            height:max(0px,calc(var(--mcms-lock-y) - 54px)) !important;
            transform-origin:center bottom !important;
            animation:mcmsIntelBeamTop 1100ms cubic-bezier(.18,.74,.16,1) 40ms both !important;
        }.mcms-mission-lock-beam-bottom {
            top:calc(var(--mcms-lock-y) + 54px) !important;
            bottom:0 !important;
            transform-origin:center top !important;
            animation:mcmsIntelBeamBottom 1100ms cubic-bezier(.18,.74,.16,1) 40ms both !important;
        }.mcms-mission-lock-reticle {
            position:absolute !important;
            left:var(--mcms-lock-x) !important;
            top:var(--mcms-lock-y) !important;
            width:92px !important;
            height:92px !important;
            transform:translate(-50%,-50%) scale(1.7) !important;
            opacity:0 !important;
            animation:mcmsIntelReticleAcquire 2250ms cubic-bezier(.15,.76,.16,1) 480ms both !important;
        }.mcms-mission-lock-reticle::before,
        .mcms-mission-lock-reticle::after {
            content:'' !important;
            position:absolute !important;
            inset:11px !important;
            border-radius:50% !important;
            border:1px solid color-mix(in srgb,var(--mcms-lock-primary) 80%,transparent) !important;
            box-shadow:0 0 10px color-mix(in srgb,var(--mcms-lock-primary) 32%,transparent) !important;
        }.mcms-mission-lock-reticle::before {
            border-style:dashed !important;
            animation:mcmsIntelRingSpin 2.1s linear 650ms both !important;
        }.mcms-mission-lock-reticle::after {
            inset:26px !important;
            border-color:var(--mcms-lock-secondary) !important;
            animation:mcmsIntelInnerPulse 1.05s ease-in-out 1000ms 2 both !important;
        }.mcms-mission-lock-radar {
            position:absolute !important;
            inset:15px !important;
            border-radius:50% !important;
            overflow:hidden !important;
            opacity:0 !important;
            background:conic-gradient(from -35deg,transparent 0 300deg,color-mix(in srgb,var(--mcms-lock-primary) 8%,transparent) 306deg,color-mix(in srgb,var(--mcms-lock-primary) 48%,transparent) 338deg,transparent 348deg 360deg) !important;
            animation:mcmsIntelRadar 1450ms cubic-bezier(.18,.72,.16,1) 500ms both !important;
        }.mcms-mission-lock-bracket {
            position:absolute !important;
            width:19px !important;
            height:19px !important;
            opacity:0 !important;
            border-color:var(--mcms-lock-primary) !important;
            border-style:solid !important;
            filter:drop-shadow(0 0 4px color-mix(in srgb,var(--mcms-lock-primary) 62%,transparent)) !important;
        }.mcms-mission-lock-bracket-a { left:0;top:0;border-width:2px 0 0 2px;animation:mcmsIntelBracketA 720ms cubic-bezier(.12,.78,.16,1) 850ms both !important; }.mcms-mission-lock-bracket-b { right:0;top:0;border-width:2px 2px 0 0;animation:mcmsIntelBracketB 720ms cubic-bezier(.12,.78,.16,1) 850ms both !important; }.mcms-mission-lock-bracket-c { right:0;bottom:0;border-width:0 2px 2px 0;animation:mcmsIntelBracketC 720ms cubic-bezier(.12,.78,.16,1) 850ms both !important; }.mcms-mission-lock-bracket-d { left:0;bottom:0;border-width:0 0 2px 2px;animation:mcmsIntelBracketD 720ms cubic-bezier(.12,.78,.16,1) 850ms both !important; }.mcms-mission-lock-crosshair {
            position:absolute !important;
            left:50% !important;
            top:50% !important;
            width:28px !important;
            height:28px !important;
            transform:translate(-50%,-50%) !important;
            opacity:0 !important;
            animation:mcmsIntelCrosshair 420ms ease 1320ms both !important;
        }.mcms-mission-lock-crosshair::before,
        .mcms-mission-lock-crosshair::after {
            content:'' !important;
            position:absolute !important;
            background:var(--mcms-lock-secondary) !important;
            box-shadow:0 0 5px var(--mcms-lock-primary) !important;
        }.mcms-mission-lock-crosshair::before { left:0;right:0;top:50%;height:1px;transform:translateY(-50%); }.mcms-mission-lock-crosshair::after { top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%); }.mcms-mission-lock-dot {
            position:absolute !important;
            left:50% !important;
            top:50% !important;
            width:5px !important;
            height:5px !important;
            border-radius:50% !important;
            transform:translate(-50%,-50%) !important;
            background:var(--mcms-lock-accent) !important;
            box-shadow:0 0 4px var(--mcms-lock-secondary),0 0 12px var(--mcms-lock-accent) !important;
            opacity:0 !important;
            animation:mcmsIntelDot 1100ms ease 1280ms both !important;
        }.mcms-mission-lock-scan {
            position:absolute !important;
            left:16px !important;
            right:16px !important;
            top:20px !important;
            height:1px !important;
            background:linear-gradient(90deg,transparent,var(--mcms-lock-secondary),transparent) !important;
            box-shadow:0 0 6px var(--mcms-lock-primary) !important;
            opacity:0 !important;
            animation:mcmsIntelLocalScan 980ms ease 780ms both !important;
        }.mcms-mission-lock-label {
            position:absolute !important;
            left:50% !important;
            top:calc(100% + 8px) !important;
            width:max-content !important;
            max-width:190px !important;
            padding:5px 9px !important;
            border:1px solid color-mix(in srgb,var(--mcms-lock-primary) 74%,transparent) !important;
            border-left:3px solid var(--mcms-lock-accent) !important;
            border-radius:3px !important;
            background:var(--mcms-lock-surface) !important;
            color:var(--mcms-lock-secondary) !important;
            box-shadow:0 5px 14px rgba(0,0,0,.38),0 0 10px color-mix(in srgb,var(--mcms-lock-primary) 24%,transparent) !important;
            transform:translateX(-50%) translateY(6px) !important;
            opacity:0 !important;
            white-space:nowrap !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
            animation:mcmsIntelLabel 1550ms ease 1450ms both !important;
        }.mcms-mission-lock-label strong {
            display:block !important;
            color:var(--mcms-lock-primary) !important;
            font:950 8px/1 Arial,Helvetica,sans-serif !important;
            letter-spacing:1px !important;
            text-transform:uppercase !important;
        }.mcms-mission-lock-label small {
            display:block !important;
            margin-top:3px !important;
            color:var(--mcms-lock-secondary) !important;
            font:800 8px/1.1 Arial,Helvetica,sans-serif !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
        }.leaflet-marker-icon.mcms-mission-lock-target {
            animation:mcmsIntelMarkerPulse 2.65s ease-in-out 920ms both !important;
            z-index:1500 !important;
        }html[data-mcms-ui-theme="cyberpunk"] .mcms-mission-lock-travel-overlay,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-mission-lock-dom,
        html[data-mcms-ui-theme="cyberpunk"] .leaflet-marker-icon.mcms-mission-lock-target {
            --mcms-lock-primary:#fcee0a;--mcms-lock-secondary:#00f0ff;--mcms-lock-accent:#ff2a6d;--mcms-lock-surface:rgba(7,12,20,.94);--mcms-lock-grid:rgba(0,240,255,.12);
        }html[data-mcms-ui-theme="fallout4"] .mcms-mission-lock-travel-overlay,
        html[data-mcms-ui-theme="fallout4"] .mcms-mission-lock-dom,
        html[data-mcms-ui-theme="fallout4"] .leaflet-marker-icon.mcms-mission-lock-target {
            --mcms-lock-primary:#b8ff6a;--mcms-lock-secondary:#e5ffc2;--mcms-lock-accent:#ffcf62;--mcms-lock-surface:rgba(12,28,12,.94);--mcms-lock-grid:rgba(184,255,106,.10);
        }html[data-mcms-ui-theme="umbrella"] .mcms-mission-lock-travel-overlay,
        html[data-mcms-ui-theme="umbrella"] .mcms-mission-lock-dom,
        html[data-mcms-ui-theme="umbrella"] .leaflet-marker-icon.mcms-mission-lock-target {
            --mcms-lock-primary:#f23838;--mcms-lock-secondary:#fff;--mcms-lock-accent:#ffcf62;--mcms-lock-surface:rgba(15,17,20,.95);--mcms-lock-grid:rgba(242,56,56,.10);
        }html[data-mcms-ui-theme="factorio"] .mcms-mission-lock-travel-overlay,
        html[data-mcms-ui-theme="factorio"] .mcms-mission-lock-dom,
        html[data-mcms-ui-theme="factorio"] .leaflet-marker-icon.mcms-mission-lock-target {
            --mcms-lock-primary:#ff9b32;--mcms-lock-secondary:#fff0cf;--mcms-lock-accent:#ffdb59;--mcms-lock-surface:rgba(39,38,32,.95);--mcms-lock-grid:rgba(255,155,50,.10);
        }
        @keyframes mcmsIntelTravel { 0%{opacity:0} 12%{opacity:.34} 70%{opacity:.18} 100%{opacity:0} }
        @keyframes mcmsIntelTravelScan { 0%{opacity:0;top:8%} 14%{opacity:1} 82%{opacity:.82;top:92%} 100%{opacity:0;top:96%} }
        @keyframes mcmsIntelTravelCaption { 0%,18%{opacity:0;transform:translateX(-6px)} 28%,72%{opacity:.85;transform:translateX(0)} 100%{opacity:0;transform:translateX(4px)} }
        @keyframes mcmsIntelBeamLeft { 0%{opacity:0;transform:scaleX(0)} 22%{opacity:.9} 76%{opacity:.92;transform:scaleX(1)} 100%{opacity:0;transform:scaleX(1)} }
        @keyframes mcmsIntelBeamRight { 0%{opacity:0;transform:scaleX(0)} 22%{opacity:.9} 76%{opacity:.92;transform:scaleX(1)} 100%{opacity:0;transform:scaleX(1)} }
        @keyframes mcmsIntelBeamTop { 0%{opacity:0;transform:scaleY(0)} 22%{opacity:.9} 76%{opacity:.92;transform:scaleY(1)} 100%{opacity:0;transform:scaleY(1)} }
        @keyframes mcmsIntelBeamBottom { 0%{opacity:0;transform:scaleY(0)} 22%{opacity:.9} 76%{opacity:.92;transform:scaleY(1)} 100%{opacity:0;transform:scaleY(1)} }
        @keyframes mcmsIntelReticleAcquire { 0%,10%{opacity:0;transform:translate(-50%,-50%) scale(1.7)} 26%{opacity:1;transform:translate(-50%,-50%) scale(.86)} 38%{transform:translate(-50%,-50%) scale(1.04)} 88%{opacity:1;transform:translate(-50%,-50%) scale(1)} 100%{opacity:0;transform:translate(-50%,-50%) scale(1.04)} }
        @keyframes mcmsIntelRingSpin { 0%{transform:rotate(-90deg) scale(1.35);opacity:0} 18%{opacity:1} 100%{transform:rotate(390deg) scale(1);opacity:.8} }
        @keyframes mcmsIntelInnerPulse { 0%{transform:scale(.75);opacity:.2} 50%{transform:scale(1.06);opacity:1} 100%{transform:scale(1);opacity:.55} }
        @keyframes mcmsIntelRadar { 0%{opacity:0;transform:rotate(-120deg) scale(.65)} 15%{opacity:.82} 82%{opacity:.72;transform:rotate(540deg) scale(1)} 100%{opacity:0;transform:rotate(660deg) scale(1)} }
        @keyframes mcmsIntelBracketA { 0%{opacity:0;transform:translate(-32px,-32px)} 100%{opacity:1;transform:translate(0,0)} }
        @keyframes mcmsIntelBracketB { 0%{opacity:0;transform:translate(32px,-32px)} 100%{opacity:1;transform:translate(0,0)} }
        @keyframes mcmsIntelBracketC { 0%{opacity:0;transform:translate(32px,32px)} 100%{opacity:1;transform:translate(0,0)} }
        @keyframes mcmsIntelBracketD { 0%{opacity:0;transform:translate(-32px,32px)} 100%{opacity:1;transform:translate(0,0)} }
        @keyframes mcmsIntelCrosshair { 0%{opacity:0;transform:translate(-50%,-50%) scale(1.8)} 100%{opacity:1;transform:translate(-50%,-50%) scale(1)} }
        @keyframes mcmsIntelDot { 0%,100%{opacity:.3;transform:translate(-50%,-50%) scale(.8)} 35%,65%{opacity:1;transform:translate(-50%,-50%) scale(1.2)} }
        @keyframes mcmsIntelLocalScan { 0%{opacity:0;top:18px} 16%{opacity:1} 82%{opacity:.9;top:73px} 100%{opacity:0;top:76px} }
        @keyframes mcmsIntelLabel { 0%{opacity:0;transform:translateX(-50%) translateY(6px)} 18%,76%{opacity:1;transform:translateX(-50%) translateY(0)} 100%{opacity:0;transform:translateX(-50%) translateY(-2px)} }
        @keyframes mcmsIntelMarkerPulse { 0%,20%,100%{filter:brightness(1)} 38%{filter:drop-shadow(0 0 7px var(--mcms-lock-secondary,#fff)) drop-shadow(0 0 15px var(--mcms-lock-primary,#67d9ff)) brightness(1.45)} 58%{filter:drop-shadow(0 0 5px var(--mcms-lock-primary,#67d9ff)) brightness(1.16)} 74%{filter:drop-shadow(0 0 9px var(--mcms-lock-primary,#67d9ff)) brightness(1.3)} }
        @media (prefers-reduced-motion:reduce) {.mcms-mission-lock-travel-overlay,
        .mcms-mission-lock-travel-overlay::before,
        .mcms-mission-lock-travel-overlay::after,
        .mcms-mission-lock-beam,
        .mcms-mission-lock-reticle,
        .mcms-mission-lock-reticle::before,
        .mcms-mission-lock-reticle::after,
        .mcms-mission-lock-radar,
        .mcms-mission-lock-bracket,
        .mcms-mission-lock-crosshair,
        .mcms-mission-lock-dot,
        .mcms-mission-lock-scan,
        .mcms-mission-lock-label,
        .leaflet-marker-icon.mcms-mission-lock-target { animation:none !important; }.mcms-mission-lock-travel-overlay,
        .mcms-mission-lock-beam,
        .mcms-mission-lock-radar,
        .mcms-mission-lock-scan { display:none !important; }.mcms-mission-lock-reticle { opacity:1 !important; transform:translate(-50%,-50%) !important; }.mcms-mission-lock-bracket,
        .mcms-mission-lock-crosshair,
        .mcms-mission-lock-dot,
        .mcms-mission-lock-label { opacity:1 !important; }.mcms-mission-lock-label { transform:translateX(-50%) !important; }
        }html[data-mcms-clean="true"] .leaflet-control-zoom,
        html[data-mcms-clean="true"] .leaflet-control-scale,
        html[data-mcms-clean="true"] .leaflet-control-attribution,
        html[data-mcms-clean="true"] #${SCRIPT.controlId} { display: none !important; }#${SCRIPT.cleanExitId} {
            display: none; position: fixed; top: 10px; right: 12px; z-index: 999999;
            padding: 7px 10px; border-radius: 10px; border: 1px solid rgba(255,255,255,.22);
            background: rgba(10,14,20,.88); color: #fff; font: 900 11px/1.1 Arial, Helvetica, sans-serif;
            cursor: pointer; box-shadow: 0 8px 22px rgba(0,0,0,.34); backdrop-filter: blur(8px);
        }html[data-mcms-clean="true"] #${SCRIPT.cleanExitId} { display: block; }#${SCRIPT.controlId},
        #${SCRIPT.controlId} *,
        #${SCRIPT.controlId} *::before,
        #${SCRIPT.controlId} *::after,
        #${SCRIPT.panelId},
        #${SCRIPT.panelId} *,
        #${SCRIPT.panelId} *::before,
        #${SCRIPT.panelId} *::after {
            box-sizing: border-box !important;
            font-family: Arial, Helvetica, sans-serif !important;
            text-shadow: none !important;
            letter-spacing: normal !important;
        }#${SCRIPT.controlId} {
            position: absolute !important; z-index: 980 !important; color: #e9eef5 !important;
            user-select: none !important; pointer-events: auto !important; font-size: 11px !important; line-height: 1.15 !important;
            margin-left: var(--mcms-nudge-x, 0px) !important; margin-top: var(--mcms-nudge-y, 0px) !important;
            max-width: 210px !important;
        }#${SCRIPT.controlId}.mcms-hidden-by-menu { opacity: .28 !important; }#${SCRIPT.controlId}.mcms-pos-tl { left: 54px !important; top: 10px !important; }#${SCRIPT.controlId}.mcms-pos-tr { right: 12px !important; top: 48px !important; }#${SCRIPT.controlId}.mcms-pos-bl { left: 12px !important; bottom: 42px !important; }#${SCRIPT.controlId}.mcms-pos-br { right: 12px !important; bottom: 42px !important; }#${SCRIPT.controlId} button,
        #${SCRIPT.panelId} button,
        #${SCRIPT.panelId} input,
        #${SCRIPT.panelId} select {
            appearance: none !important; -webkit-appearance: none !important; margin: 0 !important; font: inherit !important;
            text-transform: none !important; box-shadow: none !important; outline: none !important;
        }#${SCRIPT.controlId} .mcms-shell {
            position: relative !important; display: inline-flex !important; align-items: stretch !important;
            width: 40px !important; height: 48px !important; border-radius: 10px !important;
            border: 1px solid rgba(255,255,255,.25) !important; background: rgba(10,14,20,.80) !important;
            box-shadow: 0 5px 16px rgba(0,0,0,.30) !important; backdrop-filter: blur(6px) !important; overflow: hidden !important;
            flex-direction: column !important;
        }#${SCRIPT.controlId} .mcms-menu-btn {
            width: 100% !important; height: auto !important; min-height: 0 !important; flex: 1 1 auto !important; border: 0 !important; background: transparent !important;
            color: #fff !important; cursor: pointer !important; display: flex !important; align-items: center !important;
            justify-content: center !important; padding: 0 !important; font-size: 17px !important;
        }#${SCRIPT.controlId} .mcms-menu-btn:hover,
        #${SCRIPT.controlId} .mcms-menu-btn:focus-visible { background: rgba(255,255,255,.12) !important; }#${SCRIPT.controlId} .mcms-dock-toggle-btn {
            width: 100% !important; height: 15px !important; flex: 0 0 15px !important; border: 0 !important; border-top: 1px solid rgba(255,255,255,.16) !important;
            padding: 0 !important; background: rgba(255,255,255,.055) !important; color: rgba(255,255,255,.82) !important; cursor: pointer !important;
            display: flex !important; align-items: center !important; justify-content: center !important; font-size: 11px !important; line-height: 1 !important; font-weight: 900 !important;
        }#${SCRIPT.controlId} .mcms-dock-toggle-btn:hover,
        #${SCRIPT.controlId} .mcms-dock-toggle-btn:focus-visible { background: rgba(86,169,255,.22) !important; color: #fff !important; }#${SCRIPT.controlId} .mcms-dock-toggle-icon { display: block !important; transform: translateY(-1px) !important; }html[data-mcms-command-bar-open="false"] #${SCRIPT.controlId} .mcms-floating-filter,
        html[data-mcms-command-bar-open="false"] #${SCRIPT.controlId} .mcms-screen-pins { display: none !important; }#${SCRIPT.controlId} .mcms-floating-filter {
            display: grid !important; grid-template-columns: repeat(2, 82px) !important; gap: 4px !important; margin-top: 6px !important; width: 168px !important;
        }#${SCRIPT.controlId} .mcms-float-btn,
        #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border: 1px solid rgba(255,255,255,.18) !important; border-radius: 8px !important; color: rgba(255,255,255,.74) !important;
            cursor: pointer !important; font-size: 8.5px !important; line-height: 1 !important; font-weight: 900 !important;
            box-shadow: 0 3px 10px rgba(0,0,0,.25) !important; backdrop-filter: blur(6px) !important;
        }#${SCRIPT.controlId} .mcms-float-btn {
            height: 29px !important; background: rgba(10,14,20,.78) !important; padding: 0 5px !important;
            display: grid !important; grid-template-columns: 17px minmax(0,1fr) !important; align-items: center !important; gap: 5px !important;
            text-align: left !important; overflow: hidden !important;
        }#${SCRIPT.controlId} .mcms-float-key {
            width: 17px !important; height: 17px !important; border-radius: 6px !important; background: rgba(255,255,255,.12) !important;
            display: flex !important; align-items: center !important; justify-content: center !important; color: #fff !important;
            font-size: 9px !important; line-height: 1 !important; font-weight: 900 !important;
        }#${SCRIPT.controlId} .mcms-float-label {
            min-width: 0 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important;
            font-size: 8.5px !important; line-height: 1 !important; font-weight: 900 !important;
        }#${SCRIPT.controlId} .mcms-float-label-tablet,
        #${SCRIPT.controlId} .mcms-float-label-mobile { display: none !important; }#${SCRIPT.controlId} .mcms-float-btn.mcms-on { background: rgba(25,118,210,.78) !important; color: #fff !important; border-color: rgba(120,190,255,.8) !important; }#${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key { background: rgba(255,255,255,.22) !important; }#${SCRIPT.controlId} .mcms-screen-pins {
            display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 4px !important; margin-top: 6px !important;
            width: 160px !important; max-height: 156px !important; overflow-y: auto !important; overflow-x: hidden !important; scrollbar-width: thin !important;
        }#${SCRIPT.controlId} .mcms-screen-pins:empty { display: none !important; }#${SCRIPT.controlId} .mcms-screen-pin-btn {
            height: 25px !important; min-width: 0 !important; padding: 0 6px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; color: #fff !important;
        }#${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-quick { background: rgba(16,78,138,.86) !important; border-color: rgba(86,169,255,.68) !important; }#${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-custom { background: rgba(106,80,10,.88) !important; border-color: rgba(255,213,79,.70) !important; }#${SCRIPT.panelId} {
            display: none !important;
            position: fixed !important;
            width: 318px !important;
            max-width: calc(100vw - 24px) !important;
            padding: 9px !important;
            border-radius: 14px !important;
            border: 1px solid rgba(255,255,255,.18) !important;
            background: rgba(10,14,20,.94) !important;
            color: #e9eef5 !important;
            box-shadow: 0 10px 28px rgba(0,0,0,.46) !important;
            backdrop-filter: blur(9px) !important;
            max-height: calc(100vh - 24px) !important;
            overflow-y: auto !important;
            overflow-x: hidden !important;
            scrollbar-width: thin !important;
            left: 12px;
            top: 12px;
            right: auto;
            bottom: auto;
            z-index: 981 !important;
            user-select: none !important;
            font-size: 11px !important;
            line-height: 1.15 !important;
        }#${SCRIPT.panelId}.mcms-open { display: block !important; }html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId} {
            box-sizing: border-box !important;
            max-height: var(--mcms-desktop-panel-max-height, calc(100vh - 24px)) !important;
            overflow: hidden !important;
            overscroll-behavior: contain !important;
        }html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId}.mcms-open {
            display: grid !important;
            grid-template-rows: auto minmax(0, 1fr) !important;
            align-content: stretch !important;
        }html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId} > .mcms-panel-sticky-stack {
            grid-row: 1 !important;
            min-height: 0 !important;
            flex: none !important;
            position: sticky !important;
            top: 0 !important;
            z-index: 30 !important;
            overflow: visible !important;
            transform: none !important;
        }html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId} > .mcms-panel-sticky-stack .mcms-header,
        html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId} > .mcms-panel-sticky-stack .mcms-tabs {
            flex: none !important;
        }html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId} > .mcms-tab-panel {
            grid-row: 2 !important;
            min-height: 0 !important;
            max-height: 100% !important;
        }html[data-mcms-device-layout="desktop"] body #${SCRIPT.panelId} > .mcms-tab-panel.mcms-active {
            display: block !important;
            height: 100% !important;
            min-height: 0 !important;
            overflow-y: auto !important;
            overflow-x: hidden !important;
            overscroll-behavior: contain !important;
            scrollbar-width: thin !important;
            padding-right: 2px !important;
        }#${SCRIPT.panelId}.mcms-dragging { opacity: .96 !important; cursor: grabbing !important; }#${SCRIPT.panelId} .mcms-header {
            display: grid !important; grid-template-columns: minmax(0, 1fr) 24px 24px 24px !important; align-items: center !important; gap: 7px !important;
            margin: 0 0 8px 0 !important; padding: 0 0 7px 0 !important; border-bottom: 1px solid rgba(255,255,255,.12) !important; overflow: hidden !important;
        }#${SCRIPT.panelId} .mcms-drag-handle {
            min-width: 0 !important; cursor: grab !important; touch-action: none !important; user-select: none !important;
            border-radius: 9px !important; padding: 4px 6px !important; background: rgba(255,255,255,.055) !important; border: 1px solid rgba(255,255,255,.075) !important;
        }#${SCRIPT.panelId} .mcms-drag-handle:hover { background: rgba(255,255,255,.10) !important; }#${SCRIPT.panelId}.mcms-dragging .mcms-drag-handle { cursor: grabbing !important; }#${SCRIPT.panelId} .mcms-title { display: block !important; font-size: 13px !important; line-height: 1.1 !important; font-weight: 900 !important; color: #f2f6ff !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }#${SCRIPT.panelId} .mcms-subtitle { display: block !important; margin-top: 2px !important; font-size: 9px !important; line-height: 1.15 !important; color: rgba(233,238,245,.64) !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }#${SCRIPT.panelId} .mcms-close,
        #${SCRIPT.panelId} .mcms-reset-panel,
        #${SCRIPT.panelId} .mcms-help-button {
            width: 24px !important; height: 24px !important; border: 0 !important; border-radius: 8px !important; background: rgba(255,255,255,.10) !important;
            color: rgba(255,255,255,.88) !important; cursor: pointer !important; font-size: 15px !important; line-height: 24px !important; text-align: center !important; padding: 0 !important;
        }#${SCRIPT.panelId} .mcms-close:hover,
        #${SCRIPT.panelId} .mcms-reset-panel:hover,
        #${SCRIPT.panelId} .mcms-help-button:hover,
        #${SCRIPT.panelId} .mcms-help-button:focus-visible { background: rgba(58,174,232,.28) !important; color:#fff !important; }#${SCRIPT.panelId} .mcms-tabs { display: grid !important; grid-template-columns: repeat(4, minmax(0,1fr)) !important; gap: 5px !important; margin-bottom: 8px !important; }#${SCRIPT.panelId} .mcms-tab-btn { height: 26px !important; border: 1px solid rgba(255,255,255,.13) !important; border-radius: 8px !important; background: rgba(255,255,255,.06) !important; color: rgba(255,255,255,.78) !important; cursor: pointer !important; font-size: 9px !important; line-height: 1.1 !important; font-weight: 900 !important; padding: 0 3px !important; overflow: hidden !important; white-space: normal !important; overflow-wrap: anywhere !important; }#${SCRIPT.panelId} .mcms-tab-btn.mcms-active,
        #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        #${SCRIPT.panelId} .mcms-pin-btn.mcms-on { background: rgba(25,118,210,.42) !important; border-color: rgba(120,190,255,.78) !important; color: #fff !important; }#${SCRIPT.panelId} .mcms-tab-panel { display: none !important; }#${SCRIPT.panelId} .mcms-tab-panel.mcms-active { display: block !important; }#${SCRIPT.panelId} .mcms-grid-2 { display: grid !important; grid-template-columns: repeat(2, minmax(0,1fr)) !important; gap: 7px !important; width: 100% !important; min-width: 0 !important; overflow: hidden !important; }#${SCRIPT.panelId} .mcms-theme-btn,
        #${SCRIPT.panelId} .mcms-toggle-btn,
        #${SCRIPT.panelId} .mcms-place-main {
            width: 100% !important; min-width: 0 !important; min-height: 42px !important; height: auto !important; border: 1px solid rgba(255,255,255,.13) !important; border-radius: 10px !important;
            background: rgba(255,255,255,.065) !important; color: #eef4ff !important; padding: 6px !important; cursor: pointer !important; text-align: left !important;
            display: grid !important; grid-template-columns: 20px minmax(0,1fr) !important; align-items: center !important; gap: 6px !important; overflow: hidden !important;
        }#${SCRIPT.panelId} .mcms-theme-btn:hover,
        #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        #${SCRIPT.panelId} .mcms-place-main:hover { background: rgba(255,255,255,.14) !important; border-color: rgba(255,255,255,.30) !important; }#${SCRIPT.panelId} .mcms-iconbox { width: 20px !important; height: 20px !important; min-width: 20px !important; border-radius: 7px !important; background: rgba(255,255,255,.11) !important; display: flex !important; align-items: center !important; justify-content: center !important; color: rgba(255,255,255,.86) !important; font-size: 10px !important; line-height: 1 !important; font-weight: 900 !important; overflow: hidden !important; }#${SCRIPT.panelId} .mcms-text { display: block !important; min-width: 0 !important; max-width: 100% !important; overflow: hidden !important; }#${SCRIPT.panelId} .mcms-label { display: block !important; width: 100% !important; color: #f4f7ff !important; font-size: 10.5px !important; line-height: 1.15 !important; font-weight: 900 !important; white-space: normal !important; overflow: visible !important; text-overflow: clip !important; overflow-wrap: anywhere !important; }#${SCRIPT.panelId} .mcms-pill { display: inline-block !important; margin-top: 4px !important; max-width: 78px !important; padding: 1px 5px !important; border-radius: 999px !important; background: rgba(255,255,255,.13) !important; color: rgba(255,255,255,.82) !important; font-size: 7.5px !important; line-height: 1.05 !important; font-weight: 900 !important; white-space: nowrap !important; overflow: hidden !important; }#${SCRIPT.panelId} .mcms-section-label { margin: 9px 0 6px 0 !important; color: rgba(233,238,245,.62) !important; font-size: 9px !important; line-height: 1.25 !important; font-weight: 900 !important; letter-spacing: .55px !important; text-transform: uppercase !important; white-space: normal !important; overflow-wrap: anywhere !important; }#${SCRIPT.panelId} .mcms-row { display: grid !important; grid-template-columns: minmax(0,1fr) 100px !important; gap: 7px !important; align-items: center !important; margin-bottom: 7px !important; }#${SCRIPT.panelId} .mcms-row-label { color: rgba(255,255,255,.82) !important; font-size: 10px !important; line-height: 1.2 !important; font-weight: 800 !important; overflow: visible !important; text-overflow: clip !important; white-space: normal !important; overflow-wrap: anywhere !important; }#${SCRIPT.panelId} .mcms-input,
        #${SCRIPT.panelId} .mcms-select { width: 100% !important; height: 27px !important; border: 1px solid rgba(255,255,255,.14) !important; border-radius: 8px !important; background: rgba(255,255,255,.08) !important; color: #fff !important; font-size: 10px !important; font-weight: 800 !important; padding: 0 7px !important; }#${SCRIPT.panelId} .mcms-select option { color: #111 !important; }#${SCRIPT.panelId} .mcms-position-grid,
        #${SCRIPT.panelId} .mcms-nudge-grid { display: grid !important; grid-template-columns: repeat(4, minmax(0,1fr)) !important; gap: 6px !important; width: 100% !important; }#${SCRIPT.panelId} .mcms-nudge-grid { grid-template-columns: repeat(5, minmax(0,1fr)) !important; }#${SCRIPT.panelId} .mcms-position-btn,
        #${SCRIPT.panelId} .mcms-small-btn,
        #${SCRIPT.panelId} .mcms-bookmark-btn,
        #${SCRIPT.panelId} .mcms-pin-btn { width: 100% !important; min-width: 0 !important; height: 28px !important; border: 1px solid rgba(255,255,255,.13) !important; border-radius: 9px !important; background: rgba(255,255,255,.065) !important; color: rgba(255,255,255,.84) !important; cursor: pointer !important; font-size: 9px !important; line-height: 28px !important; font-weight: 900 !important; text-align: center !important; padding: 0 !important; overflow: hidden !important; }#${SCRIPT.panelId} .mcms-small-btn { height: auto !important; min-height: 28px !important; line-height: 1.15 !important; padding: 5px 6px !important; white-space: normal !important; overflow-wrap: anywhere !important; display: flex !important; align-items: center !important; justify-content: center !important; }#${SCRIPT.panelId} .mcms-position-btn:hover,
        #${SCRIPT.panelId} .mcms-small-btn:hover,
        #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        #${SCRIPT.panelId} .mcms-pin-btn:hover { background: rgba(255,255,255,.14) !important; }#${SCRIPT.panelId} .mcms-quick-row { display: grid !important; grid-template-columns: minmax(0,1fr) 44px !important; gap: 6px !important; margin-bottom: 6px !important; }#${SCRIPT.panelId} .mcms-bookmark-row { display: grid !important; grid-template-columns: minmax(0,1fr) 32px 38px 34px 26px !important; gap: 5px !important; align-items: center !important; margin-bottom: 5px !important; }#${SCRIPT.panelId} .mcms-bookmark-name { color: rgba(255,255,255,.86) !important; font-size: 10px !important; font-weight: 850 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }#${SCRIPT.panelId} .mcms-status { margin-top: 8px !important; padding: 7px !important; border-radius: 9px !important; border: 1px solid rgba(255,255,255,.12) !important; background: rgba(255,255,255,.055) !important; color: rgba(255,255,255,.68) !important; font-size: 9px !important; line-height: 1.25 !important; }#${SCRIPT.panelId} .mcms-input,
        #${SCRIPT.panelId} .mcms-select { user-select: text !important; }#${SCRIPT.panelId} .mcms-discord-wide { grid-template-columns: 92px minmax(0,1fr) !important; }#${SCRIPT.panelId} .mcms-discord-preview { margin-top:8px !important; min-height:72px !important; }#${SCRIPT.panelId} .mcms-discord-empty { padding:14px 10px !important; border:1px dashed rgba(88,166,255,.28) !important; border-radius:10px !important; background:linear-gradient(135deg,rgba(88,166,255,.06),rgba(124,77,255,.05)) !important; color:rgba(255,255,255,.58) !important; font-size:9px !important; line-height:1.35 !important; text-align:center !important; }#${SCRIPT.panelId} .mcms-discord-card { padding:10px !important; border-radius:12px !important; border:1px solid rgba(255,255,255,.14) !important; background:linear-gradient(145deg,rgba(22,28,38,.96),rgba(11,15,22,.98)) !important; box-shadow:inset 0 1px rgba(255,255,255,.04),0 8px 18px rgba(0,0,0,.22) !important; }#${SCRIPT.panelId} .mcms-discord-card[data-tone="positive"] { border-color:rgba(46,204,113,.48) !important; box-shadow:inset 3px 0 #2ecc71,0 8px 18px rgba(0,0,0,.22) !important; }#${SCRIPT.panelId} .mcms-discord-card[data-tone="negative"] { border-color:rgba(231,76,60,.52) !important; box-shadow:inset 3px 0 #e74c3c,0 8px 18px rgba(0,0,0,.22) !important; }#${SCRIPT.panelId} .mcms-discord-card[data-tone="neutral"] { border-color:rgba(241,196,15,.42) !important; box-shadow:inset 3px 0 #f1c40f,0 8px 18px rgba(0,0,0,.22) !important; }#${SCRIPT.panelId} .mcms-discord-head { display:flex !important; justify-content:space-between !important; align-items:flex-start !important; gap:8px !important; margin-bottom:8px !important; }#${SCRIPT.panelId} .mcms-discord-title { color:#fff !important; font-size:10px !important; font-weight:950 !important; letter-spacing:.35px !important; }#${SCRIPT.panelId} .mcms-discord-date { margin-top:2px !important; color:rgba(255,255,255,.54) !important; font-size:8px !important; font-weight:800 !important; }#${SCRIPT.panelId} .mcms-discord-result { padding:3px 6px !important; border-radius:999px !important; background:rgba(255,255,255,.08) !important; color:#fff !important; font-size:8px !important; font-weight:950 !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-discord-stats { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:5px !important; }#${SCRIPT.panelId} .mcms-discord-stat { min-width:0 !important; padding:7px 5px !important; border-radius:8px !important; background:rgba(255,255,255,.055) !important; text-align:center !important; }#${SCRIPT.panelId} .mcms-discord-stat span { display:block !important; color:rgba(255,255,255,.52) !important; font-size:7px !important; font-weight:900 !important; text-transform:uppercase !important; letter-spacing:.5px !important; }#${SCRIPT.panelId} .mcms-discord-stat strong { display:block !important; margin-top:3px !important; color:#fff !important; font-size:10px !important; font-weight:950 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.panelId} .mcms-discord-breakdowns { display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:6px !important; margin-top:7px !important; }#${SCRIPT.panelId} .mcms-discord-breakdown { min-width:0 !important; padding:7px !important; border-radius:8px !important; background:rgba(255,255,255,.04) !important; }#${SCRIPT.panelId} .mcms-discord-breakdown b { display:block !important; margin-bottom:4px !important; color:#bbdefb !important; font-size:7.5px !important; text-transform:uppercase !important; letter-spacing:.55px !important; }#${SCRIPT.panelId} .mcms-discord-line { display:flex !important; justify-content:space-between !important; gap:5px !important; margin-top:3px !important; color:rgba(255,255,255,.68) !important; font-size:7.5px !important; }#${SCRIPT.panelId} .mcms-discord-line span { min-width:0 !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-discord-line strong { color:#fff !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-discord-foot { margin-top:7px !important; padding-top:6px !important; border-top:1px solid rgba(255,255,255,.08) !important; color:rgba(255,255,255,.48) !important; font-size:7.5px !important; line-height:1.3 !important; }#${SCRIPT.panelId} .mcms-discord-status[data-tone="good"] { border-color:rgba(46,204,113,.38) !important; color:#9be8b8 !important; }#${SCRIPT.panelId} .mcms-discord-status[data-tone="bad"] { border-color:rgba(231,76,60,.42) !important; color:#ffaaa1 !important; }#${SCRIPT.panelId} .mcms-discord-status[data-tone="busy"] { border-color:rgba(52,152,219,.42) !important; color:#9bd5ff !important; }#${SCRIPT.panelId} .mcms-discord-mini-stats { display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:4px !important; margin-top:6px !important; }#${SCRIPT.panelId} .mcms-discord-mini-stats span { min-width:0 !important; padding:5px 4px !important; border-radius:7px !important; background:rgba(88,166,255,.07) !important; color:rgba(255,255,255,.52) !important; font-size:6.8px !important; font-weight:850 !important; text-align:center !important; text-transform:uppercase !important; letter-spacing:.3px !important; }#${SCRIPT.panelId} .mcms-discord-mini-stats b { display:block !important; margin-top:2px !important; color:#fff !important; font-size:7.8px !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-discord-chart { display:block !important; width:100% !important; margin-top:8px !important; border-radius:9px !important; border:1px solid rgba(255,255,255,.11) !important; background:#0b1018 !important; }#${SCRIPT.panelId} .mcms-discord-date-grid { display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:5px !important; }#${SCRIPT.panelId} .mcms-discord-date-grid .mcms-row { grid-template-columns:56px minmax(0,1fr) !important; }#${SCRIPT.panelId} .mcms-finance-vault-summary { display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:5px !important; margin:7px 0 !important; }#${SCRIPT.panelId} .mcms-finance-vault-summary span { min-width:0 !important; padding:7px 5px !important; border:1px solid rgba(88,166,255,.18) !important; border-radius:8px !important; background:rgba(88,166,255,.055) !important; color:rgba(255,255,255,.54) !important; font-size:6.8px !important; font-weight:850 !important; text-align:center !important; text-transform:uppercase !important; letter-spacing:.3px !important; }#${SCRIPT.panelId} .mcms-finance-vault-summary b { display:block !important; margin-bottom:2px !important; color:#fff !important; font-size:8px !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-finance-vault-summary small { grid-column:1/-1 !important; padding:5px 7px !important; border-radius:7px !important; background:rgba(255,255,255,.035) !important; color:rgba(255,255,255,.48) !important; font-size:7.2px !important; line-height:1.35 !important; text-align:center !important; }#${SCRIPT.panelId} .mcms-finance-private-note { border-color:rgba(241,196,15,.34) !important; color:#f5d984 !important; }#${SCRIPT.panelId} .mcms-sweep-card { margin-top:8px !important; padding:8px !important; border-radius:9px !important; border:1px solid rgba(255,183,72,.28) !important; background:rgba(88,46,4,.13) !important; }#${SCRIPT.panelId} .mcms-sweep-head { display:flex !important; justify-content:space-between !important; align-items:center !important; gap:8px !important; color:#ffe0a3 !important; font-size:9px !important; font-weight:950 !important; }#${SCRIPT.panelId} .mcms-sweep-state { padding:2px 6px !important; border-radius:999px !important; background:rgba(255,255,255,.10) !important; color:rgba(255,255,255,.78) !important; font-size:7px !important; letter-spacing:.35px !important; }#${SCRIPT.panelId} .mcms-sweep-state.mcms-running { background:rgba(255,145,24,.28) !important; color:#fff1cf !important; }#${SCRIPT.panelId} .mcms-sweep-stats { display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:4px !important; margin-top:7px !important; }#${SCRIPT.panelId} .mcms-sweep-stat { min-width:0 !important; padding:5px 3px !important; border-radius:7px !important; background:rgba(255,255,255,.055) !important; text-align:center !important; }#${SCRIPT.panelId} .mcms-sweep-stat b { display:block !important; color:#fff !important; font-size:11px !important; line-height:1 !important; }#${SCRIPT.panelId} .mcms-sweep-stat span { display:block !important; margin-top:3px !important; color:rgba(255,255,255,.50) !important; font-size:6.5px !important; font-weight:900 !important; text-transform:uppercase !important; }#${SCRIPT.panelId} .mcms-sweep-queue { display:grid !important; gap:4px !important; max-height:128px !important; overflow-y:auto !important; margin-top:7px !important; padding-right:2px !important; overscroll-behavior:contain !important; scrollbar-width:thin !important; }#${SCRIPT.panelId} .mcms-sweep-entry { display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; gap:6px !important; padding:6px !important; border-radius:7px !important; border:1px solid rgba(255,255,255,.08) !important; background:rgba(255,255,255,.04) !important; }#${SCRIPT.panelId} .mcms-sweep-entry.mcms-current { border-color:rgba(255,177,57,.62) !important; background:rgba(255,145,24,.11) !important; }#${SCRIPT.panelId} .mcms-sweep-title { min-width:0 !important; color:#f7f8fb !important; font-size:8.5px !important; font-weight:900 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.panelId} .mcms-sweep-meta { display:block !important; margin-top:2px !important; color:rgba(255,255,255,.52) !important; font-size:7px !important; font-weight:800 !important; }#${SCRIPT.panelId} .mcms-sweep-count { color:#ffc86b !important; font-size:9px !important; font-weight:950 !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-sweep-log { max-height:72px !important; overflow-y:auto !important; margin-top:7px !important; padding:6px !important; border-radius:7px !important; background:rgba(0,0,0,.18) !important; color:rgba(255,255,255,.64) !important; font:700 7px/1.35 Arial,Helvetica,sans-serif !important; white-space:normal !important; }#${SCRIPT.transportSweepHudId} { position:fixed !important; top:max(12px,env(safe-area-inset-top)) !important; right:max(12px,env(safe-area-inset-right)) !important; z-index:2147482000 !important; width:min(340px,calc(100vw - 24px)) !important; padding:11px !important; border:1px solid rgba(255,184,72,.72) !important; border-radius:12px !important; background:linear-gradient(145deg,rgba(18,23,31,.97),rgba(34,22,8,.97)) !important; color:#f8fbff !important; box-shadow:0 18px 55px rgba(0,0,0,.55),0 0 0 1px rgba(255,184,72,.08) inset !important; font:800 11px/1.25 Arial,Helvetica,sans-serif !important; pointer-events:none !important; touch-action:none !important; user-select:none !important; backdrop-filter:blur(12px) !important; -webkit-backdrop-filter:blur(12px) !important; }#${SCRIPT.transportSweepHudId}[data-state="complete"] { border-color:rgba(70,229,139,.78) !important; background:linear-gradient(145deg,rgba(12,29,25,.98),rgba(8,47,31,.97)) !important; }#${SCRIPT.transportSweepHudId}[data-state="error"] { border-color:rgba(255,100,108,.82) !important; background:linear-gradient(145deg,rgba(35,17,21,.98),rgba(54,12,18,.97)) !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-head { display:flex !important; align-items:center !important; justify-content:space-between !important; gap:10px !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-head span { min-width:0 !important; display:flex !important; align-items:center !important; gap:7px !important; color:#ffe3ad !important; font-size:11px !important; font-weight:950 !important; letter-spacing:.15px !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-head i { width:8px !important; height:8px !important; flex:0 0 8px !important; border-radius:50% !important; background:#ffb648 !important; box-shadow:0 0 0 4px rgba(255,182,72,.13),0 0 12px rgba(255,182,72,.58) !important; }#${SCRIPT.transportSweepHudId}[data-state="complete"] .mcms-sweep-hud-head i { background:#46e58b !important; box-shadow:0 0 0 4px rgba(70,229,139,.13),0 0 12px rgba(70,229,139,.58) !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-head b { flex:0 0 auto !important; padding:3px 7px !important; border-radius:999px !important; background:rgba(255,255,255,.09) !important; color:rgba(255,255,255,.74) !important; font-size:7px !important; font-weight:950 !important; text-transform:uppercase !important; letter-spacing:.45px !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-status { margin-top:9px !important; color:#fff !important; font-size:10px !important; font-weight:900 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-current { margin-top:3px !important; color:rgba(255,255,255,.58) !important; font-size:8px !important; font-weight:750 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-stats { display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:5px !important; margin-top:9px !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-stats span { min-width:0 !important; padding:7px 4px !important; border-radius:8px !important; background:rgba(255,255,255,.055) !important; text-align:center !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-stats b { display:block !important; color:#fff !important; font-size:13px !important; line-height:1 !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-stats small { display:block !important; margin-top:4px !important; color:rgba(255,255,255,.48) !important; font-size:6.4px !important; font-weight:950 !important; text-transform:uppercase !important; letter-spacing:.25px !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-cleared { background:rgba(70,229,139,.15) !important; box-shadow:0 0 0 1px rgba(70,229,139,.24) inset !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-cleared b { color:#73f2ab !important; font-size:17px !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-foot { display:flex !important; justify-content:space-between !important; gap:8px !important; margin-top:8px !important; padding-top:7px !important; border-top:1px solid rgba(255,255,255,.09) !important; color:rgba(255,255,255,.42) !important; font-size:7px !important; font-weight:850 !important; text-transform:uppercase !important; letter-spacing:.25px !important; }
        @media (max-width:700px) {#${SCRIPT.transportSweepHudId} { top:auto !important; right:max(8px,env(safe-area-inset-right)) !important; bottom:max(8px,env(safe-area-inset-bottom)) !important; left:max(8px,env(safe-area-inset-left)) !important; width:auto !important; padding:9px !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-current { display:none !important; }#${SCRIPT.transportSweepHudId} .mcms-sweep-hud-stats { gap:3px !important; }
        }#${SCRIPT.panelId} .mcms-footer { margin: 9px 0 0 0 !important; padding: 7px 0 0 0 !important; border-top: 1px solid rgba(255,255,255,.10) !important; color: rgba(233,238,245,.58) !important; font-size: 9px !important; line-height: 1.25 !important; overflow: hidden !important; }#${SCRIPT.panelId} .mcms-build { display: block !important; margin-top: 4px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }.mcms-mission-float-pane,
        .mcms-mission-float-pane * {
            pointer-events: none !important;
            touch-action: none !important;
        }.mcms-alliance-credit-icon,
        .mcms-mission-age-icon,
        .mcms-unit-commitment-icon,
        .mcms-transport-watcher-icon,
        .mcms-resource-gap-icon {
            width: 0 !important; height: 0 !important; overflow: visible !important;
            border: 0 !important; background: transparent !important;
            pointer-events: none !important; touch-action: none !important;
        }.mcms-alliance-credit-badge,
        .mcms-mission-age-badge,
        .mcms-unit-commitment-badge,
        .mcms-transport-watcher-badge,
        .mcms-resource-gap-badge {
            position: absolute !important; left: 0 !important; top: 0 !important;
            transform: translate(-50%, -50%) !important;
            display: inline-flex !important; align-items: center !important; justify-content: center !important;
            white-space: nowrap !important; pointer-events: none !important; touch-action: none !important;
            backdrop-filter: blur(3px) !important;
            -webkit-backdrop-filter: blur(3px) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.80) !important;
        }.mcms-alliance-credit-badge {
            min-width: 48px !important; height: 22px !important; padding: 0 7px !important; border-radius: 8px !important;
            border: 1px solid rgba(255,213,79,.46) !important; background: rgba(10,14,20,.46) !important;
            color: #ffe082 !important; box-shadow: 0 2px 7px rgba(0,0,0,.18) !important;
            font: 900 10px/1 Arial, Helvetica, sans-serif !important; letter-spacing: .1px !important;
        }.mcms-alliance-credit-badge.mcms-credit-qualified {
            border-color: rgba(76,225,126,.52) !important;
            color: #79f2a3 !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.88), 0 0 5px rgba(44,210,103,.20) !important;
        }.mcms-alliance-credit-badge.mcms-credit-unqualified {
            border-color: rgba(255,213,79,.46) !important;
            color: #ffe082 !important;
        }.mcms-mission-age-badge {
            min-width: 38px !important; height: 20px !important; padding: 0 6px !important; border-radius: 7px !important;
            border: 1px solid rgba(100,181,246,.48) !important; background: rgba(10,14,20,.66) !important;
            color: #c8e6ff !important; box-shadow: 0 2px 7px rgba(0,0,0,.22) !important;
            font: 900 9.5px/1 Arial, Helvetica, sans-serif !important; letter-spacing: .1px !important;
            transition: color .18s ease, border-color .18s ease, background-color .18s ease, box-shadow .18s ease !important;
        }.mcms-mission-age-badge.mcms-age-aged {
            border-color: rgba(255,202,40,.88) !important;
            background: rgba(74,52,3,.88) !important;
            color: #fff0a8 !important;
            box-shadow: 0 2px 7px rgba(0,0,0,.28), 0 0 8px rgba(255,193,7,.30) !important;
        }.mcms-mission-age-badge.mcms-age-high {
            border-color: rgba(255,133,46,.96) !important;
            background: rgba(88,34,4,.92) !important;
            color: #ffd0a3 !important;
            box-shadow: 0 2px 7px rgba(0,0,0,.30), 0 0 10px rgba(255,111,0,.42) !important;
        }.mcms-mission-age-badge.mcms-age-critical {
            border-color: rgba(255,72,72,1) !important;
            background: rgba(102,8,12,.95) !important;
            color: #ffe3e3 !important;
            box-shadow: 0 2px 8px rgba(0,0,0,.34), 0 0 12px rgba(255,45,45,.58) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.90), 0 0 5px rgba(255,104,104,.42) !important;
        }.mcms-unit-commitment-badge {
            min-width: 42px !important; height: 18px !important; padding: 0 6px !important; border-radius: 7px !important;
            border: 1px solid rgba(255,255,255,.42) !important; background: rgba(10,14,20,.46) !important;
            color: #f4f7ff !important; box-shadow: 0 2px 7px rgba(0,0,0,.18) !important;
            font: 900 8.5px/1 Arial, Helvetica, sans-serif !important; letter-spacing: .15px !important;
        }.mcms-unit-commitment-badge.mcms-unit-personal { border-color: rgba(244,200,79,.54) !important; color: #ffe082 !important; }.mcms-unit-commitment-badge.mcms-unit-alliance { border-color: rgba(76,225,126,.54) !important; color: #79f2a3 !important; }.mcms-transport-watcher-badge {
            width: 25px !important; height: 25px !important; padding: 0 !important; border-radius: 8px !important;
            border: 1px solid rgba(255,193,74,.94) !important; background: linear-gradient(145deg, rgba(86,46,3,.96), rgba(27,17,6,.96)) !important;
            color: #ffe4a8 !important; box-shadow: 0 0 0 2px rgba(0,0,0,.48), 0 0 11px rgba(255,145,24,.55) !important;
            font: 950 9px/1 Arial, Helvetica, sans-serif !important; overflow: visible !important;
            animation: mcmsTransportWatcherPulse 1.85s ease-in-out infinite !important;
        }.mcms-transport-watcher-badge svg { width: 17px !important; height: 17px !important; display:block !important; overflow:visible !important; }.mcms-transport-watcher-badge svg * { vector-effect: non-scaling-stroke !important; }.mcms-transport-watcher-badge.mcms-transport-patient { border-color: rgba(255,194,71,.96) !important; color:#fff1c7 !important; }.mcms-transport-watcher-badge.mcms-transport-prisoner { border-color: rgba(255,139,53,.98) !important; color:#ffd0a5 !important; background:linear-gradient(145deg,rgba(91,35,4,.97),rgba(28,12,4,.97)) !important; }.mcms-transport-watcher-count { position:absolute !important; right:-7px !important; top:-7px !important; min-width:15px !important; height:15px !important; padding:0 3px !important; border-radius:999px !important; border:1px solid rgba(255,255,255,.86) !important; background:#e67600 !important; color:#fff !important; font:950 8px/13px Arial,Helvetica,sans-serif !important; text-align:center !important; box-shadow:0 1px 4px rgba(0,0,0,.65) !important; }.mcms-transport-watcher-badge.mcms-transport-side-left .mcms-transport-watcher-count { left:-7px !important; right:auto !important; }
        @keyframes mcmsTransportWatcherPulse { 0%,100%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 2px rgba(0,0,0,.48),0 0 8px rgba(255,145,24,.38)} 50%{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 0 0 2px rgba(0,0,0,.55),0 0 16px rgba(255,145,24,.82)} }
        @media (prefers-reduced-motion: reduce) {.mcms-transport-watcher-badge { animation:none !important; } }.mcms-resource-gap-badge {
            min-width: 31px !important; height: 19px !important; padding: 0 6px !important; border-radius: 7px !important;
            border: 1px solid rgba(255,146,49,.88) !important; background: rgba(48,20,3,.91) !important; color: #ffd29a !important;
            box-shadow: 0 0 0 2px rgba(0,0,0,.38), 0 2px 8px rgba(255,112,20,.27) !important;
            font: 950 8.5px/1 Arial,Helvetica,sans-serif !important; letter-spacing:.1px !important;
        }.mcms-resource-gap-badge.mcms-gap-uncovered { border-color:#ff574d !important; color:#fff !important; background:rgba(91,11,7,.94) !important; box-shadow:0 0 0 2px rgba(0,0,0,.42),0 0 11px rgba(255,45,35,.46) !important; }#${SCRIPT.panelId} .mcms-ops-session-grid {
            display: grid !important; grid-template-columns: repeat(2,minmax(0,1fr)) !important; gap: 6px !important;
        }#${SCRIPT.panelId} .mcms-ops-stat {
            min-width: 0 !important; padding: 8px !important; border-radius: 9px !important;
            border: 1px solid rgba(255,255,255,.11) !important; background: rgba(255,255,255,.055) !important;
        }#${SCRIPT.panelId} .mcms-ops-stat-label { display:block !important; color:rgba(255,255,255,.56) !important; font-size:7.5px !important; font-weight:900 !important; text-transform:uppercase !important; letter-spacing:.45px !important; }#${SCRIPT.panelId} .mcms-ops-stat-value { display:block !important; margin-top:4px !important; color:#fff !important; font-size:13px !important; line-height:1 !important; font-weight:950 !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-ops-list { display:grid !important; gap:5px !important; }#${SCRIPT.panelId} .mcms-ops-entry {
            display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; gap:7px !important; align-items:center !important;
            padding:7px !important; border-radius:8px !important; border:1px solid rgba(255,255,255,.10) !important; background:rgba(255,255,255,.045) !important;
        }#${SCRIPT.panelId} .mcms-ops-entry-main { min-width:0 !important; }#${SCRIPT.panelId} .mcms-ops-entry-title { display:block !important; color:#f5f7ff !important; font-size:9.5px !important; font-weight:900 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.panelId} .mcms-ops-entry-meta { display:block !important; margin-top:3px !important; color:rgba(255,255,255,.58) !important; font-size:7.5px !important; font-weight:800 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }#${SCRIPT.panelId} .mcms-ops-entry-value { color:#ffe082 !important; font-size:10px !important; font-weight:950 !important; white-space:nowrap !important; }#${SCRIPT.panelId} .mcms-history-latest { display:grid !important; gap:5px !important; }#${SCRIPT.panelId} .mcms-history-older {
            margin-top:2px !important; border:1px solid rgba(255,255,255,.11) !important; border-radius:8px !important;
            background:rgba(255,255,255,.035) !important; overflow:hidden !important;
        }#${SCRIPT.panelId} .mcms-history-older > summary {
            display:block !important; padding:7px 9px !important; cursor:pointer !important; list-style:none !important;
            color:rgba(255,255,255,.68) !important; font-size:8px !important; font-weight:900 !important; letter-spacing:.35px !important; text-transform:uppercase !important;
            user-select:none !important;
        }#${SCRIPT.panelId} .mcms-history-older > summary::-webkit-details-marker { display:none !important; }#${SCRIPT.panelId} .mcms-history-older > summary::after { content:'▾' !important; float:right !important; color:rgba(255,255,255,.48) !important; }#${SCRIPT.panelId} .mcms-history-older:not([open]) > summary::after { content:'▸' !important; }#${SCRIPT.panelId} .mcms-history-scroll {
            display:grid !important; gap:5px !important; max-height:126px !important; overflow-y:auto !important; overscroll-behavior:contain !important;
            padding:0 5px 5px !important; scrollbar-width:thin !important;
        }#${SCRIPT.panelId} .mcms-empty-state { padding:10px !important; border:1px dashed rgba(255,255,255,.12) !important; border-radius:8px !important; color:rgba(255,255,255,.52) !important; font-size:8.5px !important; text-align:center !important; }#${SCRIPT.payoutFlashId} {
            position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important;
            z-index: 625 !important; overflow: hidden !important;
            pointer-events: none !important; opacity: 0 !important;
            isolation: isolate !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-active { opacity: 1 !important; }#${SCRIPT.payoutFlashId},
        #${SCRIPT.payoutFlashId} * {
            box-sizing: border-box !important; pointer-events: none !important; user-select: none !important;
            font-family: Arial, Helvetica, sans-serif !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-light {
            position: absolute !important; inset: -12% !important; opacity: 0;
            will-change: opacity, transform !important; mix-blend-mode: screen !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-red {
            background:
                radial-gradient(ellipse at 0% 45%, rgba(255,22,22,.62) 0%, rgba(255,22,22,.30) 25%, rgba(255,22,22,0) 62%),
                linear-gradient(90deg, rgba(255,18,18,.34) 0%, rgba(255,18,18,0) 48%) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-blue {
            background:
                radial-gradient(ellipse at 100% 55%, rgba(25,113,255,.68) 0%, rgba(25,113,255,.32) 25%, rgba(25,113,255,0) 62%),
                linear-gradient(270deg, rgba(20,103,255,.38) 0%, rgba(20,103,255,0) 48%) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-active .mcms-payout-red {
            animation: mcmsPayoutRed var(--mcms-payout-duration, 3000ms) ease-in-out both !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-active .mcms-payout-blue {
            animation: mcmsPayoutBlue var(--mcms-payout-duration, 3000ms) ease-in-out both !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-cinematic {
            position: absolute !important; inset: 0 !important; opacity: 0;
            background:
                radial-gradient(ellipse at center, rgba(0,0,0,0) 25%, rgba(0,0,0,.18) 72%, rgba(0,0,0,.38) 100%),
                linear-gradient(180deg, rgba(0,0,0,.22) 0%, rgba(0,0,0,0) 24%, rgba(0,0,0,0) 76%, rgba(0,0,0,.22) 100%) !important;
            will-change: opacity !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-banner {
            position: absolute !important; left: 50% !important; top: 50% !important;
            width: min(660px, calc(100% - 34px)) !important; min-width: 280px !important;
            padding: 19px 34px 17px !important; border-radius: 0 !important;
            border-top: 1px solid var(--mcms-payout-accent-soft, rgba(247,205,83,.42)) !important;
            border-bottom: 1px solid var(--mcms-payout-accent-soft, rgba(247,205,83,.42)) !important;
            border-left: 0 !important; border-right: 0 !important;
            background: linear-gradient(90deg, rgba(2,5,10,0) 0%, rgba(2,5,10,.42) 10%, rgba(2,5,10,.84) 50%, rgba(2,5,10,.42) 90%, rgba(2,5,10,0) 100%) !important;
            color: #fff !important;
            box-shadow: 0 18px 42px rgba(0,0,0,.40), inset 0 1px 0 rgba(255,255,255,.035) !important;
            backdrop-filter: blur(3px) !important; -webkit-backdrop-filter: blur(3px) !important;
            text-align: center !important; overflow: visible !important;
            opacity: 0; transform: translate(-50%, -50%) scale(1.08); filter: blur(7px);
        }#${SCRIPT.payoutFlashId}.mcms-payout-active .mcms-payout-banner {
            animation: mcmsPayoutBanner var(--mcms-payout-duration, 3000ms) cubic-bezier(.16,.78,.24,1) both !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-title {
            display: block !important; color: var(--mcms-payout-accent, #f4c84f) !important;
            font-family: Impact, Haettenschweiler, "Arial Narrow Bold", "Arial Black", sans-serif !important;
            font-size: clamp(34px, 5.4vw, 64px) !important; line-height: .92 !important; font-weight: 900 !important;
            letter-spacing: 1.9px !important; text-transform: uppercase !important; white-space: nowrap !important;
            text-shadow: 0 3px 0 rgba(0,0,0,.78), 0 5px 18px rgba(0,0,0,.74), 0 0 18px var(--mcms-payout-glow, rgba(244,200,79,.16)) !important;
            transform: scaleX(.94) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-divider {
            display: block !important; width: min(390px, 78%) !important; height: 1px !important;
            margin: 11px auto 9px !important;
            background: linear-gradient(90deg, transparent, var(--mcms-payout-accent, #f4c84f) 24%, rgba(255,255,255,.90) 50%, var(--mcms-payout-accent, #f4c84f) 76%, transparent) !important;
            box-shadow: 0 0 8px rgba(244,200,79,.24) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-particles {
            position:absolute !important; inset:0 !important; opacity:0; transform:scale(1.04);
            background-image:
                radial-gradient(circle at 18% 34%, var(--mcms-payout-accent, #f4c84f) 0 1px, transparent 2px),
                radial-gradient(circle at 32% 68%, var(--mcms-payout-accent, #f4c84f) 0 1.5px, transparent 2.5px),
                radial-gradient(circle at 61% 27%, #fff 0 1px, transparent 2px),
                radial-gradient(circle at 78% 61%, var(--mcms-payout-accent, #f4c84f) 0 1.4px, transparent 2.4px),
                radial-gradient(circle at 89% 42%, #fff 0 1px, transparent 2px);
            background-size:190px 150px,230px 170px,270px 210px,310px 190px,350px 230px !important;
            mix-blend-mode:screen !important; pointer-events:none !important;
        }#${SCRIPT.payoutFlashId}[data-tier="high"] .mcms-payout-particles,
        #${SCRIPT.payoutFlashId}[data-tier="elite"] .mcms-payout-particles { opacity:.34; }#${SCRIPT.payoutFlashId}[data-tier="elite"] .mcms-payout-particles { opacity:.52; }#${SCRIPT.payoutFlashId} .mcms-payout-tier {
            display:inline-block !important; margin-bottom:7px !important; padding:3px 8px !important; border-radius:999px !important;
            border:1px solid var(--mcms-payout-accent-soft, rgba(247,205,83,.42)) !important; background:rgba(0,0,0,.28) !important;
            color:var(--mcms-payout-accent, #f4c84f) !important; font-size:7.5px !important; line-height:1 !important; font-weight:950 !important;
            letter-spacing:1.6px !important; text-transform:uppercase !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-mission {
            display:block !important; margin-top:8px !important; color:#fff !important;
            font-size:clamp(12px,2vw,18px) !important; line-height:1.05 !important; font-weight:950 !important;
            white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important;
            text-shadow:0 2px 8px rgba(0,0,0,.85) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-mission:empty { display:none !important; }#${SCRIPT.payoutFlashId} .mcms-payout-source {
            display:block !important; margin-top:5px !important; color:var(--mcms-payout-accent, #f4c84f) !important;
            font-size:8px !important; line-height:1 !important; font-weight:950 !important; letter-spacing:2px !important; text-transform:uppercase !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-kicker {
            display: block !important; color: rgba(255,255,255,.78) !important;
            font-family: "Arial Narrow", Arial, Helvetica, sans-serif !important;
            font-size: 10px !important; line-height: 1 !important; font-weight: 900 !important;
            letter-spacing: 3px !important; text-transform: uppercase !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-amount {
            display: block !important; margin-top: 7px !important; color: #fff !important;
            font-family: "Arial Black", "Arial Narrow Bold", Arial, Helvetica, sans-serif !important;
            font-size: clamp(20px, 3vw, 32px) !important; line-height: 1 !important; font-weight: 950 !important;
            letter-spacing: 1.5px !important; white-space: nowrap !important;
            text-shadow: 0 2px 0 rgba(0,0,0,.74), 0 5px 15px rgba(0,0,0,.68) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-vc-sunset,
        #${SCRIPT.payoutFlashId} .mcms-payout-vc-grid {
            position: absolute !important; inset: 0 !important; opacity: 0;
            pointer-events: none !important; will-change: opacity, transform !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-vc-sunset {
            background:
                radial-gradient(circle at 50% 54%, rgba(255,238,104,.92) 0 5%, rgba(255,132,160,.58) 5.5% 11%, rgba(255,71,180,.24) 12% 25%, transparent 39%),
                linear-gradient(180deg, rgba(17,9,62,.76) 0%, rgba(85,19,112,.64) 34%, rgba(241,48,142,.34) 60%, rgba(5,17,50,.72) 100%) !important;
            mix-blend-mode: screen !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-vc-grid {
            top: 56% !important;
            background:
                repeating-linear-gradient(90deg, rgba(44,238,255,.24) 0 1px, transparent 1px 54px),
                repeating-linear-gradient(180deg, rgba(255,70,201,.22) 0 1px, transparent 1px 32px) !important;
            transform-origin: 50% 0 !important;
            transform: perspective(380px) rotateX(62deg) scale(1.35) !important;
            mask-image: linear-gradient(180deg, rgba(0,0,0,.82), transparent 76%) !important;
            -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.82), transparent 76%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-cinematic {
            background:
                radial-gradient(ellipse at center, rgba(0,0,0,0) 18%, rgba(20,3,45,.20) 62%, rgba(4,3,20,.58) 100%),
                linear-gradient(180deg, rgba(9,3,33,.38), transparent 28%, transparent 72%, rgba(4,5,28,.52)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner {
            width: min(720px, calc(100% - 28px)) !important;
            padding: 25px 38px 23px !important;
            border-top: 2px solid rgba(255,92,210,.78) !important;
            border-bottom: 2px solid rgba(62,232,255,.78) !important;
            background:
                linear-gradient(90deg, transparent 0%, rgba(16,4,42,.58) 8%, rgba(29,5,58,.92) 30%, rgba(12,7,45,.94) 70%, rgba(7,25,57,.62) 92%, transparent 100%) !important;
            box-shadow:
                0 0 18px rgba(255,64,199,.28),
                0 0 34px rgba(44,220,255,.20),
                0 20px 46px rgba(0,0,0,.42),
                inset 0 1px 0 rgba(255,255,255,.09) !important;
            backdrop-filter: blur(5px) saturate(125%) !important;
            -webkit-backdrop-filter: blur(5px) saturate(125%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner::after {
            content: "" !important; position: absolute !important; top: -7px !important; bottom: -7px !important;
            width: 2px !important; opacity: .75 !important; pointer-events: none !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner::before {
            left: 9% !important; background: linear-gradient(180deg, transparent, #ff5ed8, transparent) !important;
            box-shadow: 0 0 13px #ff5ed8 !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner::after {
            right: 9% !important; background: linear-gradient(180deg, transparent, #42e9ff, transparent) !important;
            box-shadow: 0 0 13px #42e9ff !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-title {
            color: #ff75cf !important;
            font-family: "Brush Script MT", "Segoe Script", "Lucida Handwriting", cursive !important;
            font-size: clamp(42px, 7vw, 82px) !important;
            font-style: italic !important; font-weight: 900 !important;
            letter-spacing: -1px !important; line-height: .86 !important;
            text-transform: none !important;
            transform: rotate(-2deg) skewX(-5deg) !important;
            text-shadow:
                2px 2px 0 #4cecff,
                4px 4px 0 rgba(13,7,48,.95),
                0 0 12px rgba(255,74,201,.82),
                0 0 28px rgba(54,226,255,.42) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-divider {
            height: 2px !important; margin: 15px auto 11px !important;
            background: linear-gradient(90deg, transparent, #ff61d1 20%, #fff 48%, #4cecff 78%, transparent) !important;
            box-shadow: 0 0 9px rgba(255,72,202,.54), 0 0 14px rgba(54,228,255,.42) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-tier {
            border-color: rgba(255,91,210,.72) !important;
            background: rgba(19,4,52,.60) !important;
            color: #72efff !important;
            box-shadow: 0 0 10px rgba(255,75,203,.22), inset 0 0 8px rgba(69,228,255,.10) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-mission {
            color: #fff4fb !important; font-style: italic !important;
            text-shadow: 0 2px 8px #090318, 0 0 10px rgba(255,70,196,.28) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-source {
            color: var(--mcms-payout-accent, #77f2ff) !important;
            text-shadow: 0 0 9px var(--mcms-payout-glow, rgba(80,234,255,.34)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-kicker {
            color: #ff9bde !important; letter-spacing: 4px !important;
        }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-amount {
            color: #f8ffff !important;
            font-style: italic !important;
            text-shadow:
                2px 2px 0 #e63fae,
                4px 4px 0 rgba(7,16,52,.94),
                0 0 12px rgba(67,231,255,.56) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-bc-dust,
        #${SCRIPT.payoutFlashId} .mcms-payout-bc-hud,
        #${SCRIPT.payoutFlashId} .mcms-payout-bc-embers {
            position: absolute !important; inset: 0 !important; opacity: 0;
            pointer-events: none !important; will-change: opacity, transform, background-position !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-bc-dust {
            background:
                radial-gradient(ellipse at 50% 105%, rgba(255,114,15,.42) 0 8%, rgba(135,61,14,.22) 24%, transparent 53%),
                radial-gradient(circle at 14% 74%, rgba(255,153,43,.22) 0 3%, rgba(90,76,48,.18) 15%, transparent 35%),
                radial-gradient(circle at 86% 28%, rgba(213,222,188,.14) 0 4%, rgba(65,73,54,.24) 18%, transparent 40%),
                radial-gradient(ellipse at 50% 52%, rgba(160,156,122,.12) 0 14%, rgba(26,31,23,.34) 48%, rgba(4,6,5,.70) 100%),
                repeating-radial-gradient(circle at 37% 44%, rgba(255,255,255,.028) 0 1px, transparent 1px 7px) !important;
            filter: contrast(126%) saturate(88%) !important;
            mix-blend-mode: screen !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-bc-hud {
            background:
                linear-gradient(90deg, transparent 0 5.5%, rgba(255,151,28,.30) 5.5% 5.72%, transparent 5.72% 94.28%, rgba(255,151,28,.30) 94.28% 94.5%, transparent 94.5%),
                linear-gradient(180deg, transparent 0 12%, rgba(224,232,208,.10) 12% 12.2%, transparent 12.2% 87.8%, rgba(224,232,208,.08) 87.8% 88%, transparent 88%),
                repeating-linear-gradient(0deg, rgba(224,232,208,.035) 0 1px, transparent 1px 5px),
                repeating-linear-gradient(118deg, transparent 0 42px, rgba(255,151,30,.048) 42px 44px, transparent 44px 88px) !important;
            mask-image: radial-gradient(ellipse at center, #000 8%, rgba(0,0,0,.86) 64%, transparent 100%) !important;
            -webkit-mask-image: radial-gradient(ellipse at center, #000 8%, rgba(0,0,0,.86) 64%, transparent 100%) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-bc-embers {
            overflow: hidden !important;
            mix-blend-mode: screen !important;
            filter: saturate(125%) contrast(110%) !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-bc-ember {
            position: absolute !important;
            left: 50%; bottom: -18px;
            width: 3px; height: 9px;
            border-radius: 999px !important;
            opacity: 0;
            background: linear-gradient(180deg, #fff7bb 0%, #ffc14e 28%, #ff6d12 72%, rgba(154,24,0,0) 100%) !important;
            box-shadow: 0 0 5px rgba(255,200,83,.95), 0 0 12px rgba(255,92,16,.78), 0 0 22px rgba(255,66,0,.34) !important;
            transform-origin: 50% 100% !important;
            will-change: transform, opacity !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-cinematic {
            background:
                radial-gradient(ellipse at 50% 48%, rgba(0,0,0,0) 10%, rgba(20,24,18,.16) 49%, rgba(2,4,3,.78) 100%),
                linear-gradient(180deg, rgba(12,17,11,.52), transparent 25%, transparent 68%, rgba(15,8,3,.72)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner {
            width: min(820px, calc(100% - 24px)) !important;
            padding: 25px 34px 23px !important;
            border: 0 !important;
            border-left: 6px solid #ff8d18 !important;
            border-right: 2px solid rgba(217,224,200,.28) !important;
            background:
                radial-gradient(circle at 6% 102%, rgba(255,109,12,.26) 0 8%, transparent 30%),
                radial-gradient(circle at 90% -20%, rgba(160,176,134,.16) 0 15%, transparent 42%),
                linear-gradient(104deg, rgba(5,7,6,.98) 0%, rgba(23,28,20,.97) 34%, rgba(13,17,12,.98) 70%, rgba(4,6,5,.96) 100%),
                repeating-linear-gradient(116deg, rgba(255,255,255,.028) 0 1px, transparent 1px 6px),
                repeating-linear-gradient(24deg, transparent 0 48px, rgba(255,139,23,.035) 48px 50px, transparent 50px 96px) !important;
            clip-path: polygon(0 13px, 22px 0, 78% 0, calc(78% + 14px) 7px, 100% 7px, 100% calc(100% - 14px), calc(100% - 23px) 100%, 20% 100%, calc(20% - 13px) calc(100% - 7px), 0 calc(100% - 7px)) !important;
            box-shadow:
                0 0 0 1px rgba(218,224,201,.13),
                0 24px 58px rgba(0,0,0,.68),
                -15px 0 38px rgba(255,116,12,.18),
                inset 0 1px 0 rgba(255,255,255,.055),
                inset 0 -18px 40px rgba(0,0,0,.26) !important;
            backdrop-filter: blur(5px) contrast(120%) saturate(88%) !important;
            -webkit-backdrop-filter: blur(5px) contrast(120%) saturate(88%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner::after {
            content: "" !important; position: absolute !important; pointer-events: none !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner::before {
            left: 0 !important; right: 0 !important; top: 0 !important; height: 5px !important;
            background:
                repeating-linear-gradient(135deg, #ff941c 0 11px, #171a14 11px 22px),
                linear-gradient(90deg, rgba(255,145,27,.9), transparent) !important;
            box-shadow: 0 0 12px rgba(255,115,13,.26) !important;
            opacity: .94 !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner::after {
            right: 17px !important; bottom: 11px !important; width: 92px !important; height: 10px !important;
            border-top: 2px solid rgba(255,145,25,.82) !important;
            border-bottom: 1px solid rgba(224,229,207,.24) !important;
            background: repeating-linear-gradient(90deg, rgba(255,145,25,.84) 0 6px, transparent 6px 11px) !important;
            filter: drop-shadow(0 0 5px rgba(255,112,10,.24)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-title {
            display: block !important;
            width: 100% !important;
            max-width: 100% !important;
            padding: 0 8px !important;
            color: #f1f0e8 !important;
            font-family: Impact, Haettenschweiler, "Arial Narrow Bold", "Arial Black", sans-serif !important;
            font-size: clamp(31px, 5.05vw, 58px) !important;
            font-weight: 900 !important;
            letter-spacing: clamp(.8px, .24vw, 2.6px) !important;
            word-spacing: -1px !important;
            line-height: .88 !important;
            text-transform: uppercase !important;
            white-space: nowrap !important;
            transform: skewX(-5deg) scaleX(.89) !important;
            transform-origin: 50% 50% !important;
            text-shadow:
                2px 2px 0 rgba(2,3,2,.98),
                5px 5px 0 rgba(2,3,2,.96),
                8px 8px 0 rgba(255,116,13,.34),
                -1px -1px 0 rgba(255,255,255,.18),
                0 0 24px rgba(255,126,17,.15) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-title.mcms-payout-title-long {
            font-size: clamp(27px, 4.25vw, 49px) !important;
            letter-spacing: clamp(.3px, .16vw, 1.5px) !important;
            transform: skewX(-5deg) scaleX(.84) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-title.mcms-payout-title-very-long {
            font-size: clamp(23px, 3.65vw, 42px) !important;
            white-space: normal !important;
            text-wrap: balance !important;
            line-height: .94 !important;
            transform: skewX(-4deg) scaleX(.88) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-divider {
            height: 3px !important; width: min(500px, 76%) !important; margin: 14px auto 10px !important;
            background:
                linear-gradient(90deg, transparent, #ff8e19 14%, #f4f1e4 45%, #747f68 75%, transparent) !important;
            box-shadow: 0 0 12px rgba(255,121,15,.28) !important;
            transform: skewX(-18deg) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-tier {
            border-radius: 1px !important;
            border-color: rgba(255,145,25,.78) !important;
            background: linear-gradient(90deg, rgba(255,125,15,.18), rgba(20,24,18,.60)) !important;
            color: #ffac43 !important;
            letter-spacing: 2.25px !important;
            box-shadow: inset 4px 0 0 rgba(255,139,21,.92), 0 0 10px rgba(255,111,9,.10) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-mission {
            color: #f3f2e9 !important;
            text-transform: uppercase !important;
            letter-spacing: .6px !important;
            font-family: "Arial Narrow", Arial, sans-serif !important;
            text-shadow: 0 2px 10px rgba(0,0,0,.96) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-source {
            color: #ff9421 !important; letter-spacing: 2.7px !important;
            text-shadow: 0 0 12px rgba(255,112,10,.32) !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-kicker {
            color: rgba(225,229,211,.64) !important; letter-spacing: 3.4px !important;
        }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-amount {
            color: #ff9b27 !important;
            font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif !important;
            font-size: clamp(23px, 3.25vw, 35px) !important;
            letter-spacing: 2px !important;
            text-shadow: 2px 2px 0 #11140e, 0 0 14px rgba(255,126,17,.36), 0 0 28px rgba(255,78,4,.12) !important;
        }
        @media (max-width: 620px) {#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner {
                width: calc(100% - 16px) !important;
                padding: 21px 16px 19px !important;
            }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-title {
                font-size: clamp(25px, 8vw, 39px) !important;
                letter-spacing: .5px !important;
                transform: skewX(-4deg) scaleX(.84) !important;
            }#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-title.mcms-payout-title-long {
                font-size: clamp(21px, 6.8vw, 33px) !important;
                white-space: normal !important;
                text-wrap: balance !important;
            }
        }#${SCRIPT.payoutFlashId} .mcms-payout-theme-fx,
        #${SCRIPT.payoutFlashId} .mcms-payout-theme-particles {
            position:absolute !important; inset:0 !important; opacity:0;
            pointer-events:none !important; overflow:hidden !important;
            will-change:opacity, transform, background-position, filter !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-theme-particles { mix-blend-mode:screen !important; }#${SCRIPT.payoutFlashId} .mcms-payout-theme-particle {
            position:absolute !important; opacity:0; pointer-events:none !important;
            will-change:opacity, transform !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-red {
            background:
                radial-gradient(ellipse at 10% 48%, rgba(154,5,14,.82) 0%, rgba(154,5,14,.36) 27%, transparent 64%),
                linear-gradient(90deg, rgba(4,4,4,.76) 0 49.2%, rgba(166,11,20,.22) 49.2% 51%, transparent 51%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-blue {
            background:
                radial-gradient(ellipse at 90% 52%, rgba(255,244,216,.46) 0%, rgba(219,178,87,.18) 31%, transparent 66%),
                linear-gradient(270deg, rgba(241,236,225,.28) 0 45%, rgba(164,12,20,.18) 49% 51%, transparent 55%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-cinematic {
            background:
                linear-gradient(90deg, rgba(0,0,0,.91) 0 49.35%, rgba(163,12,20,.78) 49.35% 50.65%, rgba(239,234,223,.80) 50.65% 100%),
                radial-gradient(ellipse at 50% 52%, transparent 10%, rgba(0,0,0,.24) 70%, rgba(0,0,0,.66) 100%) !important;
            mix-blend-mode:normal !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-theme-fx-a {
            background:
                radial-gradient(circle at 50% 71%, rgba(235,193,95,.32) 0 2%, transparent 2.5% 13%, rgba(235,193,95,.16) 13.5% 14%, transparent 14.5%),
                repeating-conic-gradient(from -18deg at 50% 71%, rgba(229,186,87,.12) 0 1deg, transparent 1deg 12deg),
                linear-gradient(90deg, rgba(0,0,0,.18) 0 49.25%, rgba(173,12,20,.40) 49.25% 50.75%, rgba(255,255,255,.05) 50.75% 100%) !important;
            mask-image:linear-gradient(180deg, transparent 0%, #000 15%, #000 88%, transparent 100%) !important;
            -webkit-mask-image:linear-gradient(180deg, transparent 0%, #000 15%, #000 88%, transparent 100%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-theme-fx-b {
            background:
                linear-gradient(108deg, transparent 0 46.8%, rgba(168,12,20,.78) 47% 47.7%, transparent 47.9% 100%),
                linear-gradient(72deg, transparent 0 52.2%, rgba(168,12,20,.36) 52.4% 52.8%, transparent 53% 100%),
                repeating-linear-gradient(0deg, rgba(230,193,106,.035) 0 1px, transparent 1px 7px),
                repeating-linear-gradient(90deg, rgba(230,193,106,.025) 0 1px, transparent 1px 96px) !important;
            opacity:.55;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-theme-fx-c {
            left:-22% !important; right:auto !important; width:45% !important;
            background:linear-gradient(100deg, transparent 0 42%, rgba(168,8,17,.10) 43%, rgba(204,20,29,.84) 48%, rgba(255,225,188,.42) 50%, rgba(152,5,13,.72) 52%, transparent 58% 100%) !important;
            filter:drop-shadow(0 0 15px rgba(181,12,21,.42)) !important;
            transform:skewX(-9deg) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner {
            width:min(790px,calc(100% - 26px)) !important;
            padding:28px 44px 24px !important;
            border:1px solid rgba(217,178,89,.72) !important;
            border-top:4px solid #a70d16 !important;
            border-bottom:4px solid #a70d16 !important;
            background:
                linear-gradient(90deg, rgba(5,5,5,.985) 0 63%, rgba(34,20,18,.97) 63% 65%, rgba(234,228,215,.97) 65% 100%),
                repeating-linear-gradient(135deg, rgba(255,255,255,.018) 0 1px, transparent 1px 8px) !important;
            box-shadow:
                0 0 0 2px rgba(0,0,0,.84),
                0 0 0 3px rgba(217,178,89,.28),
                0 26px 62px rgba(0,0,0,.74),
                0 0 36px rgba(158,10,19,.18),
                inset -220px 0 80px rgba(255,255,255,.035) !important;
            overflow:hidden !important;
            backdrop-filter:none !important;
            -webkit-backdrop-filter:none !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner::before {
            content:"MIAMI  •  POWER  •  MONEY" !important;
            position:absolute !important; left:18px !important; top:10px !important;
            color:rgba(224,188,101,.68) !important;
            font:900 7px/1 "Arial Narrow",Arial,sans-serif !important;
            letter-spacing:2.6px !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner::after {
            content:"THE WORLD IS YOURS" !important;
            position:absolute !important; right:-58px !important; top:50% !important;
            width:180px !important;
            transform:translateY(-50%) rotate(90deg) !important;
            color:rgba(82,14,18,.68) !important;
            font:950 7px/1 "Arial Narrow",Arial,sans-serif !important;
            letter-spacing:2.2px !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-title {
            color:#f1e8d7 !important;
            font-family:Impact,Haettenschweiler,"Arial Narrow Bold","Arial Black",sans-serif !important;
            font-size:clamp(36px,5.8vw,70px) !important;
            letter-spacing:2.4px !important;
            transform:skewX(-3deg) scaleX(.92) !important;
            -webkit-text-stroke:1px rgba(214,171,77,.82) !important;
            text-shadow:3px 3px 0 #120405,6px 6px 0 #8d0b13,0 0 22px rgba(220,179,84,.20) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-title.mcms-payout-title-long {
            font-size:clamp(31px,5vw,59px) !important; letter-spacing:1.6px !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-title.mcms-payout-title-very-long {
            font-size:clamp(27px,4.4vw,52px) !important; letter-spacing:1px !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-divider {
            height:3px !important; width:min(440px,82%) !important;
            background:linear-gradient(90deg,transparent,#9f0c15 13%,#d9b259 34%,#fff8e8 50%,#d9b259 66%,#9f0c15 87%,transparent) !important;
            box-shadow:0 0 11px rgba(173,15,24,.48),0 0 20px rgba(219,181,91,.20) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-tier {
            border-radius:0 !important; border:1px solid #cda954 !important;
            color:#f0d68d !important; background:rgba(15,5,5,.78) !important;
            box-shadow:inset 4px 0 0 #a70d16 !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-mission {
            color:#fff8ea !important; letter-spacing:.25px !important;
            text-shadow:0 2px 0 #000,0 0 9px #000 !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-source {
            color:#d7b45f !important; text-shadow:0 1px 0 #000,0 0 6px #000 !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-kicker {
            color:#bd2630 !important; font-weight:950 !important; letter-spacing:3.2px !important;
            text-shadow:0 1px 0 #000,0 0 6px rgba(0,0,0,.8) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-amount {
            color:#f2d27d !important;
            font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif !important;
            font-size:clamp(25px,3.55vw,39px) !important;
            letter-spacing:2.2px !important;
            -webkit-text-stroke:.5px rgba(83,12,16,.55) !important;
            text-shadow:2px 2px 0 #120405,4px 4px 0 #8c0a12,0 0 18px rgba(225,184,89,.36) !important;
        }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-theme-particle {
            border-radius:0 !important;
            background:#f5e8be !important;
            box-shadow:0 0 5px #fff7d7,0 0 12px rgba(218,176,79,.78) !important;
            transform:rotate(45deg);
        }
        @media (max-width:620px) {#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner {
                width:calc(100% - 16px) !important; padding:25px 19px 21px !important;
                background:linear-gradient(90deg,rgba(5,5,5,.985) 0 76%,rgba(234,228,215,.97) 76% 100%) !important;
            }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-title {
                font-size:clamp(29px,8.2vw,47px) !important; letter-spacing:1px !important; transform:skewX(-2deg) scaleX(.88) !important;
            }#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner::after { display:none !important; }
        }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-cinematic {
            background:radial-gradient(ellipse at 52% 48%, transparent 8%, rgba(0,12,18,.22) 52%, rgba(0,0,0,.86) 100%), linear-gradient(115deg, rgba(245,226,0,.12), transparent 35%, rgba(0,229,255,.10)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-fx-a {
            background:linear-gradient(112deg, rgba(247,229,0,.18) 0 2%, transparent 2% 9%, rgba(247,229,0,.08) 9% 10%, transparent 10% 88%, rgba(0,229,255,.12) 88% 90%, transparent 90%), repeating-linear-gradient(135deg, transparent 0 34px, rgba(247,229,0,.045) 34px 36px, transparent 36px 70px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-fx-b {
            background:repeating-linear-gradient(0deg, rgba(255,255,255,.035) 0 1px, transparent 1px 4px), repeating-linear-gradient(90deg, transparent 0 78px, rgba(0,229,255,.055) 78px 80px, transparent 80px 156px) !important;
            mix-blend-mode:screen !important;
        }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-fx-c {
            background:radial-gradient(circle at 50% 50%, rgba(0,229,255,.13) 0 2%, transparent 3% 17%, rgba(247,229,0,.10) 18% 18.5%, transparent 19% 35%, rgba(0,229,255,.06) 36% 36.5%, transparent 37%), conic-gradient(from 35deg at 50% 50%, transparent 0 12%, rgba(247,229,0,.07) 12% 13%, transparent 13% 49%, rgba(0,229,255,.06) 49% 50%, transparent 50%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner {
            width:min(780px,calc(100% - 22px)) !important; padding:24px 42px 22px !important;
            border:0 !important; border-left:7px solid #f2df00 !important; border-right:2px solid #00e5ff !important;
            clip-path:polygon(0 12px,18px 0,78% 0,calc(78% + 14px) 8px,100% 8px,100% calc(100% - 14px),calc(100% - 20px) 100%,15% 100%,calc(15% - 12px) calc(100% - 8px),0 calc(100% - 8px)) !important;
            background:linear-gradient(104deg,rgba(3,5,5,.98),rgba(12,14,13,.96) 42%,rgba(2,12,16,.96)), repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 1px,transparent 1px 5px) !important;
            box-shadow:0 24px 58px rgba(0,0,0,.68),-14px 0 34px rgba(242,223,0,.18),14px 0 34px rgba(0,229,255,.13),inset 0 1px rgba(255,255,255,.05) !important;
        }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner::before { content:"" !important; position:absolute !important; left:0 !important; right:0 !important; top:0 !important; height:5px !important; background:linear-gradient(90deg,#f2df00 0 34%,transparent 34% 68%,#00e5ff 68%) !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-title { color:#f3e800 !important; font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif !important; font-size:clamp(34px,5.3vw,63px) !important; letter-spacing:1.5px !important; transform:skewX(-6deg) scaleX(.94) !important; text-shadow:3px 3px 0 #020202,6px 6px 0 rgba(0,229,255,.32),0 0 20px rgba(242,223,0,.18) !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-divider { height:3px !important; background:linear-gradient(90deg,transparent,#f2df00 12%,#fff 48%,#00e5ff 82%,transparent) !important; transform:skewX(-18deg) !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-tier { border-radius:0 !important; border-color:#f2df00 !important; color:#f2df00 !important; background:rgba(0,0,0,.66) !important; box-shadow:inset 4px 0 0 #00e5ff !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-source { color:#00e5ff !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-kicker { color:#f2df00 !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-amount { color:#fff !important; text-shadow:2px 2px 0 #101010,4px 4px 0 rgba(242,223,0,.58),0 0 18px rgba(0,229,255,.44) !important; }#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-particle { background:#f2df00 !important; box-shadow:0 0 8px rgba(0,229,255,.8) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-cinematic { background:radial-gradient(ellipse at 50% 46%,transparent 8%,rgba(38,0,0,.20) 52%,rgba(0,0,0,.88) 100%),linear-gradient(180deg,rgba(0,0,0,.25),transparent 45%,rgba(72,8,0,.42)) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-theme-fx-a { background:radial-gradient(ellipse at 18% 110%,rgba(255,197,44,.82) 0 5%,rgba(255,72,0,.48) 13%,transparent 37%),radial-gradient(ellipse at 52% 115%,rgba(255,229,92,.72) 0 6%,rgba(255,52,0,.44) 15%,transparent 40%),radial-gradient(ellipse at 84% 110%,rgba(255,155,28,.76) 0 5%,rgba(170,0,0,.40) 17%,transparent 39%),linear-gradient(180deg,transparent 48%,rgba(92,0,0,.28)) !important; mix-blend-mode:screen !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-theme-fx-b { background:repeating-conic-gradient(from 18deg at 50% 85%,transparent 0 7deg,rgba(255,85,0,.08) 7deg 8deg,transparent 8deg 17deg),radial-gradient(ellipse at 50% 88%,transparent 0 18%,rgba(255,43,0,.14) 42%,transparent 68%) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-theme-fx-c { background:radial-gradient(circle at 15% 25%,rgba(255,255,255,.05),transparent 18%),radial-gradient(circle at 75% 35%,rgba(255,120,60,.08),transparent 22%),repeating-radial-gradient(circle at 40% 55%,rgba(255,255,255,.025) 0 1px,transparent 1px 8px) !important; filter:blur(1px) contrast(130%) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-banner { width:min(760px,calc(100% - 24px)) !important; padding:25px 36px 23px !important; border:1px solid rgba(255,111,23,.62) !important; border-left:6px solid #ff4a0b !important; border-right:6px solid #8e0800 !important; clip-path:polygon(0 14px,18px 0,100% 0,100% calc(100% - 16px),calc(100% - 20px) 100%,0 100%) !important; background:radial-gradient(circle at 50% 110%,rgba(130,18,0,.26),transparent 44%),linear-gradient(108deg,rgba(4,4,4,.98),rgba(27,9,5,.97) 48%,rgba(5,3,3,.98)),repeating-linear-gradient(120deg,rgba(255,255,255,.025) 0 1px,transparent 1px 7px) !important; box-shadow:0 24px 60px rgba(0,0,0,.72),0 0 38px rgba(255,53,0,.18),inset 0 -16px 38px rgba(112,5,0,.18) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-title { color:#f4eee1 !important; font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif !important; font-size:clamp(35px,5.5vw,66px) !important; letter-spacing:1.4px !important; transform:scaleX(.92) !important; text-shadow:2px 2px 0 #170100,5px 5px 0 #7d0b00,0 0 17px rgba(255,79,10,.72),0 0 38px rgba(255,26,0,.28) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-divider { height:3px !important; background:linear-gradient(90deg,transparent,#7d0b00 12%,#ff5c12 36%,#fff3b3 50%,#ff5c12 64%,#7d0b00 88%,transparent) !important; box-shadow:0 0 16px rgba(255,63,0,.55) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-tier { border-radius:2px !important; border-color:#ff5b18 !important; color:#ffb14f !important; background:rgba(37,3,0,.72) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-source { color:#ff6b22 !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-kicker { color:#d8b8a7 !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-amount { color:#ffd76a !important; text-shadow:2px 2px 0 #2c0500,0 0 14px #ff4b00,0 0 30px rgba(255,18,0,.48) !important; }#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-theme-particle { border-radius:999px !important; background:linear-gradient(180deg,#fff2a5,#ff7b18 55%,rgba(170,8,0,0)) !important; box-shadow:0 0 8px #ff8d21,0 0 18px rgba(255,34,0,.75) !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-cinematic { background:radial-gradient(ellipse at 50% 42%,rgba(122,178,55,.12),rgba(9,18,6,.60) 52%,rgba(0,0,0,.94) 100%),repeating-linear-gradient(0deg,rgba(211,255,132,.027) 0 1px,transparent 1px 4px) !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-theme-fx-a { opacity:.86 !important; background:repeating-linear-gradient(0deg,rgba(201,255,116,.055) 0 1px,transparent 1px 4px),radial-gradient(circle at 50% 50%,transparent 0 20%,rgba(183,233,90,.13) 20.4% 20.8%,transparent 21.2% 34%,rgba(183,233,90,.09) 34.4% 34.8%,transparent 35.2%) !important; animation:mcms-fallout-scan 5.6s linear infinite !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-theme-fx-b { opacity:.78 !important; background:linear-gradient(90deg,rgba(105,151,44,.12),transparent 18%,transparent 82%,rgba(105,151,44,.12)),repeating-radial-gradient(circle at 42% 38%,rgba(255,244,196,.045) 0 1px,transparent 1px 7px) !important; filter:contrast(155%) sepia(28%) !important; animation:mcms-fallout-flicker 3.8s steps(1,end) infinite !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-theme-fx-c { opacity:.72 !important; background:conic-gradient(from 0deg at 50% 50%,rgba(210,242,112,.18) 0 1deg,transparent 1deg 29deg,rgba(210,242,112,.08) 29deg 30deg,transparent 30deg 60deg) !important; mask-image:radial-gradient(circle at center,transparent 0 25%,#000 27% 42%,transparent 65%) !important; -webkit-mask-image:radial-gradient(circle at center,transparent 0 25%,#000 27% 42%,transparent 65%) !important; animation:mcms-fallout-radar 13s linear infinite !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-banner { width:min(760px,calc(100% - 28px)) !important; padding:31px 38px 25px !important; border:2px solid rgba(193,232,101,.82) !important; border-radius:8px !important; background:linear-gradient(180deg,rgba(18,30,12,.985),rgba(4,10,3,.99)),repeating-linear-gradient(0deg,rgba(197,255,116,.03) 0 1px,transparent 1px 4px) !important; box-shadow:0 0 0 3px rgba(3,7,2,.92),0 0 0 6px rgba(123,158,57,.22),0 0 34px rgba(154,211,69,.28),0 28px 68px rgba(0,0,0,.74),inset 0 0 44px rgba(145,193,66,.10) !important; overflow:hidden !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-banner::before { content:"VAULT-TEC FINANCIAL TERMINAL // REWARD CLEARANCE" !important; position:absolute !important; left:17px !important; top:11px !important; right:17px !important; color:rgba(214,250,137,.60) !important; font:900 8px/1 "Courier New",Consolas,monospace !important; letter-spacing:1.6px !important; text-align:left !important; border-bottom:1px dashed rgba(176,221,83,.28) !important; padding-bottom:7px !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-banner::after { content:"ROBCO INDUSTRIES (TM) UNIFIED OPERATING SYSTEM" !important; position:absolute !important; right:15px !important; bottom:8px !important; color:rgba(161,201,84,.40) !important; font:700 6px/1 monospace !important; letter-spacing:1px !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-title { color:#d6ff84 !important; font-family:"Courier New",Consolas,monospace !important; font-size:clamp(28px,4.8vw,56px) !important; font-weight:900 !important; letter-spacing:1.4px !important; transform:none !important; text-shadow:0 0 5px rgba(210,255,128,.95),0 0 15px rgba(151,212,61,.46),2px 0 rgba(113,160,44,.35) !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-divider { height:2px !important; background:linear-gradient(90deg,transparent,#6f9134 9%,#d7ff8e 50%,#6f9134 91%,transparent) !important; box-shadow:0 0 11px rgba(175,232,79,.48) !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-tier { border:1px solid #a8d255 !important; color:#dbff91 !important; background:rgba(13,26,8,.88) !important; border-radius:2px !important; font-family:"Courier New",Consolas,monospace !important; letter-spacing:1.2px !important; box-shadow:inset 0 0 9px rgba(153,214,63,.12),0 0 7px rgba(143,197,57,.16) !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-mission,
        #${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-source,
        #${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-kicker,
        #${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-amount { font-family:"Courier New",Consolas,monospace !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-mission { color:#c1e87a !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-source { color:#e1ff9d !important; letter-spacing:.8px !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-kicker { color:#8fb554 !important; letter-spacing:1.4px !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-amount { color:#f0c66c !important; text-shadow:0 0 7px rgba(255,203,93,.88),0 0 24px rgba(178,112,32,.34) !important; }#${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-theme-particle { border-radius:50% !important; background:#d7f996 !important; box-shadow:0 0 5px rgba(202,238,123,.82) !important; opacity:.72 !important; }
        @keyframes mcms-fallout-scan { 0% { transform:translateY(-2%) } 100% { transform:translateY(2%) } }
        @keyframes mcms-fallout-radar { from { transform:rotate(0deg) scale(1) } to { transform:rotate(360deg) scale(1.025) } }
        @keyframes mcms-fallout-flicker { 0%,7%,11%,46%,50%,88%,100% { opacity:.78 } 8%,10%,47%,49%,89% { opacity:.42 } }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-cinematic { background:radial-gradient(ellipse at 50% 50%,rgba(20,119,165,.05),rgba(3,11,30,.36) 58%,rgba(0,2,10,.88)),linear-gradient(180deg,rgba(0,8,26,.34),transparent 40%,rgba(0,3,15,.52)) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-fx-a { background-image:radial-gradient(circle at 13% 19%,#fff 0 1px,transparent 1.7px),radial-gradient(circle at 28% 72%,#8adfff 0 1px,transparent 1.8px),radial-gradient(circle at 63% 28%,#fff 0 1px,transparent 1.6px),radial-gradient(circle at 82% 62%,#9ee9ff 0 1.2px,transparent 2px),radial-gradient(circle at 47% 48%,rgba(119,225,255,.6) 0 1px,transparent 2px); background-size:160px 140px,230px 190px,290px 240px,340px 270px,420px 330px !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-fx-b { background:repeating-linear-gradient(90deg,transparent 0 72px,rgba(80,205,255,.055) 72px 73px,transparent 73px 144px),repeating-linear-gradient(0deg,transparent 0 50px,rgba(80,205,255,.045) 50px 51px,transparent 51px 100px),linear-gradient(90deg,transparent 5%,rgba(105,219,255,.18) 5% 5.2%,transparent 5.2% 94.8%,rgba(105,219,255,.18) 94.8% 95%,transparent 95%) !important; mask-image:radial-gradient(ellipse at center,#000 8%,transparent 86%) !important; -webkit-mask-image:radial-gradient(ellipse at center,#000 8%,transparent 86%) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-fx-c { background:conic-gradient(from 0deg at 50% 50%,transparent 0 72%,rgba(91,220,255,.24) 74%,rgba(91,220,255,.04) 78%,transparent 82%),radial-gradient(circle at center,transparent 0 27%,rgba(91,220,255,.13) 27.5% 28%,transparent 28.5% 42%,rgba(91,220,255,.08) 42.5% 43%,transparent 43.5%) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-banner { width:min(790px,calc(100% - 24px)) !important; padding:24px 40px 22px !important; border:1px solid rgba(111,221,255,.55) !important; border-left:5px solid #6fddff !important; border-right:5px solid rgba(235,192,79,.70) !important; clip-path:polygon(0 12px,16px 0,85% 0,100% 18px,100% calc(100% - 18px),85% 100%,16px 100%,0 calc(100% - 12px)) !important; background:linear-gradient(100deg,rgba(3,13,31,.94),rgba(8,31,57,.91) 48%,rgba(3,12,30,.95)),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 5px) !important; box-shadow:0 24px 58px rgba(0,0,0,.65),0 0 32px rgba(74,200,255,.18),inset 0 1px rgba(255,255,255,.06) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-title { color:#f2fbff !important; font-family:"Arial Narrow",Arial,sans-serif !important; font-size:clamp(34px,5.2vw,61px) !important; letter-spacing:3px !important; transform:scaleX(.94) !important; text-shadow:0 0 7px #6fddff,0 0 24px rgba(52,177,255,.36),3px 3px 0 rgba(0,7,22,.94) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-divider { height:2px !important; background:linear-gradient(90deg,transparent,#6fddff 18%,#fff 49%,#e8c154 81%,transparent) !important; box-shadow:0 0 11px rgba(98,217,255,.46) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-tier { border-color:#6fddff !important; color:#a9eeff !important; background:rgba(3,18,39,.72) !important; box-shadow:inset 3px 0 0 #e8c154 !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-source { color:#6fddff !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-kicker { color:#e8c154 !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-amount { color:#fff !important; text-shadow:0 0 9px #6fddff,0 0 24px rgba(69,180,255,.34) !important; }#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-particle { border-radius:50% !important; background:#fff !important; box-shadow:0 0 8px #6fddff !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-cinematic { background:radial-gradient(ellipse at center,rgba(122,89,24,.05),rgba(15,11,8,.36) 52%,rgba(0,0,0,.90)),linear-gradient(180deg,rgba(10,8,7,.34),transparent 42%,rgba(27,17,8,.46)) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-theme-fx-a { background:radial-gradient(circle at 50% 52%,rgba(233,192,87,.16) 0 2%,transparent 3% 18%,rgba(233,192,87,.09) 18.5% 19%,transparent 19.5% 31%,rgba(233,192,87,.06) 31.5% 32%,transparent 32.5%),conic-gradient(from 0deg at 50% 52%,transparent 0 14%,rgba(233,192,87,.06) 14% 15%,transparent 15% 38%,rgba(233,192,87,.05) 38% 39%,transparent 39%) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-theme-fx-b { background:radial-gradient(ellipse at 18% 82%,rgba(185,122,38,.15),transparent 32%),radial-gradient(ellipse at 82% 18%,rgba(218,184,102,.09),transparent 28%),repeating-radial-gradient(circle at 32% 48%,rgba(255,255,255,.02) 0 1px,transparent 1px 8px) !important; filter:sepia(35%) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-theme-fx-c { background:linear-gradient(115deg,transparent 0 15%,rgba(237,199,99,.07) 15% 15.3%,transparent 15.3% 84.7%,rgba(237,199,99,.07) 84.7% 85%,transparent 85%),linear-gradient(180deg,transparent 8%,rgba(237,199,99,.06) 8% 8.3%,transparent 8.3% 91.7%,rgba(237,199,99,.06) 91.7% 92%,transparent 92%) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner { width:min(740px,calc(100% - 28px)) !important; padding:27px 40px 24px !important; border:1px solid rgba(216,174,73,.66) !important; border-top:3px double #d8ae49 !important; border-bottom:3px double #d8ae49 !important; background:radial-gradient(circle at 50% 120%,rgba(100,61,12,.22),transparent 44%),linear-gradient(102deg,rgba(7,7,7,.97),rgba(28,24,19,.96) 50%,rgba(6,6,6,.98)),repeating-linear-gradient(35deg,rgba(255,255,255,.018) 0 1px,transparent 1px 8px) !important; box-shadow:0 24px 60px rgba(0,0,0,.72),0 0 30px rgba(203,155,54,.14),inset 0 0 36px rgba(126,91,26,.08) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner::after { content:"◆" !important; position:absolute !important; top:50% !important; transform:translateY(-50%) !important; color:#d8ae49 !important; font-size:18px !important; text-shadow:0 0 10px rgba(216,174,73,.55) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner::before { left:15px !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner::after { right:15px !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-title { color:#e8c96f !important; font-family:Georgia,"Times New Roman",serif !important; font-size:clamp(34px,5.2vw,62px) !important; letter-spacing:1px !important; text-transform:none !important; transform:none !important; text-shadow:0 2px 0 #130d05,0 0 10px rgba(229,190,84,.54),0 0 28px rgba(174,116,20,.22) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-divider { height:2px !important; background:linear-gradient(90deg,transparent,#7b5b23 12%,#e3bf5c 36%,#fff1ae 50%,#e3bf5c 64%,#7b5b23 88%,transparent) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-tier { border-color:#b9903c !important; color:#e8c96f !important; background:rgba(16,12,8,.72) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-source { color:#e3bf5c !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-kicker { color:#a89569 !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-amount { color:#fff0b1 !important; font-family:Georgia,"Times New Roman",serif !important; text-shadow:0 2px 0 #100a03,0 0 13px rgba(225,181,67,.58) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-theme-particle { border-radius:50% !important; background:#d5c39c !important; box-shadow:0 0 5px rgba(220,183,92,.45) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-cinematic { background:radial-gradient(ellipse at center,transparent 12%,rgba(11,18,20,.28) 55%,rgba(0,0,0,.88)),linear-gradient(180deg,rgba(21,28,30,.26),transparent 48%,rgba(8,13,14,.40)) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-a { background:repeating-linear-gradient(90deg,transparent 0 59px,rgba(218,234,236,.045) 59px 60px,transparent 60px 120px),repeating-linear-gradient(0deg,transparent 0 39px,rgba(218,234,236,.04) 39px 40px,transparent 40px 80px),linear-gradient(90deg,rgba(207,25,35,.12),transparent 28%,transparent 72%,rgba(46,178,112,.08)) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-b { background:repeating-linear-gradient(135deg,rgba(204,20,30,.10) 0 10px,transparent 10px 20px) !important; mask-image:linear-gradient(180deg,#000 0 7%,transparent 7% 90%,#000 90%) !important; -webkit-mask-image:linear-gradient(180deg,#000 0 7%,transparent 7% 90%,#000 90%) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-c { background:linear-gradient(180deg,transparent 0 45%,rgba(83,255,164,.12) 49%,rgba(83,255,164,.22) 50%,rgba(83,255,164,.08) 51%,transparent 55%),radial-gradient(circle at 50% 50%,transparent 0 25%,rgba(235,245,246,.07) 25.5% 26%,transparent 26.5%) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner { width:min(790px,calc(100% - 24px)) !important; padding:24px 38px 22px !important; border:1px solid rgba(221,234,235,.38) !important; border-left:8px solid #c81724 !important; border-right:3px solid #43d887 !important; background:linear-gradient(104deg,rgba(8,12,13,.98),rgba(25,32,34,.96) 48%,rgba(7,12,13,.98)),repeating-linear-gradient(0deg,rgba(255,255,255,.02) 0 1px,transparent 1px 5px) !important; clip-path:polygon(0 0,96% 0,100% 14px,100% 100%,4% 100%,0 calc(100% - 14px)) !important; box-shadow:0 24px 58px rgba(0,0,0,.68),-12px 0 30px rgba(200,23,36,.16),12px 0 24px rgba(67,216,135,.10),inset 0 1px rgba(255,255,255,.05) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::before { content:"CONTAINMENT PROTOCOL // SECURE" !important; position:absolute !important; right:18px !important; top:10px !important; color:rgba(87,229,150,.58) !important; font:900 7px/1 monospace !important; letter-spacing:1.4px !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title { color:#f0f5f5 !important; font-family:"Arial Narrow",Arial,sans-serif !important; font-size:clamp(33px,5vw,59px) !important; letter-spacing:2.7px !important; transform:scaleX(.96) !important; text-shadow:3px 3px 0 #101415,6px 6px 0 rgba(200,23,36,.50),0 0 18px rgba(255,255,255,.10) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-divider { height:2px !important; background:linear-gradient(90deg,transparent,#c81724 16%,#f0f5f5 49%,#43d887 82%,transparent) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-tier { border-radius:0 !important; border-color:#c81724 !important; color:#f3f6f6 !important; background:rgba(30,5,8,.64) !important; box-shadow:inset 4px 0 0 #43d887 !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-source { color:#43d887 !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-kicker { color:#d65b63 !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-amount { color:#fff !important; text-shadow:0 0 10px rgba(67,216,135,.62),3px 3px 0 rgba(200,23,36,.55) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-cinematic { background:radial-gradient(ellipse at center,rgba(113,11,15,.06),rgba(17,4,7,.42) 56%,rgba(0,0,0,.91)),linear-gradient(180deg,rgba(45,0,5,.28),transparent 42%,rgba(50,5,0,.34)) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-theme-fx-a { background:radial-gradient(ellipse at 22% 110%,rgba(233,46,18,.35),transparent 38%),radial-gradient(ellipse at 78% 110%,rgba(190,13,20,.32),transparent 36%),radial-gradient(circle at 50% 50%,transparent 0 26%,rgba(226,181,63,.08) 26.5% 27%,transparent 27.5%) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-theme-fx-b { background:repeating-linear-gradient(90deg,transparent 0 44px,rgba(224,181,68,.07) 44px 47px,transparent 47px 88px),repeating-linear-gradient(0deg,transparent 0 44px,rgba(224,181,68,.045) 44px 47px,transparent 47px 88px) !important; mask-image:linear-gradient(90deg,#000 0 12%,transparent 12% 88%,#000 88%) !important; -webkit-mask-image:linear-gradient(90deg,#000 0 12%,transparent 12% 88%,#000 88%) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-theme-fx-c { background:conic-gradient(from 25deg at 50% 50%,transparent 0 15%,rgba(222,173,55,.08) 15% 16%,transparent 16% 33%,rgba(170,13,21,.10) 33% 34%,transparent 34%) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner { width:min(740px,calc(100% - 28px)) !important; padding:27px 40px 24px !important; border:1px solid rgba(221,174,57,.58) !important; border-top:4px solid #b3131d !important; border-bottom:4px solid #d9ad3b !important; background:radial-gradient(circle at 50% 120%,rgba(126,10,12,.24),transparent 42%),linear-gradient(105deg,rgba(5,4,5,.98),rgba(31,9,12,.96) 48%,rgba(5,4,5,.98)),repeating-linear-gradient(35deg,rgba(255,255,255,.018) 0 1px,transparent 1px 8px) !important; box-shadow:0 24px 60px rgba(0,0,0,.72),0 0 32px rgba(185,20,27,.18),inset 0 0 32px rgba(213,168,51,.06) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner::after { content:"◆" !important; position:absolute !important; top:50% !important; transform:translateY(-50%) rotate(45deg) !important; color:#d9ad3b !important; font-size:14px !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner::before { left:18px !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner::after { right:18px !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-title { color:#f4e9d6 !important; font-family:Georgia,"Times New Roman",serif !important; font-size:clamp(35px,5.4vw,64px) !important; text-transform:none !important; letter-spacing:.5px !important; transform:none !important; text-shadow:0 2px 0 #160306,0 0 10px rgba(217,173,59,.55),4px 4px 0 rgba(151,12,20,.48) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-divider { height:3px !important; background:linear-gradient(90deg,transparent,#8d1118 12%,#d9ad3b 36%,#fff0b0 50%,#d9ad3b 64%,#8d1118 88%,transparent) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-tier { border-color:#b3131d !important; color:#e8bf55 !important; background:rgba(35,3,7,.68) !important; box-shadow:inset 4px 0 0 #d9ad3b !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-source { color:#e4b94c !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-kicker { color:#bd7b80 !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-amount { color:#ffe08a !important; font-family:Georgia,"Times New Roman",serif !important; text-shadow:0 2px 0 #190307,0 0 13px rgba(218,169,48,.62),0 0 25px rgba(162,8,16,.30) !important; }#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-theme-particle { border-radius:50% !important; background:#ffd96d !important; box-shadow:0 0 7px #e15e25,0 0 16px rgba(180,10,18,.62) !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-cinematic { background:radial-gradient(ellipse at center,rgba(78,31,143,.08),rgba(8,5,21,.38) 55%,rgba(0,0,0,.89)),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 4px) !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-theme-fx-a { background:repeating-linear-gradient(90deg,rgba(109,62,220,.06) 0 8px,transparent 8px 16px),repeating-linear-gradient(0deg,rgba(33,222,196,.05) 0 8px,transparent 8px 16px) !important; image-rendering:pixelated !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-theme-fx-b { background:radial-gradient(circle at 18% 28%,#ffdc4a 0 3px,transparent 4px),radial-gradient(circle at 82% 34%,#4af7df 0 3px,transparent 4px),radial-gradient(circle at 32% 76%,#ff5ea9 0 3px,transparent 4px),radial-gradient(circle at 68% 72%,#8b6cff 0 3px,transparent 4px); background-size:120px 100px,170px 140px,210px 180px,250px 220px !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-theme-fx-c { background:linear-gradient(90deg,transparent 0 8%,rgba(255,255,255,.06) 8% 8.5%,transparent 8.5% 91.5%,rgba(255,255,255,.06) 91.5% 92%,transparent 92%),linear-gradient(180deg,transparent 0 12%,rgba(255,255,255,.05) 12% 12.5%,transparent 12.5% 87.5%,rgba(255,255,255,.05) 87.5% 88%,transparent 88%) !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-banner { width:min(700px,calc(100% - 24px)) !important; padding:24px 34px 22px !important; border:4px solid #ecebff !important; border-radius:0 !important; clip-path:polygon(0 10px,10px 10px,10px 0,calc(100% - 10px) 0,calc(100% - 10px) 10px,100% 10px,100% calc(100% - 10px),calc(100% - 10px) calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,10px calc(100% - 10px),0 calc(100% - 10px)) !important; background:linear-gradient(180deg,rgba(20,10,45,.98),rgba(7,5,21,.98)),repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 8px,transparent 8px 16px) !important; box-shadow:8px 8px 0 #5f3aca,-8px -8px 0 #22d8c3,0 24px 50px rgba(0,0,0,.64) !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-title { color:#fff36a !important; font-family:"Courier New",Consolas,monospace !important; font-size:clamp(29px,4.5vw,52px) !important; letter-spacing:1px !important; transform:none !important; text-shadow:4px 0 0 #ff5aaa,0 4px 0 #25dfcb,4px 4px 0 #38206f !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-divider { height:4px !important; background:repeating-linear-gradient(90deg,#ff5aaa 0 12px,#fff36a 12px 24px,#25dfcb 24px 36px,#8b6cff 36px 48px) !important; box-shadow:none !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-tier { border-radius:0 !important; border:2px solid #25dfcb !important; color:#fff36a !important; background:#12092c !important; font-family:monospace !important; box-shadow:3px 3px 0 #5f3aca !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-mission,
        #${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-source,
        #${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-kicker,
        #${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-amount { font-family:"Courier New",Consolas,monospace !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-source { color:#25dfcb !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-kicker { color:#ff79b8 !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-amount { color:#fff !important; text-shadow:3px 0 0 #ff5aaa,0 3px 0 #25dfcb,3px 3px 0 #4d2da5 !important; }#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-theme-particle { background:#fff36a !important; box-shadow:4px 4px 0 #ff5aaa !important; image-rendering:pixelated !important; }#${SCRIPT.payoutFlashId}[data-template]:not([data-template="wasteland"]) .mcms-payout-banner {
            isolation:isolate !important;
            overflow:hidden !important;
        }#${SCRIPT.payoutFlashId}[data-template]:not([data-template="wasteland"]) .mcms-payout-banner > * {
            position:relative !important;
            z-index:3 !important;
        }#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-cinematic {
            background:radial-gradient(circle at 50% 48%,transparent 0 16%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.92) 100%),linear-gradient(135deg,rgba(12,28,21,.30),transparent 42%,rgba(70,53,9,.18)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-theme-fx-a {
            background:linear-gradient(26deg,transparent 0 46%,rgba(255,210,72,.10) 46% 46.4%,transparent 46.4%),linear-gradient(154deg,transparent 0 54%,rgba(255,255,255,.055) 54% 54.35%,transparent 54.35%),repeating-linear-gradient(90deg,transparent 0 119px,rgba(255,255,255,.028) 120px,transparent 121px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-theme-fx-b {
            background:radial-gradient(circle at 12% 16%,rgba(229,190,64,.24),transparent 20%),radial-gradient(circle at 88% 82%,rgba(22,111,72,.22),transparent 26%),linear-gradient(90deg,transparent 8%,rgba(255,255,255,.035) 8% 8.2%,transparent 8.2% 92%,rgba(255,255,255,.035) 92% 92.2%,transparent 92.2%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-theme-fx-c {
            background:repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 4px),linear-gradient(90deg,rgba(0,0,0,.30),transparent 20%,transparent 80%,rgba(0,0,0,.30)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-banner {
            width:min(770px,calc(100% - 26px)) !important;padding:27px 42px 24px !important;border-radius:2px !important;
            border:1px solid rgba(245,211,102,.62) !important;border-left:8px solid #d3a928 !important;border-right:3px solid #2d6c4e !important;
            clip-path:polygon(0 0,96% 0,100% 16px,100% 100%,4% 100%,0 calc(100% - 16px)) !important;
            background:linear-gradient(112deg,rgba(5,8,7,.985),rgba(17,23,19,.97) 48%,rgba(6,8,7,.985)),repeating-linear-gradient(135deg,rgba(255,255,255,.025) 0 1px,transparent 1px 9px) !important;
            box-shadow:0 28px 70px rgba(0,0,0,.78),0 0 36px rgba(217,177,49,.16),inset 0 1px rgba(255,255,255,.06),inset 0 -22px 45px rgba(11,64,43,.12) !important;
        }#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-banner::before {content:"LOS SANTOS // SCORE SETTLED" !important;position:absolute !important;top:11px !important;right:18px !important;color:rgba(234,204,100,.58) !important;font:900 7px/1.1 monospace !important;letter-spacing:1.8px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-banner::after {content:"" !important;position:absolute !important;inset:0 !important;background:linear-gradient(122deg,transparent 0 68%,rgba(230,193,72,.075) 68% 69%,transparent 69% 73%,rgba(52,130,91,.07) 73% 74%,transparent 74%) !important;z-index:1 !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-title {color:#f4efe1 !important;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif !important;font-size:clamp(36px,5.6vw,68px) !important;letter-spacing:1.5px !important;transform:skewX(-5deg) scaleX(.93) !important;text-shadow:3px 3px 0 #111,6px 6px 0 rgba(185,143,24,.48),0 0 20px rgba(255,219,90,.18) !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-divider {height:3px !important;background:linear-gradient(90deg,transparent,#d9ac2f 10%,#f7e2a0 48%,#2b8d66 88%,transparent) !important;transform:skewX(-15deg) !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-tier {border-radius:1px !important;border-color:#d3a928 !important;color:#f3d873 !important;background:rgba(8,12,10,.78) !important;box-shadow:inset 4px 0 0 #2d7957 !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-source {color:#77d7a8 !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-kicker {color:#e1ba45 !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-amount {color:#fff7d8 !important;text-shadow:2px 2px 0 #0a0a0a,4px 4px 0 rgba(181,139,26,.58),0 0 18px rgba(239,208,83,.24) !important;}#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-theme-fx-a {background:radial-gradient(circle at 50% 13%,rgba(255,188,75,.22),transparent 20%),linear-gradient(180deg,rgba(255,62,168,.10),transparent 45%),repeating-linear-gradient(90deg,transparent 0 109px,rgba(48,245,238,.038) 110px,transparent 111px) !important;}#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-theme-fx-b {background:linear-gradient(116deg,transparent 0 20%,rgba(255,83,183,.08) 20% 21%,transparent 21% 79%,rgba(34,239,233,.08) 79% 80%,transparent 80%),radial-gradient(ellipse at 50% 120%,rgba(48,233,221,.15),transparent 48%) !important;}#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner {box-shadow:0 28px 74px rgba(0,0,0,.72),-16px 0 42px rgba(255,47,161,.22),16px 0 42px rgba(0,229,222,.20),inset 0 1px rgba(255,255,255,.12) !important;}#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-banner::before {content:"VICE CITY // CASHOUT" !important;position:absolute !important;top:10px !important;left:18px !important;color:rgba(71,242,231,.68) !important;font:900 7px/1 monospace !important;letter-spacing:1.7px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-amount {filter:drop-shadow(0 0 8px rgba(41,245,234,.35)) !important;}#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-theme-fx-a {background:linear-gradient(90deg,rgba(0,0,0,.36),transparent 18%,transparent 82%,rgba(0,0,0,.36)),repeating-linear-gradient(0deg,transparent 0 38px,rgba(244,214,123,.035) 39px,transparent 40px) !important;}#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-theme-fx-b {background:radial-gradient(circle at 10% 78%,rgba(248,145,37,.16),transparent 25%),radial-gradient(circle at 88% 22%,rgba(168,195,146,.12),transparent 23%),linear-gradient(135deg,transparent 49.6%,rgba(255,210,109,.10) 49.8% 50.2%,transparent 50.4%) !important;}#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner {border-top-color:rgba(247,206,112,.76) !important;border-bottom-color:rgba(121,145,103,.72) !important;box-shadow:0 28px 70px rgba(0,0,0,.78),0 0 38px rgba(230,151,54,.16),inset 0 0 40px rgba(112,94,48,.08) !important;}#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner::before {content:"FIELD OPS // PAYMENT EXTRACTED" !important;position:absolute !important;top:10px !important;right:18px !important;color:rgba(242,210,132,.60) !important;font:900 7px/1 monospace !important;letter-spacing:1.5px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="badCompany"] .mcms-payout-banner::after {content:"" !important;position:absolute !important;inset:0 !important;background:linear-gradient(90deg,transparent 0 7%,rgba(255,211,113,.06) 7% 7.3%,transparent 7.3% 92.7%,rgba(255,211,113,.06) 92.7% 93%,transparent 93%),repeating-linear-gradient(135deg,rgba(255,199,84,.035) 0 4px,transparent 4px 12px) !important;z-index:1 !important;}#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-theme-fx-c {background:linear-gradient(90deg,rgba(255,255,255,.035),transparent 15%,transparent 85%,rgba(255,255,255,.035)),repeating-linear-gradient(45deg,transparent 0 72px,rgba(212,175,55,.035) 73px,transparent 74px) !important;}#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner {box-shadow:0 30px 78px rgba(0,0,0,.80),-14px 0 36px rgba(147,0,18,.20),14px 0 34px rgba(211,175,55,.14),inset 0 0 34px rgba(255,255,255,.035) !important;}#${SCRIPT.payoutFlashId}[data-template="scarface"] .mcms-payout-banner::before {content:"MIAMI // EMPIRE ACCOUNT" !important;position:absolute !important;top:10px !important;left:18px !important;color:rgba(215,178,62,.68) !important;font:900 7px/1 serif !important;letter-spacing:2px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-cinematic {background:radial-gradient(circle at 50% 50%,transparent 0 12%,rgba(0,0,0,.26) 58%,rgba(0,0,0,.88) 100%),linear-gradient(120deg,rgba(242,223,0,.07),transparent 36%,rgba(0,229,255,.075)) !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-fx-a {background:repeating-linear-gradient(0deg,rgba(0,229,255,.035) 0 1px,transparent 1px 5px),linear-gradient(90deg,transparent 0 9%,rgba(242,223,0,.10) 9% 9.5%,transparent 9.5% 90.5%,rgba(0,229,255,.10) 90.5% 91%,transparent 91%) !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-fx-b {background:linear-gradient(135deg,transparent 0 46%,rgba(242,223,0,.08) 46% 46.4%,transparent 46.4% 52%,rgba(0,229,255,.08) 52% 52.4%,transparent 52.4%),repeating-linear-gradient(90deg,transparent 0 137px,rgba(255,255,255,.028) 138px,transparent 139px) !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-theme-fx-c {background:radial-gradient(circle at 18% 25%,rgba(242,223,0,.12),transparent 20%),radial-gradient(circle at 82% 78%,rgba(0,229,255,.13),transparent 23%),linear-gradient(90deg,rgba(0,0,0,.25),transparent 18%,transparent 82%,rgba(0,0,0,.25)) !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner {width:min(800px,calc(100% - 24px)) !important;padding:28px 42px 24px !important;border:1px solid rgba(242,223,0,.68) !important;border-left:9px solid #f2df00 !important;border-right:4px solid #00e5ff !important;clip-path:polygon(0 0,94% 0,100% 18px,100% 100%,6% 100%,0 calc(100% - 18px)) !important;background:linear-gradient(108deg,rgba(4,5,7,.985),rgba(18,20,23,.97) 52%,rgba(4,6,8,.985)),repeating-linear-gradient(0deg,rgba(255,255,255,.02) 0 1px,transparent 1px 5px) !important;box-shadow:0 30px 74px rgba(0,0,0,.78),-16px 0 38px rgba(242,223,0,.14),16px 0 38px rgba(0,229,255,.15),inset 0 0 34px rgba(0,229,255,.04) !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner::before {content:"ARASAKA FINANCIAL NODE // VERIFIED" !important;position:absolute !important;top:10px !important;right:18px !important;height:auto !important;background:none !important;color:rgba(0,229,255,.68) !important;font:900 7px/1 monospace !important;letter-spacing:1.6px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner::after {content:"" !important;position:absolute !important;inset:0 !important;background:linear-gradient(90deg,transparent 0 31%,rgba(242,223,0,.055) 31% 31.4%,transparent 31.4% 67%,rgba(0,229,255,.055) 67% 67.4%,transparent 67.4%) !important;z-index:1 !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-title {font-size:clamp(36px,5.7vw,70px) !important;letter-spacing:1.8px !important;text-shadow:3px 3px 0 #020202,6px 5px 0 rgba(0,229,255,.30),-2px -1px 0 rgba(255,36,116,.32),0 0 22px rgba(242,223,0,.20) !important;}#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-tier {box-shadow:inset 5px 0 0 #00e5ff,3px 3px 0 rgba(255,38,118,.28) !important;}#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-theme-fx-a {background:radial-gradient(ellipse at 14% 112%,rgba(255,222,92,.88) 0 4%,rgba(255,74,0,.50) 13%,transparent 35%),radial-gradient(ellipse at 50% 118%,rgba(255,237,118,.78) 0 5%,rgba(255,48,0,.48) 16%,transparent 41%),radial-gradient(ellipse at 87% 112%,rgba(255,166,36,.84) 0 4%,rgba(150,0,0,.43) 18%,transparent 38%),linear-gradient(180deg,transparent 46%,rgba(96,0,0,.32)) !important;mix-blend-mode:screen !important;}#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-theme-fx-b {background:repeating-conic-gradient(from 0deg at 50% 86%,transparent 0 8deg,rgba(255,96,0,.075) 8deg 9deg,transparent 9deg 18deg),radial-gradient(ellipse at 50% 91%,transparent 0 16%,rgba(255,48,0,.17) 38%,transparent 66%) !important;}#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-banner {border-top:3px solid #ffad26 !important;border-bottom:3px solid #760000 !important;box-shadow:0 30px 76px rgba(0,0,0,.80),0 0 44px rgba(255,48,0,.23),inset 0 -24px 48px rgba(122,4,0,.20),inset 0 1px rgba(255,232,173,.10) !important;}#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-banner::before {content:"INFERNAL TREASURY // SEAL BROKEN" !important;position:absolute !important;top:10px !important;right:18px !important;color:rgba(255,176,62,.67) !important;font:900 7px/1 serif !important;letter-spacing:1.7px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-banner::after {content:"" !important;position:absolute !important;inset:0 !important;background:radial-gradient(circle at 50% 125%,rgba(255,82,0,.16),transparent 46%),linear-gradient(118deg,transparent 0 48%,rgba(255,134,24,.055) 48% 49%,transparent 49%) !important;z-index:1 !important;}#${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-title {text-shadow:2px 2px 0 #170100,5px 5px 0 #7d0b00,0 0 20px rgba(255,91,13,.82),0 0 48px rgba(255,30,0,.30) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-cinematic {background:radial-gradient(circle at 50% 45%,transparent 0 12%,rgba(2,7,23,.30) 58%,rgba(0,2,10,.94) 100%),linear-gradient(135deg,rgba(42,98,255,.08),transparent 42%,rgba(146,74,255,.08)) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-fx-a {background:radial-gradient(circle at 50% 50%,transparent 0 18%,rgba(82,149,255,.11) 18.5% 19%,transparent 19.5% 31%,rgba(153,99,255,.075) 31.5% 32%,transparent 32.5%),repeating-conic-gradient(from 0deg at 50% 50%,transparent 0 18deg,rgba(88,157,255,.045) 18deg 18.5deg,transparent 18.5deg 36deg) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-fx-b {background:radial-gradient(circle at 15% 22%,#fff 0 1px,transparent 2px),radial-gradient(circle at 78% 17%,#8fc3ff 0 1px,transparent 2px),radial-gradient(circle at 85% 74%,#c69cff 0 1px,transparent 2px),radial-gradient(circle at 28% 80%,#fff 0 1px,transparent 2px);background-size:170px 130px,220px 180px,280px 230px,320px 260px !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-theme-fx-c {background:linear-gradient(90deg,transparent 0 8%,rgba(102,169,255,.06) 8% 8.2%,transparent 8.2% 91.8%,rgba(102,169,255,.06) 91.8% 92%,transparent 92%),linear-gradient(180deg,transparent 0 13%,rgba(185,135,255,.05) 13% 13.2%,transparent 13.2% 86.8%,rgba(185,135,255,.05) 86.8% 87%,transparent 87%) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-banner {width:min(790px,calc(100% - 24px)) !important;padding:28px 42px 24px !important;border:1px solid rgba(113,178,255,.60) !important;border-left:6px solid #5ca8ff !important;border-right:6px solid #9c6cff !important;clip-path:polygon(0 14px,14px 0,calc(100% - 14px) 0,100% 14px,100% calc(100% - 14px),calc(100% - 14px) 100%,14px 100%,0 calc(100% - 14px)) !important;background:linear-gradient(110deg,rgba(3,8,22,.985),rgba(12,22,45,.97) 50%,rgba(4,7,20,.985)),repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 5px) !important;box-shadow:0 30px 76px rgba(0,0,0,.80),-14px 0 36px rgba(72,149,255,.18),14px 0 36px rgba(151,92,255,.17),inset 0 0 38px rgba(88,155,255,.05) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-banner::before {content:"FLEET COMMAND // TREASURY UPLINK" !important;position:absolute !important;top:10px !important;right:18px !important;color:rgba(137,194,255,.70) !important;font:900 7px/1 monospace !important;letter-spacing:1.6px !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-title {color:#ecf5ff !important;font-family:Eurostile,"Arial Narrow",Arial,sans-serif !important;font-size:clamp(34px,5.2vw,64px) !important;letter-spacing:2.3px !important;transform:scaleX(.95) !important;text-shadow:0 0 4px #fff,0 0 18px rgba(90,166,255,.66),4px 4px 0 rgba(101,72,189,.34) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-divider {height:2px !important;background:linear-gradient(90deg,transparent,#5ca8ff 9%,#eef7ff 50%,#9e6fff 91%,transparent) !important;box-shadow:0 0 12px rgba(96,167,255,.42) !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-tier {border-radius:2px !important;border-color:#66b2ff !important;color:#b9dcff !important;background:rgba(4,12,30,.74) !important;box-shadow:inset 4px 0 0 #9e6fff !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-source {color:#aa8fff !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-kicker {color:#79c8ff !important;}#${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-amount {color:#fff !important;text-shadow:0 0 9px rgba(111,188,255,.65),3px 3px 0 rgba(79,55,151,.45) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-cinematic {background:radial-gradient(circle at 50% 46%,transparent 0 13%,rgba(13,7,16,.32) 56%,rgba(2,1,4,.94) 100%),linear-gradient(135deg,rgba(99,57,22,.08),transparent 40%,rgba(53,19,75,.09)) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-theme-fx-a {background:radial-gradient(circle at 15% 18%,rgba(214,172,74,.12),transparent 18%),radial-gradient(circle at 83% 76%,rgba(116,52,137,.12),transparent 22%),repeating-radial-gradient(circle at 50% 50%,transparent 0 54px,rgba(220,177,77,.028) 55px,transparent 56px) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-theme-fx-b {background:linear-gradient(45deg,transparent 0 49.6%,rgba(219,176,72,.055) 49.8% 50.2%,transparent 50.4%),linear-gradient(135deg,transparent 0 49.6%,rgba(117,66,133,.055) 49.8% 50.2%,transparent 50.4%) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner {width:min(750px,calc(100% - 28px)) !important;padding:31px 46px 27px !important;border:2px solid #9f7a2d !important;border-top:5px solid #d6ad4d !important;border-bottom:5px solid #4b203f !important;background:radial-gradient(circle at 50% 118%,rgba(82,29,71,.21),transparent 44%),linear-gradient(110deg,rgba(9,6,8,.985),rgba(27,16,26,.97) 50%,rgba(8,6,8,.985)),repeating-linear-gradient(45deg,rgba(255,255,255,.018) 0 1px,transparent 1px 9px) !important;box-shadow:0 32px 80px rgba(0,0,0,.82),0 0 36px rgba(213,169,67,.16),inset 0 0 48px rgba(92,44,91,.12) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner::before {content:"✦" !important;left:17px !important;font-size:22px !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner::after {content:"✦" !important;right:17px !important;font-size:22px !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-title {color:#f1e2b7 !important;font-family:Georgia,"Times New Roman",serif !important;font-size:clamp(33px,5vw,61px) !important;font-weight:900 !important;letter-spacing:.8px !important;text-shadow:2px 2px 0 #140c12,0 0 15px rgba(215,174,75,.36),4px 4px 0 rgba(72,32,68,.58) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-divider {height:3px !important;background:linear-gradient(90deg,transparent,#8a6524 10%,#e3c56f 46%,#8e4f7b 88%,transparent) !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-tier {border:1px solid #c99f42 !important;color:#e6c96e !important;background:rgba(20,10,18,.72) !important;font-family:Georgia,serif !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-source {color:#c48daf !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-kicker {color:#d9b75d !important;}#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-amount {color:#fff4cf !important;font-family:Georgia,serif !important;text-shadow:0 0 12px rgba(220,177,72,.42),3px 3px 0 #291426 !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-cinematic {background:radial-gradient(circle at 50% 48%,transparent 0 13%,rgba(3,12,10,.31) 58%,rgba(0,3,3,.94) 100%),linear-gradient(120deg,rgba(28,199,107,.07),transparent 40%,rgba(207,28,42,.075)) !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-a {background:repeating-linear-gradient(0deg,rgba(91,235,158,.025) 0 1px,transparent 1px 5px),linear-gradient(90deg,transparent 0 12%,rgba(85,230,150,.07) 12% 12.3%,transparent 12.3% 87.7%,rgba(205,36,48,.07) 87.7% 88%,transparent 88%) !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-b {background:repeating-conic-gradient(from 0deg at 50% 50%,transparent 0 29deg,rgba(85,229,151,.035) 29deg 30deg,transparent 30deg 59deg,rgba(206,32,45,.03) 59deg 60deg),radial-gradient(circle at 50% 50%,transparent 0 18%,rgba(72,224,146,.065) 18.5% 19%,transparent 19.5% 31%,rgba(209,33,45,.05) 31.5% 32%,transparent 32.5%) !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-c {background:linear-gradient(135deg,transparent 0 48%,rgba(208,35,47,.055) 48% 48.5%,transparent 48.5% 51.5%,rgba(74,225,148,.055) 51.5% 52%,transparent 52%) !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner {border-top:3px solid #dfe9e9 !important;border-bottom:3px solid #243f37 !important;box-shadow:0 30px 76px rgba(0,0,0,.80),-15px 0 38px rgba(200,23,36,.18),15px 0 38px rgba(67,216,135,.14),inset 0 0 40px rgba(80,220,148,.035) !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::before {content:"BSL-4 CLEARANCE // COMPENSATION AUTHORIZED" !important;color:rgba(88,231,152,.66) !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::after {content:"" !important;position:absolute !important;inset:0 !important;background:repeating-linear-gradient(135deg,transparent 0 18px,rgba(201,24,36,.045) 18px 22px,transparent 22px 40px),linear-gradient(90deg,transparent 0 73%,rgba(79,225,149,.04) 73% 74%,transparent 74%) !important;z-index:1 !important;}#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title {text-shadow:2px 2px 0 #080a0a,5px 5px 0 rgba(190,26,38,.34),0 0 18px rgba(74,222,146,.28) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-cinematic {background:radial-gradient(circle at 50% 44%,transparent 0 13%,rgba(16,3,8,.34) 58%,rgba(1,1,3,.95) 100%),linear-gradient(135deg,rgba(157,20,31,.07),transparent 42%,rgba(194,166,93,.06)) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-theme-fx-a {background:radial-gradient(circle at 18% 20%,rgba(223,224,239,.10),transparent 18%),radial-gradient(circle at 82% 75%,rgba(156,14,29,.13),transparent 23%),repeating-radial-gradient(circle at 50% 50%,transparent 0 62px,rgba(214,172,69,.025) 63px,transparent 64px) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-theme-fx-b {background:linear-gradient(45deg,transparent 0 49.7%,rgba(219,176,73,.045) 49.8% 50.2%,transparent 50.3%),linear-gradient(135deg,transparent 0 49.7%,rgba(173,25,39,.05) 49.8% 50.2%,transparent 50.3%) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner {padding:30px 44px 26px !important;border:1px solid rgba(222,184,85,.68) !important;border-top:5px solid #a51320 !important;border-bottom:5px solid #d9ad3b !important;background:radial-gradient(circle at 50% 120%,rgba(130,9,16,.26),transparent 44%),linear-gradient(106deg,rgba(4,4,6,.99),rgba(29,7,13,.97) 49%,rgba(4,4,6,.99)),repeating-linear-gradient(35deg,rgba(255,255,255,.018) 0 1px,transparent 1px 8px) !important;box-shadow:0 32px 80px rgba(0,0,0,.84),0 0 40px rgba(173,18,29,.20),inset 0 0 40px rgba(213,168,51,.075) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner::before {content:"✦" !important;left:18px !important;transform:translateY(-50%) !important;font-size:19px !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner::after {content:"✦" !important;right:18px !important;transform:translateY(-50%) !important;font-size:19px !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-title {color:#f2e7d0 !important;font-family:Georgia,"Times New Roman",serif !important;font-size:clamp(34px,5.2vw,63px) !important;font-weight:900 !important;text-shadow:2px 2px 0 #170309,0 0 16px rgba(213,171,65,.36),4px 4px 0 rgba(108,9,20,.56) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-divider {height:3px !important;background:linear-gradient(90deg,transparent,#9c1420 10%,#e0bd63 50%,#9c1420 90%,transparent) !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-tier {border:1px solid #c99d39 !important;color:#e2c366 !important;background:rgba(17,4,9,.76) !important;font-family:Georgia,serif !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-source {color:#d7d8e6 !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-kicker {color:#d1a43e !important;}#${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-amount {color:#fff0c8 !important;font-family:Georgia,serif !important;text-shadow:0 0 12px rgba(218,174,67,.42),3px 3px 0 #4e0812 !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-cinematic {background:radial-gradient(circle at 50% 48%,transparent 0 13%,rgba(15,5,36,.30) 58%,rgba(3,2,10,.94) 100%),linear-gradient(135deg,rgba(255,84,166,.08),transparent 42%,rgba(38,224,204,.08)) !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-theme-fx-a {background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,transparent 0 31px,rgba(139,108,255,.035) 32px,transparent 33px) !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-theme-fx-b {background:radial-gradient(circle at 10% 18%,#fff36a 0 2px,transparent 3px),radial-gradient(circle at 90% 22%,#25dfcb 0 2px,transparent 3px),radial-gradient(circle at 20% 82%,#ff5aaa 0 2px,transparent 3px),radial-gradient(circle at 80% 78%,#8b6cff 0 2px,transparent 3px);background-size:110px 90px,150px 120px,190px 150px,230px 190px !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-banner {padding:28px 38px 24px !important;border:4px solid #f4f1ff !important;box-shadow:9px 9px 0 #5f3aca,-9px -9px 0 #22d8c3,0 30px 70px rgba(0,0,0,.76),inset 0 0 0 4px #160a38 !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-banner::before {content:"PLAYER 1 // CREDIT BANK" !important;position:absolute !important;top:10px !important;left:18px !important;color:#25dfcb !important;font:900 8px/1 "Courier New",monospace !important;letter-spacing:1.2px !important;text-shadow:2px 2px 0 #3c287d !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-banner::after {content:"HI-SCORE" !important;position:absolute !important;top:10px !important;right:18px !important;color:#fff36a !important;font:900 8px/1 "Courier New",monospace !important;letter-spacing:1.2px !important;text-shadow:2px 2px 0 #ff5aaa !important;z-index:2 !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-title {font-size:clamp(31px,4.8vw,56px) !important;text-shadow:4px 0 0 #ff5aaa,0 4px 0 #25dfcb,4px 4px 0 #38206f,0 0 12px rgba(255,243,106,.18) !important;}#${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-amount {text-shadow:3px 0 0 #ff5aaa,0 3px 0 #25dfcb,3px 3px 0 #4d2da5,0 0 10px rgba(255,255,255,.22) !important;}#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-cinematic {
            background:
                radial-gradient(circle at 50% 48%, transparent 0 14%, rgba(22,18,12,.35) 56%, rgba(3,4,3,.96) 100%),
                linear-gradient(135deg, rgba(219,119,36,.11), transparent 42%, rgba(126,168,71,.07)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-theme-fx-a {
            background:
                repeating-linear-gradient(135deg, rgba(237,143,48,.16) 0 13px, rgba(25,26,23,.06) 13px 26px),
                repeating-linear-gradient(90deg, transparent 0 98px, rgba(238,151,55,.065) 99px, transparent 100px) !important;
            mask-image: linear-gradient(180deg, transparent 0 6%, #000 15% 85%, transparent 94%) !important;
            -webkit-mask-image: linear-gradient(180deg, transparent 0 6%, #000 15% 85%, transparent 94%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-theme-fx-b {
            background:
                repeating-linear-gradient(0deg, transparent 0 44px, rgba(191,151,93,.055) 44px 45px, transparent 45px 88px),
                repeating-linear-gradient(90deg, transparent 0 70px, rgba(191,151,93,.05) 70px 71px, transparent 71px 140px),
                radial-gradient(circle at 16% 72%, rgba(225,121,31,.16), transparent 24%),
                radial-gradient(circle at 84% 26%, rgba(138,183,72,.11), transparent 22%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-theme-fx-c {
            background:
                repeating-conic-gradient(from 0deg at 50% 50%, rgba(223,130,39,.18) 0 5deg, transparent 5deg 20deg),
                radial-gradient(circle at 50% 50%, transparent 0 16%, rgba(213,132,50,.13) 16.5% 18%, transparent 18.5% 29%, rgba(213,132,50,.09) 29.5% 31%, transparent 31.5%) !important;
            mask-image: radial-gradient(circle at center, transparent 0 13%, #000 14% 34%, transparent 55%) !important;
            -webkit-mask-image: radial-gradient(circle at center, transparent 0 13%, #000 14% 34%, transparent 55%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-banner {
            width: min(790px, calc(100% - 26px)) !important;
            padding: 31px 42px 27px !important;
            border: 2px solid #a95e24 !important;
            border-top: 7px solid #e18a32 !important;
            border-bottom: 7px solid #282a27 !important;
            border-radius: 3px !important;
            clip-path: polygon(0 8px, 8px 0, calc(100% - 8px) 0, 100% 8px, 100% calc(100% - 8px), calc(100% - 8px) 100%, 8px 100%, 0 calc(100% - 8px)) !important;
            background:
                radial-gradient(circle at 12px 12px, #9a9b91 0 2px, #292b28 2.2px 4px, transparent 4.2px),
                radial-gradient(circle at calc(100% - 12px) 12px, #9a9b91 0 2px, #292b28 2.2px 4px, transparent 4.2px),
                radial-gradient(circle at 12px calc(100% - 12px), #9a9b91 0 2px, #292b28 2.2px 4px, transparent 4.2px),
                radial-gradient(circle at calc(100% - 12px) calc(100% - 12px), #9a9b91 0 2px, #292b28 2.2px 4px, transparent 4.2px),
                repeating-linear-gradient(135deg, rgba(244,157,48,.11) 0 2px, transparent 2px 11px),
                linear-gradient(155deg, rgba(66,68,63,.99), rgba(22,24,21,.99) 58%, rgba(39,40,36,.99)) !important;
            box-shadow:
                0 31px 82px rgba(0,0,0,.84),
                0 0 0 3px rgba(7,8,7,.80),
                0 0 42px rgba(224,126,35,.20),
                inset 0 1px rgba(255,255,255,.10),
                inset 0 -24px 44px rgba(0,0,0,.32) !important;
            overflow: hidden !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-banner::before {
            content: "AUTOMATED PRODUCTION NETWORK // OUTPUT VERIFIED" !important;
            position: absolute !important;
            top: 10px !important;
            left: 19px !important;
            right: 19px !important;
            padding: 0 0 7px !important;
            border-bottom: 1px solid rgba(226,151,73,.34) !important;
            color: #e9c892 !important;
            font: 900 7px/1 Consolas, "Courier New", monospace !important;
            letter-spacing: 1.35px !important;
            text-align: left !important;
            z-index: 2 !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-banner::after {
            content: "⚙  ASSEMBLY LINE 01  •  STATUS: OPTIMAL" !important;
            position: absolute !important;
            right: 17px !important;
            bottom: 9px !important;
            color: rgba(170,205,104,.76) !important;
            font: 900 6px/1 Consolas, monospace !important;
            letter-spacing: .9px !important;
            z-index: 2 !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-title {
            color: #f1dfb6 !important;
            font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif !important;
            font-size: clamp(34px, 5.15vw, 62px) !important;
            font-weight: 900 !important;
            letter-spacing: 1.4px !important;
            transform: scaleX(.94) !important;
            text-shadow: 3px 3px 0 #12130f, 6px 6px 0 rgba(180,91,25,.48), 0 0 18px rgba(239,154,62,.20) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-divider {
            height: 4px !important;
            background: repeating-linear-gradient(135deg, #e58b31 0 9px, #262823 9px 18px) !important;
            border: 1px solid rgba(242,184,104,.32) !important;
            box-shadow: 0 0 11px rgba(224,125,36,.26) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-tier {
            border: 1px solid #f0b360 !important;
            border-radius: 2px !important;
            background: #df852f !important;
            color: #17130e !important;
            font-family: Consolas, "Courier New", monospace !important;
            font-weight: 950 !important;
            letter-spacing: 1px !important;
            box-shadow: inset 0 1px rgba(255,255,255,.24), inset 4px 0 0 #242721, 0 2px 8px rgba(0,0,0,.34) !important;
            text-shadow: none !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-mission,
        #${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-source,
        #${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-kicker,
        #${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-amount {
            font-family: "Arial Narrow", "Segoe UI", sans-serif !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-mission { color: #d7c7a3 !important; }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-source { color: #a9d274 !important; letter-spacing: .7px !important; }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-kicker { color: #eda14f !important; letter-spacing: 1.2px !important; }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-amount {
            color: #ffc064 !important;
            text-shadow: 2px 2px 0 #17130e, 0 0 10px rgba(255,174,75,.72), 0 0 26px rgba(202,101,28,.28) !important;
        }#${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-theme-particle {
            border-radius: 1px !important;
            background: #ffb24d !important;
            box-shadow: 0 0 5px #ff7a22, 0 0 10px rgba(255,123,35,.62) !important;
        }
        @media (max-width:620px) {#${SCRIPT.payoutFlashId}[data-template]:not([data-template="wasteland"]) .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template]:not([data-template="wasteland"]) .mcms-payout-banner::after {font-size:6px !important;letter-spacing:.8px !important;}#${SCRIPT.payoutFlashId}[data-template="gta5"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="factorio"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-banner {padding-left:18px !important;padding-right:18px !important;}
        }#${SCRIPT.payoutFlashId} .mcms-payout-title.mcms-payout-title-long { font-size:clamp(28px,4.35vw,51px) !important; letter-spacing:.6px !important; transform:scaleX(.90) !important; }#${SCRIPT.payoutFlashId} .mcms-payout-title.mcms-payout-title-very-long { font-size:clamp(23px,3.55vw,42px) !important; line-height:.95 !important; white-space:normal !important; text-wrap:balance !important; transform:scaleX(.92) !important; }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-title.mcms-payout-title-long { font-size:clamp(34px,5.5vw,62px) !important; transform:rotate(-2deg) skewX(-5deg) scaleX(.92) !important; }#${SCRIPT.payoutFlashId}[data-template="viceCity"] .mcms-payout-title.mcms-payout-title-very-long { font-size:clamp(29px,4.6vw,52px) !important; line-height:.93 !important; transform:rotate(-1deg) skewX(-4deg) scaleX(.94) !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-title.mcms-payout-title-long,
        #${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-title.mcms-payout-title-long { transform:none !important; }#${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-title.mcms-payout-title-very-long,
        #${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-title.mcms-payout-title-very-long { transform:none !important; }
        @media (max-width:620px) {#${SCRIPT.payoutFlashId}[data-template="cyberpunk"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="hellfire"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="wasteland"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="galactic"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="darkFantasy"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="underworld"] .mcms-payout-banner,
        #${SCRIPT.payoutFlashId}[data-template="pixelArcade"] .mcms-payout-banner { width:calc(100% - 14px) !important; padding:21px 16px 19px !important; }
        }
        @keyframes mcmsPayoutRed {
            0%, 8%, 38%, 58%, 88%, 100% { opacity: 0; transform: scale(1); }
            14%, 28%, 64%, 80% { opacity: .82; transform: scale(1.025); }
        }
        @keyframes mcmsPayoutBlue {
            0%, 28%, 48%, 78%, 100% { opacity: 0; transform: scale(1); }
            34%, 44%, 54%, 72%, 84%, 94% { opacity: .86; transform: scale(1.025); }
        }
        @keyframes mcmsPayoutBanner {
            0% { opacity: 0; transform: translate(-50%, -44%) scale(1.08); filter: blur(8px); }
            5% { opacity: 1; transform: translate(-50%, -50%) scale(1); filter: blur(0); }
            94% { opacity: 1; transform: translate(-50%, -50%) scale(1); filter: blur(0); }
            100% { opacity: 0; transform: translate(-50%, -56%) scale(.985); filter: blur(2px); }
        }
        @media (prefers-reduced-motion: reduce) {#${SCRIPT.payoutFlashId}.mcms-payout-active .mcms-payout-light {
                animation: none !important; opacity: .24 !important;
            }#${SCRIPT.payoutFlashId}.mcms-payout-active .mcms-payout-banner {
                animation: mcmsPayoutBannerReduced var(--mcms-payout-duration, 3000ms) ease-out both !important;
            }
            @keyframes mcmsPayoutBannerReduced {
                0%, 100% { opacity: 0; transform: translate(-50%, -50%); }
                3%, 97% { opacity: 1; transform: translate(-50%, -50%); }
            }
        }#${SCRIPT.toastId} { position: fixed !important; left: 12px !important; bottom: 14px !important; z-index: 982 !important; max-width: 280px !important; padding: 6px 9px !important; border-radius: 9px !important; border: 1px solid rgba(255,255,255,.14) !important; background: rgba(10,14,20,.92) !important; color: #fff !important; font: 900 10px/1.15 Arial, Helvetica, sans-serif !important; opacity: 0 !important; transform: translateY(4px) !important; pointer-events: none !important; transition: opacity 140ms ease, transform 140ms ease !important; box-shadow: 0 5px 14px rgba(0,0,0,.28) !important; }#${SCRIPT.toastId}.mcms-flash { opacity: 1 !important; transform: translateY(0) !important; }#${SCRIPT.panelId}.mcms-map-small { width: 292px !important; }#${SCRIPT.panelId}.mcms-map-small .mcms-grid-2 { gap: 6px !important; }#${SCRIPT.panelId}.mcms-map-small .mcms-theme-btn,
        #${SCRIPT.panelId}.mcms-map-small .mcms-toggle-btn,
        #${SCRIPT.panelId}.mcms-map-small .mcms-place-main { min-height: 40px !important; height: auto !important; padding: 5px !important; grid-template-columns: 18px minmax(0,1fr) !important; gap: 5px !important; }#${SCRIPT.panelId}.mcms-map-small .mcms-iconbox { width: 18px !important; height: 18px !important; min-width: 18px !important; font-size: 9px !important; }#${SCRIPT.panelId}.mcms-map-small .mcms-label { font-size: 10px !important; }#${SCRIPT.panelId}.mcms-map-small .mcms-footer { display: none !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId},
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} {
            -webkit-tap-highlight-color: transparent !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} button,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} button,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} input,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} select {
            touch-action: manipulation !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} {
            width: var(--mcms-tablet-dock-width, min(920px, calc(100% - 20px))) !important;
            max-width: var(--mcms-tablet-dock-width, min(920px, calc(100% - 20px))) !important;
            display: grid !important;
            grid-template-columns: 52px minmax(0,1fr) !important;
            grid-template-areas: "menu filters" ". pins" !important;
            align-items: start !important;
            column-gap: 7px !important;
            row-gap: 7px !important;
            font-size: 12px !important;
            pointer-events: none !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-tl { left: max(10px, env(safe-area-inset-left)) !important; top: max(10px, env(safe-area-inset-top)) !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-tr { right: max(10px, env(safe-area-inset-right)) !important; top: max(10px, env(safe-area-inset-top)) !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-bl { left: max(10px, env(safe-area-inset-left)) !important; bottom: max(10px, env(safe-area-inset-bottom)) !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-br { right: max(10px, env(safe-area-inset-right)) !important; bottom: max(10px, env(safe-area-inset-bottom)) !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-shell {
            grid-area: menu !important;
            width: 52px !important; height: 48px !important; border-radius: 13px !important;
            background: rgba(8,12,18,.96) !important; backdrop-filter: none !important;
            pointer-events: auto !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-menu-btn { font-size: 22px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-dock-toggle-btn { height: 16px !important; flex-basis: 16px !important; font-size: 12px !important; }html[data-mcms-command-bar-open="false"][data-mcms-tablet-active="true"] #${SCRIPT.controlId} {
            width: 52px !important; max-width: 52px !important; grid-template-columns: 52px !important; grid-template-areas: "menu" !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-floating-filter {
            grid-area: filters !important;
            display: grid !important;
            grid-template-columns: repeat(var(--mcms-tablet-filter-columns, 6), minmax(0,1fr)) !important;
            gap: 7px !important;
            width: 100% !important; max-width: none !important; margin-top: 0 !important;
            overflow: visible !important; padding: 0 !important;
            scrollbar-width: none !important; overscroll-behavior: auto !important;
            -webkit-overflow-scrolling: auto !important; touch-action: manipulation !important;
            pointer-events: none !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-btn {
            position: relative !important; isolation: isolate !important; box-sizing: border-box !important;
            flex: 0 1 auto !important; width: auto !important; min-width: 0 !important;
            height: var(--mcms-tablet-filter-height, 48px) !important;
            grid-template-columns: 21px minmax(0,1fr) !important; gap: 5px !important; padding: 0 6px !important;
            border-radius: 11px !important; border-width: 1px !important;
            background: linear-gradient(180deg,rgba(14,20,28,.97),rgba(7,11,17,.97)) !important;
            color: rgba(255,255,255,.78) !important; backdrop-filter: none !important;
            box-shadow: 0 4px 12px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.04) !important;
            scroll-snap-align: none !important; pointer-events: auto !important;
            transition: background 120ms ease,border-color 120ms ease,box-shadow 120ms ease,color 120ms ease,opacity 120ms ease,transform 120ms ease !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-btn:not(.mcms-on) {
            opacity: .76 !important; border-color: rgba(255,255,255,.20) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            opacity: 1 !important;
            background: linear-gradient(145deg,rgba(8,101,73,.98),rgba(10,72,94,.98) 58%,rgba(14,49,82,.98)) !important;
            border-color: #63f2b1 !important; color: #fff !important;
            box-shadow: 0 0 0 1px rgba(99,242,177,.22),0 0 16px rgba(34,211,153,.38),0 5px 14px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.18) !important;
            transform: translateY(-1px) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on::before {
            content: "" !important; position: absolute !important; z-index: 1 !important; pointer-events: none !important;
            left: 5px !important; right: 5px !important; bottom: 3px !important; height: 3px !important;
            border-radius: 999px !important; background: linear-gradient(90deg,transparent,#72ffc0 18%,#61dfff 82%,transparent) !important;
            box-shadow: 0 0 8px rgba(99,242,177,.85) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on::after {
            content: "" !important; position: absolute !important; z-index: 3 !important; pointer-events: none !important; top: 5px !important; right: 5px !important;
            width: 5px !important; height: 5px !important; border-radius: 50% !important;
            background: #76ffc1 !important; box-shadow: 0 0 0 2px rgba(5,35,29,.72),0 0 8px rgba(118,255,193,.95) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-key {
            position: relative !important; z-index: 2 !important;
            width: 21px !important; height: 21px !important; border-radius: 7px !important; font-size: 10px !important;
            background: rgba(255,255,255,.11) !important; border: 1px solid rgba(255,255,255,.10) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            background: rgba(23,198,126,.95) !important; border-color: rgba(194,255,226,.72) !important;
            box-shadow: 0 0 9px rgba(67,239,166,.55) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-label-desktop { display: none !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-float-label-tablet {
            position: relative !important; z-index: 2 !important;
            display: flex !important; align-items: center !important; justify-content: flex-start !important;
            min-width: 0 !important; min-height: 2.05em !important; max-height: 2.05em !important;
            overflow: hidden !important; text-overflow: clip !important; white-space: normal !important;
            overflow-wrap: normal !important; word-break: normal !important; hyphens: none !important;
            font-size: clamp(9px,1.1vw,10.25px) !important; line-height: 1.03 !important; letter-spacing: -.08px !important;
            font-weight: 900 !important; text-align: left !important; padding-right: 4px !important; text-shadow: 0 1px 2px rgba(0,0,0,.72) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-screen-pins {
            grid-area: pins !important;
            display: grid !important;
            grid-template-columns: repeat(var(--mcms-tablet-pin-columns, 4), minmax(0,1fr)) !important;
            gap: 7px !important;
            width: 100% !important; max-width: none !important; max-height: none !important; margin-top: 0 !important;
            overflow: visible !important; padding: 0 !important;
            overscroll-behavior: auto !important; -webkit-overflow-scrolling: auto !important; touch-action: manipulation !important;
            pointer-events: none !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-screen-pins:empty { display: none !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            flex: 0 1 auto !important; width: auto !important; min-width: 0 !important;
            height: var(--mcms-tablet-pin-height, 42px) !important; padding: 0 12px !important;
            border-radius: 10px !important; font-size: 10.5px !important; backdrop-filter: none !important;
            pointer-events: auto !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} {
            padding: 12px !important; border-radius: 18px !important;
            background: rgba(8,12,18,.985) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
            box-shadow: 0 12px 30px rgba(0,0,0,.52) !important;
            overflow-y: auto !important; overflow-x: hidden !important; overscroll-behavior: contain !important;
            -webkit-overflow-scrolling: touch !important; touch-action: pan-y !important;
            font-size: 13px !important; line-height: 1.25 !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-header {
            position: sticky !important; top: -12px !important; z-index: 8 !important;
            grid-template-columns: minmax(0,1fr) 44px 44px !important; gap: 9px !important;
            min-height: 54px !important; margin: -12px -12px 10px !important; padding: 10px 12px 9px !important;
            background: rgba(8,12,18,.995) !important; border-bottom: 1px solid rgba(255,255,255,.16) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-drag-handle {
            cursor: default !important; touch-action: pan-y !important; padding: 2px 0 !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-title { font-size: 14px !important; letter-spacing: .45px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-subtitle { margin-top: 4px !important; font-size: 10.5px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-reset-panel { display: none !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-close,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-help-button {
            width: 44px !important; height: 44px !important; border-radius: 11px !important; font-size: 20px !important; line-height: 44px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-close { font-size:24px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-tabs {
            position: sticky !important; top: 42px !important; z-index: 7 !important;
            grid-template-columns: repeat(4, minmax(0,1fr)) !important; gap: 8px !important;
            margin: 0 -4px 12px !important; padding: 8px 4px !important; background: rgba(8,12,18,.985) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-tab-btn {
            height: 44px !important; border-radius: 11px !important; font-size: 11.5px !important; padding: 0 6px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-grid-2 { gap: 9px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-place-main {
            min-height: 58px !important; height: auto !important; padding: 9px !important;
            grid-template-columns: 30px minmax(0,1fr) !important; gap: 9px !important; border-radius: 12px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-iconbox {
            width: 30px !important; height: 30px !important; min-width: 30px !important; border-radius: 9px !important; font-size: 13px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-label { font-size: 12.5px !important; line-height: 1.15 !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-pill { margin-top: 5px !important; max-width: 120px !important; padding: 3px 7px !important; font-size: 9px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-section-label { margin: 14px 0 8px !important; font-size: 10.5px !important; letter-spacing: .8px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-row {
            grid-template-columns: minmax(0,1fr) minmax(170px, 42%) !important; gap: 10px !important; margin-bottom: 10px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-discord-wide { grid-template-columns: 120px minmax(0,1fr) !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-row-label { font-size: 12px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-select {
            height: 44px !important; border-radius: 10px !important; padding: 0 11px !important; font-size: 13px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-position-grid,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-nudge-grid { gap: 8px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-pin-btn {
            min-height: 44px !important; height: 44px !important; border-radius: 10px !important;
            font-size: 11.5px !important; line-height: 44px !important; padding: 0 8px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-small-btn {
            min-height: 44px !important; height: auto !important; line-height: 1.15 !important; padding: 7px 8px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-quick-row { grid-template-columns: minmax(0,1fr) 64px !important; gap: 8px !important; margin-bottom: 8px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-bookmark-row {
            grid-template-columns: minmax(0,1fr) 54px 54px 54px 46px !important; gap: 7px !important; margin-bottom: 8px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-bookmark-name { font-size: 12px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-status {
            margin-top: 10px !important; padding: 10px 11px !important; border-radius: 11px !important; font-size: 11px !important; line-height: 1.4 !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-profile-row {
            grid-template-columns: minmax(0,1fr) 54px 54px 44px !important; gap: 7px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-profile-main { min-height: 52px !important; padding: 9px 10px !important; border-radius: 10px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-profile-main strong { font-size: 11.5px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-profile-main span { font-size: 9.5px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-config-actions { gap: 8px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-footer { margin-top: 14px !important; padding-top: 11px !important; font-size: 9.5px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-desktop-position-controls { display: none !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId}.mcms-map-small { width: auto !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId}.mcms-map-small .mcms-footer { display: block !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.toastId} {
            max-width: min(420px, calc(100vw - 24px)) !important; padding: 10px 13px !important; font-size: 12px !important;
        }
        @media (max-width: 560px) {html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-grid-2 { grid-template-columns: 1fr !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-row,
        html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-discord-wide { grid-template-columns: 1fr !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-row-label { white-space: normal !important; }
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId},
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} {
            -webkit-tap-highlight-color: transparent !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} button,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} button,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} input,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} select {
            touch-action: manipulation !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} {
            width: var(--mcms-mobile-dock-width, calc(100% - 10px)) !important;
            max-width: var(--mcms-mobile-dock-width, calc(100% - 10px)) !important;
            display: grid !important;
            grid-template-columns: repeat(var(--mcms-mobile-columns, 5), minmax(0,1fr)) !important;
            grid-auto-flow: row !important;
            align-items: stretch !important;
            gap: 4px !important;
            margin: 0 !important;
            font-size: 10px !important;
            pointer-events: none !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-tl { left: max(5px, env(safe-area-inset-left)) !important; top: max(5px, env(safe-area-inset-top)) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-tr { right: max(5px, env(safe-area-inset-right)) !important; top: max(5px, env(safe-area-inset-top)) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-bl { left: max(5px, env(safe-area-inset-left)) !important; bottom: max(5px, env(safe-area-inset-bottom)) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-br { right: max(5px, env(safe-area-inset-right)) !important; bottom: max(5px, env(safe-area-inset-bottom)) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-shell {
            grid-column: auto !important; grid-row: auto !important; grid-area: auto !important;
            width: auto !important; min-width: 0 !important; height: var(--mcms-mobile-filter-height,44px) !important;
            border-radius: 10px !important; background: rgba(6,10,16,.97) !important;
            border-color: rgba(116,207,255,.62) !important; box-shadow: 0 3px 10px rgba(0,0,0,.42), inset 0 1px rgba(255,255,255,.08) !important;
            backdrop-filter: none !important; -webkit-backdrop-filter: none !important; pointer-events: auto !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-menu-btn { font-size: 19px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-dock-toggle-btn { height: 14px !important; flex-basis: 14px !important; font-size: 10px !important; }html[data-mcms-command-bar-open="false"][data-mcms-mobile-active="true"] #${SCRIPT.controlId} {
            width: 50px !important; max-width: 50px !important; grid-template-columns: 50px !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-floating-filter {
            display: contents !important; grid-area: auto !important; width: auto !important; max-width: none !important;
            overflow: visible !important; padding: 0 !important; margin: 0 !important; pointer-events: none !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-btn {
            position: relative !important; isolation: isolate !important; width: auto !important; min-width: 0 !important;
            height: var(--mcms-mobile-filter-height,44px) !important; display: grid !important;
            grid-template-columns: 17px minmax(0,1fr) !important; gap: 3px !important; padding: 0 4px !important;
            border-radius: 10px !important; border: 1px solid rgba(255,255,255,.18) !important;
            background: linear-gradient(180deg,rgba(13,19,27,.98),rgba(6,9,14,.98)) !important;
            color: rgba(255,255,255,.78) !important; box-shadow: 0 3px 10px rgba(0,0,0,.38),inset 0 1px rgba(255,255,255,.04) !important;
            backdrop-filter: none !important; -webkit-backdrop-filter: none !important; pointer-events: auto !important;
            transition: background 110ms ease,border-color 110ms ease,box-shadow 110ms ease,color 110ms ease,opacity 110ms ease,transform 110ms ease !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-btn:not(.mcms-on) { opacity: .72 !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            opacity: 1 !important; transform: translateY(-1px) !important;
            background: linear-gradient(145deg,rgba(7,112,76,.99),rgba(7,77,103,.99) 60%,rgba(12,43,77,.99)) !important;
            border-color: #69ffc0 !important; color: #fff !important;
            box-shadow: 0 0 0 1px rgba(105,255,192,.20),0 0 13px rgba(42,222,158,.45),0 4px 12px rgba(0,0,0,.44),inset 0 1px rgba(255,255,255,.18) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on::before {
            content: "" !important; position:absolute !important; z-index:1 !important; left:4px !important; right:4px !important; bottom:2px !important;
            height:3px !important; border-radius:999px !important; background:linear-gradient(90deg,transparent,#72ffc0 18%,#62dcff 82%,transparent) !important;
            box-shadow:0 0 7px rgba(99,242,177,.9) !important; pointer-events:none !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on::after {
            content:"" !important; position:absolute !important; z-index:3 !important; right:4px !important; top:4px !important;
            width:4px !important; height:4px !important; border-radius:50% !important; background:#7affc5 !important;
            box-shadow:0 0 0 2px rgba(5,35,29,.72),0 0 7px rgba(118,255,193,.98) !important; pointer-events:none !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-key {
            position:relative !important; z-index:2 !important; width:17px !important; height:17px !important; border-radius:6px !important;
            font-size:8px !important; background:rgba(255,255,255,.10) !important; border:1px solid rgba(255,255,255,.10) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            background:rgba(23,198,126,.96) !important; border-color:rgba(194,255,226,.75) !important; box-shadow:0 0 7px rgba(67,239,166,.58) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-label-desktop,
        html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-label-tablet { display:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-float-label-mobile {
            position:relative !important; z-index:2 !important; display:flex !important; align-items:center !important; justify-content:flex-start !important;
            min-width:0 !important; overflow:hidden !important; white-space:nowrap !important; text-overflow:ellipsis !important;
            font-size:clamp(7.5px,2.15vw,9px) !important; line-height:1 !important; font-weight:950 !important; letter-spacing:-.15px !important;
            text-align:left !important; text-shadow:0 1px 2px rgba(0,0,0,.78) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pins {
            grid-area:auto !important; grid-column:1 / -1 !important; display:grid !important;
            grid-template-columns:repeat(var(--mcms-mobile-pin-columns,4),minmax(0,1fr)) !important;
            grid-auto-flow:row !important; justify-self:stretch !important; align-self:stretch !important;
            justify-items:stretch !important; align-items:stretch !important;
            gap:4px !important; width:100% !important; min-width:0 !important; max-width:none !important; max-height:none !important;
            box-sizing:border-box !important; margin:0 !important; padding:0 !important;
            overflow:visible !important; pointer-events:none !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pins:empty { display:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            -webkit-appearance:none !important; appearance:none !important;
            display:flex !important; align-items:center !important; justify-content:center !important;
            justify-self:stretch !important; align-self:stretch !important; box-sizing:border-box !important;
            width:100% !important; max-width:none !important; min-width:0 !important;
            height:var(--mcms-mobile-pin-height,34px) !important; padding:0 7px !important;
            border-radius:9px !important; font-size:clamp(8.5px,2.25vw,10px) !important; line-height:1.05 !important;
            letter-spacing:-.08px !important; text-align:center !important; overflow:hidden !important; text-overflow:ellipsis !important;
            white-space:nowrap !important; backdrop-filter:none !important; -webkit-backdrop-filter:none !important; pointer-events:auto !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} {
            width:calc(100% - 8px) !important; max-width:calc(100% - 8px) !important;
            border-radius:16px 16px 11px 11px !important; border-color:rgba(112,204,255,.46) !important;
            padding:8px 8px calc(8px + env(safe-area-inset-bottom)) !important;
            overflow-x:hidden !important; overflow-y:auto !important; overscroll-behavior:contain !important;
            -webkit-overflow-scrolling:touch !important; touch-action:pan-y !important;
            background:linear-gradient(180deg,rgba(9,14,21,.99),rgba(4,7,11,.99)) !important;
            box-shadow:0 -12px 38px rgba(0,0,0,.58),inset 0 1px rgba(255,255,255,.06) !important;
            backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId}::-webkit-scrollbar,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs::-webkit-scrollbar { display:none !important; width:0 !important; height:0 !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId},
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs { scrollbar-width:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-header {
            position:sticky !important; top:-8px !important; z-index:8 !important; min-height:48px !important; margin:-8px -8px 7px !important;
            grid-template-columns:minmax(0,1fr) 44px 44px !important; gap:6px !important;
            padding:8px 8px 6px !important; border-radius:16px 16px 0 0 !important; background:rgba(7,11,17,.985) !important;
            border-bottom:1px solid rgba(255,255,255,.10) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-drag-handle { cursor:default !important; touch-action:pan-y !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-title { font-size:12px !important; letter-spacing:.35px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-subtitle { margin-top:3px !important; font-size:9px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-reset-panel { display:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-close,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-help-button { width:44px !important; height:44px !important; border-radius:12px !important; font-size:20px !important; line-height:42px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs {
            position:sticky !important; top:40px !important; z-index:7 !important; display:flex !important; gap:5px !important;
            margin:0 -2px 7px !important; padding:2px 2px 6px !important; overflow-x:auto !important; overflow-y:hidden !important;
            overscroll-behavior-x:contain !important; -webkit-overflow-scrolling:touch !important; background:rgba(6,10,15,.96) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tab-btn {
            flex:0 0 auto !important; min-width:74px !important; height:40px !important; padding:0 10px !important; border-radius:10px !important;
            font-size:10px !important; line-height:1 !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-grid-2 { gap:6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-place-main { min-height:48px !important; height:auto !important; padding:7px !important; border-radius:11px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-iconbox { width:22px !important; height:22px !important; min-width:22px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-label { font-size:11px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-pill { margin-top:4px !important; max-width:110px !important; font-size:8px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-section-label { margin:12px 0 7px !important; font-size:9.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-row { grid-template-columns:minmax(0,1fr) minmax(132px,44%) !important; gap:7px !important; margin-bottom:7px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-row-label { font-size:10.5px !important; white-space:normal !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-select {
            min-height:44px !important; height:44px !important; border-radius:10px !important; padding:0 9px !important;
            font-size:16px !important; line-height:1.2 !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} input[type="range"].mcms-input { min-height:44px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-pin-btn { min-height:44px !important; height:44px !important; line-height:42px !important; border-radius:10px !important; font-size:10px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-small-btn { min-height:44px !important; height:auto !important; line-height:1.15 !important; padding:7px !important; white-space:normal !important; overflow-wrap:anywhere !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-position-grid,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-nudge-grid { gap:6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-quick-row { grid-template-columns:minmax(0,1fr) 58px !important; gap:6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-bookmark-row { grid-template-columns:minmax(0,1fr) 44px 50px 44px 40px !important; gap:4px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-bookmark-name { font-size:10.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-status { font-size:9.5px !important; line-height:1.35 !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-discord-wide { grid-template-columns:1fr !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-discord-date-grid { grid-template-columns:1fr !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-finance-vault-summary { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-profile-row { grid-template-columns:minmax(0,1fr) 44px 44px 40px !important; gap:4px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-profile-main { min-height:44px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-desktop-position-controls { display:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-footer { display:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.toastId} {
            left:50% !important; right:auto !important; bottom:calc(12px + env(safe-area-inset-bottom)) !important;
            max-width:calc(100vw - 24px) !important; transform:translate(-50%,8px) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.toastId}.mcms-flash { transform:translate(-50%,0) !important; }html[data-mcms-mobile-active="true"] .mcms-alliance-credit-badge,
        html[data-mcms-mobile-active="true"] .mcms-mission-age-badge,
        html[data-mcms-mobile-active="true"] .mcms-unit-commitment-badge,
        html[data-mcms-mobile-active="true"] .mcms-transport-watcher-badge,
        html[data-mcms-mobile-active="true"] .mcms-resource-gap-badge {
            backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
        }
        @media (max-width: 430px) {html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-row { grid-template-columns:1fr !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-row-label { margin-bottom:-2px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-bookmark-row { grid-template-columns:minmax(0,1fr) repeat(4,40px) !important; }
        }
        @media (orientation: landscape) and (max-height: 500px) {html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} { border-radius:12px !important; padding-top:6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-header { min-height:42px !important; padding-top:5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-subtitle { display:none !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs { top:34px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tab-btn { height:36px !important; }
        }#${SCRIPT.controlId} {
            transition: width 180ms cubic-bezier(.2,.78,.22,1), max-width 180ms cubic-bezier(.2,.78,.22,1) !important;
        }html[data-mcms-command-bar-open="false"] #${SCRIPT.controlId} .mcms-floating-filter,
        html[data-mcms-command-bar-open="false"] #${SCRIPT.controlId} .mcms-screen-pins {
            display: none !important;
            pointer-events: none !important;
        }
        @media (prefers-reduced-motion: reduce) {#${SCRIPT.controlId} { transition: none !important; }
        }.mcms-mission-value-row {
            display: flex !important;
            align-items: center !important;
            justify-content: flex-end !important;
            min-width: 0 !important;
            box-sizing: border-box !important;
            position: relative !important;
            z-index: 2 !important;
            pointer-events: none !important;
        }#navbar-alarm-spacer > .mcms-mission-value-row,
        .mcms-mission-value-row[data-mcms-host="toolbar"] {
            flex: 1 1 auto !important;
            width: 100% !important;
            min-height: 32px !important;
            margin: 0 !important;
            padding: 0 3px 0 6px !important;
            clear: none !important;
            overflow: hidden !important;
        }.mcms-mission-value-row[data-mcms-host="fallback"] {
            width: 100% !important;
            min-height: 30px !important;
            margin: 0 0 6px 0 !important;
            padding: 4px 8px !important;
            clear: both !important;
            overflow: hidden !important;
        }.mcms-mission-value-badge {
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            max-width: 100% !important;
            min-width: 0 !important;
            min-height: 24px !important;
            box-sizing: border-box !important;
            padding: 4px 9px !important;
            border: 1px solid rgba(235,190,64,.72) !important;
            border-radius: 8px !important;
            background: linear-gradient(145deg, rgba(48,39,13,.96), rgba(19,21,24,.96)) !important;
            color: #ffe59a !important;
            box-shadow: 0 2px 8px rgba(0,0,0,.34) !important;
            font: 900 11px/1.2 Arial, Helvetica, sans-serif !important;
            letter-spacing: .15px !important;
            text-align: right !important;
            white-space: nowrap !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
            pointer-events: none !important;
        }.mcms-mission-value-row[data-mcms-mode="value"] .mcms-mission-value-badge {
            padding-left: 7px !important;
            padding-right: 7px !important;
        }
        @media (max-width: 767px) {.mcms-mission-value-row[data-mcms-host="fallback"] {
                padding: 4px 6px !important;
            }.mcms-mission-value-badge {
                font-size: 10px !important;
            }
        }.mcms-stuck-mission-icon { pointer-events:none !important; }.mcms-stuck-mission-badge { display:inline-flex !important; align-items:center !important; justify-content:center !important; min-width:58px !important; height:17px !important; padding:0 6px !important; border-radius:6px !important; border:1px solid rgba(255,86,72,.72) !important; background:rgba(90,10,8,.88) !important; color:#ffd7d2 !important; font:950 8px/17px Arial,Helvetica,sans-serif !important; letter-spacing:.35px !important; text-shadow:0 1px 2px #000 !important; box-shadow:0 0 10px rgba(255,53,39,.32) !important; white-space:nowrap !important; }.mcms-stuck-mission-badge.mcms-stuck-severe { background:rgba(130,7,4,.94) !important; border-color:#ff3d2e !important; color:#fff !important; animation:mcmsStuckPulse 1.3s ease-in-out infinite !important; }
        @keyframes mcmsStuckPulse { 0%,100%{box-shadow:0 0 7px rgba(255,53,39,.28);transform:scale(1)} 50%{box-shadow:0 0 16px rgba(255,53,39,.70);transform:scale(1.035)} }.mcms-mission-spawn-ring { transform-box:fill-box !important; stroke:#67d9ff !important; stroke-width:3 !important; fill:rgba(48,183,255,.12) !important; transform-origin:center !important; animation:mcmsMissionSpawnRing 2.35s cubic-bezier(.12,.72,.18,1) both !important; pointer-events:none !important; }.mcms-mission-spawn-label-icon { pointer-events:none !important; }.mcms-mission-spawn-label { display:inline-flex !important; align-items:center !important; justify-content:center !important; min-width:86px !important; height:20px !important; padding:0 8px !important; border-radius:7px !important; border:1px solid rgba(98,219,255,.78) !important; background:rgba(4,22,34,.92) !important; color:#aeeeff !important; font:950 8px/20px Arial,Helvetica,sans-serif !important; letter-spacing:.65px !important; text-shadow:0 1px 2px #000 !important; box-shadow:0 0 16px rgba(67,198,255,.42) !important; animation:mcmsMissionSpawnLabel 2.35s ease-out both !important; white-space:nowrap !important; }.leaflet-marker-icon.mcms-mission-spawn-focus { animation:mcmsMissionSpawnMarker 2.2s cubic-bezier(.16,.74,.18,1) both !important; }
        @keyframes mcmsMissionSpawnRing { 0%{opacity:0;transform:scale(.25)} 12%{opacity:1;transform:scale(.55)} 75%{opacity:.50;transform:scale(3.2)} 100%{opacity:0;transform:scale(4.2)} }
        @keyframes mcmsMissionSpawnLabel { 0%{opacity:0;transform:translateY(8px) scale(.9)} 14%,72%{opacity:1;transform:translateY(0) scale(1)} 100%{opacity:0;transform:translateY(-8px) scale(.96)} }
        @keyframes mcmsMissionSpawnMarker { 0%{filter:brightness(1);transform:scale(1)} 12%{filter:brightness(1.55) drop-shadow(0 0 10px #53d9ff);transform:scale(1.22)} 34%{filter:brightness(1.15) drop-shadow(0 0 6px #53d9ff);transform:scale(.98)} 58%{filter:brightness(1.35) drop-shadow(0 0 8px #53d9ff);transform:scale(1.12)} 100%{filter:brightness(1);transform:scale(1)} }#${SCRIPT.panelId} .mcms-profile-list { display:grid !important; gap:6px !important; }#${SCRIPT.panelId} .mcms-profile-row { display:grid !important; grid-template-columns:minmax(0,1fr) 36px 36px 25px !important; gap:5px !important; align-items:center !important; }#${SCRIPT.panelId} .mcms-profile-main { min-width:0 !important; padding:6px 7px !important; border:1px solid rgba(255,255,255,.09) !important; border-radius:7px !important; background:rgba(255,255,255,.035) !important; }#${SCRIPT.panelId} .mcms-profile-main strong,
        #${SCRIPT.panelId} .mcms-profile-main span { display:block !important; min-width:0 !important; overflow:hidden !important; white-space:nowrap !important; text-overflow:ellipsis !important; }#${SCRIPT.panelId} .mcms-profile-main strong { color:#edf4fb !important; font-size:9px !important; }#${SCRIPT.panelId} .mcms-profile-main span { color:#8393a5 !important; font-size:7px !important; margin-top:2px !important; }#${SCRIPT.panelId} .mcms-config-actions { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:5px !important; }#${SCRIPT.panelId} .mcms-config-actions .mcms-small-btn { min-width:0 !important; white-space:normal !important; text-overflow:clip !important; overflow-wrap:anywhere !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-config-actions { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:7px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-config-actions [data-action="reset-config"] { grid-column:1 / -1 !important; }#${SCRIPT.panelId} .mcms-hidden-file { display:none !important; }#${SCRIPT.panelId} .mcms-ui-theme-grid {
            display: grid !important;
            grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
            gap: 7px !important;
            margin-bottom: 7px !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-btn {
            position: relative !important;
            display: grid !important;
            grid-template-columns: 48px minmax(0, 1fr) !important;
            align-items: center !important;
            gap: 8px !important;
            min-width: 0 !important;
            height: 58px !important;
            padding: 6px 8px !important;
            border: 1px solid rgba(255,255,255,.14) !important;
            border-radius: 10px !important;
            background: rgba(255,255,255,.055) !important;
            color: rgba(255,255,255,.82) !important;
            cursor: pointer !important;
            text-align: left !important;
            overflow: hidden !important;
            transition: transform 140ms ease, border-color 140ms ease, background 140ms ease !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-btn:hover,
        #${SCRIPT.panelId} .mcms-ui-theme-btn:focus-visible {
            transform: translateY(-1px) !important;
            border-color: rgba(124,194,255,.72) !important;
            background: rgba(93,169,255,.12) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color: rgba(124,194,255,.92) !important;
            background: linear-gradient(135deg, rgba(25,118,210,.34), rgba(20,50,82,.26)) !important;
            box-shadow: inset 0 0 0 1px rgba(145,210,255,.14), 0 5px 14px rgba(0,0,0,.18) !important;
            color: #fff !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview {
            display: grid !important;
            grid-template-columns: repeat(3, 1fr) !important;
            align-items: end !important;
            gap: 3px !important;
            width: 48px !important;
            height: 36px !important;
            padding: 5px !important;
            border: 1px solid rgba(255,255,255,.16) !important;
            border-radius: 7px !important;
            background: rgba(3,7,12,.74) !important;
            overflow: hidden !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview span { display: block !important; border-radius: 2px 2px 0 0 !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview span:nth-child(1) { height: 52% !important; background: #4c89bd !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview span:nth-child(2) { height: 86% !important; background: #d7e8f7 !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview span:nth-child(3) { height: 68% !important; background: #2c5f87 !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-cyberpunk {
            border-radius: 1px !important;
            border-color: #00f0ff !important;
            background: #080b12 !important;
            box-shadow: inset 0 0 9px rgba(0,240,255,.20) !important;
            clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 7px 100%, 0 calc(100% - 7px)) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-cyberpunk span { border-radius: 0 !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-cyberpunk span:nth-child(1) { height: 82% !important; background: #fcee0a !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-cyberpunk span:nth-child(2) { height: 48% !important; background: #00f0ff !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-cyberpunk span:nth-child(3) { height: 68% !important; background: #ff003c !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-fallout4 {
            position: relative !important;
            border-radius: 5px !important;
            border-color: #7fbd52 !important;
            background:
                repeating-linear-gradient(0deg, rgba(188,255,108,.055) 0 1px, transparent 1px 4px),
                radial-gradient(circle at 50% 44%, #172817, #071008 78%) !important;
            box-shadow: inset 0 0 12px rgba(160,255,94,.26), 0 0 8px rgba(123,206,73,.12) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-fallout4::after {
            content: 'STAT' !important;
            position: absolute !important;
            left: 4px !important;
            top: 2px !important;
            color: #c8ff8b !important;
            font: 800 5px/1 Consolas, monospace !important;
            letter-spacing: .5px !important;
            opacity: .9 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-fallout4 span {
            border-radius: 1px 1px 0 0 !important;
            box-shadow: 0 0 5px currentColor !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-fallout4 span:nth-child(1) { height: 66% !important; background: #78b94c !important; color: #78b94c !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-fallout4 span:nth-child(2) { height: 88% !important; background: #c8ff8b !important; color: #c8ff8b !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-fallout4 span:nth-child(3) { height: 48% !important; background: #ffcf62 !important; color: #ffcf62 !important; }#${SCRIPT.panelId} .mcms-ui-theme-btn[data-ui-theme="fallout4"] { grid-column: auto !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella {
            position: relative !important;
            border-radius: 2px !important;
            border-color: #d6193f !important;
            background:
                linear-gradient(135deg, rgba(255,255,255,.96) 0 48%, #171a20 48% 52%, #b80f30 52% 100%) !important;
            box-shadow: inset 0 0 0 1px rgba(0,0,0,.18), 0 0 8px rgba(214,25,63,.20) !important;
            clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 7px 100%, 0 calc(100% - 7px)) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella::before {
            content: '☣' !important;
            position: absolute !important;
            inset: 0 !important;
            display: grid !important;
            place-items: center !important;
            color: #ffffff !important;
            font: 900 15px/1 "Arial Narrow", "Segoe UI", sans-serif !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.75) !important;
            z-index: 2 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella::after {
            content: 'U.C.S.' !important;
            position: absolute !important;
            right: 3px !important;
            bottom: 2px !important;
            color: #ffffff !important;
            font: 900 4.7px/1 "Arial Narrow", "Segoe UI", sans-serif !important;
            letter-spacing: .55px !important;
            z-index: 3 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella span { opacity: 0 !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio {
            position: relative !important;
            border-radius: 3px !important;
            border-color: #d17a2b !important;
            background:
                radial-gradient(circle at 5px 5px, #9b9d96 0 1px, transparent 1.4px),
                radial-gradient(circle at calc(100% - 5px) 5px, #9b9d96 0 1px, transparent 1.4px),
                repeating-linear-gradient(135deg, rgba(244,158,47,.92) 0 5px, #242521 5px 10px) 0 100% / 100% 7px no-repeat,
                linear-gradient(145deg, #42443f, #1d1f1c 66%) !important;
            box-shadow: inset 0 0 0 2px rgba(0,0,0,.36), inset 0 8px 14px rgba(255,255,255,.035), 0 0 8px rgba(214,119,35,.20) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio::before {
            content: '⚙' !important;
            position: absolute !important;
            left: 5px !important;
            top: 4px !important;
            color: #f0a044 !important;
            font: 900 13px/1 "Arial Narrow", "Segoe UI", sans-serif !important;
            text-shadow: 0 1px 1px #000 !important;
            z-index: 2 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio::after {
            content: 'LINE 01' !important;
            position: absolute !important;
            right: 4px !important;
            top: 4px !important;
            color: #e7d2a1 !important;
            font: 900 4.8px/1 Consolas, monospace !important;
            letter-spacing: .4px !important;
            z-index: 2 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio span {
            border-radius: 1px 1px 0 0 !important;
            box-shadow: inset 0 1px rgba(255,255,255,.20), 0 0 3px currentColor !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio span:nth-child(1) { height: 45% !important; background: #d57b2b !important; color: #d57b2b !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio span:nth-child(2) { height: 78% !important; background: #9fc55a !important; color: #9fc55a !important; }#${SCRIPT.panelId} .mcms-ui-theme-preview-factorio span:nth-child(3) { height: 60% !important; background: #e9c16e !important; color: #e9c16e !important; }#${SCRIPT.panelId} .mcms-ui-theme-btn[data-ui-theme="factorio"] { grid-column: auto !important; }#${SCRIPT.panelId} .mcms-ui-theme-copy { min-width: 0 !important; }#${SCRIPT.panelId} .mcms-ui-theme-copy strong,
        #${SCRIPT.panelId} .mcms-ui-theme-copy small { display: block !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }#${SCRIPT.panelId} .mcms-ui-theme-copy strong { color: inherit !important; font-size: 10px !important; font-weight: 950 !important; }#${SCRIPT.panelId} .mcms-ui-theme-copy small { margin-top: 4px !important; color: rgba(255,255,255,.48) !important; font-size: 7px !important; font-weight: 900 !important; letter-spacing: .7px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-btn { height: 72px !important; grid-template-columns: 58px minmax(0,1fr) !important; padding: 8px 10px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-preview { width: 58px !important; height: 44px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-copy strong { font-size: 13px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-copy small { font-size: 8.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-grid { gap: 6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-btn { height: 62px !important; grid-template-columns: 46px minmax(0,1fr) !important; padding: 6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-preview { width: 46px !important; height: 38px !important; }html[data-mcms-ui-theme="cyberpunk"] {
            --mcms-cp-yellow: #fcee0a;
            --mcms-cp-cyan: #00f0ff;
            --mcms-cp-red: #ff003c;
            --mcms-cp-ink: #070a10;
            --mcms-cp-panel: #0b1019;
            --mcms-cp-panel-2: #111925;
            --mcms-cp-text: #f5f7ef;
            --mcms-cp-muted: #90a3ad;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId},
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} *,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId},
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} * {
            font-family: "Bahnschrift SemiCondensed", "Arial Narrow", Tahoma, Arial, sans-serif !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} {
            color: var(--mcms-cp-text) !important;
            filter: drop-shadow(0 8px 13px rgba(0,0,0,.46)) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-shell {
            border: 1px solid var(--mcms-cp-cyan) !important;
            border-radius: 1px !important;
            background: linear-gradient(145deg, rgba(12,17,27,.97), rgba(3,7,12,.96)) !important;
            box-shadow: inset 3px 0 0 var(--mcms-cp-yellow), inset 0 -2px 0 rgba(255,0,60,.72), 0 0 13px rgba(0,240,255,.27), 0 7px 18px rgba(0,0,0,.48) !important;
            backdrop-filter: blur(8px) saturate(1.22) !important;
            clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 7px 100%, 0 calc(100% - 7px)) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-menu-btn {
            background: linear-gradient(135deg, rgba(252,238,10,.08), rgba(0,240,255,.04)) !important;
            color: var(--mcms-cp-yellow) !important;
            text-shadow: 1px 0 var(--mcms-cp-red), -1px 0 rgba(0,240,255,.75) !important;
            transition: background 120ms steps(2,end), color 120ms ease, filter 120ms ease !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            background: var(--mcms-cp-yellow) !important;
            color: var(--mcms-cp-ink) !important;
            filter: brightness(1.08) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {
            border-top: 1px solid rgba(0,240,255,.64) !important;
            background: rgba(0,240,255,.08) !important;
            color: var(--mcms-cp-cyan) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:focus-visible {
            background: var(--mcms-cp-cyan) !important;
            color: var(--mcms-cp-ink) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-floating-filter { gap: 5px !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            position: relative !important;
            border: 1px solid rgba(0,240,255,.52) !important;
            border-radius: 1px !important;
            background: linear-gradient(100deg, rgba(7,11,18,.96), rgba(15,24,35,.94)) !important;
            color: #dbeef0 !important;
            box-shadow: inset 2px 0 0 rgba(0,240,255,.65), 0 4px 10px rgba(0,0,0,.36) !important;
            clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 5px 100%, 0 calc(100% - 5px)) !important;
            transition: transform 110ms ease, background 110ms ease, border-color 110ms ease, color 110ms ease !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-screen-pin-btn:hover {
            transform: translateX(2px) !important;
            border-color: var(--mcms-cp-yellow) !important;
            color: #fff !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-key {
            border-radius: 0 !important;
            border: 1px solid rgba(252,238,10,.72) !important;
            background: rgba(252,238,10,.09) !important;
            color: var(--mcms-cp-yellow) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            border-color: var(--mcms-cp-yellow) !important;
            background: linear-gradient(100deg, var(--mcms-cp-yellow), #d7c900) !important;
            color: var(--mcms-cp-ink) !important;
            box-shadow: inset 3px 0 0 var(--mcms-cp-red), 0 0 13px rgba(252,238,10,.32), 0 4px 10px rgba(0,0,0,.42) !important;
            animation: mcmsCyberSignal 2.8s ease-in-out infinite !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            border-color: var(--mcms-cp-ink) !important;
            background: rgba(7,10,16,.92) !important;
            color: var(--mcms-cp-yellow) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-quick {
            border-color: rgba(0,240,255,.80) !important;
            background: linear-gradient(100deg, rgba(0,240,255,.18), rgba(4,18,27,.96)) !important;
            color: #bdfaff !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-custom {
            border-color: rgba(252,238,10,.86) !important;
            background: linear-gradient(100deg, rgba(252,238,10,.16), rgba(24,22,5,.96)) !important;
            color: #fff7a2 !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} {
            border: 1px solid var(--mcms-cp-cyan) !important;
            border-radius: 1px !important;
            background:
                linear-gradient(180deg, rgba(11,16,25,.985), rgba(5,8,13,.985)),
                repeating-linear-gradient(90deg, rgba(0,240,255,.035) 0 1px, transparent 1px 22px),
                repeating-linear-gradient(0deg, rgba(252,238,10,.022) 0 1px, transparent 1px 22px) !important;
            color: var(--mcms-cp-text) !important;
            box-shadow: inset 4px 0 0 var(--mcms-cp-yellow), inset -2px 0 0 rgba(255,0,60,.78), 0 0 0 1px rgba(252,238,10,.15), 0 0 24px rgba(0,240,255,.24), 0 18px 44px rgba(0,0,0,.62) !important;
            backdrop-filter: blur(12px) saturate(1.18) !important;
            scrollbar-color: var(--mcms-cp-yellow) rgba(0,240,255,.08) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId}.mcms-open {
            animation: mcmsCyberPanelIn 190ms cubic-bezier(.16,.78,.22,1) both !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId}::-webkit-scrollbar { width: 8px !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId}::-webkit-scrollbar-track { background: rgba(0,240,255,.06) !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId}::-webkit-scrollbar-thumb { background: var(--mcms-cp-yellow) !important; border: 2px solid #0b1019 !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-header {
            position: relative !important;
            border-bottom: 1px solid var(--mcms-cp-cyan) !important;
            background: linear-gradient(90deg, var(--mcms-cp-yellow) 0 76%, rgba(252,238,10,.13) 76% 100%) !important;
            margin: -3px -3px 9px -3px !important;
            padding: 5px 5px 6px 5px !important;
            overflow: hidden !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-header::after {
            content: '' !important;
            position: absolute !important;
            left: 0 !important;
            top: 0 !important;
            width: 34% !important;
            height: 2px !important;
            background: var(--mcms-cp-red) !important;
            box-shadow: 0 0 8px var(--mcms-cp-red) !important;
            animation: mcmsCyberScan 4.8s linear infinite !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-drag-handle {
            border: 0 !important;
            border-radius: 0 !important;
            background: transparent !important;
            padding: 2px 5px !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-title {
            color: var(--mcms-cp-ink) !important;
            font-weight: 1000 !important;
            letter-spacing: 1.25px !important;
            text-shadow: 1px 0 rgba(255,0,60,.72) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-subtitle {
            color: rgba(7,10,16,.76) !important;
            font-weight: 900 !important;
            letter-spacing: .35px !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-reset-panel,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-close {
            border: 1px solid var(--mcms-cp-ink) !important;
            border-radius: 0 !important;
            background: var(--mcms-cp-ink) !important;
            color: var(--mcms-cp-yellow) !important;
            clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-reset-panel:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-close:hover {
            background: var(--mcms-cp-red) !important;
            color: #fff !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-tabs {
            gap: 4px !important;
            border-bottom: 1px solid rgba(0,240,255,.20) !important;
            padding-bottom: 7px !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-tab-btn {
            position: relative !important;
            border: 1px solid rgba(0,240,255,.34) !important;
            border-radius: 0 !important;
            background: rgba(0,240,255,.045) !important;
            color: #9fdce0 !important;
            letter-spacing: .55px !important;
            clip-path: polygon(0 0, calc(100% - 5px) 0, 100% 5px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-tab-btn:hover {
            border-color: var(--mcms-cp-cyan) !important;
            color: #fff !important;
            background: rgba(0,240,255,.12) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color: var(--mcms-cp-yellow) !important;
            background: var(--mcms-cp-yellow) !important;
            color: var(--mcms-cp-ink) !important;
            box-shadow: inset 0 -3px 0 var(--mcms-cp-red), 0 0 10px rgba(252,238,10,.20) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active {
            animation: mcmsCyberTabIn 150ms steps(3,end) both !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-section-label {
            position: relative !important;
            margin-top: 11px !important;
            padding: 5px 7px 5px 16px !important;
            border: 0 !important;
            border-bottom: 1px solid rgba(0,240,255,.34) !important;
            background: linear-gradient(90deg, rgba(252,238,10,.14), transparent 70%) !important;
            color: var(--mcms-cp-yellow) !important;
            font-size: 9px !important;
            font-weight: 1000 !important;
            letter-spacing: 1px !important;
            text-transform: uppercase !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-section-label::before {
            content: '' !important;
            position: absolute !important;
            left: 4px !important;
            top: 7px !important;
            width: 6px !important;
            height: 6px !important;
            background: var(--mcms-cp-cyan) !important;
            box-shadow: 0 0 7px rgba(0,240,255,.72) !important;
            transform: rotate(45deg) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            border-color: rgba(0,240,255,.38) !important;
            border-radius: 1px !important;
            background: linear-gradient(110deg, rgba(8,13,21,.94), rgba(17,25,37,.88)) !important;
            color: #c9e9ec !important;
            box-shadow: inset 2px 0 0 rgba(0,240,255,.34) !important;
            clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 5px 100%, 0 calc(100% - 5px)) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-pin-btn:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color: var(--mcms-cp-yellow) !important;
            background: linear-gradient(110deg, rgba(252,238,10,.13), rgba(0,240,255,.08)) !important;
            color: #fff !important;
            transform: translateY(-1px) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color: var(--mcms-cp-yellow) !important;
            background: linear-gradient(105deg, var(--mcms-cp-yellow), #d7ca00) !important;
            color: var(--mcms-cp-ink) !important;
            box-shadow: inset 3px 0 0 var(--mcms-cp-red), 0 0 12px rgba(252,238,10,.22) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-iconbox,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-iconbox,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-pill,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-pill {
            background: var(--mcms-cp-ink) !important;
            border-color: var(--mcms-cp-ink) !important;
            color: var(--mcms-cp-yellow) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-iconbox {
            border-radius: 0 !important;
            border: 1px solid rgba(0,240,255,.38) !important;
            background: rgba(0,240,255,.07) !important;
            color: var(--mcms-cp-cyan) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-pill {
            border-radius: 0 !important;
            border: 1px solid rgba(252,238,10,.38) !important;
            background: rgba(252,238,10,.07) !important;
            color: var(--mcms-cp-yellow) !important;
            letter-spacing: .5px !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-row-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-bookmark-name,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-title,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main strong {
            color: #d8edef !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-select {
            border: 1px solid rgba(0,240,255,.52) !important;
            border-radius: 0 !important;
            background: rgba(4,10,16,.92) !important;
            color: #e7ffff !important;
            box-shadow: inset 2px 0 0 rgba(0,240,255,.35) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-select:focus {
            border-color: var(--mcms-cp-yellow) !important;
            box-shadow: inset 3px 0 0 var(--mcms-cp-red), 0 0 0 2px rgba(252,238,10,.12), 0 0 10px rgba(0,240,255,.20) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-select option {
            background: #080d15 !important;
            color: #e8ffff !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-history-older,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-discord-empty {
            border-color: rgba(0,240,255,.25) !important;
            border-radius: 1px !important;
            background: linear-gradient(105deg, rgba(0,240,255,.055), rgba(252,238,10,.025)) !important;
            box-shadow: inset 2px 0 0 rgba(0,240,255,.22) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-status {
            color: #91b9bd !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-status {
            border-color: rgba(252,238,10,.25) !important;
            box-shadow: inset 2px 0 0 rgba(252,238,10,.50) !important;
            color: #c4c694 !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-stat-value,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-value {
            color: var(--mcms-cp-yellow) !important;
            text-shadow: 0 0 8px rgba(252,238,10,.22) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-footer {
            border-top: 1px solid rgba(0,240,255,.28) !important;
            color: #6f989d !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-build {
            color: var(--mcms-cp-cyan) !important;
            letter-spacing: .55px !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.toastId} {
            border: 1px solid var(--mcms-cp-cyan) !important;
            border-radius: 1px !important;
            background: linear-gradient(100deg, rgba(4,9,15,.98), rgba(15,23,33,.97)) !important;
            color: var(--mcms-cp-yellow) !important;
            box-shadow: inset 4px 0 0 var(--mcms-cp-red), 0 0 16px rgba(0,240,255,.26), 0 7px 18px rgba(0,0,0,.46) !important;
            font-family: "Bahnschrift SemiCondensed", "Arial Narrow", Tahoma, Arial, sans-serif !important;
            letter-spacing: .6px !important;
            clip-path: polygon(0 0, calc(100% - 9px) 0, 100% 9px, 100% 100%, 7px 100%, 0 calc(100% - 7px)) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.cleanExitId} {
            border: 1px solid var(--mcms-cp-yellow) !important;
            border-radius: 0 !important;
            background: #080c13 !important;
            color: var(--mcms-cp-yellow) !important;
            box-shadow: inset 4px 0 0 var(--mcms-cp-red), 0 0 14px rgba(252,238,10,.26) !important;
            font-family: "Bahnschrift SemiCondensed", "Arial Narrow", Tahoma, Arial, sans-serif !important;
            letter-spacing: .55px !important;
        }html[data-mcms-ui-theme="cyberpunk"] .mcms-alliance-credit-badge,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-mission-age-badge,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-unit-commitment-badge,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-transport-watcher-badge,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-resource-gap-badge,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-stuck-mission-badge,
        html[data-mcms-ui-theme="cyberpunk"] .mcms-mission-spawn-label {
            border-radius: 1px !important;
            font-family: "Bahnschrift SemiCondensed", "Arial Narrow", Tahoma, Arial, sans-serif !important;
            letter-spacing: .45px !important;
            clip-path: polygon(0 0, calc(100% - 5px) 0, 100% 5px, 100% 100%, 4px 100%, 0 calc(100% - 4px)) !important;
        }html[data-mcms-ui-theme="cyberpunk"] .mcms-mission-spawn-label {
            border-color: var(--mcms-cp-cyan) !important;
            background: rgba(3,12,18,.95) !important;
            color: var(--mcms-cp-yellow) !important;
            box-shadow: inset 3px 0 0 var(--mcms-cp-red), 0 0 16px rgba(0,240,255,.38) !important;
        }html[data-mcms-ui-theme="cyberpunk"] {
            --mcms-cp-text: #f7fbfc;
            --mcms-cp-muted: #b7c9cf;
            --mcms-cp-soft: #d8e7ea;
            --mcms-cp-ink: #05070b;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-row-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-bookmark-name,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-title,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main strong,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-title {
            color: var(--mcms-cp-text) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-footer,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-history-older > summary,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-history-older > summary::after,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-meta,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-log {
            color: var(--mcms-cp-muted) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-sweep-meta {
            font-size: 8px !important;
            line-height: 1.25 !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-input::placeholder {
            color: #9fb5bc !important;
            opacity: 1 !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-input:focus-visible,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-select:focus-visible,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button:focus-visible,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} button:focus-visible {
            outline: 2px solid var(--mcms-cp-yellow) !important;
            outline-offset: 2px !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-desktop,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-tablet,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-mobile,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-text,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-text,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy strong,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: var(--mcms-cp-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy strong {
            font-weight: 1000 !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: rgba(5,7,11,.78) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-reset-panel:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-reset-panel:focus-visible,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-close:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-close:focus-visible {
            background: #ff315f !important;
            color: var(--mcms-cp-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="cyberpunk"] .mcms-transport-watcher-count {
            border-color: var(--mcms-cp-ink) !important;
            background: var(--mcms-cp-yellow) !important;
            color: var(--mcms-cp-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button:disabled,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} button:disabled {
            border-color: #41535b !important;
            background: #111821 !important;
            color: #9dafb5 !important;
            box-shadow: none !important;
            filter: saturate(.35) !important;
            opacity: .78 !important;
            text-shadow: none !important;
            cursor: not-allowed !important;
            animation: none !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button:disabled .mcms-label,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button:disabled .mcms-text,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button:disabled strong,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button:disabled small {
            color: #9dafb5 !important;
            text-shadow: none !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 9px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 8.5px !important;
        }html[data-mcms-ui-theme="fallout4"] {
            --mcms-fo-green: #b9ff72;
            --mcms-fo-green-strong: #d3ff9b;
            --mcms-fo-green-mid: #79b94f;
            --mcms-fo-green-dim: #426a35;
            --mcms-fo-amber: #ffd36a;
            --mcms-fo-red: #ff8b72;
            --mcms-fo-ink: #061008;
            --mcms-fo-panel: #0a130c;
            --mcms-fo-panel-2: #111d12;
            --mcms-fo-text: #edffd9;
            --mcms-fo-muted: #bed4ad;
            --mcms-fo-soft: #d8e9ca;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId},
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} *,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId},
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} * {
            font-family: Consolas, "Lucida Console", "Courier New", monospace !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} {
            color: var(--mcms-fo-text) !important;
            filter: drop-shadow(0 7px 12px rgba(0,0,0,.58)) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-shell {
            border: 2px solid #5f784e !important;
            border-radius: 7px !important;
            background:
                repeating-linear-gradient(0deg, rgba(186,255,114,.025) 0 1px, transparent 1px 4px),
                linear-gradient(145deg, rgba(23,34,22,.985), rgba(7,14,9,.985)) !important;
            box-shadow:
                inset 0 0 0 2px #1f2d1d,
                inset 4px 0 0 #314b2a,
                inset -3px 0 0 #151d14,
                0 0 0 1px rgba(185,255,114,.14),
                0 8px 18px rgba(0,0,0,.56) !important;
            backdrop-filter: blur(7px) saturate(.78) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-menu-btn {
            background:
                radial-gradient(circle at 50% 48%, rgba(185,255,114,.13), transparent 72%),
                linear-gradient(180deg, #1a2a1b, #0b140d) !important;
            color: var(--mcms-fo-green-strong) !important;
            text-shadow: 0 0 6px rgba(185,255,114,.68) !important;
            border-right: 1px solid rgba(185,255,114,.24) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            background: var(--mcms-fo-green) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 0 0 0 2px rgba(6,16,8,.35) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {
            border-top: 1px solid rgba(185,255,114,.42) !important;
            background: rgba(84,126,66,.22) !important;
            color: var(--mcms-fo-green-strong) !important;
            text-shadow: 0 0 5px rgba(185,255,114,.45) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:focus-visible {
            background: var(--mcms-fo-amber) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-floating-filter { gap: 5px !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border: 1px solid rgba(137,191,92,.72) !important;
            border-radius: 4px !important;
            background:
                repeating-linear-gradient(0deg, rgba(185,255,114,.018) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(18,31,19,.97), rgba(7,15,9,.97)) !important;
            color: var(--mcms-fo-soft) !important;
            box-shadow: inset 3px 0 0 #385c31, inset 0 1px rgba(211,255,155,.07), 0 4px 9px rgba(0,0,0,.42) !important;
            text-shadow: 0 0 4px rgba(185,255,114,.22) !important;
            transition: transform 130ms ease, border-color 130ms ease, background 130ms ease, color 130ms ease, box-shadow 130ms ease !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-screen-pin-btn:hover {
            transform: translateX(2px) !important;
            border-color: var(--mcms-fo-green-strong) !important;
            background: linear-gradient(180deg, rgba(39,66,36,.98), rgba(12,24,14,.98)) !important;
            color: #f4ffe9 !important;
            box-shadow: inset 4px 0 0 var(--mcms-fo-green-mid), 0 0 9px rgba(185,255,114,.17), 0 4px 9px rgba(0,0,0,.46) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-key {
            border: 1px solid var(--mcms-fo-green-mid) !important;
            border-radius: 3px !important;
            background: #09130b !important;
            color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 0 0 5px rgba(185,255,114,.14) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            border-color: var(--mcms-fo-green-strong) !important;
            background: linear-gradient(180deg, var(--mcms-fo-green-strong), #8ec85d) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 4px 0 0 #3f6d31, inset 0 0 0 1px rgba(6,16,8,.22), 0 0 14px rgba(185,255,114,.28), 0 4px 10px rgba(0,0,0,.45) !important;
            animation: mcmsFalloutPower 3.4s ease-in-out infinite !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            border-color: var(--mcms-fo-ink) !important;
            background: #0a170c !important;
            color: var(--mcms-fo-green-strong) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-quick {
            border-color: rgba(185,255,114,.84) !important;
            background: linear-gradient(180deg, rgba(50,83,42,.95), rgba(10,20,12,.97)) !important;
            color: #e8ffd2 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-custom {
            border-color: rgba(255,211,106,.86) !important;
            background: linear-gradient(180deg, rgba(92,69,25,.74), rgba(24,19,8,.97)) !important;
            color: #ffe7a7 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} {
            border: 2px solid #5d744d !important;
            border-radius: 8px !important;
            background:
                repeating-linear-gradient(0deg, rgba(190,255,118,.026) 0 1px, transparent 1px 4px),
                radial-gradient(ellipse at 50% 18%, rgba(83,132,65,.12), transparent 58%),
                linear-gradient(180deg, rgba(12,23,14,.992), rgba(5,12,7,.992)) !important;
            color: var(--mcms-fo-text) !important;
            box-shadow:
                inset 0 0 0 2px #1e2b1d,
                inset 5px 0 0 #34482f,
                inset -4px 0 0 #121a12,
                inset 0 0 38px rgba(101,166,71,.08),
                0 0 0 1px rgba(185,255,114,.12),
                0 18px 44px rgba(0,0,0,.68) !important;
            backdrop-filter: blur(10px) saturate(.82) !important;
            scrollbar-color: var(--mcms-fo-green-mid) #071009 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId}.mcms-open {
            animation: mcmsFalloutBoot 260ms steps(5,end) both !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId}::-webkit-scrollbar { width: 9px !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId}::-webkit-scrollbar-track { background: #071009 !important; border-left: 1px solid #243523 !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId}::-webkit-scrollbar-thumb { background: #5d8f46 !important; border: 2px solid #071009 !important; border-radius: 3px !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-header {
            position: relative !important;
            margin: -3px -3px 9px -3px !important;
            padding: 6px 6px 7px 6px !important;
            border: 1px solid #526848 !important;
            border-bottom-color: var(--mcms-fo-green-mid) !important;
            border-radius: 6px 6px 2px 2px !important;
            background:
                repeating-linear-gradient(90deg, rgba(185,255,114,.025) 0 1px, transparent 1px 16px),
                linear-gradient(180deg, #273324, #151f16) !important;
            box-shadow: inset 0 1px rgba(231,255,218,.08), inset 0 -3px #0c140d !important;
            overflow: hidden !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-header::before {
            content: 'ROBCO INDUSTRIES UNIFIED OPERATING SYSTEM' !important;
            position: absolute !important;
            right: 8px !important;
            top: 3px !important;
            color: rgba(185,255,114,.48) !important;
            font-size: 5.5px !important;
            font-weight: 800 !important;
            letter-spacing: .45px !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-header::after {
            content: '' !important;
            position: absolute !important;
            left: -28% !important;
            top: 0 !important;
            width: 24% !important;
            height: 100% !important;
            background: linear-gradient(90deg, transparent, rgba(200,255,139,.12), transparent) !important;
            animation: mcmsFalloutSweep 6.8s linear infinite !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-drag-handle {
            border: 0 !important;
            border-radius: 0 !important;
            background: transparent !important;
            padding: 5px 6px 2px 6px !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-title {
            color: var(--mcms-fo-green-strong) !important;
            font-weight: 950 !important;
            letter-spacing: .95px !important;
            text-shadow: 0 0 6px rgba(185,255,114,.48) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-subtitle {
            color: var(--mcms-fo-muted) !important;
            font-weight: 750 !important;
            letter-spacing: .15px !important;
            text-shadow: 0 0 4px rgba(185,255,114,.16) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-reset-panel,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-close {
            border: 1px solid #698252 !important;
            border-radius: 4px !important;
            background: linear-gradient(180deg, #1f2d1f, #0d160f) !important;
            color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 0 1px rgba(221,255,198,.08) !important;
            text-shadow: 0 0 4px rgba(185,255,114,.34) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-reset-panel:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-close:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-reset-panel:focus-visible,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-close:focus-visible {
            border-color: var(--mcms-fo-red) !important;
            background: var(--mcms-fo-red) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tabs {
            gap: 4px !important;
            padding: 0 1px 7px 1px !important;
            border-bottom: 1px solid rgba(185,255,114,.24) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tab-btn {
            border: 1px solid #405b38 !important;
            border-radius: 3px !important;
            background: linear-gradient(180deg, #162318, #0a130c) !important;
            color: #cfe8bc !important;
            letter-spacing: .25px !important;
            box-shadow: inset 0 1px rgba(222,255,201,.045) !important;
            text-shadow: 0 0 4px rgba(185,255,114,.16) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tab-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tab-btn:focus-visible {
            border-color: var(--mcms-fo-green-mid) !important;
            background: #243a22 !important;
            color: #f0ffe4 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color: var(--mcms-fo-green-strong) !important;
            background: var(--mcms-fo-green-strong) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 0 -3px 0 #4f7b3c, 0 0 10px rgba(185,255,114,.18) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active {
            animation: mcmsFalloutDataIn 190ms steps(4,end) both !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-section-label {
            position: relative !important;
            margin: 11px 0 6px 0 !important;
            padding: 5px 8px 5px 18px !important;
            border: 1px solid rgba(118,171,82,.34) !important;
            border-left: 4px solid var(--mcms-fo-green-mid) !important;
            border-radius: 3px !important;
            background: linear-gradient(90deg, rgba(82,130,65,.24), rgba(12,23,14,.28) 72%) !important;
            color: var(--mcms-fo-green-strong) !important;
            font-size: 9px !important;
            font-weight: 950 !important;
            letter-spacing: .7px !important;
            text-transform: uppercase !important;
            text-shadow: 0 0 5px rgba(185,255,114,.25) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-section-label::before {
            content: '▸' !important;
            position: absolute !important;
            left: 6px !important;
            top: 4px !important;
            color: var(--mcms-fo-amber) !important;
            text-shadow: 0 0 4px rgba(255,211,106,.32) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            border: 1px solid #45643c !important;
            border-radius: 4px !important;
            background:
                repeating-linear-gradient(0deg, rgba(185,255,114,.014) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(20,34,21,.96), rgba(8,17,10,.96)) !important;
            color: var(--mcms-fo-soft) !important;
            box-shadow: inset 3px 0 0 #2b4828, inset 0 1px rgba(226,255,204,.04) !important;
            text-shadow: 0 0 4px rgba(185,255,114,.13) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-pin-btn:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color: var(--mcms-fo-green-mid) !important;
            background: linear-gradient(180deg, #2c4828, #122216) !important;
            color: #f2ffe8 !important;
            box-shadow: inset 4px 0 0 var(--mcms-fo-green-mid), 0 0 8px rgba(185,255,114,.12) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color: var(--mcms-fo-green-strong) !important;
            background: linear-gradient(180deg, var(--mcms-fo-green-strong), #8fc85d) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 4px 0 0 #426b35, inset 0 0 0 1px rgba(6,16,8,.18), 0 0 10px rgba(185,255,114,.17) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-iconbox,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-iconbox,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-pill,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-pill {
            border-color: var(--mcms-fo-ink) !important;
            background: #0a170c !important;
            color: var(--mcms-fo-green-strong) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-iconbox {
            border: 1px solid #527847 !important;
            border-radius: 3px !important;
            background: #0c180e !important;
            color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 0 0 7px rgba(185,255,114,.12) !important;
            text-shadow: 0 0 5px rgba(185,255,114,.34) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-pill {
            border: 1px solid rgba(255,211,106,.42) !important;
            border-radius: 3px !important;
            background: rgba(255,211,106,.07) !important;
            color: #ffe2a0 !important;
            letter-spacing: .45px !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-row-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-bookmark-name,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry-title,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-profile-main strong,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-title {
            color: var(--mcms-fo-text) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-select {
            border: 1px solid #507745 !important;
            border-radius: 3px !important;
            background: #071009 !important;
            color: var(--mcms-fo-text) !important;
            box-shadow: inset 3px 0 0 #2d4b2a, inset 0 0 8px rgba(185,255,114,.05) !important;
            text-shadow: 0 0 4px rgba(185,255,114,.16) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-select:focus {
            border-color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 4px 0 0 var(--mcms-fo-green-mid), 0 0 0 2px rgba(185,255,114,.12), 0 0 10px rgba(185,255,114,.10) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-input::placeholder {
            color: #a8bf96 !important;
            opacity: 1 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-select option {
            background: #08110a !important;
            color: var(--mcms-fo-text) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-history-older,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-empty,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-stat,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-breakdown,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-card,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-stat,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-entry,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-log {
            border-color: rgba(111,160,79,.38) !important;
            border-radius: 4px !important;
            background:
                repeating-linear-gradient(0deg, rgba(185,255,114,.012) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(18,31,19,.82), rgba(7,15,9,.82)) !important;
            box-shadow: inset 3px 0 0 rgba(75,119,58,.55), inset 0 1px rgba(223,255,203,.035) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-footer,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-history-older > summary,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-history-older > summary::after,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-meta,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-log {
            color: var(--mcms-fo-muted) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-status {
            border-color: rgba(255,211,106,.38) !important;
            box-shadow: inset 3px 0 0 rgba(255,211,106,.62) !important;
            color: #ffe8ad !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-stat-value,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry-value,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-stat strong,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-line strong,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-stat b {
            color: var(--mcms-fo-green-strong) !important;
            text-shadow: 0 0 6px rgba(185,255,114,.30) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-title,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-result,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-breakdown b,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-line,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-foot,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-date,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-stat span,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-mini-stats span {
            color: var(--mcms-fo-muted) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-card[data-tone="positive"] { border-color: rgba(185,255,114,.62) !important; box-shadow: inset 4px 0 var(--mcms-fo-green-mid) !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-card[data-tone="negative"] { border-color: rgba(255,139,114,.68) !important; box-shadow: inset 4px 0 var(--mcms-fo-red) !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-card[data-tone="neutral"] { border-color: rgba(255,211,106,.66) !important; box-shadow: inset 4px 0 var(--mcms-fo-amber) !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-chart {
            border-color: #45643c !important;
            border-radius: 4px !important;
            background: #071009 !important;
            filter: sepia(.25) hue-rotate(42deg) saturate(.78) brightness(.9) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-title {
            color: var(--mcms-fo-green-strong) !important;
            text-shadow: 0 0 5px rgba(185,255,114,.25) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-result {
            border: 1px solid var(--mcms-fo-ink) !important;
            border-radius: 3px !important;
            background: var(--mcms-fo-amber) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-breakdown b,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-head,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-count {
            color: var(--mcms-fo-amber) !important;
            text-shadow: 0 0 4px rgba(255,211,106,.20) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-mini-stats span {
            border: 1px solid rgba(111,160,79,.28) !important;
            border-radius: 3px !important;
            background: rgba(49,79,42,.28) !important;
            color: var(--mcms-fo-muted) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-mini-stats b {
            color: var(--mcms-fo-green-strong) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-status[data-tone="good"] {
            border-color: rgba(185,255,114,.54) !important;
            color: var(--mcms-fo-green-strong) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-status[data-tone="bad"] {
            border-color: rgba(255,139,114,.58) !important;
            color: #ffc1b4 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-discord-status[data-tone="busy"] {
            border-color: rgba(255,211,106,.58) !important;
            color: #ffe6aa !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-state {
            border: 1px solid rgba(111,160,79,.35) !important;
            border-radius: 3px !important;
            background: #0b160d !important;
            color: var(--mcms-fo-muted) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-state.mcms-running {
            border-color: var(--mcms-fo-amber) !important;
            background: var(--mcms-fo-amber) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-entry.mcms-current {
            border-color: var(--mcms-fo-amber) !important;
            background: rgba(255,211,106,.09) !important;
            box-shadow: inset 3px 0 0 var(--mcms-fo-amber) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-footer {
            border-top: 1px solid rgba(118,171,82,.36) !important;
            color: #9fb68f !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-build {
            color: var(--mcms-fo-amber) !important;
            letter-spacing: .45px !important;
            text-shadow: 0 0 4px rgba(255,211,106,.20) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.toastId} {
            border: 2px solid #607a50 !important;
            border-radius: 5px !important;
            background:
                repeating-linear-gradient(0deg, rgba(185,255,114,.025) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(19,32,20,.98), rgba(7,15,9,.98)) !important;
            color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 4px 0 0 var(--mcms-fo-green-mid), inset 0 0 12px rgba(185,255,114,.06), 0 8px 18px rgba(0,0,0,.56) !important;
            font-family: Consolas, "Lucida Console", monospace !important;
            letter-spacing: .35px !important;
            text-shadow: 0 0 5px rgba(185,255,114,.34) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.cleanExitId} {
            border: 2px solid #607a50 !important;
            border-radius: 4px !important;
            background: #0a150c !important;
            color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 4px 0 0 var(--mcms-fo-amber), 0 0 12px rgba(185,255,114,.16) !important;
            font-family: Consolas, "Lucida Console", monospace !important;
            letter-spacing: .35px !important;
            text-shadow: 0 0 4px rgba(185,255,114,.28) !important;
        }html[data-mcms-ui-theme="fallout4"] .mcms-alliance-credit-badge,
        html[data-mcms-ui-theme="fallout4"] .mcms-mission-age-badge,
        html[data-mcms-ui-theme="fallout4"] .mcms-unit-commitment-badge,
        html[data-mcms-ui-theme="fallout4"] .mcms-transport-watcher-badge,
        html[data-mcms-ui-theme="fallout4"] .mcms-resource-gap-badge,
        html[data-mcms-ui-theme="fallout4"] .mcms-stuck-mission-badge,
        html[data-mcms-ui-theme="fallout4"] .mcms-mission-spawn-label {
            border-radius: 3px !important;
            font-family: Consolas, "Lucida Console", monospace !important;
            letter-spacing: .25px !important;
            backdrop-filter: blur(3px) saturate(.75) !important;
        }html[data-mcms-ui-theme="fallout4"] .mcms-mission-spawn-label {
            border-color: var(--mcms-fo-green-mid) !important;
            background: rgba(5,15,8,.95) !important;
            color: var(--mcms-fo-green-strong) !important;
            box-shadow: inset 3px 0 0 var(--mcms-fo-amber), 0 0 13px rgba(185,255,114,.25) !important;
            text-shadow: 0 0 5px rgba(185,255,114,.40) !important;
        }html[data-mcms-ui-theme="fallout4"] .mcms-transport-watcher-count {
            border-color: var(--mcms-fo-ink) !important;
            background: var(--mcms-fo-amber) !important;
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-desktop,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-tablet,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-mobile,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-text,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-text,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy strong,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: var(--mcms-fo-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: rgba(6,16,8,.78) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-sweep-meta {
            font-size: 8px !important;
            line-height: 1.28 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-input:focus-visible,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-select:focus-visible,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button:focus-visible,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} button:focus-visible {
            outline: 2px solid var(--mcms-fo-amber) !important;
            outline-offset: 2px !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button:disabled,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} button:disabled {
            border-color: #465443 !important;
            background: #111812 !important;
            color: #a9b7a1 !important;
            box-shadow: none !important;
            filter: saturate(.35) !important;
            opacity: .78 !important;
            text-shadow: none !important;
            cursor: not-allowed !important;
            animation: none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button:disabled .mcms-label,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button:disabled .mcms-text,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button:disabled strong,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button:disabled small {
            color: #a9b7a1 !important;
            text-shadow: none !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 9px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 8.5px !important;
        }
        @keyframes mcmsFalloutBoot {
            0% { opacity: 0; transform: scaleY(.08) scaleX(.96); filter: brightness(2.1) contrast(1.4); }
            35% { opacity: .88; transform: scaleY(.72) scaleX(1.01); filter: brightness(1.45) contrast(1.2); }
            62% { opacity: 1; transform: scaleY(1.015) scaleX(.998); filter: brightness(.92) contrast(1.08); }
            100% { opacity: 1; transform: scale(1); filter: none; }
        }
        @keyframes mcmsFalloutDataIn {
            0% { opacity: .18; transform: translateY(3px); filter: brightness(1.5); }
            55% { opacity: .86; transform: translateY(-1px); filter: brightness(1.12); }
            100% { opacity: 1; transform: translateY(0); filter: none; }
        }
        @keyframes mcmsFalloutPower {
            0%, 100% { filter: brightness(1); }
            48% { filter: brightness(1); }
            50% { filter: brightness(1.10); }
            52% { filter: brightness(.97); }
            54% { filter: brightness(1.05); }
        }
        @keyframes mcmsFalloutSweep {
            0% { transform: translateX(0); opacity: 0; }
            8% { opacity: 1; }
            62% { opacity: .85; }
            72%, 100% { transform: translateX(560%); opacity: 0; }
        }
        @media (prefers-reduced-motion: reduce) {html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId}.mcms-open,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-header::after,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
                animation: none !important;
            }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.controlId} .mcms-screen-pin-btn,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} button {
                transition: none !important;
            }
        }html[data-mcms-ui-theme="umbrella"] {
            --mcms-um-white: #f1f3f6;
            --mcms-um-white-strong: #ffffff;
            --mcms-um-red: #c8102e;
            --mcms-um-red-dark: #670d20;
            --mcms-um-amber: #ffd24a;
            --mcms-um-red-hot: #ff4261;
            --mcms-um-ink: #0a0c11;
            --mcms-um-panel: #0e1117;
            --mcms-um-panel-2: #1a1e26;
            --mcms-um-text: #f7f8fa;
            --mcms-um-muted: #c4cad3;
            --mcms-um-soft: #e7eaee;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId},
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId},
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} * {
            font-family: "Arial Narrow", "Roboto Condensed", "Segoe UI", Arial, sans-serif !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} {
            color: var(--mcms-um-text) !important;
            filter: drop-shadow(0 7px 12px rgba(0,0,0,.58)) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-shell {
            border: 2px solid #5c626c !important;
            border-radius: 7px !important;
            background:
                repeating-linear-gradient(0deg, rgba(255,255,255,.025) 0 1px, transparent 1px 4px),
                linear-gradient(145deg, rgba(23,34,22,.985), rgba(7,14,9,.985)) !important;
            box-shadow:
                inset 0 0 0 2px #1c2027,
                inset 4px 0 0 #6d1023,
                inset -3px 0 0 #090b0f,
                0 0 0 1px rgba(216,25,63,.14),
                0 8px 18px rgba(0,0,0,.56) !important;
            backdrop-filter: blur(7px) saturate(.78) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn {
            background:
                radial-gradient(circle at 50% 48%, rgba(216,25,63,.13), transparent 72%),
                linear-gradient(180deg, #23272f, #0b0e13) !important;
            color: var(--mcms-um-white-strong) !important;
            text-shadow: 0 0 6px rgba(216,25,63,.68) !important;
            border-right: 1px solid rgba(216,25,63,.24) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            background: var(--mcms-um-white) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 0 0 0 2px rgba(6,16,8,.35) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {
            border-top: 1px solid rgba(216,25,63,.42) !important;
            background: rgba(200,16,46,.22) !important;
            color: var(--mcms-um-white-strong) !important;
            text-shadow: 0 0 5px rgba(216,25,63,.45) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:focus-visible {
            background: var(--mcms-um-amber) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-floating-filter { gap: 5px !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border: 1px solid rgba(216,25,63,.72) !important;
            border-radius: 4px !important;
            background:
                repeating-linear-gradient(0deg, rgba(216,25,63,.018) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(18,31,19,.97), rgba(7,15,9,.97)) !important;
            color: var(--mcms-um-soft) !important;
            box-shadow: inset 3px 0 0 #83132b, inset 0 1px rgba(255,255,255,.07), 0 4px 9px rgba(0,0,0,.42) !important;
            text-shadow: 0 0 4px rgba(216,25,63,.22) !important;
            transition: transform 130ms ease, border-color 130ms ease, background 130ms ease, color 130ms ease, box-shadow 130ms ease !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn:hover {
            transform: translateX(2px) !important;
            border-color: var(--mcms-um-white-strong) !important;
            background: linear-gradient(180deg, rgba(39,66,36,.98), rgba(12,24,14,.98)) !important;
            color: #ffffff !important;
            box-shadow: inset 4px 0 0 var(--mcms-um-red), 0 0 9px rgba(216,25,63,.17), 0 4px 9px rgba(0,0,0,.46) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-key {
            border: 1px solid var(--mcms-um-red) !important;
            border-radius: 3px !important;
            background: #0c0f14 !important;
            color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 0 0 5px rgba(216,25,63,.14) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            border-color: var(--mcms-um-white-strong) !important;
            background: linear-gradient(180deg, var(--mcms-um-white-strong), #e8ebef) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 4px 0 0 #7b1027, inset 0 0 0 1px rgba(6,16,8,.22), 0 0 14px rgba(216,25,63,.28), 0 4px 10px rgba(0,0,0,.45) !important;
            animation: mcmsUmbrellaPower 3.4s ease-in-out infinite !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            border-color: var(--mcms-um-ink) !important;
            background: #11151b !important;
            color: var(--mcms-um-white-strong) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-quick {
            border-color: rgba(216,25,63,.84) !important;
            background: linear-gradient(180deg, rgba(50,83,42,.95), rgba(10,20,12,.97)) !important;
            color: #ffffff !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-custom {
            border-color: rgba(255,211,106,.86) !important;
            background: linear-gradient(180deg, rgba(92,69,25,.74), rgba(24,19,8,.97)) !important;
            color: #ffe49a !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} {
            border: 2px solid #656b75 !important;
            border-radius: 8px !important;
            background:
                repeating-linear-gradient(0deg, rgba(255,255,255,.026) 0 1px, transparent 1px 4px),
                radial-gradient(ellipse at 50% 18%, rgba(200,16,46,.12), transparent 58%),
                linear-gradient(180deg, rgba(12,23,14,.992), rgba(5,12,7,.992)) !important;
            color: var(--mcms-um-text) !important;
            box-shadow:
                inset 0 0 0 2px #1b1f26,
                inset 5px 0 0 #7a1127,
                inset -4px 0 0 #080a0e,
                inset 0 0 38px rgba(216,25,63,.08),
                0 0 0 1px rgba(216,25,63,.12),
                0 18px 44px rgba(0,0,0,.68) !important;
            backdrop-filter: blur(10px) saturate(.82) !important;
            scrollbar-color: var(--mcms-um-red) #080a0e !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}.mcms-open {
            animation: mcmsUmbrellaBoot 260ms steps(5,end) both !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}::-webkit-scrollbar { width: 9px !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}::-webkit-scrollbar-track { background: #080a0e !important; border-left: 1px solid #272c35 !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}::-webkit-scrollbar-thumb { background: #b81435 !important; border: 2px solid #080a0e !important; border-radius: 3px !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header {
            position: relative !important;
            margin: -3px -3px 9px -3px !important;
            padding: 6px 6px 7px 6px !important;
            border: 1px solid #5f6670 !important;
            border-bottom-color: var(--mcms-um-red) !important;
            border-radius: 6px 6px 2px 2px !important;
            background:
                repeating-linear-gradient(90deg, rgba(216,25,63,.025) 0 1px, transparent 1px 16px),
                linear-gradient(180deg, #262a31, #14171d) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.08), inset 0 -3px #090c10 !important;
            overflow: hidden !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::before {
            content: 'UMBRELLA CORPORATION // CONTAINMENT COMMAND SYSTEM' !important;
            position: absolute !important;
            right: 8px !important;
            top: 3px !important;
            color: rgba(216,25,63,.48) !important;
            font-size: 5.5px !important;
            font-weight: 800 !important;
            letter-spacing: .45px !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::after {
            content: '' !important;
            position: absolute !important;
            left: -28% !important;
            top: 0 !important;
            width: 24% !important;
            height: 100% !important;
            background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent) !important;
            animation: mcmsUmbrellaSweep 6.8s linear infinite !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-drag-handle {
            border: 0 !important;
            border-radius: 0 !important;
            background: transparent !important;
            padding: 5px 6px 2px 6px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-title {
            color: var(--mcms-um-white-strong) !important;
            font-weight: 950 !important;
            letter-spacing: .95px !important;
            text-shadow: 0 0 6px rgba(216,25,63,.48) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-subtitle {
            color: var(--mcms-um-muted) !important;
            font-weight: 750 !important;
            letter-spacing: .15px !important;
            text-shadow: 0 0 4px rgba(216,25,63,.16) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-reset-panel,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-close {
            border: 1px solid #727984 !important;
            border-radius: 4px !important;
            background: linear-gradient(180deg, #23272e, #0d1015) !important;
            color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.08) !important;
            text-shadow: 0 0 4px rgba(216,25,63,.34) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-reset-panel:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-close:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-reset-panel:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-close:focus-visible {
            border-color: var(--mcms-um-red-hot) !important;
            background: var(--mcms-um-red-hot) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tabs {
            gap: 4px !important;
            padding: 0 1px 7px 1px !important;
            border-bottom: 1px solid rgba(216,25,63,.24) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn {
            border: 1px solid #424852 !important;
            border-radius: 3px !important;
            background: linear-gradient(180deg, #191d24, #0e1117) !important;
            color: #dfe3e8 !important;
            letter-spacing: .25px !important;
            box-shadow: inset 0 1px rgba(255,255,255,.045) !important;
            text-shadow: 0 0 4px rgba(216,25,63,.16) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn:focus-visible {
            border-color: var(--mcms-um-red) !important;
            background: #2b3039 !important;
            color: #ffffff !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color: var(--mcms-um-white-strong) !important;
            background: var(--mcms-um-white-strong) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 0 -3px 0 #760e25, 0 0 10px rgba(216,25,63,.18) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active {
            animation: mcmsUmbrellaDataIn 190ms steps(4,end) both !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-section-label {
            position: relative !important;
            margin: 11px 0 6px 0 !important;
            padding: 5px 8px 5px 18px !important;
            border: 1px solid rgba(118,171,82,.34) !important;
            border-left: 4px solid var(--mcms-um-red) !important;
            border-radius: 3px !important;
            background: linear-gradient(90deg, rgba(82,130,65,.24), rgba(12,23,14,.28) 72%) !important;
            color: var(--mcms-um-white-strong) !important;
            font-size: 9px !important;
            font-weight: 950 !important;
            letter-spacing: .7px !important;
            text-transform: uppercase !important;
            text-shadow: 0 0 5px rgba(216,25,63,.25) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-section-label::before {
            content: '▸' !important;
            position: absolute !important;
            left: 6px !important;
            top: 4px !important;
            color: var(--mcms-um-amber) !important;
            text-shadow: 0 0 4px rgba(255,211,106,.32) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            border: 1px solid #45643c !important;
            border-radius: 4px !important;
            background:
                repeating-linear-gradient(0deg, rgba(216,25,63,.014) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(20,34,21,.96), rgba(8,17,10,.96)) !important;
            color: var(--mcms-um-soft) !important;
            box-shadow: inset 3px 0 0 #2b4828, inset 0 1px rgba(226,255,204,.04) !important;
            text-shadow: 0 0 4px rgba(216,25,63,.13) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-pin-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color: var(--mcms-um-red) !important;
            background: linear-gradient(180deg, #2c4828, #122216) !important;
            color: #f2ffe8 !important;
            box-shadow: inset 4px 0 0 var(--mcms-um-red), 0 0 8px rgba(216,25,63,.12) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color: var(--mcms-um-white-strong) !important;
            background: linear-gradient(180deg, var(--mcms-um-white-strong), #8fc85d) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
            box-shadow: inset 4px 0 0 #426b35, inset 0 0 0 1px rgba(6,16,8,.18), 0 0 10px rgba(216,25,63,.17) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-iconbox,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-iconbox,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-pill,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-pill {
            border-color: var(--mcms-um-ink) !important;
            background: #11151b !important;
            color: var(--mcms-um-white-strong) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-iconbox {
            border: 1px solid #527847 !important;
            border-radius: 3px !important;
            background: #0c180e !important;
            color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 0 0 7px rgba(216,25,63,.12) !important;
            text-shadow: 0 0 5px rgba(216,25,63,.34) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-pill {
            border: 1px solid rgba(255,211,106,.42) !important;
            border-radius: 3px !important;
            background: rgba(255,211,106,.07) !important;
            color: #ffe49a !important;
            letter-spacing: .45px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-row-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-bookmark-name,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-title,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main strong,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-title {
            color: var(--mcms-um-text) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select {
            border: 1px solid #507745 !important;
            border-radius: 3px !important;
            background: #080a0e !important;
            color: var(--mcms-um-text) !important;
            box-shadow: inset 3px 0 0 #2d4b2a, inset 0 0 8px rgba(216,25,63,.05) !important;
            text-shadow: 0 0 4px rgba(216,25,63,.16) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select:focus {
            border-color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 4px 0 0 var(--mcms-um-red), 0 0 0 2px rgba(216,25,63,.12), 0 0 10px rgba(216,25,63,.10) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input::placeholder {
            color: #a8bf96 !important;
            opacity: 1 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select option {
            background: #08110a !important;
            color: var(--mcms-um-text) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-history-older,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-empty,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-stat,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-breakdown,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-entry,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-log {
            border-color: rgba(111,160,79,.38) !important;
            border-radius: 4px !important;
            background:
                repeating-linear-gradient(0deg, rgba(216,25,63,.012) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(18,31,19,.82), rgba(7,15,9,.82)) !important;
            box-shadow: inset 3px 0 0 rgba(75,119,58,.55), inset 0 1px rgba(223,255,203,.035) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-footer,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-history-older > summary,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-history-older > summary::after,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-log {
            color: var(--mcms-um-muted) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-status {
            border-color: rgba(255,211,106,.38) !important;
            box-shadow: inset 3px 0 0 rgba(255,211,106,.62) !important;
            color: #ffe8ad !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-value,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-value,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-stat strong,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-line strong,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat b {
            color: var(--mcms-um-white-strong) !important;
            text-shadow: 0 0 6px rgba(216,25,63,.30) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-title,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-result,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-breakdown b,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-line,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-foot,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-date,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-stat span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-mini-stats span {
            color: var(--mcms-um-muted) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-card[data-tone="positive"] { border-color: rgba(216,25,63,.62) !important; box-shadow: inset 4px 0 var(--mcms-um-red) !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-card[data-tone="negative"] { border-color: rgba(255,139,114,.68) !important; box-shadow: inset 4px 0 var(--mcms-um-red-hot) !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-card[data-tone="neutral"] { border-color: rgba(255,211,106,.66) !important; box-shadow: inset 4px 0 var(--mcms-um-amber) !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-chart {
            border-color: #45643c !important;
            border-radius: 4px !important;
            background: #080a0e !important;
            filter: sepia(.25) hue-rotate(42deg) saturate(.78) brightness(.9) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-title {
            color: var(--mcms-um-white-strong) !important;
            text-shadow: 0 0 5px rgba(216,25,63,.25) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-result {
            border: 1px solid var(--mcms-um-ink) !important;
            border-radius: 3px !important;
            background: var(--mcms-um-amber) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-breakdown b,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-head,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-count {
            color: var(--mcms-um-amber) !important;
            text-shadow: 0 0 4px rgba(255,211,106,.20) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-mini-stats span {
            border: 1px solid rgba(111,160,79,.28) !important;
            border-radius: 3px !important;
            background: rgba(49,79,42,.28) !important;
            color: var(--mcms-um-muted) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-mini-stats b {
            color: var(--mcms-um-white-strong) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-status[data-tone="good"] {
            border-color: rgba(216,25,63,.54) !important;
            color: var(--mcms-um-white-strong) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-status[data-tone="bad"] {
            border-color: rgba(255,139,114,.58) !important;
            color: #ffc1b4 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-discord-status[data-tone="busy"] {
            border-color: rgba(255,211,106,.58) !important;
            color: #ffe6aa !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-state {
            border: 1px solid rgba(111,160,79,.35) !important;
            border-radius: 3px !important;
            background: #0b160d !important;
            color: var(--mcms-um-muted) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-state.mcms-running {
            border-color: var(--mcms-um-amber) !important;
            background: var(--mcms-um-amber) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-entry.mcms-current {
            border-color: var(--mcms-um-amber) !important;
            background: rgba(255,211,106,.09) !important;
            box-shadow: inset 3px 0 0 var(--mcms-um-amber) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-footer {
            border-top: 1px solid rgba(118,171,82,.36) !important;
            color: #9fb68f !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-build {
            color: var(--mcms-um-amber) !important;
            letter-spacing: .45px !important;
            text-shadow: 0 0 4px rgba(255,211,106,.20) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.toastId} {
            border: 2px solid #607a50 !important;
            border-radius: 5px !important;
            background:
                repeating-linear-gradient(0deg, rgba(216,25,63,.025) 0 1px, transparent 1px 4px),
                linear-gradient(180deg, rgba(19,32,20,.98), rgba(7,15,9,.98)) !important;
            color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 4px 0 0 var(--mcms-um-red), inset 0 0 12px rgba(216,25,63,.06), 0 8px 18px rgba(0,0,0,.56) !important;
            font-family: "Arial Narrow", "Roboto Condensed", "Segoe UI", Arial, sans-serif !important;
            letter-spacing: .35px !important;
            text-shadow: 0 0 5px rgba(216,25,63,.34) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.cleanExitId} {
            border: 2px solid #607a50 !important;
            border-radius: 4px !important;
            background: #0a150c !important;
            color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 4px 0 0 var(--mcms-um-amber), 0 0 12px rgba(216,25,63,.16) !important;
            font-family: "Arial Narrow", "Roboto Condensed", "Segoe UI", Arial, sans-serif !important;
            letter-spacing: .35px !important;
            text-shadow: 0 0 4px rgba(216,25,63,.28) !important;
        }html[data-mcms-ui-theme="umbrella"] .mcms-alliance-credit-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-mission-age-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-unit-commitment-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-transport-watcher-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-resource-gap-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-stuck-mission-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-mission-spawn-label {
            border-radius: 3px !important;
            font-family: "Arial Narrow", "Roboto Condensed", "Segoe UI", Arial, sans-serif !important;
            letter-spacing: .25px !important;
            backdrop-filter: blur(3px) saturate(.75) !important;
        }html[data-mcms-ui-theme="umbrella"] .mcms-mission-spawn-label {
            border-color: var(--mcms-um-red) !important;
            background: rgba(5,15,8,.95) !important;
            color: var(--mcms-um-white-strong) !important;
            box-shadow: inset 3px 0 0 var(--mcms-um-amber), 0 0 13px rgba(216,25,63,.25) !important;
            text-shadow: 0 0 5px rgba(216,25,63,.40) !important;
        }html[data-mcms-ui-theme="umbrella"] .mcms-transport-watcher-count {
            border-color: var(--mcms-um-ink) !important;
            background: var(--mcms-um-amber) !important;
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-desktop,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-tablet,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-mobile,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-text,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-text,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy strong,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: var(--mcms-um-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: rgba(6,16,8,.78) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-meta {
            font-size: 8px !important;
            line-height: 1.28 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} button:focus-visible {
            outline: 2px solid var(--mcms-um-amber) !important;
            outline-offset: 2px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} button:disabled {
            border-color: #525862 !important;
            background: #171a20 !important;
            color: #b7bdc6 !important;
            box-shadow: none !important;
            filter: saturate(.35) !important;
            opacity: .78 !important;
            text-shadow: none !important;
            cursor: not-allowed !important;
            animation: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled .mcms-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled .mcms-text,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled strong,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled small {
            color: #b7bdc6 !important;
            text-shadow: none !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 9px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 8.5px !important;
        }
        @keyframes mcmsUmbrellaBoot {
            0% { opacity: 0; transform: scaleY(.08) scaleX(.96); filter: brightness(2.1) contrast(1.4); }
            35% { opacity: .88; transform: scaleY(.72) scaleX(1.01); filter: brightness(1.45) contrast(1.2); }
            62% { opacity: 1; transform: scaleY(1.015) scaleX(.998); filter: brightness(.92) contrast(1.08); }
            100% { opacity: 1; transform: scale(1); filter: none; }
        }
        @keyframes mcmsUmbrellaDataIn {
            0% { opacity: .18; transform: translateY(3px); filter: brightness(1.5); }
            55% { opacity: .86; transform: translateY(-1px); filter: brightness(1.12); }
            100% { opacity: 1; transform: translateY(0); filter: none; }
        }
        @keyframes mcmsUmbrellaPower {
            0%, 100% { filter: brightness(1); }
            48% { filter: brightness(1); }
            50% { filter: brightness(1.10); }
            52% { filter: brightness(.97); }
            54% { filter: brightness(1.05); }
        }
        @keyframes mcmsUmbrellaSweep {
            0% { transform: translateX(0); opacity: 0; }
            8% { opacity: 1; }
            62% { opacity: .85; }
            72%, 100% { transform: translateX(560%); opacity: 0; }
        }
        @media (prefers-reduced-motion: reduce) {html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}.mcms-open,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::after,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
                animation: none !important;
            }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button {
                transition: none !important;
            }
        }html[data-mcms-ui-theme="umbrella"] {
            --mcms-um-red-deep: #8f0c28;
            --mcms-um-red-bright: #df2148;
            --mcms-um-steel: #5f6670;
            --mcms-um-paper: #eef1f4;
            --mcms-um-paper-2: #dfe3e8;
            --mcms-um-paper-text: #11141a;
            --mcms-um-rule: #b5bbc4;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-shell {
            border: 1px solid #6a707a !important;
            border-radius: 2px !important;
            background:
                linear-gradient(135deg, transparent 0 9px, rgba(255,255,255,.05) 9px 10px, transparent 10px),
                linear-gradient(180deg, rgba(24,28,35,.99), rgba(8,10,14,.99)) !important;
            box-shadow: inset 5px 0 0 var(--mcms-um-red), inset 0 1px 0 rgba(255,255,255,.11), 0 9px 22px rgba(0,0,0,.55) !important;
            clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px)) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn {
            background:
                repeating-conic-gradient(from 0deg at 50% 52%, rgba(255,255,255,.06) 0 12deg, transparent 12deg 24deg),
                linear-gradient(180deg, #cb1639, #850c26) !important;
            color: #ffffff !important;
            border-right-color: rgba(255,255,255,.20) !important;
            text-shadow: 0 2px 3px rgba(0,0,0,.58) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            background: #f7f8fa !important;
            color: #9b0d2b !important;
            text-shadow: none !important;
            box-shadow: inset 0 0 0 2px #c8102e !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {
            border-top-color: rgba(255,255,255,.20) !important;
            background: #12151b !important;
            color: #ffffff !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:focus-visible {
            background: var(--mcms-um-amber) !important;
            color: #11141a !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border-radius: 1px !important;
            border-color: #5e6570 !important;
            background: linear-gradient(180deg, #22262e, #101319) !important;
            color: #f3f5f7 !important;
            box-shadow: inset 3px 0 0 #8d1029, inset 0 1px rgba(255,255,255,.08), 0 4px 9px rgba(0,0,0,.42) !important;
            text-shadow: none !important;
            clip-path: polygon(0 0, calc(100% - 5px) 0, 100% 5px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn:hover {
            transform: translateX(2px) !important;
            border-color: #ffffff !important;
            background: linear-gradient(180deg, #343944, #171a20) !important;
            color: #ffffff !important;
            box-shadow: inset 4px 0 0 var(--mcms-um-red-bright), 0 0 0 1px rgba(255,255,255,.10), 0 5px 12px rgba(0,0,0,.48) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            border-color: #7f0d25 !important;
            background: linear-gradient(180deg, #d91d43, #a30d2d) !important;
            color: #ffffff !important;
            box-shadow: inset 4px 0 0 #ffffff, inset 0 0 0 1px rgba(255,255,255,.10), 0 0 13px rgba(216,25,63,.25), 0 5px 11px rgba(0,0,0,.50) !important;
            animation: mcmsUmbrellaAlert 4.2s ease-in-out infinite !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            border-color: #ffffff !important;
            background: #ffffff !important;
            color: #9c0d2b !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} {
            border: 1px solid #737a84 !important;
            border-radius: 2px !important;
            background:
                linear-gradient(135deg, transparent 0 13px, rgba(255,255,255,.035) 13px 14px, transparent 14px),
                radial-gradient(circle at 86% 4%, rgba(200,16,46,.10), transparent 24%),
                linear-gradient(180deg, rgba(20,23,29,.995), rgba(7,9,13,.995)) !important;
            color: #f6f7f9 !important;
            box-shadow: inset 6px 0 0 #b10e30, inset 0 0 0 1px #1f242c, 0 20px 48px rgba(0,0,0,.70) !important;
            clip-path: polygon(0 0, calc(100% - 13px) 0, 100% 13px, 100% 100%, 13px 100%, 0 calc(100% - 13px)) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}.mcms-open {
            animation: mcmsUmbrellaPanelIn 250ms cubic-bezier(.18,.78,.25,1) both !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header {
            margin: -3px -3px 10px -3px !important;
            padding: 7px 7px 8px 7px !important;
            border: 1px solid #777e88 !important;
            border-left: 6px solid #c8102e !important;
            border-bottom: 3px solid #c8102e !important;
            border-radius: 1px !important;
            background:
                linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px) 0 0 / 18px 100%,
                linear-gradient(180deg, #2b2f37, #14171d) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.10), inset 0 -1px #05070a !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::before {
            content: 'UMBRELLA CORPORATION // CONTAINMENT COMMAND SYSTEM' !important;
            right: 8px !important;
            top: 3px !important;
            color: rgba(255,255,255,.55) !important;
            font-size: 5.5px !important;
            letter-spacing: .7px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::after {
            width: 16% !important;
            background: linear-gradient(90deg, transparent, rgba(255,255,255,.16), rgba(216,25,63,.22), transparent) !important;
            animation: mcmsUmbrellaScan 5.8s linear infinite !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-title {
            color: #ffffff !important;
            font-weight: 950 !important;
            letter-spacing: 1.2px !important;
            text-shadow: 2px 0 0 rgba(216,25,63,.55) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-subtitle {
            color: #d3d8df !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tabs {
            gap: 3px !important;
            border-bottom: 1px solid #646b75 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn {
            border-radius: 1px !important;
            border-color: #555c66 !important;
            background: linear-gradient(180deg, #252932, #11141a) !important;
            color: #e8ebef !important;
            text-shadow: none !important;
            clip-path: polygon(0 0, calc(100% - 5px) 0, 100% 5px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn:focus-visible {
            border-color: #ffffff !important;
            background: #363b45 !important;
            color: #ffffff !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color: #8e0c28 !important;
            background: linear-gradient(180deg, #d81d43, #a10d2d) !important;
            color: #ffffff !important;
            box-shadow: inset 0 -3px 0 #ffffff, 0 0 9px rgba(216,25,63,.20) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active {
            animation: mcmsUmbrellaRecordIn 180ms ease-out both !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-section-label {
            min-height: 24px !important;
            padding: 5px 8px 5px 23px !important;
            border: 1px solid #aeb4bd !important;
            border-left: 6px solid #c8102e !important;
            border-radius: 1px !important;
            background:
                repeating-linear-gradient(135deg, rgba(0,0,0,.035) 0 4px, transparent 4px 8px),
                linear-gradient(180deg, #f4f6f8, #dfe3e8) !important;
            color: #11141a !important;
            letter-spacing: .85px !important;
            text-shadow: none !important;
            box-shadow: inset 0 -1px rgba(0,0,0,.10) !important;
            clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-section-label::before {
            content: '☣' !important;
            left: 7px !important;
            color: #a60d2c !important;
            font-size: 11px !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            border-radius: 1px !important;
            border-color: #555c66 !important;
            background: linear-gradient(180deg, #252932, #11141a) !important;
            color: #f1f3f6 !important;
            text-shadow: none !important;
            box-shadow: inset 3px 0 0 #791026, inset 0 1px rgba(255,255,255,.06), 0 3px 8px rgba(0,0,0,.34) !important;
            clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color: #ffffff !important;
            background: #343943 !important;
            color: #ffffff !important;
            box-shadow: inset 4px 0 0 #d91c42, 0 4px 10px rgba(0,0,0,.40) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color: #8a0c27 !important;
            background: linear-gradient(180deg, #db1d43, #a40d2d) !important;
            color: #ffffff !important;
            box-shadow: inset 4px 0 0 #ffffff, inset 0 0 0 1px rgba(255,255,255,.08), 0 0 11px rgba(216,25,63,.20) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active * {
            color: #ffffff !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: rgba(255,255,255,.82) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-iconbox,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-pill,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-float-key {
            border-radius: 1px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} textarea {
            border: 1px solid #9299a3 !important;
            border-left: 4px solid #c8102e !important;
            border-radius: 1px !important;
            background: #f2f4f6 !important;
            color: #101319 !important;
            box-shadow: inset 0 1px 3px rgba(0,0,0,.14) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input::placeholder,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} textarea::placeholder {
            color: #626975 !important;
            opacity: 1 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select:focus,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} textarea:focus {
            border-color: #a90d2d !important;
            border-left-color: #df2148 !important;
            background: #ffffff !important;
            color: #0a0c11 !important;
            box-shadow: 0 0 0 2px rgba(216,25,63,.22), inset 0 1px 2px rgba(0,0,0,.10) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-card,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-finance-card,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-status-card,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-panel-note {
            border-radius: 1px !important;
            border-color: #adb3bc !important;
            background: linear-gradient(180deg, #f2f4f6, #dfe3e8) !important;
            color: #11141a !important;
            box-shadow: inset 4px 0 0 #b70e31, 0 3px 9px rgba(0,0,0,.28) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-card *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-finance-card *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-status-card *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-panel-note * {
            color: #11141a !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-meta {
            color: #c8ced6 !important;
            font-size: 8px !important;
            line-height: 1.3 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-card .mcms-ops-stat-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-card .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-finance-card .mcms-ops-stat-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card .mcms-sweep-meta {
            color: #4f5661 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.toastId} {
            border: 1px solid #737a84 !important;
            border-left: 6px solid #c8102e !important;
            border-radius: 1px !important;
            background: linear-gradient(180deg, #f4f6f8, #dfe3e8) !important;
            color: #11141a !important;
            box-shadow: 0 12px 28px rgba(0,0,0,.52) !important;
            text-shadow: none !important;
            clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 0 100%) !important;
        }html[data-mcms-ui-theme="umbrella"] .mcms-alliance-credit-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-mission-age-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-unit-commitment-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-transport-watcher-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-resource-gap-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-stuck-mission-badge,
        html[data-mcms-ui-theme="umbrella"] .mcms-mission-spawn-label {
            border-radius: 1px !important;
            border-color: #f2f4f6 !important;
            background: rgba(13,16,21,.96) !important;
            color: #ffffff !important;
            box-shadow: inset 3px 0 0 #c8102e, 0 5px 13px rgba(0,0,0,.48) !important;
            text-shadow: none !important;
            backdrop-filter: blur(4px) saturate(.8) !important;
        }html[data-mcms-ui-theme="umbrella"] .mcms-mission-spawn-label {
            border-color: #d6193f !important;
            box-shadow: inset 4px 0 0 #ffffff, 0 0 12px rgba(216,25,63,.24) !important;
        }html[data-mcms-ui-theme="umbrella"] .mcms-transport-watcher-count {
            border-color: #11141a !important;
            background: #ffd24a !important;
            color: #11141a !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-desktop,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-tablet,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-label-mobile,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-text,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-text {
            color: #ffffff !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} button:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-input:focus-visible,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-select:focus-visible {
            outline: 2px solid #ffd24a !important;
            outline-offset: 2px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} button:disabled {
            border-color: #555b64 !important;
            background: #1d2026 !important;
            color: #b8bec7 !important;
            box-shadow: none !important;
            opacity: .78 !important;
            filter: saturate(.25) !important;
            animation: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button:disabled * {
            color: #b8bec7 !important;
            text-shadow: none !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 9px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 8.5px !important;
        }
        @keyframes mcmsUmbrellaPanelIn {
            0% { opacity: 0; transform: translateY(7px) scale(.988); filter: grayscale(.8) contrast(1.25); }
            45% { opacity: 1; transform: translateY(-1px) scale(1.001); filter: grayscale(.15) contrast(1.08); }
            100% { opacity: 1; transform: translateY(0) scale(1); filter: none; }
        }
        @keyframes mcmsUmbrellaRecordIn {
            0% { opacity: .18; transform: translateX(-5px); clip-path: inset(0 100% 0 0); }
            58% { opacity: .86; transform: translateX(1px); clip-path: inset(0 0 0 0); }
            100% { opacity: 1; transform: translateX(0); clip-path: inset(0 0 0 0); }
        }
        @keyframes mcmsUmbrellaAlert {
            0%, 100% { filter: brightness(1); }
            48% { filter: brightness(1); }
            50% { filter: brightness(1.12); }
            52% { filter: brightness(.96); }
            54% { filter: brightness(1.05); }
        }
        @keyframes mcmsUmbrellaScan {
            0% { transform: translateX(0); opacity: 0; }
            8% { opacity: 1; }
            58% { opacity: .88; }
            70%, 100% { transform: translateX(760%); opacity: 0; }
        }
        @media (prefers-reduced-motion: reduce) {html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId}.mcms-open,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::after,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
                animation: none !important;
            }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-screen-pin-btn,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} button {
                transition: none !important;
            }
        }
        @keyframes mcmsCyberPanelIn {
            0% { opacity: 0; transform: translateY(8px) scale(.985); filter: saturate(.5) brightness(1.35); }
            45% { opacity: 1; transform: translateY(-1px) scale(1.002); filter: saturate(1.35) brightness(1.08); }
            100% { opacity: 1; transform: translateY(0) scale(1); filter: none; }
        }
        @keyframes mcmsCyberTabIn {
            0% { opacity: .22; transform: translateX(-4px); }
            55% { opacity: .85; transform: translateX(1px); }
            100% { opacity: 1; transform: translateX(0); }
        }
        @keyframes mcmsCyberSignal {
            0%, 100% { filter: brightness(1); }
            48% { filter: brightness(1); }
            50% { filter: brightness(1.18); }
            52% { filter: brightness(.94); }
            54% { filter: brightness(1.08); }
        }
        @keyframes mcmsCyberScan {
            0% { transform: translateX(-110%); opacity: 0; }
            8% { opacity: 1; }
            42% { opacity: 1; }
            50%, 100% { transform: translateX(390%); opacity: 0; }
        }
        @media (prefers-reduced-motion: reduce) {html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId}.mcms-open,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-header::after,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
                animation: none !important;
            }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.controlId} .mcms-screen-pin-btn,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} button {
                transition: none !important;
            }
        }html[data-mcms-ui-theme="factorio"] {
            --mcms-fac-orange: #df842f;
            --mcms-fac-orange-bright: #f1a14d;
            --mcms-fac-copper: #b96329;
            --mcms-fac-brass: #dfbd72;
            --mcms-fac-green: #a4cc69;
            --mcms-fac-cream: #f0dfb5;
            --mcms-fac-muted: #c1b28f;
            --mcms-fac-steel: #363934;
            --mcms-fac-steel-hi: #4a4d47;
            --mcms-fac-panel: #222420;
            --mcms-fac-panel-deep: #151714;
            --mcms-fac-ink: #17130e;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId},
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} *,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId},
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} * {
            font-family: "Arial Narrow", "Roboto Condensed", "Segoe UI", Arial, sans-serif;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} {
            filter: drop-shadow(0 8px 16px rgba(0,0,0,.48)) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-shell {
            gap: 5px !important;
            padding: 5px !important;
            border: 2px solid #171916 !important;
            border-top-color: #676961 !important;
            border-left-color: #555750 !important;
            border-radius: 4px !important;
            background:
                radial-gradient(circle at 7px 7px, #9b9d95 0 1.5px, #242622 1.7px 3px, transparent 3.2px),
                radial-gradient(circle at calc(100% - 7px) 7px, #9b9d95 0 1.5px, #242622 1.7px 3px, transparent 3.2px),
                repeating-linear-gradient(135deg, rgba(255,255,255,.018) 0 1px, transparent 1px 8px),
                linear-gradient(160deg, #484b45, #252723 60%, #171916) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.08), inset 0 -12px 22px rgba(0,0,0,.24), 0 0 0 1px rgba(226,132,46,.28) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-menu-btn {
            border: 1px solid #b86a2b !important;
            border-radius: 3px !important;
            background:
                repeating-linear-gradient(135deg, rgba(240,149,51,.16) 0 5px, transparent 5px 10px),
                linear-gradient(155deg, #4b4d47, #232521) !important;
            color: var(--mcms-fac-orange-bright) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.10), inset 0 -4px 8px rgba(0,0,0,.30) !important;
            text-shadow: 0 1px 1px #000 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            border-color: #f0a24e !important;
            background: linear-gradient(155deg, #5b574d, #302a22) !important;
            color: #ffd18a !important;
            box-shadow: inset 0 1px rgba(255,255,255,.13), 0 0 12px rgba(226,129,40,.28) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {
            border-top-color: rgba(230,151,72,.55) !important;
            background: #1c1e1b !important;
            color: #d6bd8d !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:focus-visible {
            background: #2b2d28 !important;
            color: #f0a24e !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-floating-filter { gap: 5px !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border: 1px solid #55584f !important;
            border-top-color: #777970 !important;
            border-radius: 3px !important;
            background:
                linear-gradient(180deg, rgba(255,255,255,.045), transparent 42%),
                linear-gradient(145deg, #3b3e38, #1e201d) !important;
            color: var(--mcms-fac-cream) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.07), inset 0 -4px 8px rgba(0,0,0,.28), 0 2px 5px rgba(0,0,0,.30) !important;
            text-shadow: 0 1px 1px rgba(0,0,0,.92) !important;
            transition: transform 130ms ease, border-color 130ms ease, background 130ms ease, box-shadow 130ms ease !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-screen-pin-btn:hover {
            transform: translateY(-1px) !important;
            border-color: #d47b2d !important;
            background: linear-gradient(145deg, #514b3f, #29261f) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.09), 0 0 9px rgba(215,117,34,.18) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-key {
            border: 1px solid #877356 !important;
            border-radius: 2px !important;
            background: #1c1e1b !important;
            color: #e5c889 !important;
            box-shadow: inset 0 1px rgba(255,255,255,.06) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
            border-color: #f1a34f !important;
            background:
                repeating-linear-gradient(135deg, rgba(255,255,255,.08) 0 2px, transparent 2px 9px),
                linear-gradient(145deg, #f0a04a, #c96b26) !important;
            color: var(--mcms-fac-ink) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.28), inset 0 -5px 10px rgba(104,42,8,.18), 0 0 12px rgba(225,126,38,.30) !important;
            text-shadow: none !important;
            animation: mcmsFactorioMachinePulse 3.8s steps(1,end) infinite !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on *,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            color: var(--mcms-fac-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on .mcms-float-key {
            border-color: rgba(23,19,14,.56) !important;
            background: rgba(255,236,190,.46) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-quick {
            border-left: 4px solid #d0782b !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-custom {
            border-left: 4px solid #91b95d !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} {
            border: 2px solid #171916 !important;
            border-top-color: #64675f !important;
            border-left-color: #50534c !important;
            border-radius: 5px !important;
            background:
                radial-gradient(circle at 8px 8px, #979990 0 1.5px, #20221f 1.7px 3px, transparent 3.2px),
                radial-gradient(circle at calc(100% - 8px) 8px, #979990 0 1.5px, #20221f 1.7px 3px, transparent 3.2px),
                repeating-linear-gradient(135deg, rgba(255,255,255,.014) 0 1px, transparent 1px 9px),
                linear-gradient(155deg, #393c36, #1c1e1b 58%, #131512) !important;
            color: var(--mcms-fac-cream) !important;
            box-shadow: 0 22px 55px rgba(0,0,0,.64), 0 0 0 1px rgba(214,120,38,.30), inset 0 1px rgba(255,255,255,.07), inset 0 -28px 48px rgba(0,0,0,.22) !important;
            scrollbar-color: #b96a2a #171916 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId}.mcms-open {
            animation: mcmsFactorioPanelIn 240ms cubic-bezier(.17,.75,.24,1) both !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId}::-webkit-scrollbar { width: 9px !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId}::-webkit-scrollbar-track { background: #171916 !important; border-left: 1px solid #44473f !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId}::-webkit-scrollbar-thumb { background: #b96a2a !important; border: 2px solid #171916 !important; border-radius: 2px !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-header {
            position: relative !important;
            overflow: hidden !important;
            padding-top: 15px !important;
            border-bottom: 2px solid #9a5623 !important;
            background:
                repeating-linear-gradient(135deg, #df842f 0 10px, #252723 10px 20px) 0 0 / 100% 8px no-repeat,
                linear-gradient(180deg, #434640, #242622) !important;
            box-shadow: inset 0 -8px 13px rgba(0,0,0,.24) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-header::before {
            content: "AUTOMATED COMMAND NETWORK  //  ASSEMBLY CONTROL" !important;
            position: absolute !important;
            top: 9px !important;
            left: 12px !important;
            color: rgba(240,223,181,.67) !important;
            font: 900 6px/1 Consolas, monospace !important;
            letter-spacing: 1.05px !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-header::after {
            content: "" !important;
            position: absolute !important;
            left: -24% !important;
            bottom: 0 !important;
            width: 22% !important;
            height: 2px !important;
            background: linear-gradient(90deg, transparent, #ffae56, transparent) !important;
            box-shadow: 0 0 8px rgba(240,143,48,.72) !important;
            animation: mcmsFactorioConveyorScan 5.6s linear infinite !important;
            pointer-events: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-drag-handle {
            color: #bfaa82 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-title {
            color: var(--mcms-fac-cream) !important;
            font-weight: 950 !important;
            letter-spacing: .35px !important;
            text-shadow: 0 2px 2px #000, 2px 2px 0 rgba(173,86,28,.34) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-subtitle {
            color: var(--mcms-fac-muted) !important;
            letter-spacing: .45px !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-reset-panel,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-close {
            border: 1px solid #65685f !important;
            border-radius: 2px !important;
            background: #20221f !important;
            color: #e7d1a1 !important;
            box-shadow: inset 0 1px rgba(255,255,255,.06) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-reset-panel:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-close:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-reset-panel:focus-visible,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-close:focus-visible {
            border-color: #ec9743 !important;
            background: #df842f !important;
            color: var(--mcms-fac-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tabs {
            gap: 3px !important;
            padding: 4px !important;
            border-bottom: 1px solid #4d5048 !important;
            background: #181a17 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tab-btn {
            border: 1px solid #494c45 !important;
            border-radius: 2px !important;
            background: linear-gradient(180deg, #343731, #222420) !important;
            color: #d5c49d !important;
            box-shadow: inset 0 1px rgba(255,255,255,.05) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tab-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tab-btn:focus-visible {
            border-color: #bd6b2a !important;
            color: #f4d7a1 !important;
            background: linear-gradient(180deg, #47453e, #2b2923) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color: #f0aa5a !important;
            background: linear-gradient(180deg, #f0a04b, #cb6d28) !important;
            color: var(--mcms-fac-ink) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.28), inset 0 -4px 8px rgba(96,40,9,.18) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active {
            animation: mcmsFactorioRecordIn 190ms ease-out both !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-section-label {
            position: relative !important;
            min-height: 25px !important;
            padding: 7px 10px 6px 28px !important;
            border: 1px solid #5b5e56 !important;
            border-left: 5px solid #d97b2c !important;
            border-radius: 2px !important;
            background:
                repeating-linear-gradient(135deg, rgba(230,139,45,.16) 0 5px, transparent 5px 10px),
                linear-gradient(180deg, #3c3f39, #252723) !important;
            color: #f0d8aa !important;
            font-size: 8px !important;
            font-weight: 950 !important;
            letter-spacing: .8px !important;
            text-transform: uppercase !important;
            box-shadow: inset 0 1px rgba(255,255,255,.06) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-section-label::before {
            content: "⚙" !important;
            position: absolute !important;
            left: 8px !important;
            top: 50% !important;
            transform: translateY(-50%) !important;
            color: #f1a14d !important;
            font-size: 11px !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            border: 1px solid #55584f !important;
            border-top-color: #73766d !important;
            border-radius: 3px !important;
            background: linear-gradient(180deg, #3c3f39, #222420) !important;
            color: var(--mcms-fac-cream) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.06), inset 0 -4px 8px rgba(0,0,0,.24) !important;
            text-shadow: 0 1px 1px rgba(0,0,0,.90) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pin-btn:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color: #d27a2c !important;
            background: linear-gradient(180deg, #4c493f, #2c2922) !important;
            color: #ffe0a7 !important;
            box-shadow: inset 0 1px rgba(255,255,255,.08), 0 0 9px rgba(211,116,33,.16) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color: #f1a653 !important;
            background:
                repeating-linear-gradient(135deg, rgba(255,255,255,.065) 0 2px, transparent 2px 10px),
                linear-gradient(145deg, #efa04a, #c96b28) !important;
            color: var(--mcms-fac-ink) !important;
            box-shadow: inset 0 1px rgba(255,255,255,.27), inset 0 -5px 9px rgba(99,40,7,.18), 0 0 10px rgba(225,127,39,.24) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active *,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on *,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active *,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on *,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active * {
            color: var(--mcms-fac-ink) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-ui-theme-copy small {
            color: #3e2a16 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-iconbox,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pill {
            border-color: #887459 !important;
            border-radius: 2px !important;
            background: #1c1e1b !important;
            color: #e7c98b !important;
            box-shadow: inset 0 1px rgba(255,255,255,.04) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pill {
            min-width: 29px !important;
            padding: 2px 6px !important;
            color: #f0d29a !important;
            font-size: 8.5px !important;
            line-height: 1.1 !important;
            letter-spacing: .5px !important;
            text-align: center !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-iconbox,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-iconbox,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active .mcms-iconbox,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on .mcms-iconbox,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-iconbox {
            border-color: #2a2118 !important;
            background: linear-gradient(180deg, #2e302b, #171916) !important;
            color: #f5b55f !important;
            box-shadow: inset 0 1px rgba(255,255,255,.08), 0 1px 2px rgba(0,0,0,.30) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-pill,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-pill,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active .mcms-pill,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on .mcms-pill,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active .mcms-pill {
            border-color: #37291a !important;
            background: linear-gradient(180deg, #30322d, #1a1c19) !important;
            color: #f7d99b !important;
            box-shadow: inset 0 1px rgba(255,255,255,.08), 0 1px 2px rgba(0,0,0,.28) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-select,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} textarea {
            border: 1px solid #686b62 !important;
            border-radius: 2px !important;
            background: #151714 !important;
            color: #f1dfb4 !important;
            caret-color: #f0a14c !important;
            box-shadow: inset 0 2px 8px rgba(0,0,0,.42), 0 1px rgba(255,255,255,.035) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-input::placeholder,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} textarea::placeholder {
            color: #aaa080 !important;
            opacity: 1 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-select:focus,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} textarea:focus {
            border-color: #e08a34 !important;
            background: #1c1d19 !important;
            box-shadow: inset 0 2px 8px rgba(0,0,0,.38), 0 0 0 2px rgba(224,132,47,.18) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-select option {
            background: #1c1e1b !important;
            color: #f1dfb4 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-card,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-finance-card,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-history-older,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-discord-empty,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-sweep-stat,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-sweep-card,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-status-card,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-panel-note {
            border: 1px solid #4f524a !important;
            border-left: 4px solid #a65b25 !important;
            border-radius: 2px !important;
            background:
                linear-gradient(180deg, rgba(255,255,255,.025), transparent 40%),
                linear-gradient(145deg, #30332e, #1b1d1a) !important;
            color: #ead8af !important;
            box-shadow: inset 0 1px rgba(255,255,255,.045), inset 0 -6px 12px rgba(0,0,0,.16) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-status {
            border-color: #9c5a26 !important;
            background: linear-gradient(145deg, #3e392f, #24231e) !important;
            color: #f0d6a1 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-row-label,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-bookmark-name,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-entry-title,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-profile-main strong,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-stat-value,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-entry-value {
            color: #f1dfb6 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-sweep-state,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-sweep-stat span,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-sweep-meta {
            color: #bdb08e !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-footer {
            border-top-color: #4d5048 !important;
            background: #171916 !important;
            color: #b4a784 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-build {
            border-color: #8c592e !important;
            background: #29251f !important;
            color: #e4b675 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.toastId} {
            border: 2px solid #181a17 !important;
            border-left: 6px solid #df842f !important;
            border-radius: 3px !important;
            background:
                repeating-linear-gradient(135deg, rgba(230,139,45,.10) 0 4px, transparent 4px 9px),
                linear-gradient(145deg, #40433d, #20221e) !important;
            color: #f1dfb4 !important;
            box-shadow: 0 12px 30px rgba(0,0,0,.56), inset 0 1px rgba(255,255,255,.08) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.cleanExitId} {
            border-color: #c56c29 !important;
            border-radius: 3px !important;
            background: linear-gradient(145deg, #3c3f39, #20221e) !important;
            color: #f0d7a6 !important;
        }html[data-mcms-ui-theme="factorio"] .mcms-alliance-credit-badge,
        html[data-mcms-ui-theme="factorio"] .mcms-mission-age-badge,
        html[data-mcms-ui-theme="factorio"] .mcms-unit-commitment-badge,
        html[data-mcms-ui-theme="factorio"] .mcms-transport-watcher-badge,
        html[data-mcms-ui-theme="factorio"] .mcms-resource-gap-badge,
        html[data-mcms-ui-theme="factorio"] .mcms-stuck-mission-badge,
        html[data-mcms-ui-theme="factorio"] .mcms-mission-spawn-label {
            border-radius: 2px !important;
            font-family: "Arial Narrow", "Segoe UI", sans-serif !important;
            letter-spacing: .35px !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} button:focus-visible,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} button:focus-visible,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-input:focus-visible,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-select:focus-visible {
            outline: 2px solid #ffd06f !important;
            outline-offset: 2px !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} button:disabled,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} button:disabled {
            border-color: #4c4f48 !important;
            background: #252723 !important;
            color: #a9a187 !important;
            box-shadow: none !important;
            opacity: .76 !important;
            filter: grayscale(.45) saturate(.45) !important;
            animation: none !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} button:disabled * {
            color: #a9a187 !important;
            text-shadow: none !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-tablet-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 9px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ui-theme-copy small,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-profile-main span,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-ops-entry-meta {
            font-size: 8.5px !important;
        }
        @keyframes mcmsFactorioPanelIn {
            0% { opacity: 0; transform: translateY(7px) scale(.987); filter: contrast(1.22) brightness(.78); }
            45% { opacity: 1; transform: translateY(-1px) scale(1.002); filter: contrast(1.08) brightness(1.05); }
            100% { opacity: 1; transform: translateY(0) scale(1); filter: none; }
        }
        @keyframes mcmsFactorioRecordIn {
            0% { opacity: .18; transform: translateX(-5px); clip-path: inset(0 100% 0 0); }
            58% { opacity: .88; transform: translateX(1px); clip-path: inset(0 0 0 0); }
            100% { opacity: 1; transform: translateX(0); clip-path: inset(0 0 0 0); }
        }
        @keyframes mcmsFactorioConveyorScan {
            0% { transform: translateX(0); opacity: 0; }
            8% { opacity: 1; }
            58% { opacity: .88; }
            72%, 100% { transform: translateX(650%); opacity: 0; }
        }
        @keyframes mcmsFactorioMachinePulse {
            0%, 100% { filter: brightness(1); }
            46% { filter: brightness(1); }
            48% { filter: brightness(1.10); }
            50% { filter: brightness(.97); }
            52% { filter: brightness(1.05); }
        }
        @media (prefers-reduced-motion: reduce) {html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId}.mcms-open,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-header::after,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on {
                animation: none !important;
            }html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.controlId} .mcms-screen-pin-btn,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} button {
                transition: none !important;
            }
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat .mcms-ops-stat-label,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card .mcms-sweep-state,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card .mcms-sweep-stat span,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card .mcms-sweep-meta,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-finance-card .mcms-ops-stat-label {
            color: #4b5360 !important;
            opacity: 1 !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-stat .mcms-ops-stat-value,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry .mcms-ops-entry-title,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-ops-entry .mcms-ops-entry-value,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card .mcms-sweep-title,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-sweep-card .mcms-sweep-stat b {
            color: #11141a !important;
            opacity: 1 !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme] {
            --mcms-sem-blue: #8fd3ff;
            --mcms-sem-blue-border: rgba(100,181,246,.88);
            --mcms-sem-blue-bg: rgba(6,31,50,.92);
            --mcms-sem-green: #79f2a3;
            --mcms-sem-green-border: rgba(76,225,126,.84);
            --mcms-sem-green-bg: rgba(7,31,18,.92);
            --mcms-sem-yellow: #ffe082;
            --mcms-sem-yellow-border: rgba(255,213,79,.84);
            --mcms-sem-yellow-bg: rgba(54,41,5,.93);
            --mcms-sem-orange: #ffd0a3;
            --mcms-sem-orange-border: rgba(255,133,46,.96);
            --mcms-sem-orange-bg: rgba(80,30,3,.94);
            --mcms-sem-red: #ffe3e3;
            --mcms-sem-red-border: rgba(255,72,72,1);
            --mcms-sem-red-bg: rgba(96,8,12,.96);
            --mcms-sem-cyan: #aeeeff;
            --mcms-sem-cyan-border: rgba(98,219,255,.88);
            --mcms-sem-cyan-bg: rgba(4,22,34,.94);
            --mcms-sem-ink: #11141a;
        }html[data-mcms-ui-theme] .mcms-alliance-text,
        html[data-mcms-ui-theme] .mcms-mission-spawn-label.mcms-alliance-text {
            color:#76c7ff !important;
            text-shadow:0 0 7px rgba(66,169,255,.24) !important;
        }html[data-mcms-ui-theme] .mcms-alliance-credit-badge.mcms-credit-qualified {
            border-color: var(--mcms-sem-green-border) !important;
            background: var(--mcms-sem-green-bg) !important;
            color: var(--mcms-sem-green) !important;
            box-shadow: inset 3px 0 0 #35d778, 0 2px 8px rgba(0,0,0,.34), 0 0 8px rgba(53,215,120,.18) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92), 0 0 5px rgba(53,215,120,.24) !important;
        }html[data-mcms-ui-theme] .mcms-alliance-credit-badge.mcms-credit-unqualified {
            border-color: var(--mcms-sem-yellow-border) !important;
            background: var(--mcms-sem-yellow-bg) !important;
            color: var(--mcms-sem-yellow) !important;
            box-shadow: inset 3px 0 0 #ffd54f, 0 2px 8px rgba(0,0,0,.34), 0 0 8px rgba(255,213,79,.14) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92), 0 0 5px rgba(255,213,79,.18) !important;
        }html[data-mcms-ui-theme] .mcms-mission-age-badge {
            border-color: var(--mcms-sem-blue-border) !important;
            background: var(--mcms-sem-blue-bg) !important;
            color: var(--mcms-sem-blue) !important;
            box-shadow: 0 2px 7px rgba(0,0,0,.28), 0 0 7px rgba(100,181,246,.17) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92) !important;
        }html[data-mcms-ui-theme] .mcms-mission-age-badge.mcms-age-aged {
            border-color: var(--mcms-sem-yellow-border) !important;
            background: var(--mcms-sem-yellow-bg) !important;
            color: var(--mcms-sem-yellow) !important;
            box-shadow: 0 2px 7px rgba(0,0,0,.30), 0 0 9px rgba(255,193,7,.28) !important;
        }html[data-mcms-ui-theme] .mcms-mission-age-badge.mcms-age-high {
            border-color: var(--mcms-sem-orange-border) !important;
            background: var(--mcms-sem-orange-bg) !important;
            color: var(--mcms-sem-orange) !important;
            box-shadow: 0 2px 7px rgba(0,0,0,.32), 0 0 10px rgba(255,111,0,.38) !important;
        }html[data-mcms-ui-theme] .mcms-mission-age-badge.mcms-age-critical {
            border-color: var(--mcms-sem-red-border) !important;
            background: var(--mcms-sem-red-bg) !important;
            color: var(--mcms-sem-red) !important;
            box-shadow: 0 2px 8px rgba(0,0,0,.36), 0 0 12px rgba(255,45,45,.54) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.94), 0 0 5px rgba(255,104,104,.40) !important;
        }html[data-mcms-ui-theme] .mcms-unit-commitment-badge.mcms-unit-personal {
            border-color: var(--mcms-sem-yellow-border) !important;
            background: var(--mcms-sem-yellow-bg) !important;
            color: var(--mcms-sem-yellow) !important;
            box-shadow: inset 3px 0 0 #ffd54f, 0 2px 7px rgba(0,0,0,.28) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92) !important;
        }html[data-mcms-ui-theme] .mcms-unit-commitment-badge.mcms-unit-alliance {
            border-color: var(--mcms-sem-green-border) !important;
            background: var(--mcms-sem-green-bg) !important;
            color: var(--mcms-sem-green) !important;
            box-shadow: inset 3px 0 0 #35d778, 0 2px 7px rgba(0,0,0,.28) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92) !important;
        }html[data-mcms-ui-theme] .mcms-transport-watcher-badge.mcms-transport-patient {
            border-color: rgba(255,194,71,.98) !important;
            background: linear-gradient(145deg, rgba(86,46,3,.97), rgba(27,17,6,.97)) !important;
            color: #fff1c7 !important;
            box-shadow: 0 0 0 2px rgba(0,0,0,.50), 0 0 12px rgba(255,145,24,.58) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92) !important;
        }html[data-mcms-ui-theme] .mcms-transport-watcher-badge.mcms-transport-prisoner {
            border-color: rgba(255,120,38,1) !important;
            background: linear-gradient(145deg, rgba(105,31,2,.98), rgba(31,10,3,.98)) !important;
            color: #ffd0a5 !important;
            box-shadow: 0 0 0 2px rgba(0,0,0,.52), 0 0 13px rgba(255,93,20,.64) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.94) !important;
        }html[data-mcms-ui-theme] .mcms-transport-watcher-count {
            border-color: rgba(255,255,255,.90) !important;
            background: #ffb300 !important;
            color: var(--mcms-sem-ink) !important;
            box-shadow: 0 1px 4px rgba(0,0,0,.70) !important;
            text-shadow: none !important;
        }html[data-mcms-ui-theme] .mcms-resource-gap-badge {
            border-color: rgba(255,146,49,.94) !important;
            background: rgba(58,22,3,.94) !important;
            color: #ffd29a !important;
            box-shadow: 0 0 0 2px rgba(0,0,0,.42), 0 2px 9px rgba(255,112,20,.30) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.92) !important;
        }html[data-mcms-ui-theme] .mcms-resource-gap-badge.mcms-gap-uncovered {
            border-color: #ff574d !important;
            background: rgba(91,11,7,.96) !important;
            color: #ffffff !important;
            box-shadow: 0 0 0 2px rgba(0,0,0,.46), 0 0 12px rgba(255,45,35,.48) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.94) !important;
        }html[data-mcms-ui-theme] .mcms-stuck-mission-badge {
            border-color: rgba(255,86,72,.84) !important;
            background: rgba(90,10,8,.94) !important;
            color: #ffd7d2 !important;
            box-shadow: 0 0 11px rgba(255,53,39,.34) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.94) !important;
        }html[data-mcms-ui-theme] .mcms-stuck-mission-badge.mcms-stuck-severe {
            border-color: #ff3d2e !important;
            background: rgba(130,7,4,.97) !important;
            color: #ffffff !important;
            box-shadow: 0 0 15px rgba(255,53,39,.62) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.96) !important;
        }html[data-mcms-ui-theme] .mcms-mission-spawn-label {
            border-color: var(--mcms-sem-cyan-border) !important;
            background: var(--mcms-sem-cyan-bg) !important;
            color: var(--mcms-sem-cyan) !important;
            box-shadow: inset 3px 0 0 #35bce8, 0 0 16px rgba(67,198,255,.42) !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.94) !important;
        }html[data-mcms-ui-theme] .mcms-mission-spawn-ring {
            stroke: #67d9ff !important;
            fill: rgba(48,183,255,.12) !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-discord-card[data-tone="positive"] {
            border-color: rgba(46,204,113,.68) !important;
            box-shadow: inset 4px 0 #2ecc71, 0 8px 18px rgba(0,0,0,.22) !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-discord-card[data-tone="negative"] {
            border-color: rgba(231,76,60,.72) !important;
            box-shadow: inset 4px 0 #e74c3c, 0 8px 18px rgba(0,0,0,.22) !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-discord-card[data-tone="neutral"] {
            border-color: rgba(241,196,15,.66) !important;
            box-shadow: inset 4px 0 #f1c40f, 0 8px 18px rgba(0,0,0,.22) !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-discord-status[data-tone="good"] {
            border-color: rgba(46,204,113,.62) !important;
            background: rgba(10,62,33,.34) !important;
            color: #9be8b8 !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-discord-status[data-tone="bad"] {
            border-color: rgba(231,76,60,.68) !important;
            background: rgba(81,18,14,.38) !important;
            color: #ffaaa1 !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-discord-status[data-tone="busy"] {
            border-color: rgba(52,152,219,.68) !important;
            background: rgba(10,45,72,.40) !important;
            color: #9bd5ff !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-sweep-state.mcms-running {
            border-color: rgba(255,177,57,.82) !important;
            background: rgba(95,49,3,.84) !important;
            color: #fff1cf !important;
            box-shadow: inset 3px 0 0 #ffb139 !important;
            text-shadow: 0 1px 2px rgba(0,0,0,.90) !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-sweep-entry.mcms-current {
            border-color: rgba(255,177,57,.78) !important;
            background: rgba(95,49,3,.30) !important;
            box-shadow: inset 3px 0 0 #ffb139 !important;
        }#${SCRIPT.vehicleStatusId} {
            --mcms-vcs-bg:linear-gradient(150deg,rgba(18,26,36,.985),rgba(7,12,18,.99));
            --mcms-vcs-panel:rgba(255,255,255,.055);
            --mcms-vcs-line:rgba(255,255,255,.13);
            --mcms-vcs-text:#f4f8fc;
            --mcms-vcs-muted:#9baabc;
            display:none !important;
            position:fixed !important;
            z-index:1005 !important;
            top:68px !important;
            right:14px !important;
            width:min(540px,calc(100vw - 28px)) !important;
            max-height:calc(100vh - 84px) !important;
            overflow:auto !important;
            padding:12px !important;
            border:1px solid rgba(115,170,225,.42) !important;
            border-radius:13px !important;
            background:var(--mcms-vcs-bg) !important;
            color:var(--mcms-vcs-text) !important;
            box-shadow:0 18px 44px rgba(0,0,0,.52),0 0 0 1px rgba(0,0,0,.55) !important;
            backdrop-filter:blur(9px) saturate(115%) !important;
            -webkit-backdrop-filter:blur(9px) saturate(115%) !important;
            box-sizing:border-box !important;
            isolation:isolate !important;
        }#${SCRIPT.vehicleStatusId},
        #${SCRIPT.vehicleStatusId} * { box-sizing:border-box !important; }#${SCRIPT.vehicleStatusId}.mcms-open {
            display:block !important;
            animation:mcms-vcs-open 170ms cubic-bezier(.2,.78,.28,1) both !important;
        }
        @keyframes mcms-vcs-open {
            from { opacity:0; transform:translateY(-8px) scale(.985); }
            to { opacity:1; transform:translateY(0) scale(1); }
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-head {
            display:grid !important;
            grid-template-columns:minmax(0,1fr) auto !important;
            gap:10px !important;
            align-items:center !important;
            padding-bottom:10px !important;
            border-bottom:1px solid var(--mcms-vcs-line) !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-heading { min-width:0 !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-title {
            display:block !important;
            color:var(--mcms-vcs-text) !important;
            font-size:14px !important;
            font-weight:950 !important;
            line-height:1.12 !important;
            letter-spacing:.42px !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-subtitle {
            display:block !important;
            margin-top:3px !important;
            color:var(--mcms-vcs-muted) !important;
            font-size:8.5px !important;
            font-weight:800 !important;
            line-height:1.25 !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-head-actions { display:flex !important; gap:6px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-close {
            display:grid !important;
            place-items:center !important;
            width:31px !important;
            height:31px !important;
            padding:0 !important;
            border:1px solid var(--mcms-vcs-line) !important;
            border-radius:8px !important;
            background:rgba(255,255,255,.075) !important;
            color:var(--mcms-vcs-text) !important;
            font-size:17px !important;
            font-weight:950 !important;
            line-height:1 !important;
            cursor:pointer !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-refresh:hover,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-close:hover,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh:focus-visible,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-close:focus-visible {
            border-color:#7bbcff !important;
            background:rgba(74,151,230,.20) !important;
            outline:2px solid rgba(123,188,255,.52) !important;
            outline-offset:1px !important;
        }#${SCRIPT.vehicleStatusId}.mcms-vcs-loading .mcms-vcs-refresh { animation:mcms-vcs-spin .8s linear infinite !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-refresh:disabled { opacity:.62 !important; cursor:wait !important; }
        @keyframes mcms-vcs-spin { to { transform:rotate(360deg); } }#${SCRIPT.vehicleStatusId} .mcms-vcs-meta {
            display:flex !important;
            align-items:center !important;
            justify-content:space-between !important;
            gap:8px !important;
            padding:8px 2px 7px !important;
            color:var(--mcms-vcs-muted) !important;
            font-size:8px !important;
            font-weight:850 !important;
            line-height:1.2 !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-table {
            overflow:hidden !important;
            border:1px solid var(--mcms-vcs-line) !important;
            border-radius:10px !important;
            background:rgba(0,0,0,.13) !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-table-row {
            display:grid !important;
            grid-template-columns:64px minmax(0,1fr) 88px !important;
            gap:9px !important;
            align-items:center !important;
            min-width:0 !important;
            min-height:39px !important;
            padding:6px 9px !important;
            border-bottom:1px solid var(--mcms-vcs-line) !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-table-row:last-child { border-bottom:0 !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-table-head {
            min-height:32px !important;
            background:rgba(255,255,255,.07) !important;
            color:var(--mcms-vcs-muted) !important;
            font-size:8px !important;
            font-weight:950 !important;
            letter-spacing:.58px !important;
            text-transform:uppercase !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-table-head span:last-child,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-count,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row > *:last-child { text-align:right !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-status-row {
            position:relative !important;
            background:var(--mcms-vcs-panel) !important;
            color:var(--mcms-vcs-text) !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-status-row:nth-child(even) { background:rgba(255,255,255,.027) !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-status-row:hover { background:rgba(255,255,255,.095) !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-code {
            display:grid !important;
            place-items:center !important;
            width:38px !important;
            height:27px !important;
            border:1px solid rgba(255,255,255,.42) !important;
            border-radius:7px !important;
            background:#26313d !important;
            color:#fff !important;
            font-size:12px !important;
            font-weight:950 !important;
            line-height:1 !important;
            text-shadow:0 1px 2px rgba(0,0,0,.72) !important;
            box-shadow:0 2px 5px rgba(0,0,0,.30) !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-status {
            min-width:0 !important;
            overflow:hidden !important;
            color:var(--mcms-vcs-text) !important;
            font-size:10.5px !important;
            font-weight:850 !important;
            line-height:1.25 !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-count {
            color:var(--mcms-vcs-text) !important;
            font-size:12px !important;
            font-weight:950 !important;
            font-variant-numeric:tabular-nums !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-total-row {
            min-height:42px !important;
            border-top:1px solid rgba(123,188,255,.38) !important;
            background:rgba(55,117,180,.16) !important;
            color:var(--mcms-vcs-text) !important;
            font-size:10px !important;
            font-weight:900 !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-total-row strong:last-child { font-size:13px !important; font-variant-numeric:tabular-nums !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-footnote {
            margin-top:8px !important;
            padding:7px 8px !important;
            border:1px solid var(--mcms-vcs-line) !important;
            border-radius:8px !important;
            background:rgba(255,255,255,.035) !important;
            color:var(--mcms-vcs-muted) !important;
            font-size:7.5px !important;
            font-weight:750 !important;
            line-height:1.38 !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-footnote code { color:var(--mcms-vcs-text) !important; font-size:inherit !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-unknown .mcms-vcs-status { color:#ffb6b0 !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} {
            top:max(12px,env(safe-area-inset-top)) !important;
            right:12px !important;
            width:min(680px,calc(100vw - 24px)) !important;
            max-height:calc(100vh - 24px - env(safe-area-inset-bottom)) !important;
            padding:15px !important;
            border-radius:15px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { font-size:17px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-subtitle,
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-meta { font-size:10px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { width:44px !important; height:44px !important; border-radius:11px !important; font-size:22px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-row { grid-template-columns:78px minmax(0,1fr) 104px !important; min-height:52px !important; padding:8px 12px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-code { width:48px !important; height:34px !important; font-size:15px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-status { font-size:13px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-count { font-size:15px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-head,
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-footnote { font-size:9.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} {
            top:auto !important;
            right:0 !important;
            bottom:0 !important;
            left:0 !important;
            width:100vw !important;
            max-width:100vw !important;
            max-height:min(86vh,calc(100dvh - env(safe-area-inset-top) - 8px)) !important;
            padding:12px 10px calc(12px + env(safe-area-inset-bottom)) !important;
            border-right:0 !important;
            border-bottom:0 !important;
            border-left:0 !important;
            border-radius:16px 16px 0 0 !important;
            overflow-x:hidden !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId}.mcms-open { animation:mcms-vcs-mobile-open 190ms cubic-bezier(.2,.78,.28,1) both !important; }
        @keyframes mcms-vcs-mobile-open { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:translateY(0); } }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { font-size:15px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-subtitle { font-size:9px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { width:42px !important; height:42px !important; font-size:21px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-meta { align-items:flex-start !important; flex-direction:column !important; gap:2px !important; font-size:8.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-row { grid-template-columns:48px minmax(0,1fr) 66px !important; gap:6px !important; min-height:45px !important; padding:7px 7px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-head { min-height:30px !important; font-size:7.5px !important; letter-spacing:.32px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-code { width:34px !important; height:27px !important; font-size:12px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-status { font-size:10px !important; white-space:normal !important; overflow:visible !important; text-overflow:clip !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-count { font-size:12px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-footnote { font-size:7.5px !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.vehicleStatusId} {
            --mcms-vcs-bg:linear-gradient(145deg,rgba(7,10,13,.99),rgba(15,18,20,.99));
            --mcms-vcs-panel:rgba(255,231,0,.035);
            --mcms-vcs-line:rgba(255,231,0,.28);
            --mcms-vcs-text:#f7f8f2;
            --mcms-vcs-muted:#8fd9e8;
            border-color:#ffe600 !important;
            border-radius:2px !important;
            clip-path:polygon(0 12px,12px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%) !important;
            box-shadow:0 18px 42px rgba(0,0,0,.62),inset 4px 0 #ffe600,0 0 20px rgba(0,229,255,.16) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { color:#ffe600 !important; text-transform:uppercase !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { border-radius:1px !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { border-top-color:#00e5ff !important; background:rgba(0,229,255,.08) !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.vehicleStatusId} {
            --mcms-vcs-bg:linear-gradient(145deg,rgba(11,25,15,.99),rgba(4,13,7,.99));
            --mcms-vcs-panel:rgba(104,255,128,.035);
            --mcms-vcs-line:rgba(121,255,144,.25);
            --mcms-vcs-text:#b9ffc7;
            --mcms-vcs-muted:#71c987;
            border-color:#79ff90 !important;
            border-radius:3px !important;
            box-shadow:0 18px 42px rgba(0,0,0,.64),inset 0 0 28px rgba(40,255,91,.06),inset 4px 0 rgba(121,255,144,.72) !important;
            text-shadow:0 0 5px rgba(88,255,121,.20) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { color:#9dffaf !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { border-radius:2px !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { border-top-color:#ffbf47 !important; background:rgba(255,171,42,.10) !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} {
            --mcms-vcs-bg:linear-gradient(145deg,rgba(16,18,21,.995),rgba(6,7,9,.995));
            --mcms-vcs-panel:rgba(255,255,255,.048);
            --mcms-vcs-line:rgba(255,255,255,.16);
            --mcms-vcs-text:#f8f9fa;
            --mcms-vcs-muted:#b9bdc2;
            border-color:#d91f2d !important;
            border-radius:3px !important;
            box-shadow:0 18px 44px rgba(0,0,0,.62),inset 5px 0 #d91f2d !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { color:#fff !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title::before { content:'CONTAINMENT // ' !important; color:#ff4b58 !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { border-top-color:#d91f2d !important; background:rgba(217,31,45,.13) !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} {
            --mcms-vcs-bg:linear-gradient(145deg,rgba(49,49,42,.995),rgba(23,24,21,.995));
            --mcms-vcs-panel:rgba(255,145,43,.035);
            --mcms-vcs-line:rgba(223,178,110,.23);
            --mcms-vcs-text:#f2e5cc;
            --mcms-vcs-muted:#c5b38e;
            border:2px solid #805129 !important;
            border-radius:4px !important;
            box-shadow:0 18px 44px rgba(0,0,0,.62),inset 0 0 0 2px #25251f,inset 5px 0 #e77d24 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { color:#ffad5b !important; text-transform:uppercase !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { border-radius:2px !important; border-color:#805129 !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-head { background:repeating-linear-gradient(135deg,rgba(255,157,51,.15) 0 8px,rgba(28,29,25,.38) 8px 16px) !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { border-top-color:#e77d24 !important; background:rgba(231,125,36,.13) !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="1"] { background:#5a97f3 !important; border-color:#a8ccff !important; color:#fff !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="2"] { background:#77dc81 !important; border-color:#c1ffc6 !important; color:#102015 !important; text-shadow:none !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="3"] { background:#f3d470 !important; border-color:#fff1ae !important; color:#1d1a0b !important; text-shadow:none !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="4"] { background:#f58558 !important; border-color:#ffc1a8 !important; color:#241006 !important; text-shadow:none !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="5"] { background:#e62020 !important; border-color:#ff8a83 !important; color:#fff !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="6"] { background:#090b0e !important; border-color:#a8b1bc !important; color:#fff !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="7"] { background:#ff8600 !important; border-color:#ffc173 !important; color:#211000 !important; text-shadow:none !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code[data-code="9"] { background:#f3d470 !important; border-color:#fff1ae !important; color:#1d1a0b !important; text-shadow:none !important; }html[data-mcms-ui-theme] #${SCRIPT.vehicleStatusId} .mcms-vcs-code:not([data-code="1"]):not([data-code="2"]):not([data-code="3"]):not([data-code="4"]):not([data-code="5"]):not([data-code="6"]):not([data-code="7"]):not([data-code="9"]) { background:#6a2230 !important; border-color:#ff8795 !important; color:#fff !important; }#${SCRIPT.vehicleStatusId} {
            width:min(468px,calc(100vw - 24px)) !important;
            max-height:calc(100vh - 76px) !important;
            padding:10px !important;
            border-radius:11px !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-head { gap:8px !important; padding-bottom:8px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-title { font-size:13px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-subtitle { margin-top:2px !important; font-size:8px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        #${SCRIPT.vehicleStatusId} .mcms-vcs-close { width:29px !important; height:29px !important; font-size:16px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-meta { padding:6px 2px !important; font-size:7.7px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-table-row {
            grid-template-columns:54px minmax(0,1fr) 76px !important;
            gap:7px !important;
            min-height:34px !important;
            padding:4px 8px !important;
        }#${SCRIPT.vehicleStatusId} .mcms-vcs-table-head { min-height:28px !important; font-size:7.6px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-code { width:34px !important; height:24px !important; font-size:11px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-status { font-size:10px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-count { font-size:11.5px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { min-height:36px !important; font-size:9.4px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-total-row strong:last-child { font-size:12px !important; }#${SCRIPT.vehicleStatusId} .mcms-vcs-footnote { margin-top:6px !important; padding:6px 7px !important; font-size:7.2px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} {
            top:max(10px,env(safe-area-inset-top)) !important;
            right:10px !important;
            width:min(560px,calc(100vw - 20px)) !important;
            max-height:calc(100vh - 20px - env(safe-area-inset-bottom)) !important;
            padding:12px !important;
            border-radius:13px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { font-size:15px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-subtitle,
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-meta { font-size:9px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { width:40px !important; height:40px !important; border-radius:10px !important; font-size:20px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-row {
            grid-template-columns:62px minmax(0,1fr) 82px !important;
            gap:8px !important;
            min-height:42px !important;
            padding:5px 9px !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-head { min-height:29px !important; font-size:8.3px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-code { width:42px !important; height:29px !important; font-size:13px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-status { font-size:11.5px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-count { font-size:13px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { min-height:40px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-footnote { font-size:8.2px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} {
            max-height:min(84vh,calc(100dvh - env(safe-area-inset-top) - 8px)) !important;
            padding:10px 8px calc(10px + env(safe-area-inset-bottom)) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-title { font-size:14px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-subtitle { font-size:8.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-refresh,
        html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-close { width:40px !important; height:40px !important; font-size:20px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-meta {
            align-items:center !important;
            flex-direction:row !important;
            flex-wrap:wrap !important;
            gap:3px 8px !important;
            font-size:8px !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-row {
            grid-template-columns:44px minmax(0,1fr) 58px !important;
            gap:5px !important;
            min-height:39px !important;
            padding:5px 6px !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-table-head { min-height:28px !important; font-size:7.3px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-code { width:32px !important; height:25px !important; font-size:11px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-status { font-size:9.6px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-count { font-size:11.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-total-row { min-height:37px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} .mcms-vcs-footnote { font-size:7.2px !important; }
        @media (prefers-reduced-motion:reduce) {#${SCRIPT.vehicleStatusId}.mcms-open,
        #${SCRIPT.vehicleStatusId}.mcms-vcs-loading .mcms-vcs-refresh { animation:none !important; }
        }
        @keyframes mcmsIncidentWireScan {
            0% { transform:translateX(-120%); opacity:0; }
            20% { opacity:.45; }
            65% { opacity:.18; }
            100% { transform:translateX(220%); opacity:0; }
        }
        @keyframes mcmsFalloutIncidentSweep {
            0% { transform:translateX(-135%); opacity:0; }
            18% { opacity:.5; }
            55% { opacity:.16; }
            100% { transform:translateX(330%); opacity:0; }
        }
        @keyframes mcmsFalloutIncidentBeacon {
            0%,100% { opacity:.58; filter:brightness(.92); }
            50% { opacity:1; filter:brightness(1.28); }
        }#${SCRIPT.majorIncidentFeedId} {
            position:fixed !important;
            z-index:1032 !important;
            display:none;
            align-items:center !important;
            min-width:0 !important;
            height:34px !important;
            overflow:hidden !important;
            border:1px solid #467ca4 !important;
            border-radius:4px !important;
            background:linear-gradient(180deg,#172836 0%,#0f1d28 100%) !important;
            color:#eef8ff !important;
            box-shadow:0 3px 12px rgba(0,0,0,.34),inset 0 0 0 1px rgba(255,255,255,.035) !important;
            font-family:Arial,sans-serif !important;
            line-height:1 !important;
            isolation:isolate !important;
            pointer-events:auto !important;
        }#${SCRIPT.majorIncidentFeedId}.mcms-feed-visible { display:flex !important; }#${SCRIPT.majorIncidentFeedId}::before {
            content:"";
            position:absolute;
            inset:0 auto 0 -30%;
            width:25%;
            pointer-events:none;
            z-index:3;
            background:linear-gradient(90deg,transparent,rgba(97,196,255,.18),transparent);
            animation:mcmsIncidentWireScan 7s linear infinite;
        }#${SCRIPT.majorIncidentFeedId}[data-mcms-placement="underbar"] {
            height:30px !important;
            border-radius:3px !important;
            max-width:none !important;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            position:relative;
            z-index:4;
            flex:0 0 auto;
            align-self:stretch;
            display:flex;
            align-items:center;
            gap:6px;
            padding:0 10px;
            border-right:1px solid rgba(126,202,255,.34);
            background:linear-gradient(180deg,#24628e,#173e5b);
            color:#fff;
            font-size:9px;
            font-weight:900;
            letter-spacing:.75px;
            text-transform:uppercase;
            white-space:nowrap;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before {
            content:"●";
            color:#ff4655;
            font-size:9px;
            text-shadow:0 0 7px rgba(255,70,85,.9);
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-viewport {
            position:relative;
            z-index:2;
            flex:1 1 auto;
            min-width:0;
            height:100%;
            overflow:hidden;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-track {
            display:flex;
            align-items:stretch;
            width:max-content;
            min-width:100%;
            height:100%;
            will-change:transform;
        }#${SCRIPT.majorIncidentFeedId}:not(.mcms-feed-empty):not(.mcms-feed-static) .mcms-incident-feed-track {
            animation:mcmsIncidentWireScroll var(--mcms-incident-feed-duration,60s) linear infinite;
        }#${SCRIPT.majorIncidentFeedId}.mcms-feed-static .mcms-incident-feed-track {
            width:100% !important;
            min-width:100% !important;
            animation:none !important;
            transform:none !important;
        }#${SCRIPT.majorIncidentFeedId}.mcms-feed-static .mcms-incident-feed-group {
            flex:1 1 auto !important;
            justify-content:center !important;
            padding-right:0 !important;
        }#${SCRIPT.majorIncidentFeedId}.mcms-feed-static .mcms-incident-feed-group:nth-child(n+2) {
            display:none !important;
        }#${SCRIPT.majorIncidentFeedId}:hover .mcms-incident-feed-track,
        #${SCRIPT.majorIncidentFeedId}:focus-within .mcms-incident-feed-track,
        #${SCRIPT.majorIncidentFeedId}.mcms-feed-paused .mcms-incident-feed-track {
            animation-play-state:paused !important;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-group {
            display:flex;
            align-items:stretch;
            flex:0 0 auto;
            height:100%;
            padding-right:34px;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item {
            appearance:none;
            -webkit-appearance:none;
            position:relative;
            display:flex;
            align-items:center;
            gap:7px;
            height:100%;
            margin:0;
            padding:0 14px;
            border:0;
            border-right:1px solid rgba(164,205,232,.17);
            background:transparent;
            color:inherit;
            font:inherit;
            white-space:nowrap;
            cursor:pointer;
            transition:background .16s ease,filter .16s ease;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item:hover,
        #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item:focus-visible {
            background:rgba(255,255,255,.09);
            outline:2px solid #fff;
            outline-offset:-2px;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-level {
            flex:0 0 auto;
            padding:3px 5px;
            border:1px solid currentColor;
            border-radius:2px;
            color:#ff6974;
            font-size:8px;
            font-weight:900;
            letter-spacing:.45px;
            text-transform:uppercase;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-name {
            color:#fff;
            font-size:11px;
            font-weight:800;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode {
            color:#9bd9ff;
            font-size:10px;
            font-weight:900;
            letter-spacing:.35px;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-meta {
            color:#bed0dd;
            font-size:9px;
            font-weight:700;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-state {
            display:inline-flex;
            align-items:center;
            gap:4px;
            font-size:8px;
            font-weight:900;
            letter-spacing:.35px;
            text-transform:uppercase;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-state::before {
            content:"";
            width:6px;
            height:6px;
            border-radius:50%;
            background:currentColor;
            box-shadow:0 0 7px currentColor;
        }#${SCRIPT.majorIncidentFeedId} .mcms-incident-alert .mcms-incident-state { color:#ff5967; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-responding .mcms-incident-state { color:#63b8ff; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-clearing .mcms-incident-state { color:#71e58a; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-active .mcms-incident-state { color:#ffd568; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-major .mcms-incident-state { color:#ff8a62; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-empty {
            display:flex;
            align-items:center;
            height:100%;
            padding:0 14px;
            color:#c4d4df;
            font-size:9.5px;
            font-weight:700;
            letter-spacing:.2px;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.majorIncidentFeedId} {
            border-color:#fcee0a !important;
            border-radius:0 !important;
            background:#0c1116 !important;
            color:#e8fdff !important;
            box-shadow:0 0 0 1px rgba(0,240,255,.32),0 0 17px rgba(252,238,10,.18) !important;
            clip-path:polygon(0 0,calc(100% - 11px) 0,100% 11px,100% 100%,8px 100%,0 calc(100% - 8px));
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            border-right-color:#00f0ff !important;
            background:#fcee0a !important;
            color:#111 !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before { color:#111 !important; text-shadow:none !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-name { color:#fff !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode { color:#00f0ff !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-level { color:#fcee0a !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} {
            border:1px solid #78d85b !important;
            border-radius:1px !important;
            background:
                radial-gradient(circle at 14% 50%,rgba(151,255,107,.09),transparent 29%),
                repeating-linear-gradient(90deg,rgba(183,255,145,.025) 0 1px,transparent 1px 5px),
                linear-gradient(180deg,#172419 0%,#0b140d 100%) !important;
            color:#c8ffae !important;
            box-shadow:
                0 0 0 1px rgba(18,39,17,.95),
                0 0 13px rgba(98,242,75,.24),
                inset 0 0 18px rgba(91,213,69,.10),
                inset 0 1px rgba(216,255,194,.09) !important;
            font-family:"Courier New",Consolas,monospace !important;
            text-shadow:0 0 5px rgba(126,255,91,.34) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId}::before {
            width:18% !important;
            background:linear-gradient(90deg,transparent,rgba(169,255,126,.28),transparent) !important;
            animation:mcmsFalloutIncidentSweep 6.8s linear infinite !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId}::after {
            content:"";
            position:absolute;
            inset:0;
            z-index:5;
            pointer-events:none;
            opacity:.28;
            background:
                repeating-linear-gradient(180deg,transparent 0 2px,rgba(173,255,139,.13) 2px 3px),
                linear-gradient(90deg,rgba(8,16,9,.2),transparent 14%,transparent 86%,rgba(8,16,9,.2));
            mix-blend-mode:screen;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            gap:5px !important;
            border-right:1px solid #8be56a !important;
            background:
                linear-gradient(180deg,rgba(120,216,91,.15),rgba(44,91,38,.09)),
                repeating-linear-gradient(90deg,#254326 0 4px,#203a21 4px 8px) !important;
            color:#d4ffbd !important;
            box-shadow:inset -1px 0 rgba(207,255,181,.08) !important;
            text-shadow:0 0 6px rgba(150,255,109,.52) !important;
            letter-spacing:.9px !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before {
            content:"◉" !important;
            color:#ffc95e !important;
            font-size:9px !important;
            text-shadow:0 0 7px rgba(255,201,94,.85) !important;
            animation:mcmsFalloutIncidentBeacon 1.8s steps(2,end) infinite !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::after {
            content:"ROBCO";
            display:inline-flex;
            align-items:center;
            height:14px;
            padding:0 3px;
            border:1px solid rgba(177,255,142,.38);
            color:#92d97b;
            font-size:6px;
            font-weight:900;
            letter-spacing:.55px;
            text-shadow:none;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-viewport {
            background:linear-gradient(90deg,rgba(101,217,77,.035),transparent 20%,transparent 80%,rgba(101,217,77,.025)) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item {
            border-right-color:rgba(151,232,120,.20) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item:focus-visible {
            background:rgba(125,224,91,.13) !important;
            outline-color:#f4c766 !important;
            filter:brightness(1.08) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-name {
            color:#dcffcb !important;
            text-shadow:0 0 5px rgba(143,255,104,.28) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode {
            color:#ffd16f !important;
            text-shadow:0 0 5px rgba(255,209,111,.24) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-meta {
            color:#9edb88 !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-level {
            border-color:#f2c661 !important;
            background:rgba(242,198,97,.08) !important;
            color:#ffd16f !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-empty {
            color:#a9e492 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} {
            border-color:#d82632 !important;
            border-radius:1px !important;
            background:linear-gradient(180deg,#1d2025,#101216) !important;
            color:#fff !important;
            box-shadow:0 0 0 1px rgba(255,255,255,.09),0 4px 15px rgba(0,0,0,.45) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            border-right-color:#fff !important;
            background:linear-gradient(135deg,#b1121c 0 48%,#f0f1f2 48% 52%,#15171a 52%) !important;
            color:#fff !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-name { color:#fff !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode { color:#ffabb0 !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-meta { color:#c9cdd2 !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-level { color:#ff6570 !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.majorIncidentFeedId} {
            border-color:#d87822 !important;
            border-radius:2px !important;
            background:linear-gradient(180deg,#34352f,#20211e) !important;
            color:#f5ead6 !important;
            box-shadow:0 0 0 1px #111,0 4px 12px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.05) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            border-right-color:#f6a34c !important;
            background:repeating-linear-gradient(135deg,#d87822 0 8px,#332d24 8px 16px) !important;
            color:#fff3dc !important;
            text-shadow:0 1px 1px #111 !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-name { color:#fff3df !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode { color:#ffad5b !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-meta { color:#d9c8aa !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-level { color:#ffad5b !important; }html[data-mcms-ui-theme] .mcms-alliance-text,
        html[data-mcms-ui-theme] #${SCRIPT.majorIncidentFeedId} .mcms-alliance-text,
        html[data-mcms-ui-theme] .mcms-mission-spawn-label.mcms-alliance-text {
            color:#76c7ff !important;
            text-shadow:0 0 7px rgba(66,169,255,.26) !important;
        }
        @media (max-width:760px) {html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::after { display:none !important; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label { padding:0 7px !important; font-size:7.5px !important; letter-spacing:.4px !important; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-item { gap:5px !important; padding:0 10px !important; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-name { font-size:10px !important; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode { font-size:9px !important; }#${SCRIPT.majorIncidentFeedId} .mcms-incident-meta { font-size:8px !important; }
        }
        @keyframes mcms-special-event-pulse {
            0%,100% { filter:brightness(.96); box-shadow:0 0 7px rgba(255,56,172,.13); }
            50% { filter:brightness(1.12); box-shadow:0 0 14px rgba(255,56,172,.30); }
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-bond007 {
            position:relative !important;
            border-radius:2px !important;
            border-color:#c8aa5b !important;
            background:
                linear-gradient(120deg,rgba(255,255,255,.96),rgba(224,219,205,.93)),
                #f2eee2 !important;
            box-shadow:inset 0 0 0 1px rgba(0,0,0,.12),0 0 9px rgba(200,170,91,.24) !important;
            overflow:hidden !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-bond007::before {
            content:"" !important;
            position:absolute !important;
            inset:4px !important;
            background-image:url("${THEME_ASSETS.bond007Logo}") !important;
            background-repeat:no-repeat !important;
            background-position:center !important;
            background-size:contain !important;
            z-index:2 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-bond007::after {
            content:"MI6" !important;
            position:absolute !important;
            right:3px !important;
            bottom:2px !important;
            color:#8d171f !important;
            font:950 5px/1 Arial,sans-serif !important;
            letter-spacing:.8px !important;
            z-index:3 !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-bond007 span { opacity:0 !important; }html[data-mcms-ui-theme="bond007"] {
            --mcms-bond-black:#07080a;
            --mcms-bond-charcoal:#15171a;
            --mcms-bond-panel:#1d2024;
            --mcms-bond-panel-2:#282c31;
            --mcms-bond-ivory:#f1ede2;
            --mcms-bond-ivory-2:#d8d1bf;
            --mcms-bond-gold:#c8aa5b;
            --mcms-bond-gold-bright:#efd38a;
            --mcms-bond-red:#a71924;
            --mcms-bond-steel:#8b939b;
            --mcms-bond-muted:#aeb4b9;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-shell {
            border:1px solid rgba(220,199,137,.70) !important;
            border-radius:3px !important;
            background:
                linear-gradient(145deg,rgba(35,38,42,.98),rgba(7,8,10,.99)),
                repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 7px) !important;
            box-shadow:0 11px 25px rgba(0,0,0,.55),inset 0 1px rgba(255,255,255,.08),0 0 0 1px rgba(0,0,0,.75) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-menu-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {
            border:1px solid #5d6268 !important;
            border-radius:2px !important;
            background:linear-gradient(180deg,#272a2f,#0b0c0e) !important;
            color:#f2ede2 !important;
            box-shadow:inset 0 1px rgba(255,255,255,.10),0 2px 6px rgba(0,0,0,.45) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-dock-toggle-btn:hover {
            border-color:#d2b662 !important;
            color:#f3d989 !important;
            box-shadow:inset 0 1px rgba(255,255,255,.12),0 0 12px rgba(202,170,84,.22) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border:1px solid #4b5056 !important;
            border-radius:2px !important;
            background:linear-gradient(180deg,#25282c,#101215) !important;
            color:#eee9dd !important;
            box-shadow:inset 0 1px rgba(255,255,255,.06),0 3px 7px rgba(0,0,0,.36) !important;
            transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-float-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-screen-pin-btn:hover {
            transform:translateY(-1px) !important;
            border-color:#c8aa5b !important;
            color:#fff7e4 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-on {
            border-color:#f0d583 !important;
            background:linear-gradient(180deg,#eee6d1,#c8b98f) !important;
            color:#111214 !important;
            box-shadow:inset 0 0 0 1px rgba(255,255,255,.48),0 0 12px rgba(208,178,92,.30) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-on * {
            color:#111214 !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-float-key {
            border-radius:50% !important;
            border:1px solid #a88e48 !important;
            background:#0b0c0e !important;
            color:#f0d47e !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} {
            border:1px solid #a88e48 !important;
            border-radius:4px !important;
            background:
                radial-gradient(circle at 92% 5%,rgba(214,183,92,.08),transparent 24%),
                repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 8px),
                linear-gradient(145deg,#202328,#090a0c 64%) !important;
            color:#f0ecdf !important;
            box-shadow:0 22px 55px rgba(0,0,0,.68),inset 0 0 0 1px rgba(255,255,255,.035),0 0 18px rgba(175,143,59,.12) !important;
            font-family:"Segoe UI",Arial,sans-serif !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId}.mcms-open {
            animation:mcmsBondPanelIn 280ms cubic-bezier(.18,.76,.22,1) both !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header {
            position:relative !important;
            min-height:45px !important;
            border-bottom:1px solid rgba(212,184,99,.62) !important;
            background:linear-gradient(90deg,rgba(255,255,255,.045),transparent 64%) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            content:"" !important;
            position:absolute !important;
            right:62px !important;
            top:4px !important;
            width:92px !important;
            height:31px !important;
            background-image:url("${THEME_ASSETS.bond007Logo}") !important;
            background-repeat:no-repeat !important;
            background-position:center !important;
            background-size:contain !important;
            filter:invert(1) sepia(.18) saturate(.65) brightness(1.25) !important;
            opacity:.82 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::after {
            content:"CLASSIFIED // DOUBLE-O OPERATIONS" !important;
            position:absolute !important;
            left:8px !important;
            bottom:1px !important;
            color:#c9ad60 !important;
            font:900 5px/1 Consolas,monospace !important;
            letter-spacing:.75px !important;
            opacity:.78 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            border:0 !important;
            border-left:3px solid #a71924 !important;
            border-radius:0 !important;
            background:rgba(255,255,255,.025) !important;
            padding-bottom:8px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-title {
            color:#f4efe2 !important;
            font-family:Georgia,"Times New Roman",serif !important;
            font-weight:700 !important;
            letter-spacing:.35px !important;
            text-shadow:0 1px 2px #000 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-subtitle {
            color:#b6b8b8 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-close,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-reset-panel {
            border:1px solid #676c72 !important;
            border-radius:2px !important;
            background:#111316 !important;
            color:#eee8db !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-close:hover {
            border-color:#d44349 !important;
            background:#7e1119 !important;
            color:#fff !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-reset-panel:hover {
            border-color:#d5b85f !important;
            color:#f0d47f !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tabs {
            gap:4px !important;
            border-bottom:1px solid rgba(255,255,255,.055) !important;
            padding-bottom:6px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tab-btn {
            border:1px solid #44494f !important;
            border-radius:1px !important;
            background:linear-gradient(180deg,#282b30,#121417) !important;
            color:#c8c9c7 !important;
            letter-spacing:.35px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tab-btn:hover {
            border-color:#a98e48 !important;
            color:#f0d47e !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color:#e3c875 !important;
            background:linear-gradient(180deg,#e9dfc5,#c8b98e) !important;
            color:#111214 !important;
            box-shadow:0 0 11px rgba(210,181,95,.18) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-section-label {
            position:relative !important;
            padding:5px 7px 5px 21px !important;
            border-left:2px solid #a71924 !important;
            border-bottom:1px solid rgba(200,170,91,.28) !important;
            background:linear-gradient(90deg,rgba(200,170,91,.09),transparent 72%) !important;
            color:#e2c778 !important;
            letter-spacing:1px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-section-label::before {
            content:"◉" !important;
            position:absolute !important;
            left:7px !important;
            top:50% !important;
            transform:translateY(-50%) !important;
            color:#b61d27 !important;
            font-size:8px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            border:1px solid #4c5157 !important;
            border-radius:2px !important;
            background:linear-gradient(180deg,#272a2f,#121416) !important;
            color:#eee9dc !important;
            box-shadow:inset 0 1px rgba(255,255,255,.055),0 2px 5px rgba(0,0,0,.28) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color:#c7a856 !important;
            color:#fff4d9 !important;
            transform:translateY(-1px) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color:#f0d786 !important;
            background:linear-gradient(180deg,#efe7d4,#c6b78a) !important;
            color:#111214 !important;
            box-shadow:inset 0 0 0 1px rgba(255,255,255,.48),0 0 14px rgba(208,177,86,.22) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active * {
            color:#111214 !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-iconbox {
            border:1px solid #5e646b !important;
            border-radius:50% !important;
            background:#0b0d0f !important;
            color:#e4c66f !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pill {
            border:1px solid rgba(211,183,94,.36) !important;
            border-radius:2px !important;
            background:#0d0f11 !important;
            color:#e0c46f !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-select,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} textarea {
            border:1px solid #676c72 !important;
            border-radius:2px !important;
            background:#f0ece1 !important;
            color:#121416 !important;
            caret-color:#a71924 !important;
            box-shadow:inset 0 2px 5px rgba(0,0,0,.14) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-input::placeholder,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} textarea::placeholder { color:#65686b !important; opacity:1 !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-select:focus,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} textarea:focus {
            border-color:#b89944 !important;
            box-shadow:inset 0 2px 5px rgba(0,0,0,.14),0 0 0 2px rgba(200,170,91,.20) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-select option { color:#111 !important; background:#f2eee2 !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-history-older,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-discord-empty,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-sweep-card,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-finance-card {
            border:1px solid #474c51 !important;
            border-radius:2px !important;
            background:linear-gradient(145deg,#24272b,#121416) !important;
            color:#ebe5d8 !important;
            box-shadow:inset 3px 0 0 rgba(200,170,91,.44),inset 0 1px rgba(255,255,255,.035) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-stat-label,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-entry-meta,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-profile-main span {
            color:#aeb2b3 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-stat-value,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-entry-value,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-profile-main strong {
            color:#f3ead5 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-footer {
            border-top-color:#6a5a33 !important;
            background:#0c0d0f !important;
            color:#aaa69b !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-build {
            border-color:#78652f !important;
            background:#17140c !important;
            color:#e3c66c !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.toastId},
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.cleanExitId} {
            border:1px solid #b99a45 !important;
            border-left:5px solid #9f1720 !important;
            border-radius:2px !important;
            background:linear-gradient(145deg,#25282c,#0d0f11) !important;
            color:#f1ebde !important;
            box-shadow:0 14px 34px rgba(0,0,0,.60),inset 0 1px rgba(255,255,255,.05) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} {
            border:1px solid #b39645 !important;
            border-radius:3px !important;
            background:
                radial-gradient(circle at 93% 6%,rgba(207,174,83,.07),transparent 25%),
                linear-gradient(145deg,#212429,#090a0c 65%) !important;
            color:#f0eadc !important;
            box-shadow:0 22px 54px rgba(0,0,0,.68),inset 0 0 0 1px rgba(255,255,255,.03) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head {
            position:relative !important;
            border-bottom:1px solid #9e853e !important;
            background:linear-gradient(90deg,rgba(255,255,255,.045),transparent 65%) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-title {
            color:#f3eee2 !important;
            font-family:Georgia,"Times New Roman",serif !important;
            letter-spacing:.45px !important;
            text-shadow:0 1px 2px #000 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} button {
            border:1px solid #656b71 !important;
            border-radius:2px !important;
            background:linear-gradient(180deg,#282b30,#101215) !important;
            color:#eee8da !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} button:hover {
            border-color:#d1b45d !important;
            color:#f0d47a !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} {
            border:1px solid #b89a47 !important;
            border-radius:2px !important;
            background:
                linear-gradient(90deg,rgba(255,255,255,.025),transparent 28%),
                linear-gradient(180deg,#202328,#0b0c0e) !important;
            color:#f0eadc !important;
            box-shadow:0 0 0 1px rgba(0,0,0,.7),0 4px 16px rgba(0,0,0,.52),inset 0 1px rgba(255,255,255,.05) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId}::before {
            width:14% !important;
            background:linear-gradient(90deg,transparent,rgba(235,209,125,.26),transparent) !important;
            animation:mcmsBondWireSweep 7.5s linear infinite !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            position:relative !important;
            min-width:154px !important;
            padding-left:44px !important;
            border-right:1px solid #d0b35a !important;
            background:linear-gradient(180deg,#eee7d5,#c8ba91) !important;
            color:#101214 !important;
            text-shadow:none !important;
            letter-spacing:.8px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before {
            content:"" !important;
            position:absolute !important;
            left:7px !important;
            top:50% !important;
            width:31px !important;
            height:15px !important;
            transform:translateY(-50%) !important;
            background-color:transparent !important;
            background-image:url("${THEME_ASSETS.bond007Logo}") !important;
            background-repeat:no-repeat !important;
            background-position:center !important;
            background-size:contain !important;
            border-radius:0 !important;
            box-shadow:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::after {
            content:"EYES ONLY" !important;
            display:inline-flex !important;
            margin-left:5px !important;
            color:#8f161e !important;
            font-size:5px !important;
            letter-spacing:.65px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-name { color:#f5efe2 !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-postcode { color:#efd381 !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-meta { color:#b7babd !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-level {
            border-color:#b9973f !important;
            background:rgba(194,159,67,.08) !important;
            color:#ebcd73 !important;
        }html[data-mcms-ui-theme="bond007"] .mcms-mission-lock-travel-overlay,
        html[data-mcms-ui-theme="bond007"] .mcms-mission-lock-dom,
        html[data-mcms-ui-theme="bond007"] .leaflet-marker-icon.mcms-mission-lock-target {
            --mcms-lock-primary:#e2c56f;
            --mcms-lock-secondary:#f7f1e3;
            --mcms-lock-accent:#ad1822;
            --mcms-lock-surface:rgba(9,10,12,.95);
            --mcms-lock-grid:rgba(226,197,111,.09);
        }html[data-mcms-ui-theme="bond007"] .mcms-mission-lock-label {
            border-radius:2px !important;
            font-family:Consolas,monospace !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-red {
            background:radial-gradient(ellipse at 0% 50%,rgba(171,16,27,.72),rgba(94,4,10,.30) 34%,transparent 68%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-blue {
            background:radial-gradient(ellipse at 100% 50%,rgba(232,205,119,.58),rgba(124,98,33,.22) 34%,transparent 68%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-cinematic {
            background:
                radial-gradient(circle at 50% 50%,transparent 0 14%,rgba(0,0,0,.22) 42%,rgba(0,0,0,.86) 100%),
                linear-gradient(125deg,rgba(181,21,31,.08),transparent 34%,rgba(219,189,96,.07)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-a {
            opacity:.8 !important;
            background:
                repeating-conic-gradient(from -12deg at 50% 50%,rgba(255,255,255,.16) 0 3deg,rgba(0,0,0,.80) 3deg 13deg),
                radial-gradient(circle at 50% 50%,transparent 0 15%,rgba(0,0,0,.15) 15.5% 27%,transparent 27.5%) !important;
            mix-blend-mode:soft-light !important;
            animation:mcmsBondGunBarrel 9s linear infinite !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            background:
                linear-gradient(90deg,transparent calc(50% - .5px),rgba(235,211,137,.28) 50%,transparent calc(50% + .5px)),
                linear-gradient(0deg,transparent calc(50% - .5px),rgba(235,211,137,.24) 50%,transparent calc(50% + .5px)),
                radial-gradient(circle at 50% 50%,transparent 0 10%,rgba(218,190,103,.20) 10.4% 10.8%,transparent 11.2% 19%,rgba(218,190,103,.12) 19.4% 19.8%,transparent 20.2%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-c {
            background:
                linear-gradient(110deg,transparent 0 42%,rgba(255,255,255,.08) 47%,rgba(240,211,123,.15) 50%,rgba(255,255,255,.06) 53%,transparent 58%),
                repeating-linear-gradient(90deg,transparent 0 119px,rgba(255,255,255,.025) 120px,transparent 121px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            width:min(780px,calc(100% - 28px)) !important;
            padding:30px 42px 27px !important;
            border:1px solid #d5b95f !important;
            border-left:7px solid #a71924 !important;
            border-radius:2px !important;
            background:
                url("${THEME_ASSETS.bond007Logo}") right 24px top 20px / 150px auto no-repeat,
                linear-gradient(118deg,rgba(245,240,226,.985),rgba(211,203,180,.98)) !important;
            color:#101214 !important;
            box-shadow:0 30px 76px rgba(0,0,0,.78),0 0 0 1px rgba(255,255,255,.20),inset 0 -5px 0 #111214 !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before {
            content:"TOP SECRET // MI6 FINANCIAL AUTHORISATION" !important;
            position:absolute !important;
            left:22px !important;
            right:22px !important;
            top:9px !important;
            color:#8f171f !important;
            font:950 7px/1 Consolas,monospace !important;
            letter-spacing:1.2px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::after {
            content:"007" !important;
            position:absolute !important;
            right:25px !important;
            bottom:10px !important;
            color:rgba(17,18,20,.35) !important;
            font:950 9px/1 Arial,sans-serif !important;
            letter-spacing:2px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title {
            max-width:78% !important;
            color:#111214 !important;
            font-family:Georgia,"Times New Roman",serif !important;
            font-size:clamp(32px,5vw,61px) !important;
            font-weight:700 !important;
            letter-spacing:.9px !important;
            transform:none !important;
            text-shadow:0 1px 0 #fff !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-divider {
            height:2px !important;
            background:linear-gradient(90deg,#a71924 0 16%,#111214 16% 74%,#c8aa5b 74%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-tier {
            border:1px solid #9b1720 !important;
            border-radius:1px !important;
            background:#9b1720 !important;
            color:#fff !important;
            letter-spacing:1px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission {
            max-width:78% !important;
            color:#333538 !important;
            font-family:Arial,sans-serif !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-source {
            color:#8b711f !important;
            letter-spacing:1.3px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-kicker {
            color:#81151c !important;
            letter-spacing:1.5px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-amount {
            color:#111214 !important;
            text-shadow:0 1px 0 #fff,2px 2px 0 rgba(184,152,66,.32) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-particle {
            border-radius:50% !important;
            background:#e8cb72 !important;
            box-shadow:0 0 7px rgba(238,207,112,.72) !important;
        }
        @keyframes mcmsBondPanelIn {
            0% { opacity:0; transform:translateY(7px) scale(.985); filter:blur(2px) brightness(.72); }
            55% { opacity:1; transform:translateY(-1px) scale(1.002); filter:blur(0) brightness(1.05); }
            100% { opacity:1; transform:none; filter:none; }
        }
        @keyframes mcmsBondWireSweep {
            0% { transform:translateX(-150%); opacity:0; }
            10% { opacity:.9; }
            85% { opacity:.68; }
            100% { transform:translateX(820%); opacity:0; }
        }
        @keyframes mcmsBondGunBarrel {
            from { transform:rotate(-5deg) scale(1.08); }
            to { transform:rotate(355deg) scale(1.08); }
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            width:112px !important;
            height:36px !important;
            right:92px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            width:72px !important;
            height:25px !important;
            right:57px !important;
            opacity:.68 !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            min-width:112px !important;
            padding-left:34px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before {
            width:24px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-iconbox,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-iconbox,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main.mcms-active .mcms-iconbox {
            border-color:#c8aa5b !important;
            background:linear-gradient(180deg,#202328,#08090b) !important;
            color:#f0d47d !important;
            text-shadow:0 0 7px rgba(239,211,127,.30) !important;
            box-shadow:inset 0 1px rgba(255,255,255,.08),0 1px 4px rgba(0,0,0,.42) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-iconbox *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-iconbox *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main.mcms-active .mcms-iconbox * {
            color:#f0d47d !important;
            text-shadow:0 0 7px rgba(239,211,127,.30) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-pill,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-pill,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main.mcms-active .mcms-pill {
            border-color:#756333 !important;
            background:#111316 !important;
            color:#f2ead7 !important;
            text-shadow:none !important;
            box-shadow:inset 0 1px rgba(255,255,255,.06) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on .mcms-pill *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active .mcms-pill *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main.mcms-active .mcms-pill * {
            color:#f2ead7 !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-row-label,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-check-label,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-help,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-note {
            color:#d9d4c9 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            padding-right:98px !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            padding-right:88px !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            width:76px !important;
            height:26px !important;
            right:60px !important;
            top:14px !important;
            opacity:.72 !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            padding-right:66px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            width:55px !important;
            height:20px !important;
            right:51px !important;
            top:10px !important;
            opacity:.62 !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-banner {
            max-width:calc(100% - 14px) !important;
            max-height:calc(100% - 14px) !important;
            overflow:hidden !important;
            container-type:inline-size !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-banner > * {
            position:relative !important;
            z-index:3 !important;
            min-width:0 !important;
            max-width:100% !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-title {
            width:100% !important;
            max-width:100% !important;
            white-space:normal !important;
            overflow-wrap:anywhere !important;
            word-break:normal !important;
            text-wrap:balance !important;
            hyphens:none !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-title.mcms-payout-title-long {
            font-size:clamp(26px,4.15vw,49px) !important;
            line-height:.94 !important;
            letter-spacing:.45px !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-title.mcms-payout-title-very-long {
            font-size:clamp(21px,3.35vw,39px) !important;
            line-height:.97 !important;
            letter-spacing:.2px !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-mission {
            width:100% !important;
            max-width:100% !important;
            white-space:normal !important;
            overflow:visible !important;
            text-overflow:clip !important;
            overflow-wrap:anywhere !important;
            line-height:1.15 !important;
            text-wrap:balance !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-source,
        #${SCRIPT.payoutFlashId} .mcms-payout-kicker,
        #${SCRIPT.payoutFlashId} .mcms-payout-amount,
        #${SCRIPT.payoutFlashId} .mcms-payout-tier {
            max-width:100% !important;
            white-space:normal !important;
            overflow-wrap:anywhere !important;
            line-height:1.12 !important;
        }#${SCRIPT.payoutFlashId} .mcms-payout-amount {
            width:100% !important;
            text-align:center !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-compact .mcms-payout-banner {
            padding:20px 22px 18px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-compact .mcms-payout-title {
            font-size:clamp(23px,3.8vw,45px) !important;
            line-height:.96 !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-compact .mcms-payout-divider {
            margin-top:7px !important;
            margin-bottom:7px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight .mcms-payout-banner {
            padding:16px 16px 14px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight .mcms-payout-title {
            font-size:clamp(19px,3.2vw,36px) !important;
            line-height:.98 !important;
            letter-spacing:0 !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight .mcms-payout-mission {
            font-size:clamp(10px,1.65vw,15px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight .mcms-payout-source,
        #${SCRIPT.payoutFlashId}.mcms-payout-fit-tight .mcms-payout-kicker {
            font-size:7px !important;
            letter-spacing:.8px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight .mcms-payout-amount {
            font-size:clamp(17px,2.6vw,27px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission {
            max-width:calc(100% - 8px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            background-position:right 18px top 19px,center !important;
            background-size:clamp(84px,20%,138px) auto,auto !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title {
            padding-inline:clamp(0px,8%,78px) !important;
        }
        @media (max-width:620px) {#${SCRIPT.payoutFlashId} .mcms-payout-banner {
                width:calc(100% - 12px) !important;
                min-width:0 !important;
                padding:20px 14px 18px !important;
            }#${SCRIPT.payoutFlashId} .mcms-payout-title {
                font-size:clamp(20px,8vw,38px) !important;
                line-height:.98 !important;
                letter-spacing:.2px !important;
            }#${SCRIPT.payoutFlashId} .mcms-payout-title.mcms-payout-title-long {
                font-size:clamp(18px,7vw,32px) !important;
            }#${SCRIPT.payoutFlashId} .mcms-payout-title.mcms-payout-title-very-long {
                font-size:clamp(16px,6.2vw,28px) !important;
            }#${SCRIPT.payoutFlashId} .mcms-payout-mission {
                font-size:clamp(10px,3.6vw,14px) !important;
            }#${SCRIPT.payoutFlashId} .mcms-payout-source,
        #${SCRIPT.payoutFlashId} .mcms-payout-kicker {
                font-size:7px !important;
                letter-spacing:.75px !important;
            }#${SCRIPT.payoutFlashId} .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId} .mcms-payout-banner::after {
                max-width:calc(100% - 24px) !important;
                overflow:hidden !important;
                text-overflow:ellipsis !important;
                white-space:nowrap !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
                background-size:82px auto,auto !important;
                background-position:right 10px top 15px,center !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title {
                padding-inline:0 !important;
                padding-top:24px !important;
            }
        }
        @media (prefers-reduced-motion:reduce) {html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId}.mcms-open,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId}::before,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-a {
                animation:none !important;
            }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} button,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} button {
                transition:none !important;
            }
        }
        @media (prefers-reduced-motion:reduce) {#${SCRIPT.majorIncidentFeedId}::before,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before { animation:none !important; }
        }
        @keyframes mcmsCriticalSyncPulse { 50% { filter:brightness(1.45); box-shadow:0 0 8px rgba(173,207,230,.38); } }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella {
            border-color:#8f172d !important;
            background:
                radial-gradient(circle at 50% 50%,rgba(216,25,63,.22),transparent 72%),
                linear-gradient(145deg,#222832,#090c11) !important;
            box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 0 12px rgba(216,25,63,.24) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella::before {
            content:"" !important;
            position:absolute !important;
            inset:4px !important;
            background:url("${THEME_ASSETS.umbrellaEmblem}") center/contain no-repeat !important;
            opacity:1 !important;
            filter:drop-shadow(0 2px 4px rgba(0,0,0,.48)) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-umbrella::after {
            content:"BSL-4" !important;
            position:absolute !important;
            right:3px !important;
            bottom:2px !important;
            color:#fff !important;
            font:950 4.8px/1 Consolas,monospace !important;
            letter-spacing:.45px !important;
            text-shadow:0 1px 2px #000 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn {
            background:
                url("${THEME_ASSETS.umbrellaEmblem}") center/74% auto no-repeat,
                radial-gradient(circle at 50% 48%,rgba(216,25,63,.13),transparent 72%),
                linear-gradient(180deg,#23272f,#0b0e13) !important;
            color:transparent !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            background:
                url("${THEME_ASSETS.umbrellaEmblem}") center/74% auto no-repeat,
                linear-gradient(180deg,#fff,#dfe4e8) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} {
            background:
                linear-gradient(180deg,rgba(6,13,8,.86),rgba(4,9,6,.95)),
                url("${THEME_ASSETS.umbrellaFacilitySchematic}") center 92px/96% auto no-repeat,
                repeating-linear-gradient(0deg,rgba(255,255,255,.026) 0 1px,transparent 1px 4px),
                radial-gradient(ellipse at 50% 18%,rgba(200,16,46,.12),transparent 58%),
                linear-gradient(180deg,rgba(12,23,14,.992),rgba(5,12,7,.992)) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header {
            background:
                url("${THEME_ASSETS.umbrellaEmblem}") right 92px center/48px auto no-repeat,
                repeating-linear-gradient(90deg,rgba(216,25,63,.025) 0 1px,transparent 1px 16px),
                linear-gradient(180deg,#262a31,#14171d) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::before {
            left:138px !important;
            right:auto !important;
            max-width:calc(100% - 246px) !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-section-label {
            position:relative !important;
            padding-right:29px !important;
            overflow:hidden !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-section-label::after {
            content:"" !important;
            position:absolute !important;
            right:6px !important;
            top:50% !important;
            width:19px !important;
            height:19px !important;
            transform:translateY(-50%) !important;
            background:url("${THEME_ASSETS.umbrellaContainmentBadge}") center/contain no-repeat !important;
            opacity:.72 !important;
            pointer-events:none !important;
            filter:drop-shadow(0 0 4px rgba(216,25,63,.28)) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="resources"],
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="ops"] {
            position:relative !important;
            isolation:isolate !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="resources"]::after,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="ops"]::after {
            content:"" !important;
            position:absolute !important;
            right:-7px !important;
            bottom:8px !important;
            width:118px !important;
            height:190px !important;
            background:url("${THEME_ASSETS.umbrellaSpecimenVial}") center bottom/contain no-repeat !important;
            opacity:.075 !important;
            pointer-events:none !important;
            z-index:0 !important;
            filter:grayscale(.12) drop-shadow(0 8px 10px rgba(0,0,0,.35)) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="ops"]::after {
            right:4px !important;
            bottom:12px !important;
            width:178px !important;
            height:110px !important;
            background-image:url("${THEME_ASSETS.umbrellaSurveillanceTerminal}") !important;
            opacity:.065 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="resources"] > *,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="ops"] > * {
            position:relative !important;
            z-index:1 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-head {
            position:relative !important;
            overflow:hidden !important;
            isolation:isolate !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-head::after {
            content:"" !important;
            position:absolute !important;
            right:84px !important;
            top:50% !important;
            width:64px !important;
            height:64px !important;
            transform:translateY(-50%) !important;
            background:url("${THEME_ASSETS.umbrellaContainmentBadge}") center/contain no-repeat !important;
            opacity:.11 !important;
            pointer-events:none !important;
            z-index:0 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-head::after {
            right:78px !important;
            width:116px !important;
            height:70px !important;
            background-image:url("${THEME_ASSETS.umbrellaSurveillanceTerminal}") !important;
            opacity:.095 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.vehicleStatusId} .mcms-vcs-head > * {
            position:relative !important;
            z-index:1 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            padding-left:40px !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before {
            content:"" !important;
            position:absolute !important;
            left:7px !important;
            top:50% !important;
            width:27px !important;
            height:27px !important;
            transform:translateY(-50%) !important;
            background:url("${THEME_ASSETS.umbrellaEmblem}") center/contain no-repeat !important;
            border:0 !important;
            box-shadow:none !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.helpCenterId} .mcms-help-window {
            border-color:rgba(216,25,63,.64) !important;
            background:#070b0d !important;
            box-shadow:0 28px 90px rgba(0,0,0,.78),inset 0 1px rgba(255,255,255,.05),0 0 34px rgba(216,25,63,.12) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.helpCenterId} .mcms-help-toolbar {
            background:
                url("${THEME_ASSETS.umbrellaFacilitySchematic}") right center/420px auto no-repeat,
                linear-gradient(180deg,#252a31,#101319) !important;
            border-bottom-color:#9e1830 !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.helpCenterId} .mcms-help-brand-icon {
            font-size:0 !important;
            border-color:#8f172d !important;
            border-radius:50% !important;
            background:
                url("${THEME_ASSETS.umbrellaEmblem}") center/84% auto no-repeat,
                #10141a !important;
            box-shadow:0 0 14px rgba(216,25,63,.23) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.helpCenterId} .mcms-help-address-lock { color:#ff5168 !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.helpCenterId} .mcms-help-progress::before { background:linear-gradient(90deg,transparent,#c8102e,#fff,#c8102e,transparent) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-red {
            background:radial-gradient(ellipse at 0% 50%,rgba(215,18,50,.76),rgba(110,5,24,.32) 34%,transparent 68%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-blue {
            background:radial-gradient(ellipse at 100% 50%,rgba(236,241,244,.36),rgba(100,111,119,.15) 34%,transparent 68%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-cinematic {
            background:
                radial-gradient(circle at 50% 50%,transparent 0 14%,rgba(3,8,7,.30) 58%,rgba(0,2,2,.94) 100%),
                linear-gradient(120deg,rgba(200,16,46,.11),transparent 36%,rgba(236,242,244,.055)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-a {
            background:
                linear-gradient(180deg,rgba(3,10,8,.42),rgba(3,8,7,.68)),
                url("${THEME_ASSETS.umbrellaFacilitySchematic}") center/cover no-repeat,
                repeating-linear-gradient(0deg,rgba(91,235,158,.022) 0 1px,transparent 1px 5px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-b {
            background:
                url("${THEME_ASSETS.umbrellaEmblem}") center/340px auto no-repeat,
                radial-gradient(circle at 50% 50%,rgba(200,16,46,.16),transparent 34%),
                repeating-conic-gradient(from 0deg at 50% 50%,transparent 0 29deg,rgba(235,241,244,.025) 29deg 30deg,transparent 30deg 59deg,rgba(204,24,48,.035) 59deg 60deg) !important;
            filter:drop-shadow(0 0 26px rgba(200,16,46,.18)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-theme-fx-c {
            background:
                url("${THEME_ASSETS.umbrellaPayoutSeal}") center 82%/min(68%,720px) auto no-repeat,
                url("${THEME_ASSETS.umbrellaSurveillanceTerminal}") 8% 18%/min(29%,330px) auto no-repeat,
                linear-gradient(135deg,transparent 0 48%,rgba(208,35,47,.055) 48% 48.5%,transparent 48.5% 51.5%,rgba(226,235,238,.045) 51.5% 52%,transparent 52%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner {
            width:min(820px,calc(100% - 28px)) !important;
            padding:34px 46px 27px !important;
            border:1px solid rgba(231,237,240,.58) !important;
            border-left:9px solid #c8102e !important;
            border-right:4px solid #68727a !important;
            background:
                linear-gradient(108deg,rgba(5,8,10,.54),rgba(22,28,31,.68) 24%,rgba(27,32,36,.72) 52%,rgba(20,25,28,.66) 76%,rgba(4,7,9,.52)),
                repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 5px) !important;
            clip-path:polygon(0 0,95% 0,100% 17px,100% 100%,5% 100%,0 calc(100% - 17px)) !important;
            box-shadow:0 31px 78px rgba(0,0,0,.70),-17px 0 42px rgba(200,16,46,.18),17px 0 34px rgba(226,235,238,.07),inset 0 0 42px rgba(200,16,46,.025) !important;
            backdrop-filter:blur(.8px) saturate(1.08) !important;
            -webkit-backdrop-filter:blur(.8px) saturate(1.08) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::before {
            content:"UMBRELLA CONTAINMENT // BSL-4 SECURE NODE" !important;
            left:24px !important;
            right:24px !important;
            top:11px !important;
            max-width:calc(100% - 48px) !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
            color:rgba(255,123,142,.78) !important;
            font:950 7px/1 Consolas,monospace !important;
            letter-spacing:1.15px !important;
            text-align:center !important;
            z-index:2 !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::after {
            content:"" !important;
            position:absolute !important;
            inset:0 !important;
            background:
                url("${THEME_ASSETS.umbrellaEmblem}") right 18px center/126px auto no-repeat,
                url("${THEME_ASSETS.umbrellaSpecimenVial}") left 18px bottom -52px/88px auto no-repeat !important;
            opacity:.085 !important;
            z-index:1 !important;
            pointer-events:none !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title {
            width:100% !important;
            max-width:100% !important;
            padding-inline:clamp(0px,3.5vw,34px) !important;
            color:#f4f7f8 !important;
            font-family:"Arial Narrow","Roboto Condensed",Arial,sans-serif !important;
            font-size:clamp(31px,4.55vw,54px) !important;
            line-height:.94 !important;
            font-weight:950 !important;
            letter-spacing:1.35px !important;
            transform:scaleX(.97) !important;
            text-shadow:3px 3px 0 rgba(5,8,10,.92),5px 5px 0 rgba(200,16,46,.42),0 0 20px rgba(255,255,255,.12) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title.mcms-payout-title-long {
            font-size:clamp(27px,3.85vw,46px) !important;
            line-height:.96 !important;
            letter-spacing:.85px !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title.mcms-payout-title-very-long {
            font-size:clamp(23px,3.25vw,39px) !important;
            line-height:.98 !important;
            letter-spacing:.45px !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-mission {
            max-width:min(690px,100%) !important;
            max-height:2.35em !important;
            margin:8px auto 0 !important;
            overflow:hidden !important;
            font-size:clamp(11px,1.55vw,16px) !important;
            line-height:1.16 !important;
            text-shadow:0 2px 9px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.72) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-divider {
            width:min(440px,82%) !important;
            height:3px !important;
            margin:10px auto 8px !important;
            background:linear-gradient(90deg,transparent,#c8102e 13%,#f0f4f5 48%,#68727a 84%,transparent) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-tier {
            margin-bottom:8px !important;
            border-radius:2px !important;
            border-color:#d82b47 !important;
            color:#fff !important;
            background:rgba(73,5,20,.64) !important;
            box-shadow:inset 4px 0 0 #dfe6e9 !important;
            letter-spacing:1.25px !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-source {
            color:#f0f4f5 !important;
            font-size:7.5px !important;
            letter-spacing:1.45px !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-kicker {
            color:#ff7b90 !important;
            font-size:clamp(8px,1.15vw,10px) !important;
            line-height:1.12 !important;
            letter-spacing:clamp(1.2px,.24vw,2.4px) !important;
        }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-amount {
            margin-top:6px !important;
            color:#fff !important;
            font-size:clamp(19px,2.7vw,30px) !important;
            line-height:1.05 !important;
            letter-spacing:.75px !important;
            font-variant-numeric:tabular-nums !important;
            text-shadow:0 0 12px rgba(255,255,255,.28),3px 3px 0 rgba(200,16,46,.62),0 0 30px rgba(200,16,46,.20) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-compact[data-template="biohazard"] .mcms-payout-banner {
            padding:29px 30px 22px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-compact[data-template="biohazard"] .mcms-payout-title {
            font-size:clamp(24px,3.45vw,41px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight[data-template="biohazard"] .mcms-payout-banner {
            padding:26px 22px 19px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight[data-template="biohazard"] .mcms-payout-title {
            font-size:clamp(20px,2.95vw,34px) !important;
            letter-spacing:.25px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-fit-tight[data-template="biohazard"] .mcms-payout-kicker {
            font-size:7px !important;
            letter-spacing:.9px !important;
        }
        @media (max-width:760px) {html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header {
                background:
                    repeating-linear-gradient(90deg,rgba(216,25,63,.025) 0 1px,transparent 1px 16px),
                    linear-gradient(180deg,#262a31,#14171d) !important;
            }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::before { display:none !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="resources"]::after,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-tab-panel[data-panel="ops"]::after { opacity:.045 !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner { padding:30px 18px 21px !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title { padding-inline:0 !important; font-size:clamp(24px,7.4vw,40px) !important; letter-spacing:.65px !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title.mcms-payout-title-long { font-size:clamp(21px,6.5vw,34px) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-title.mcms-payout-title-very-long { font-size:clamp(18px,5.6vw,29px) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-mission { font-size:clamp(10px,3.3vw,14px) !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-kicker { font-size:7px !important; letter-spacing:1px !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::after { opacity:.06 !important; background-size:88px auto,62px auto !important; }#${SCRIPT.payoutFlashId}[data-template="biohazard"] .mcms-payout-banner::before { left:16px !important; right:16px !important; max-width:calc(100% - 32px) !important; font-size:6px !important; letter-spacing:.65px !important; }
        }
        @media (prefers-reduced-motion:reduce) {html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-header::after,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on { animation:none !important; }
        }#${SCRIPT.panelId} .mcms-help-button {
            font-weight:950 !important;
            color:#bcecff !important;
            border-color:rgba(87,194,245,.36) !important;
            background:rgba(28,93,124,.24) !important;
        }#${SCRIPT.panelId} .mcms-help-button::after { content:'' !important; }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-help-button {
            border:1px solid var(--mcms-cp-ink) !important; border-radius:0 !important;
            background:var(--mcms-cp-ink) !important; color:var(--mcms-cp-yellow) !important;
            clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,0 100%) !important;
        }html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-help-button:hover,
        html[data-mcms-ui-theme="cyberpunk"] #${SCRIPT.panelId} .mcms-help-button:focus-visible { background:var(--mcms-cp-cyan) !important; color:#071019 !important; }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-help-button {
            border:1px solid #698252 !important; border-radius:4px !important;
            background:linear-gradient(180deg,#1f2d1f,#0d160f) !important; color:var(--mcms-fo-green-strong) !important;
            box-shadow:inset 0 1px rgba(221,255,198,.08) !important; text-shadow:0 0 4px rgba(185,255,114,.34) !important;
        }html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-help-button:hover,
        html[data-mcms-ui-theme="fallout4"] #${SCRIPT.panelId} .mcms-help-button:focus-visible { border-color:var(--mcms-fo-green-strong) !important; background:var(--mcms-fo-green-strong) !important; color:var(--mcms-fo-ink) !important; text-shadow:none !important; }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-help-button {
            border:1px solid #727984 !important; border-radius:4px !important;
            background:linear-gradient(180deg,#23272e,#0d1015) !important; color:var(--mcms-um-white-strong) !important;
            box-shadow:inset 0 1px rgba(255,255,255,.08) !important;
        }html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-help-button:hover,
        html[data-mcms-ui-theme="umbrella"] #${SCRIPT.panelId} .mcms-help-button:focus-visible { border-color:#f24b59 !important; background:#7f111d !important; color:#fff !important; }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-help-button {
            border:1px solid #65685f !important; border-radius:2px !important; background:#20221f !important; color:#e7d1a1 !important;
            box-shadow:inset 0 1px rgba(255,255,255,.06) !important;
        }html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-help-button:hover,
        html[data-mcms-ui-theme="factorio"] #${SCRIPT.panelId} .mcms-help-button:focus-visible { border-color:#ec9743 !important; background:#df842f !important; color:var(--mcms-fac-ink) !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-help-button {
            border:1px solid #8f7a3f !important; border-radius:2px !important; background:#111316 !important; color:#f0d47f !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-help-button:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-help-button:focus-visible { border-color:#d5b85f !important; background:#292313 !important; color:#fff0b6 !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before { right:90px !important; }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before { right:108px !important; }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before { right:101px !important; }#${SCRIPT.helpCenterId} {
            display:none !important; position:fixed !important; inset:0 !important; z-index:2147483600 !important;
            align-items:center !important; justify-content:center !important; padding:18px !important;
            background:rgba(0,6,10,.72) !important; backdrop-filter:blur(9px) !important; -webkit-backdrop-filter:blur(9px) !important;
            pointer-events:auto !important; font-family:Arial,Helvetica,sans-serif !important;
        }#${SCRIPT.helpCenterId}.mcms-open { display:flex !important; }#${SCRIPT.helpCenterId},
        #${SCRIPT.helpCenterId} * { box-sizing:border-box !important; }#${SCRIPT.helpCenterId} .mcms-help-window {
            width:min(1500px,100%) !important; height:min(940px,calc(100vh - 36px)) !important; min-height:420px !important;
            display:flex !important; flex-direction:column !important; overflow:hidden !important;
            border:1px solid rgba(92,190,232,.42) !important; border-radius:16px !important;
            background:#071018 !important; box-shadow:0 28px 90px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.05) !important;
        }#${SCRIPT.helpCenterId} .mcms-help-toolbar {
            min-height:56px !important; display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; align-items:center !important; gap:12px !important;
            padding:8px 10px 8px 14px !important; border-bottom:1px solid rgba(93,175,212,.25) !important;
            background:linear-gradient(180deg,#102532,#091720) !important; color:#edf8ff !important;
        }#${SCRIPT.helpCenterId} .mcms-help-brand { min-width:0 !important; display:flex !important; align-items:center !important; gap:10px !important; }#${SCRIPT.helpCenterId} .mcms-help-brand-icon {
            width:36px !important; height:36px !important; flex:0 0 36px !important; display:grid !important; place-items:center !important;
            border:1px solid #4aa7cf !important; border-radius:11px !important; background:#0b2c3d !important; color:#bfeeff !important;
            font-size:20px !important; font-weight:1000 !important; box-shadow:0 0 14px rgba(79,195,247,.14) !important;
        }#${SCRIPT.helpCenterId} .mcms-help-brand-copy { min-width:0 !important; }#${SCRIPT.helpCenterId} .mcms-help-brand-copy strong { display:block !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; font-size:13px !important; font-weight:950 !important; }#${SCRIPT.helpCenterId} .mcms-help-brand-copy small { display:block !important; margin-top:2px !important; color:#8eabb9 !important; font-size:9px !important; font-weight:750 !important; }#${SCRIPT.helpCenterId} .mcms-help-actions { display:flex !important; gap:6px !important; }#${SCRIPT.helpCenterId} .mcms-help-action {
            min-width:38px !important; height:38px !important; padding:0 10px !important; border:1px solid #31596d !important; border-radius:10px !important;
            background:#0c202b !important; color:#dff5ff !important; cursor:pointer !important; font-size:12px !important; font-weight:900 !important;
        }#${SCRIPT.helpCenterId} .mcms-help-action:hover,
        #${SCRIPT.helpCenterId} .mcms-help-action:focus-visible { border-color:#62cfff !important; background:#15435a !important; outline:none !important; }#${SCRIPT.helpCenterId} .mcms-help-close { font-size:20px !important; }#${SCRIPT.helpCenterId} .mcms-help-address {
            min-height:35px !important; display:grid !important; grid-template-columns:auto minmax(0,1fr) auto !important; gap:8px !important; align-items:center !important;
            padding:5px 12px !important; border-bottom:1px solid rgba(67,121,146,.22) !important; background:#07131b !important;
            color:#88a9b9 !important; font-size:9px !important;
        }#${SCRIPT.helpCenterId} .mcms-help-address-lock { color:#69d99b !important; }#${SCRIPT.helpCenterId} .mcms-help-address-text { overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }#${SCRIPT.helpCenterId} .mcms-help-status { color:#b8d7e6 !important; font-weight:850 !important; white-space:nowrap !important; }#${SCRIPT.helpCenterId} .mcms-help-progress { height:2px !important; background:transparent !important; overflow:hidden !important; }#${SCRIPT.helpCenterId}.mcms-loading .mcms-help-progress::before {
            content:'' !important; display:block !important; width:34% !important; height:100% !important; background:linear-gradient(90deg,transparent,#4fc3f7,#a8e7ff,transparent) !important;
            animation:mcmsHelpProgress 1.05s ease-in-out infinite !important;
        }
        @keyframes mcmsHelpProgress { from { transform:translateX(-120%) } to { transform:translateX(400%) } }#${SCRIPT.helpCenterId} .mcms-help-content { position:relative !important; flex:1 1 auto !important; min-height:0 !important; background:#071018 !important; }#${SCRIPT.helpCenterId} .mcms-help-frame { width:100% !important; height:100% !important; display:block !important; border:0 !important; background:#071018 !important; }#${SCRIPT.helpCenterId} .mcms-help-fallback {
            position:absolute !important; inset:0 !important; display:none !important; place-items:center !important; padding:24px !important;
            background:radial-gradient(circle at 50% 20%,rgba(79,195,247,.10),transparent 34rem),#071018 !important;
        }#${SCRIPT.helpCenterId}.mcms-error .mcms-help-fallback { display:grid !important; }#${SCRIPT.helpCenterId}.mcms-error .mcms-help-frame { visibility:hidden !important; }#${SCRIPT.helpCenterId} .mcms-help-error-card {
            width:min(520px,100%) !important; padding:24px !important; border:1px solid rgba(96,184,224,.32) !important; border-radius:16px !important;
            background:#0d1f2a !important; color:#eaf6fb !important; text-align:center !important; box-shadow:0 18px 48px rgba(0,0,0,.40) !important;
        }#${SCRIPT.helpCenterId} .mcms-help-error-card strong { display:block !important; font-size:18px !important; }#${SCRIPT.helpCenterId} .mcms-help-error-card p { margin:9px 0 16px !important; color:#9db5c1 !important; font-size:11px !important; line-height:1.45 !important; }#${SCRIPT.helpCenterId} .mcms-help-error-actions { display:flex !important; justify-content:center !important; flex-wrap:wrap !important; gap:8px !important; }#${SCRIPT.helpCenterId} .mcms-help-error-actions button { min-height:38px !important; padding:0 14px !important; border:1px solid #4286a5 !important; border-radius:9px !important; background:#12384b !important; color:#fff !important; cursor:pointer !important; font-size:11px !important; font-weight:900 !important; }
        @media (max-width:760px) {#${SCRIPT.helpCenterId} { padding:0 !important; }#${SCRIPT.helpCenterId} .mcms-help-window { width:100% !important; height:100% !important; min-height:100% !important; border:0 !important; border-radius:0 !important; }#${SCRIPT.helpCenterId} .mcms-help-toolbar { min-height:58px !important; padding-top:calc(8px + env(safe-area-inset-top)) !important; }#${SCRIPT.helpCenterId} .mcms-help-brand-copy small { display:none !important; }#${SCRIPT.helpCenterId} .mcms-help-action { min-width:40px !important; width:40px !important; padding:0 !important; }#${SCRIPT.helpCenterId} .mcms-help-source { display:none !important; }#${SCRIPT.helpCenterId} .mcms-help-address { padding-left:8px !important; padding-right:8px !important; }#${SCRIPT.helpCenterId} .mcms-help-address-text { font-size:8px !important; }
        }
        @media (prefers-reduced-motion:reduce) {#${SCRIPT.helpCenterId}.mcms-loading .mcms-help-progress::before { animation:none !important; width:100% !important; }
        }#${SCRIPT.panelId} .mcms-panel-sticky-stack {
            position:relative !important;
            min-width:0 !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId}.mcms-open {
            z-index:1040 !important;
            isolation:isolate !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-panel-sticky-stack {
            position:sticky !important;
            top:-12px !important;
            z-index:24 !important;
            margin:-12px -12px 12px !important;
            padding:0 12px !important;
            background:rgba(8,12,18,.995) !important;
            border-bottom:1px solid rgba(255,255,255,.13) !important;
            box-shadow:0 8px 14px rgba(0,0,0,.24) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-panel-sticky-stack .mcms-header {
            position:relative !important;
            top:auto !important;
            z-index:2 !important;
            margin:0 -12px !important;
            padding:10px 12px 9px !important;
            border-bottom:1px solid rgba(255,255,255,.12) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} .mcms-panel-sticky-stack .mcms-tabs {
            position:relative !important;
            top:auto !important;
            z-index:1 !important;
            margin:0 -4px !important;
            padding:8px 4px 10px !important;
        }#${SCRIPT.controlId} .mcms-launch-row {
            display:inline-flex !important; align-items:stretch !important; gap:5px !important; width:auto !important;
            pointer-events:auto !important;
        }#${SCRIPT.controlId} .mcms-economy-btn {
            width:40px !important; height:48px !important; padding:0 !important; border:1px solid rgba(142,210,120,.42) !important;
            border-radius:10px !important; background:rgba(10,20,12,.86) !important; color:#c8efbd !important;
            display:flex !important; flex-direction:column !important; align-items:center !important; justify-content:center !important; gap:2px !important;
            cursor:pointer !important; box-shadow:0 5px 16px rgba(0,0,0,.28) !important; backdrop-filter:blur(5px) !important;
        }#${SCRIPT.controlId} .mcms-economy-btn > span { font-size:18px !important; line-height:1 !important; }#${SCRIPT.controlId} .mcms-economy-btn > small { font-size:7px !important; line-height:1 !important; font-weight:950 !important; letter-spacing:.5px !important; }#${SCRIPT.controlId} .mcms-economy-btn:hover,
        #${SCRIPT.controlId} .mcms-economy-btn:focus-visible { background:rgba(43,92,38,.88) !important; color:#fff !important; border-color:#9ee58a !important; }#${SCRIPT.controlId} .mcms-economy-btn.mcms-on {
            background:linear-gradient(180deg,#2f8f45,#176329) !important; color:#fff !important; border-color:#b9f5a7 !important;
            box-shadow:0 0 0 2px rgba(155,235,130,.17),0 5px 16px rgba(0,0,0,.25) !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} { grid-template-columns:109px minmax(0,1fr) !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-launch-row { grid-area:menu !important; width:109px !important; gap:5px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-shell { grid-area:auto !important; width:52px !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-economy-btn { width:52px !important; height:48px !important; border-radius:13px !important; }html[data-mcms-command-bar-open="false"][data-mcms-tablet-active="true"] #${SCRIPT.controlId} {
            width:109px !important; max-width:109px !important; grid-template-columns:109px !important; grid-template-areas:"menu" !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-launch-row { display:contents !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-economy-btn {
            width:auto !important; min-width:0 !important; height:var(--mcms-mobile-filter-height,44px) !important; border-radius:10px !important; pointer-events:auto !important;
        }html[data-mcms-command-bar-open="false"][data-mcms-mobile-active="true"] #${SCRIPT.controlId} {
            width:104px !important; max-width:104px !important; grid-template-columns:50px 50px !important;
        }html[data-mcms-economy="true"] .leaflet-tile-pane img.leaflet-tile { filter:none !important; }html[data-mcms-economy="true"] .leaflet-fade-anim .leaflet-tile,
        html[data-mcms-economy="true"] .leaflet-zoom-animated,
        html[data-mcms-economy="true"] .leaflet-marker-icon,
        html[data-mcms-economy="true"] .leaflet-marker-shadow { transition:none !important; will-change:auto !important; }html[data-mcms-economy="true"] .leaflet-tile-pane,
        html[data-mcms-economy="true"] .leaflet-marker-pane { will-change:auto !important; }html[data-mcms-economy="true"] #${SCRIPT.controlId} *,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} *,
        html[data-mcms-economy="true"] #${SCRIPT.vehicleStatusId} *,
        html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId} * {
            animation:none !important; transition:none !important; backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
        }html[data-mcms-economy="true"] #${SCRIPT.controlId},
        html[data-mcms-economy="true"] #${SCRIPT.panelId},
        html[data-mcms-economy="true"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId} {
            backdrop-filter:none !important; -webkit-backdrop-filter:none !important; box-shadow:0 3px 10px rgba(0,0,0,.28) !important;
        }html[data-mcms-economy="true"] #${SCRIPT.controlId} button,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} button,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} .mcms-card,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-economy="true"] #${SCRIPT.vehicleStatusId} * { box-shadow:none !important; }html[data-mcms-economy="true"] #${SCRIPT.panelId}::before,
        html[data-mcms-economy="true"] #${SCRIPT.panelId}::after,
        html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId}::before { animation:none !important; display:none !important; }html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-track {
            animation:none !important; transform:none !important; will-change:auto !important; width:100% !important; min-width:100% !important;
        }html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-group { width:100% !important; justify-content:center !important; padding-right:0 !important; }html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-group:nth-child(n+2) { display:none !important; }html[data-mcms-economy="true"] .leaflet-marker-icon.mcms-marker-mission,
        html[data-mcms-economy="true"] .mcms-mission-spawn-focus,
        html[data-mcms-economy="true"] .mcms-mission-spawn-ring,
        html[data-mcms-economy="true"] .mcms-mission-spawn-label,
        html[data-mcms-economy="true"] .mcms-resource-gap-badge,
        html[data-mcms-economy="true"] .mcms-transport-watcher-badge,
        html[data-mcms-economy="true"] .mcms-stuck-mission-badge { animation:none !important; }html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-theme-fx,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-theme-particles,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-particles,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-bc-embers,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-vc-grid,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-bc-hud { display:none !important; animation:none !important; }html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} *,
        html[data-mcms-economy="true"] #${SCRIPT.toastId} { animation:none !important; transition:none !important; backdrop-filter:none !important; -webkit-backdrop-filter:none !important; }html[data-mcms-economy="true"] #mission_list .missionSideBarEntry,
        html[data-mcms-economy="true"] #mission_list [id^="mission_"],
        html[data-mcms-economy="true"] #radio_messages li,
        html[data-mcms-economy="true"] #radio_messages_important li {
            content-visibility:auto !important; contain-intrinsic-size:0 58px !important;
        }html[data-mcms-economy="true"] .progress-bar-striped.active,
        html[data-mcms-economy="true"] .progress.active .progress-bar { animation:none !important; }html[data-mcms-economy="true"][data-mcms-map-moving="true"] #${SCRIPT.majorIncidentFeedId} { visibility:hidden !important; }html[data-mcms-economy="true"] #${SCRIPT.controlId},
        html[data-mcms-economy="true"] #${SCRIPT.panelId},
        html[data-mcms-economy="true"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId},
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId},
        html[data-mcms-economy="true"] #${SCRIPT.toastId} {
            filter:none !important; text-shadow:none !important; mix-blend-mode:normal !important; isolation:auto !important;
        }html[data-mcms-economy="true"] #${SCRIPT.controlId} *,
        html[data-mcms-economy="true"] #${SCRIPT.controlId} *::before,
        html[data-mcms-economy="true"] #${SCRIPT.controlId} *::after,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} *,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} *::before,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} *::after,
        html[data-mcms-economy="true"] #${SCRIPT.vehicleStatusId} *,
        html[data-mcms-economy="true"] #${SCRIPT.majorIncidentFeedId} *,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} *,
        html[data-mcms-economy="true"] #${SCRIPT.toastId} {
            animation:none !important; transition:none !important; filter:none !important;
            backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
            box-shadow:none !important; text-shadow:none !important; will-change:auto !important;
        }html[data-mcms-economy="true"] #${SCRIPT.controlId} .mcms-economy-btn,
        html[data-mcms-economy="true"] #${SCRIPT.controlId} .mcms-shell {
            background-image:none !important; backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
        }html[data-mcms-economy="true"] #${SCRIPT.panelId} .mcms-tab-panel.mcms-active,
        html[data-mcms-economy="true"] #${SCRIPT.panelId} .mcms-section,
        html[data-mcms-economy="true"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-body {
            contain:layout paint style !important;
        }html[data-mcms-economy="true"] .leaflet-container *,
        html[data-mcms-economy="true"] #mission_list *,
        html[data-mcms-economy="true"] #radio_messages *,
        html[data-mcms-economy="true"] #radio_messages_important * {
            animation:none !important; transition:none !important; will-change:auto !important;
        }html[data-mcms-economy="true"] .leaflet-marker-shadow { display:none !important; }html[data-mcms-economy="true"] .leaflet-marker-icon,
        html[data-mcms-economy="true"] .leaflet-tooltip,
        html[data-mcms-economy="true"] .leaflet-popup-content-wrapper,
        html[data-mcms-economy="true"] .leaflet-popup-tip,
        html[data-mcms-economy="true"] #mission_list .missionSideBarEntry,
        html[data-mcms-economy="true"] #radio_messages li,
        html[data-mcms-economy="true"] #radio_messages_important li {
            filter:none !important; box-shadow:none !important; text-shadow:none !important;
        }html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-red,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-blue,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} .mcms-payout-cinematic,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} [class*="mcms-payout-theme-fx"],
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} [class*="mcms-payout-particle"],
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} [class*="mcms-payout-bc-"],
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId} [class*="mcms-payout-vc-"] {
            display:none !important;
        }html[data-mcms-economy="true"][data-mcms-map-moving="true"] .leaflet-marker-pane,
        html[data-mcms-economy="true"][data-mcms-map-moving="true"] .leaflet-shadow-pane,
        html[data-mcms-economy="true"][data-mcms-map-moving="true"] .leaflet-tooltip-pane,
        html[data-mcms-economy="true"][data-mcms-map-moving="true"] .leaflet-popup-pane,
        html[data-mcms-economy="true"][data-mcms-map-moving="true"] .leaflet-overlay-pane,
        html[data-mcms-economy="true"][data-mcms-map-moving="true"] #${SCRIPT.controlId},
        html[data-mcms-economy="true"][data-mcms-map-moving="true"] #${SCRIPT.majorIncidentFeedId} {
            visibility:hidden !important;
        }#${SCRIPT.controlId} *,
        #${SCRIPT.panelId} * *,
        #${SCRIPT.vehicleStatusId} *,
        #${SCRIPT.majorIncidentFeedId} * *,
        #${SCRIPT.helpCenterId} * { box-sizing:border-box !important; }#${SCRIPT.panelId} :is(.mcms-grid-2,.mcms-row,.mcms-ui-theme-grid,.mcms-profile-row,.mcms-bookmark-row,.mcms-quick-row,.mcms-finance-vault-summary) > * { min-width:0 !important; max-width:100% !important; }#${SCRIPT.panelId} :is(.mcms-status,.mcms-footer,.mcms-subtitle,.mcms-row-label,.mcms-profile-main,.mcms-bookmark-name,.mcms-ui-theme-copy,.mcms-text),
        #${SCRIPT.vehicleStatusId} :is(.mcms-vehicle-status-title,.mcms-vehicle-status-body) { overflow-wrap:anywhere !important; word-break:normal !important; }#${SCRIPT.panelId},
        #${SCRIPT.vehicleStatusId},
        #${SCRIPT.helpCenterId} { overscroll-behavior:contain !important; scrollbar-gutter:stable both-edges; }#${SCRIPT.controlId} :is(button,[tabindex]),
        #${SCRIPT.panelId} :is(button,input,select,[tabindex]),
        #${SCRIPT.vehicleStatusId} :is(button,input,select,[tabindex]),
        #${SCRIPT.helpCenterId} :is(button,input,select,a,[tabindex]) { outline:none !important; }#${SCRIPT.controlId} :is(button,[tabindex]):focus-visible,
        #${SCRIPT.panelId} :is(button,input,select,[tabindex]):focus-visible,
        #${SCRIPT.vehicleStatusId} :is(button,input,select,[tabindex]):focus-visible,
        #${SCRIPT.helpCenterId} :is(button,input,select,a,[tabindex]):focus-visible { outline:3px solid #8cddff !important; outline-offset:2px !important; }#${SCRIPT.panelId} :is(button,input,select):disabled :is(button,input,select):disabled,
        #${SCRIPT.vehicleStatusId} :is(button,input,select):disabled { opacity:.55 !important; cursor:not-allowed !important; }html:not([data-mcms-tablet-active="true"]):not([data-mcms-mobile-active="true"]) #${SCRIPT.panelId} {
            width:min(360px,calc(100vw - 24px)) !important; max-width:calc(100vw - 24px) !important;
        }html:not([data-mcms-tablet-active="true"]):not([data-mcms-mobile-active="true"]) #${SCRIPT.panelId} .mcms-header {
            grid-template-columns:minmax(0,1fr) 32px 32px 32px !important; gap:6px !important; min-height:48px !important;
        }html:not([data-mcms-tablet-active="true"]):not([data-mcms-mobile-active="true"]) #${SCRIPT.panelId} :is(.mcms-reset-panel,.mcms-help-button,.mcms-close) { width:32px !important; height:32px !important; min-width:32px !important; }#${SCRIPT.panelId} .mcms-title { min-width:0 !important; white-space:normal !important; font-size:11px !important; line-height:1.15 !important; }#${SCRIPT.panelId} .mcms-subtitle { white-space:normal !important; font-size:9px !important; line-height:1.25 !important; }#${SCRIPT.panelId} .mcms-tabs { min-width:0 !important; }#${SCRIPT.panelId} .mcms-tab-btn { min-width:0 !important; overflow:hidden !important; text-overflow:ellipsis !important; font-size:9px !important; }#${SCRIPT.panelId} .mcms-tab-panel[hidden] { display:none !important; }#${SCRIPT.panelId} .mcms-section-label { font-size:9.5px !important; line-height:1.25 !important; }#${SCRIPT.panelId} .mcms-status { font-size:9.5px !important; line-height:1.42 !important; }#${SCRIPT.panelId} .mcms-row-label { font-size:10px !important; line-height:1.3 !important; }#${SCRIPT.panelId} :is(.mcms-label,.mcms-bookmark-name,.mcms-profile-main strong,.mcms-ui-theme-copy strong) { font-size:10.5px !important; line-height:1.2 !important; }#${SCRIPT.panelId} :is(.mcms-input,.mcms-select,.mcms-small-btn,.mcms-position-btn,.mcms-bookmark-btn,.mcms-pin-btn) { min-height:32px !important; }#${SCRIPT.panelId} .mcms-footer { gap:4px !important; font-size:9px !important; line-height:1.35 !important; }#${SCRIPT.panelId} .mcms-discord-wide { grid-template-columns:minmax(96px,35%) minmax(0,1fr) !important; }#${SCRIPT.panelId} .mcms-finance-vault-summary { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:7px !important; }#${SCRIPT.vehicleStatusId} .mcms-vehicle-status-title { font-size:12px !important; line-height:1.2 !important; }#${SCRIPT.vehicleStatusId} .mcms-vehicle-status-body { font-size:10px !important; line-height:1.35 !important; }#${SCRIPT.majorIncidentFeedId} :is(.mcms-major-feed-track,.mcms-major-feed-item,.mcms-major-feed-copy) { min-width:0 !important; }#${SCRIPT.majorIncidentFeedId} .mcms-major-feed-copy { overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }html[data-mcms-tablet-active="true"] #${SCRIPT.panelId} :is(.mcms-status,.mcms-row-label) { font-size:11px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs {
            top:40px !important; display:flex !important; gap:6px !important; overflow-x:auto !important; overflow-y:hidden !important; padding:3px 2px 7px !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tab-btn { width:auto !important; min-width:88px !important; height:44px !important; padding:0 11px !important; font-size:10px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-panel-sticky-stack { position:sticky !important; top:-8px !important; z-index:9 !important; background:rgba(6,10,15,.985) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-header { position:relative !important; top:auto !important; margin:-8px -8px 5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} :is(.mcms-status,.mcms-row-label) { font-size:10px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-grid-2 { align-items:stretch !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-ui-theme-btn { min-width:0 !important; overflow:hidden !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.toastId} {
            left:auto !important; right:max(10px,env(safe-area-inset-right)) !important; top:max(10px,env(safe-area-inset-top)) !important; bottom:auto !important;
            width:auto !important; max-width:min(320px,calc(100vw - 20px)) !important; transform:translateY(-6px) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.toastId}.mcms-flash { transform:translateY(0) !important; }
        @media (max-width:380px) {html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs { display:flex !important; }
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-panel-sticky-stack,
        html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-tab-panel { width:100% !important; max-width:100% !important; overflow-x:hidden !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} :is(.mcms-help-button,.mcms-close,.mcms-reset-panel) {
            display:grid !important; place-items:center !important; line-height:1 !important; padding:0 !important;
        }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-section-label { font-size:9.5px !important; line-height:1.25 !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-ops-stat-label { font-size:9px !important; line-height:1.2 !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-sweep-state { font-size:8.5px !important; line-height:1.1 !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-sweep-log,
        html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-empty-state { font-size:9px !important; line-height:1.35 !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-alliance-text { font-size:9px !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-finance-vault-summary span { font-size:9px !important; line-height:1.2 !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-finance-vault-summary b { font-size:10px !important; line-height:1.2 !important; white-space:normal !important; }html[data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-finance-vault-summary small { font-size:9px !important; line-height:1.4 !important; }html[data-mcms-tablet-active="true"][data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-section-label,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-section-label { font-size:10px !important; }html[data-mcms-tablet-active="true"][data-mcms-ui-theme] #${SCRIPT.panelId} :is(.mcms-ops-stat-label,.mcms-sweep-state,.mcms-alliance-text),
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme] #${SCRIPT.panelId} :is(.mcms-ops-stat-label,.mcms-sweep-state,.mcms-alliance-text) { font-size:9.5px !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.toastId} { top:calc(max(10px,env(safe-area-inset-top)) + 58px) !important; }body > nav.navbar,
        body > .navbar,
        body > header.navbar,
        #navbar,
        #navbar-main,
        #navbar_main,
        .navbar.navbar-fixed-top,
        .navbar.navbar-static-top {
            z-index:1100 !important;
        }.navbar .dropdown.open,
        .navbar .dropdown.show,
        .navbar .btn-group.open,
        .navbar .btn-group.show,
        .navbar .nav > li.open,
        .navbar .nav > li.show,
        body > .dropdown.open,
        body > .dropdown.show {
            position:relative !important;
            z-index:1110 !important;
        }body .dropdown-menu,
        body .dropdown-backdrop,
        body .popover,
        body .tooltip,
        body .typeahead,
        body .ui-autocomplete {
            z-index:1120 !important;
        }body .modal-backdrop { z-index:1190 !important; }body .modal,
        body .bootbox.modal,
        body [role="dialog"][aria-modal="true"] { z-index:1200 !important; }html[data-mcms-tablet-active="true"][data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-reset-panel,
        html[data-mcms-mobile-active="true"][data-mcms-ui-theme] #${SCRIPT.panelId} .mcms-reset-panel { display:none !important; }html[data-mcms-ui-theme="bond007"] {
            --mcms-bond-black:#060709;
            --mcms-bond-ink:#101215;
            --mcms-bond-charcoal:#191c20;
            --mcms-bond-panel:#20242a;
            --mcms-bond-panel-2:#2b3036;
            --mcms-bond-ivory:#f4efdf;
            --mcms-bond-paper:#ded6c2;
            --mcms-bond-gold:#d6b65f;
            --mcms-bond-gold-bright:#f4dc91;
            --mcms-bond-red:#a71924;
            --mcms-bond-steel:#9099a2;
            --mcms-bond-muted:#b8bec4;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-preview-bond007 {
            border:1px solid #d6b65f !important;
            background:
                url("${THEME_ASSETS.bond007CommandSeal}") right 5px center/38px auto no-repeat,
                url("${THEME_ASSETS.bond007DossierGrid}") center/cover no-repeat,
                linear-gradient(145deg,#22262c,#08090b) !important;
            box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 0 12px rgba(214,182,95,.24) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-preview-bond007::before {
            inset:6px 44px 6px 6px !important;
            background-image:url("${THEME_ASSETS.bond007Logo}") !important;
            filter:invert(1) sepia(.24) saturate(.7) brightness(1.25) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-preview-bond007::after {
            content:"SIS" !important;
            right:6px !important;
            bottom:3px !important;
            color:#f2d982 !important;
            font-size:5px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-shell {
            border-color:rgba(231,205,127,.78) !important;
            background:
                url("${THEME_ASSETS.bond007Gunbarrel}") right -35px bottom -35px/120px auto no-repeat,
                linear-gradient(145deg,rgba(35,39,45,.99),rgba(5,6,8,.995)) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-menu-btn {
            position:relative !important;
            overflow:hidden !important;
            background:
                url("${THEME_ASSETS.bond007CommandSeal}") center/72% auto no-repeat,
                linear-gradient(180deg,#292d33,#090a0c) !important;
            color:transparent !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-menu-btn > * { opacity:0 !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-menu-btn::after {
            content:"00" !important;
            position:absolute !important;
            right:4px !important;
            bottom:3px !important;
            color:#f1d57a !important;
            font:950 6px/1 Arial,sans-serif !important;
            letter-spacing:.7px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} {
            isolation:isolate !important;
            border:1px solid #b89643 !important;
            border-radius:3px !important;
            background:
                url("${THEME_ASSETS.bond007DossierGrid}") center/cover no-repeat,
                url("${THEME_ASSETS.bond007Gunbarrel}") right -120px bottom -140px/470px auto no-repeat,
                radial-gradient(circle at 90% 10%,rgba(214,182,95,.13),transparent 31%),
                linear-gradient(145deg,#20242a,#07080a 69%) !important;
            color:#f2ecdd !important;
            box-shadow:0 24px 64px rgba(0,0,0,.72),inset 0 0 0 1px rgba(255,255,255,.04),0 0 22px rgba(172,135,46,.14) !important;
        }html:not([data-mcms-tablet-active="true"]):not([data-mcms-mobile-active="true"])[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} {
            width:min(420px,calc(100vw - 24px)) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header {
            min-height:62px !important;
            padding-right:10px !important;
            border-bottom:1px solid rgba(231,205,127,.72) !important;
            background:linear-gradient(90deg,rgba(255,255,255,.075),rgba(255,255,255,.012) 55%,rgba(214,182,95,.045)) !important;
        }html:not([data-mcms-tablet-active="true"]):not([data-mcms-mobile-active="true"])[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            right:122px !important;
            top:15px !important;
            width:62px !important;
            height:27px !important;
            background-image:url("${THEME_ASSETS.bond007Logo}") !important;
            background-size:contain !important;
            background-position:center !important;
            background-repeat:no-repeat !important;
            filter:invert(1) sepia(.24) saturate(.68) brightness(1.3) !important;
            opacity:.9 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::after {
            content:"SIS // SECTION 00 // EYES ONLY" !important;
            left:14px !important;
            bottom:5px !important;
            color:#d8b45f !important;
            font:900 6px/1 Consolas,monospace !important;
            letter-spacing:1.05px !important;
            opacity:.92 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            min-width:0 !important;
            min-height:60px !important;
            padding:9px 76px 15px 16px !important;
            border-left:4px solid #a71924 !important;
            background:transparent !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-title {
            max-width:100% !important;
            overflow:visible !important;
            color:#fff9ea !important;
            font:700 clamp(15px,1.5vw,21px)/1.04 Georgia,"Times New Roman",serif !important;
            letter-spacing:.45px !important;
            white-space:normal !important;
            overflow-wrap:anywhere !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-subtitle {
            max-width:100% !important;
            overflow:visible !important;
            color:#c2c5c7 !important;
            font-size:9px !important;
            line-height:1.15 !important;
            white-space:normal !important;
            overflow-wrap:anywhere !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tabs {
            position:relative !important;
            gap:3px !important;
            padding:5px !important;
            border-bottom:1px solid rgba(214,182,95,.45) !important;
            background:rgba(5,6,8,.88) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tabs::after {
            content:"" !important;
            position:absolute !important;
            left:8px !important;
            right:8px !important;
            bottom:-1px !important;
            height:6px !important;
            background:url("${THEME_ASSETS.bond007GoldDivider}") center/100% 100% no-repeat !important;
            opacity:.65 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tab-btn {
            min-width:0 !important;
            min-height:40px !important;
            padding:7px 8px !important;
            border:1px solid #494f55 !important;
            border-radius:1px !important;
            background:linear-gradient(180deg,#25292e,#101215) !important;
            color:#dcd7ca !important;
            font-size:10px !important;
            line-height:1.05 !important;
            letter-spacing:.4px !important;
            white-space:normal !important;
            overflow-wrap:anywhere !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            border-color:#f0d480 !important;
            border-top:3px solid #a71924 !important;
            background:linear-gradient(180deg,#f2ead5,#c9bb92) !important;
            color:#111214 !important;
            box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),0 0 11px rgba(214,182,95,.22) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-section-label {
            min-height:30px !important;
            padding:8px 12px 8px 38px !important;
            border:1px solid rgba(214,182,95,.55) !important;
            border-left:4px solid #a71924 !important;
            border-radius:1px !important;
            background:
                url("${THEME_ASSETS.bond007CommandSeal}") 9px center/20px auto no-repeat,
                linear-gradient(90deg,rgba(244,239,223,.97),rgba(210,201,178,.94)) !important;
            color:#15171a !important;
            font:950 9px/1.15 Arial,sans-serif !important;
            letter-spacing:.75px !important;
            white-space:normal !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-section-label::before { display:none !important; }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            min-width:0 !important;
            border:1px solid #555b62 !important;
            border-top-color:#777d84 !important;
            border-radius:2px !important;
            background:
                linear-gradient(180deg,rgba(255,255,255,.055),transparent 42%),
                linear-gradient(145deg,#24282d,#0d0f12) !important;
            color:#eee9dc !important;
            box-shadow:inset 0 1px rgba(255,255,255,.06),0 2px 7px rgba(0,0,0,.35) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            height:auto !important;
            min-height:72px !important;
            padding-block:9px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn {
            height:auto !important;
            min-height:52px !important;
            padding-block:8px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-bookmark-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn:hover,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color:#d8b45f !important;
            color:#fff5d8 !important;
            box-shadow:inset 0 1px rgba(255,255,255,.08),0 0 11px rgba(214,182,95,.20) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color:#f2d67c !important;
            border-left:4px solid #a71924 !important;
            background:
                url("${THEME_ASSETS.bond007DossierGrid}") center/cover no-repeat,
                linear-gradient(180deg,#f4efdf,#cfc3a1) !important;
            color:#111214 !important;
            box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),0 0 12px rgba(214,182,95,.28) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active > *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on > *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active > *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on > *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active > * {
            color:#111214 !important;
            text-shadow:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-status,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-stat,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ops-entry,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-history-older,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-empty-state,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-discord-card,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-discord-empty,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-sweep-card,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-finance-card {
            border:1px solid rgba(214,182,95,.34) !important;
            border-radius:2px !important;
            background:
                linear-gradient(90deg,rgba(214,182,95,.025),transparent 26%),
                rgba(9,11,14,.88) !important;
            color:#eee8d9 !important;
            box-shadow:inset 3px 0 rgba(167,25,36,.64) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-input,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-select,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} textarea {
            min-width:0 !important;
            border:1px solid #747a80 !important;
            border-radius:1px !important;
            background:rgba(244,239,223,.97) !important;
            color:#111214 !important;
            box-shadow:inset 0 1px 4px rgba(0,0,0,.18) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-input:focus,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-select:focus,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} textarea:focus {
            border-color:#d8b45f !important;
            outline:2px solid rgba(214,182,95,.27) !important;
            outline-offset:1px !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-footer {
            position:relative !important;
            min-height:38px !important;
            padding-right:74px !important;
            border-top:1px solid rgba(214,182,95,.44) !important;
            background:rgba(5,6,8,.88) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-footer::after {
            content:"" !important;
            position:absolute !important;
            right:9px !important;
            bottom:2px !important;
            width:54px !important;
            height:34px !important;
            background:url("${THEME_ASSETS.bond007Agent}") center 10%/contain no-repeat !important;
            opacity:.44 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} {
            border:1px solid #b89543 !important;
            border-radius:3px !important;
            background:
                url("${THEME_ASSETS.bond007DossierGrid}") center/cover no-repeat,
                radial-gradient(circle at 94% 5%,rgba(214,182,95,.10),transparent 30%),
                linear-gradient(145deg,#1e2227,#07080a 72%) !important;
            color:#f1ecdf !important;
            box-shadow:0 20px 52px rgba(0,0,0,.66),inset 0 0 0 1px rgba(255,255,255,.035) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head {
            min-height:58px !important;
            border-bottom:1px solid rgba(214,182,95,.62) !important;
            position:relative !important;
            background:linear-gradient(90deg,rgba(255,255,255,.055),transparent 70%) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head::before {
            content:"" !important;
            position:absolute !important;
            left:0 !important;
            right:auto !important;
            top:0 !important;
            width:4px !important;
            height:100% !important;
            background:#a71924 !important;
            filter:none !important;
            opacity:1 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head::after {
            content:"SIS // SECTION 00 // EYES ONLY" !important;
            position:absolute !important;
            left:12px !important;
            right:auto !important;
            bottom:3px !important;
            max-width:calc(100% - 150px) !important;
            overflow:hidden !important;
            color:#d8b45f !important;
            font:900 5.5px/1 Consolas,monospace !important;
            letter-spacing:.75px !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
            opacity:.84 !important;
            pointer-events:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-title {
            min-width:0 !important;
            overflow:hidden !important;
            color:#fff8e8 !important;
            font-family:Georgia,"Times New Roman",serif !important;
            font-size:clamp(15px,1.4vw,20px) !important;
            line-height:1.05 !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} {
            border:1px solid rgba(214,182,95,.82) !important;
            border-radius:0 !important;
            background:
                url("${THEME_ASSETS.bond007DossierGrid}") center/cover no-repeat,
                linear-gradient(90deg,#111418,#050607) !important;
            box-shadow:0 3px 12px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.04) !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId}::before {
            background:url("${THEME_ASSETS.bond007GoldDivider}") center/100% 100% no-repeat !important;
            opacity:.28 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            min-width:196px !important;
            padding:6px 12px 6px 72px !important;
            border-right:1px solid #d8b45f !important;
            background:
                url("${THEME_ASSETS.bond007CommandSeal}") 9px center/46px auto no-repeat,
                linear-gradient(90deg,#f3ecda,#c9bb92) !important;
            color:#111214 !important;
            font-size:0 !important;
            line-height:1 !important;
            letter-spacing:.65px !important;
            white-space:nowrap !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::before {
            display:none !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label::after {
            content:"MI6 INCIDENT WIRE" !important;
            position:static !important;
            color:#111214 !important;
            font:950 9px/1 Arial,sans-serif !important;
            letter-spacing:.65px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] {
            background:
                radial-gradient(circle at center,rgba(214,182,95,.06),transparent 45%),
                rgba(0,0,0,.18) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-a {
            inset:auto !important;
            left:50% !important;
            top:50% !important;
            width:min(92vmin,820px) !important;
            aspect-ratio:1 !important;
            transform:translate(-50%,-50%) rotate(-7deg) !important;
            background:url("${THEME_ASSETS.bond007Gunbarrel}") center/contain no-repeat !important;
            opacity:.42 !important;
            animation:mcmsBondAssetBarrel 18s linear infinite !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            inset:auto !important;
            right:max(10px,calc(50% - 515px)) !important;
            bottom:-1% !important;
            width:clamp(185px,23vw,315px) !important;
            height:min(78%,620px) !important;
            background:url("${THEME_ASSETS.bond007Portrait}") right bottom/contain no-repeat !important;
            opacity:.98 !important;
            filter:drop-shadow(-14px 12px 22px rgba(0,0,0,.72)) !important;
            transform:translateZ(0) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-c {
            inset:0 !important;
            background:
                url("${THEME_ASSETS.bond007DossierGrid}") center/cover no-repeat,
                linear-gradient(110deg,rgba(167,25,36,.20),transparent 30% 72%,rgba(214,182,95,.12)) !important;
            opacity:.44 !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            width:min(820px,calc(100% - 30px)) !important;
            min-height:340px !important;
            padding:45px 185px 34px 42px !important;
            border:1px solid #e3c871 !important;
            border-left:8px solid #a71924 !important;
            border-radius:2px !important;
            background:
                url("${THEME_ASSETS.bond007PayoutSeal}") right 28px bottom 28px/132px auto no-repeat,
                url("${THEME_ASSETS.bond007Logo}") right 24px top 25px/142px auto no-repeat,
                url("${THEME_ASSETS.bond007GoldDivider}") left 32px top 77px/calc(100% - 64px) 13px no-repeat,
                linear-gradient(118deg,rgba(247,242,228,.99),rgba(211,202,177,.985)) !important;
            color:#111214 !important;
            box-shadow:0 32px 82px rgba(0,0,0,.82),0 0 0 1px rgba(255,255,255,.28),inset 0 -6px #111214 !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before {
            content:"TOP SECRET // SECTION 00 FINANCIAL AUTHORISATION" !important;
            left:35px !important;
            right:190px !important;
            top:17px !important;
            overflow:hidden !important;
            color:#8f171f !important;
            font:950 8px/1 Consolas,monospace !important;
            letter-spacing:1.15px !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::after {
            content:"FILE 00-7 // LONDON" !important;
            right:28px !important;
            bottom:13px !important;
            color:rgba(17,18,20,.55) !important;
            font:950 7px/1 Consolas,monospace !important;
            letter-spacing:1.3px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-tier {
            justify-self:start !important;
            max-width:100% !important;
            border-color:#9b1720 !important;
            background:#9b1720 !important;
            color:#fff !important;
            font-size:9px !important;
            letter-spacing:1.1px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title {
            width:100% !important;
            max-width:100% !important;
            padding:0 !important;
            color:#111214 !important;
            font-family:Georgia,"Times New Roman",serif !important;
            font-size:clamp(34px,5.1vw,62px) !important;
            font-weight:700 !important;
            line-height:1 !important;
            padding-bottom:2px !important;
            overflow:visible !important;
            letter-spacing:.35px !important;
            text-align:left !important;
            text-shadow:0 1px #fff !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title.mcms-payout-title-long {
            font-size:clamp(29px,4.25vw,50px) !important;
            line-height:1 !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title.mcms-payout-title-very-long {
            font-size:clamp(24px,3.55vw,42px) !important;
            line-height:1.02 !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission {
            width:100% !important;
            max-width:100% !important;
            color:#313438 !important;
            font:700 clamp(12px,1.65vw,17px)/1.15 Arial,sans-serif !important;
            text-align:left !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-divider {
            width:100% !important;
            height:2px !important;
            margin:10px 0 8px !important;
            background:linear-gradient(90deg,#a71924 0 19%,#111214 19% 79%,#d8b45f 79%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-source,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-kicker {
            color:#7b651f !important;
            font-size:8px !important;
            line-height:1.1 !important;
            letter-spacing:1.2px !important;
            text-align:left !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-kicker { color:#81151c !important; }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-amount {
            width:100% !important;
            color:#111214 !important;
            font-size:clamp(28px,4.2vw,48px) !important;
            line-height:1.04 !important;
            padding-bottom:2px !important;
            overflow:visible !important;
            letter-spacing:.6px !important;
            text-align:left !important;
            text-shadow:0 1px #fff,2px 2px rgba(184,152,66,.30) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-particles { display:none !important; }
        @keyframes mcmsBondAssetBarrel {
            from { transform:translate(-50%,-50%) rotate(-7deg); }
            to { transform:translate(-50%,-50%) rotate(353deg); }
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header {
            background:
                url("${THEME_ASSETS.bond007CommandSeal}") right 184px center/38px auto no-repeat,
                linear-gradient(90deg,rgba(255,255,255,.075),rgba(255,255,255,.012) 55%,rgba(214,182,95,.045)) !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            display:block !important;
            right:113px !important;
            top:14px !important;
            width:66px !important;
            height:25px !important;
            background-image:url("${THEME_ASSETS.bond007Logo}") !important;
            background-size:contain !important;
            background-position:center !important;
            background-repeat:no-repeat !important;
            filter:invert(1) sepia(.24) saturate(.68) brightness(1.3) !important;
            opacity:.88 !important;
        }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            padding-right:146px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header {
            min-height:58px !important;
            background:linear-gradient(90deg,rgba(255,255,255,.075),rgba(255,255,255,.012) 55%,rgba(214,182,95,.045)) !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::before {
            display:none !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-drag-handle {
            min-height:56px !important;
            padding:8px 12px 14px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-title {
            font-size:15px !important;
            white-space:normal !important;
            line-height:1.02 !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-subtitle {
            font-size:8px !important;
            white-space:normal !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn {
            min-height:70px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn {
            min-height:54px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header::after {
            left:11px !important;
            bottom:4px !important;
            font-size:5px !important;
            letter-spacing:.7px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head {
            min-height:52px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head::after {
            max-width:calc(100% - 108px) !important;
            font-size:5px !important;
            letter-spacing:.55px !important;
        }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} .mcms-incident-feed-label {
            min-width:126px !important;
            padding:5px 7px 5px 42px !important;
            background-size:30px auto,auto !important;
            background-position:6px center,center !important;
            font-size:7px !important;
        }
        @media (max-width:980px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                right:4px !important;
                width:clamp(165px,27vw,245px) !important;
                height:70% !important;
                opacity:.92 !important;
            }
        }
        @media (max-width:700px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b { display:none !important; }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
                width:calc(100% - 20px) !important;
                min-height:0 !important;
                padding:44px 18px 23px !important;
                background:
                    url("${THEME_ASSETS.bond007Logo}") right 12px top 15px/78px auto no-repeat,
                    url("${THEME_ASSETS.bond007GoldDivider}") left 16px top 66px/calc(100% - 32px) 10px no-repeat,
                    linear-gradient(118deg,rgba(247,242,228,.99),rgba(211,202,177,.985)) !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before {
                left:16px !important;
                right:98px !important;
                top:14px !important;
                font-size:6px !important;
                letter-spacing:.65px !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::after {
                right:15px !important;
                bottom:9px !important;
                font-size:5.5px !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title {
                font-size:clamp(25px,8.5vw,41px) !important;
                line-height:.96 !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title.mcms-payout-title-long {
                font-size:clamp(21px,7.2vw,34px) !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title.mcms-payout-title-very-long {
                font-size:clamp(18px,6vw,29px) !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission { font-size:clamp(10px,3.5vw,14px) !important; }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-amount { font-size:clamp(23px,7.4vw,36px) !important; }
        }html[data-mcms-economy="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.controlId} .mcms-shell,
        html[data-mcms-economy="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.panelId},
        html[data-mcms-economy="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-economy="true"][data-mcms-ui-theme="bond007"] #${SCRIPT.majorIncidentFeedId} {
            background-image:none !important;
            background-color:#0b0d10 !important;
            box-shadow:none !important;
        }html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-a,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-c { display:none !important; }html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            background-image:none !important;
            background-color:#e6ddc6 !important;
            box-shadow:none !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            background-position:right bottom !important;
            background-repeat:no-repeat !important;
            pointer-events:none !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            isolation:isolate !important;
        }
        @media (max-height:640px) and (min-width:701px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                height:72% !important;
                width:clamp(150px,20vw,250px) !important;
            }
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-header > *,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head > * {
            min-width:0 !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-theme-btn strong,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-toggle-btn strong,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-ui-theme-btn strong,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-place-main strong,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.panelId} .mcms-section-label,
        html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} button {
            overflow-wrap:anywhere !important;
            word-break:normal !important;
        }html[data-mcms-ui-theme="bond007"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-title {
            max-width:100% !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner > * {
            min-width:0 !important;
            max-width:100% !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-amount {
            overflow-wrap:anywhere !important;
            word-break:normal !important;
        }
        @media (max-width:430px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
                padding-inline:14px !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before {
                right:88px !important;
                letter-spacing:.45px !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-source,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-kicker {
                font-size:7px !important;
                letter-spacing:.75px !important;
            }
        }
        @media (prefers-reduced-motion:reduce) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-a { animation:none !important; }
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            right:max(0px,calc(50% - 395px)) !important;
            bottom:-2% !important;
            width:clamp(230px,28vw,360px) !important;
            height:min(90%,700px) !important;
            opacity:1 !important;
            filter:drop-shadow(-12px 14px 20px rgba(0,0,0,.68)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            width:min(880px,calc(100% - 30px)) !important;
            min-height:340px !important;
            padding:45px 300px 34px 42px !important;
            border-right-color:rgba(227,200,113,.28) !important;
            background:
                url("${THEME_ASSETS.bond007PayoutSeal}") right 112px bottom 25px/112px auto no-repeat,
                url("${THEME_ASSETS.bond007Logo}") right 24px top 23px/138px auto no-repeat,
                url("${THEME_ASSETS.bond007GoldDivider}") left 32px top 77px/calc(64% - 32px) 13px no-repeat,
                linear-gradient(90deg,
                    rgba(247,242,228,.995) 0%,
                    rgba(244,238,222,.985) 55%,
                    rgba(239,231,209,.94) 64%,
                    rgba(228,216,187,.76) 72%,
                    rgba(217,202,166,.42) 80%,
                    rgba(205,187,143,.14) 88%,
                    rgba(205,187,143,0) 97%) !important;
            -webkit-backdrop-filter:none !important;
            backdrop-filter:none !important;
            box-shadow:
                0 32px 82px rgba(0,0,0,.78),
                0 0 0 1px rgba(255,255,255,.22),
                inset 0 -6px rgba(17,18,20,.92) !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before {
            right:306px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::after {
            right:304px !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-source,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-kicker,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-amount {
            position:relative !important;
            z-index:4 !important;
            padding-inline:0 !important;
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-title,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-mission,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-amount {
            text-shadow:0 1px rgba(255,255,255,.92),0 2px 8px rgba(247,242,228,.70) !important;
        }
        @media (max-width:980px) and (min-width:701px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                right:max(0px,calc(50% - 330px)) !important;
                width:clamp(190px,28vw,270px) !important;
                height:82% !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
                width:calc(100% - 24px) !important;
                padding:44px 235px 30px 30px !important;
                background:
                    url("${THEME_ASSETS.bond007PayoutSeal}") right 88px bottom 22px/92px auto no-repeat,
                    url("${THEME_ASSETS.bond007Logo}") right 17px top 20px/105px auto no-repeat,
                    url("${THEME_ASSETS.bond007GoldDivider}") left 24px top 73px/calc(65% - 24px) 11px no-repeat,
                    linear-gradient(90deg,
                        rgba(247,242,228,.995) 0%,
                        rgba(244,238,222,.985) 53%,
                        rgba(239,231,209,.92) 62%,
                        rgba(228,216,187,.70) 71%,
                        rgba(217,202,166,.34) 81%,
                        rgba(205,187,143,.10) 90%,
                        rgba(205,187,143,0) 98%) !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::after {
                right:238px !important;
            }
        }
        @media (max-width:700px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                display:none !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
                width:calc(100% - 20px) !important;
                min-height:0 !important;
                padding:44px 18px 23px !important;
                background:
                    url("${THEME_ASSETS.bond007Logo}") right 12px top 15px/78px auto no-repeat,
                    url("${THEME_ASSETS.bond007GoldDivider}") left 16px top 66px/calc(100% - 32px) 10px no-repeat,
                    linear-gradient(118deg,rgba(247,242,228,.995),rgba(211,202,177,.99)) !important;
                border-right-color:#e3c871 !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::before {
                left:16px !important;
                right:98px !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner::after {
                right:15px !important;
            }
        }
        @media (max-height:640px) and (min-width:701px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                height:76% !important;
                width:clamp(190px,24vw,290px) !important;
            }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
                min-height:300px !important;
                padding-top:40px !important;
                padding-bottom:27px !important;
            }
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-banner {
            top:var(--mcms-payout-banner-top,50%) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-banner {
            min-height:0 !important;
            max-height:var(--mcms-payout-safe-height,calc(100% - 14px)) !important;
            padding:34px clamp(225px,30vw,300px) 18px 38px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-banner::before {
            top:8px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-banner::after {
            bottom:7px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-title {
            font-size:clamp(27px,4.15vw,50px) !important;
            line-height:.93 !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-title.mcms-payout-title-long {
            font-size:clamp(24px,3.65vw,43px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-title.mcms-payout-title-very-long {
            font-size:clamp(21px,3.15vw,37px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-mission {
            margin-top:5px !important;
            font-size:clamp(11px,1.45vw,15px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-divider {
            margin:6px 0 5px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-source {
            margin-top:3px !important;
            font-size:7px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-kicker {
            font-size:8px !important;
            line-height:.95 !important;
            letter-spacing:1.15px !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-amount {
            margin-top:4px !important;
            font-size:clamp(25px,3.55vw,40px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            bottom:var(--mcms-payout-safe-bottom-offset,-2%) !important;
            height:min(72%,var(--mcms-payout-safe-height,700px)) !important;
            width:clamp(185px,24vw,300px) !important;
        }
        @media (max-width:980px) and (min-width:701px) {#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-banner {
                padding:33px clamp(205px,29vw,238px) 17px 28px !important;
            }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                width:clamp(165px,25vw,235px) !important;
            }
        }#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            bottom:-7% !important;
            height:min(96%,760px) !important;
        }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-theme-fx-b {
            bottom:calc(var(--mcms-payout-safe-bottom-offset,-2%) - clamp(42px,6vh,58px)) !important;
            height:min(82%,calc(var(--mcms-payout-safe-height,700px) + 54px)) !important;
        }
        @media (max-width:980px) and (min-width:701px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                bottom:-6% !important;
                height:90% !important;
            }#${SCRIPT.payoutFlashId}.mcms-payout-controls-safe[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                bottom:calc(var(--mcms-payout-safe-bottom-offset,-2%) - clamp(26px,4vh,34px)) !important;
                width:clamp(190px,34vw,255px) !important;
                height:min(82%,calc(var(--mcms-payout-safe-height,700px) + 34px)) !important;
            }
        }
        @media (max-width:700px) {#${SCRIPT.payoutFlashId}[data-template="jamesBond"] .mcms-payout-theme-fx-b {
                display:none !important;
            }
        }#${SCRIPT.controlId} .mcms-screen-pins {
            display:flex !important;
            flex-wrap:wrap !important;
            grid-template-columns:none !important;
            align-items:center !important;
            align-content:flex-start !important;
            justify-content:flex-start !important;
            gap:5px !important;
            width:auto !important;
            max-width:min(360px,calc(100vw - 24px)) !important;
            max-height:132px !important;
            overflow-y:auto !important;
            overflow-x:hidden !important;
        }#${SCRIPT.controlId} .mcms-screen-pin-btn {
            flex:0 0 auto !important;
            width:auto !important;
            min-width:52px !important;
            max-width:112px !important;
            height:29px !important;
            padding:0 10px !important;
            font-size:9px !important;
            line-height:1 !important;
            letter-spacing:.18px !important;
            text-align:center !important;
            white-space:nowrap !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
        }#${SCRIPT.panelId} .mcms-bookmark-name-btn {
            appearance:none !important;
            -webkit-appearance:none !important;
            display:flex !important;
            flex-direction:column !important;
            align-items:flex-start !important;
            justify-content:center !important;
            gap:2px !important;
            min-width:0 !important;
            min-height:30px !important;
            padding:0 2px !important;
            border:0 !important;
            background:transparent !important;
            color:inherit !important;
            line-height:1.05 !important;
            text-align:left !important;
            cursor:pointer !important;
            white-space:normal !important;
            overflow:hidden !important;
        }#${SCRIPT.panelId} .mcms-bookmark-name-main {
            display:block !important;
            width:100% !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
            white-space:nowrap !important;
        }#${SCRIPT.panelId} .mcms-bookmark-short {
            display:block !important;
            max-width:100% !important;
            color:rgba(255,255,255,.55) !important;
            font-size:7px !important;
            line-height:1 !important;
            font-weight:900 !important;
            letter-spacing:.35px !important;
            white-space:nowrap !important;
            overflow:hidden !important;
            text-overflow:ellipsis !important;
        }#${SCRIPT.panelId} .mcms-bookmark-name-btn:hover .mcms-bookmark-name-main,
        #${SCRIPT.panelId} .mcms-bookmark-name-btn:focus-visible .mcms-bookmark-name-main {
            text-decoration:underline !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-screen-pins {
            display:flex !important;
            flex-wrap:wrap !important;
            justify-content:flex-start !important;
            align-items:center !important;
            gap:5px !important;
            width:100% !important;
            max-width:none !important;
            max-height:none !important;
            overflow:visible !important;
        }html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            flex:0 0 auto !important;
            width:auto !important;
            min-width:56px !important;
            max-width:126px !important;
            height:var(--mcms-tablet-pin-height,31px) !important;
            padding:0 11px !important;
            border-radius:9px !important;
            font-size:10px !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pins {
            display:flex !important;
            flex-wrap:wrap !important;
            justify-content:flex-start !important;
            align-items:center !important;
            gap:4px !important;
            width:100% !important;
            max-width:none !important;
            overflow:visible !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            flex:0 0 auto !important;
            width:auto !important;
            min-width:50px !important;
            max-width:98px !important;
            height:var(--mcms-mobile-pin-height,30px) !important;
            padding:0 8px !important;
            border-radius:8px !important;
            font-size:clamp(8.5px,2.15vw,9.5px) !important;
        }html[data-mcms-economy="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            backdrop-filter:none !important;
            -webkit-backdrop-filter:none !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-hyrule {
            position:relative !important;
            border-color:#e9c85b !important;
            border-radius:8px 8px 5px 5px !important;
            background:
                url("${THEME_ASSETS.hyruleEye}") center / 25px 25px no-repeat,
                linear-gradient(155deg,#243b2d 0 48%,#0d2e3a 49% 72%,#6a4b1e 73% 100%) !important;
            box-shadow:inset 0 0 0 1px rgba(255,247,171,.25),inset 0 -8px 12px rgba(0,0,0,.42),0 0 11px rgba(92,241,221,.20) !important;
            overflow:hidden !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-hyrule::before {
            content:'△' !important;
            position:absolute !important;
            left:5px !important;
            top:3px !important;
            color:#ffe77d !important;
            font:900 12px/1 Georgia,serif !important;
            text-shadow:0 0 6px rgba(255,214,69,.75) !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-hyrule::after {
            content:'HYRULE' !important;
            position:absolute !important;
            right:4px !important;
            bottom:3px !important;
            color:#c9fff4 !important;
            font:900 4.5px/1 "Arial Narrow",sans-serif !important;
            letter-spacing:.55px !important;
        }#${SCRIPT.panelId} .mcms-ui-theme-preview-hyrule span { opacity:0 !important; }html[data-mcms-ui-theme="hyrule"] {
            --mcms-hyrule-forest:#132c22;
            --mcms-hyrule-forest-2:#203c2b;
            --mcms-hyrule-night:#061319;
            --mcms-hyrule-parchment:#dfc88d;
            --mcms-hyrule-parchment-soft:#f1dfaa;
            --mcms-hyrule-gold:#e8bf4d;
            --mcms-hyrule-gold-bright:#fff09a;
            --mcms-hyrule-blue:#3de7e5;
            --mcms-hyrule-blue-deep:#168cae;
            --mcms-hyrule-green:#50ec8c;
            --mcms-hyrule-green-deep:#167555;
            --mcms-hyrule-crimson:#e44f59;
            --mcms-hyrule-amber:#f4a83c;
            --mcms-hyrule-ink:#0a1110;
            --mcms-hyrule-shadow:rgba(0,0,0,.72);
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId},
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId},
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.majorIncidentFeedId} {
            font-family:"Palatino Linotype",Palatino,Georgia,serif !important;
            color:#f8efd0 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} {
            filter:drop-shadow(0 10px 15px rgba(0,0,0,.42)) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-shell {
            position:relative !important;
            border:1px solid rgba(244,210,101,.86) !important;
            border-radius:14px !important;
            background:
                linear-gradient(180deg,rgba(255,240,164,.08),transparent 24%),
                linear-gradient(145deg,rgba(20,52,39,.96),rgba(6,22,27,.96) 64%,rgba(54,35,16,.94)) !important;
            box-shadow:inset 0 0 0 2px rgba(95,63,24,.82),inset 0 1px rgba(255,248,189,.22),0 10px 26px rgba(0,0,0,.46),0 0 18px rgba(42,224,210,.09) !important;
            overflow:visible !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-shell::before {
            content:'' !important;
            position:absolute !important;
            width:42px !important;
            height:42px !important;
            left:-13px !important;
            top:-15px !important;
            background:url("${THEME_ASSETS.hyruleCrest}") center/contain no-repeat !important;
            filter:drop-shadow(0 3px 4px rgba(0,0,0,.64)) !important;
            pointer-events:none !important;
            z-index:5 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-menu-btn {
            border-color:rgba(255,225,111,.92) !important;
            background:
                url("${THEME_ASSETS.hyruleEye}") center/64% 64% no-repeat,
                radial-gradient(circle at 50% 38%,rgba(72,238,229,.24),transparent 60%),
                linear-gradient(155deg,#1d4636,#091c23 70%) !important;
            color:#fff3b1 !important;
            box-shadow:inset 0 0 0 2px rgba(87,54,18,.88),0 0 13px rgba(54,230,220,.25) !important;
            text-shadow:0 1px 2px #000 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-menu-btn:hover,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-menu-btn:focus-visible {
            border-color:#fff3a1 !important;
            box-shadow:inset 0 0 0 2px rgba(120,74,22,.9),0 0 17px rgba(74,255,236,.48),0 0 7px rgba(255,222,83,.55) !important;
            transform:translateY(-1px) scale(1.025) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-dock-toggle-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-float-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-screen-pin-btn {
            border:1px solid rgba(223,190,84,.72) !important;
            border-radius:9px !important;
            background:
                linear-gradient(180deg,rgba(251,224,139,.09),transparent 36%),
                linear-gradient(145deg,rgba(34,64,44,.96),rgba(8,25,29,.96)) !important;
            color:#f1e7c0 !important;
            box-shadow:inset 0 0 0 1px rgba(67,43,18,.76),0 4px 9px rgba(0,0,0,.26) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-float-key {
            border-color:rgba(102,245,227,.58) !important;
            background:rgba(4,30,34,.74) !important;
            color:#9ffff1 !important;
            box-shadow:0 0 7px rgba(50,225,218,.24) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-float-btn.mcms-on,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-on {
            border-color:#8cffe1 !important;
            background:
                linear-gradient(135deg,rgba(75,237,136,.42),rgba(20,113,88,.34)),
                linear-gradient(145deg,#204e37,#0b2830) !important;
            color:#efffda !important;
            box-shadow:inset 0 0 0 1px rgba(255,235,126,.30),0 0 13px rgba(66,239,174,.38) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.controlId} .mcms-screen-pin-btn.mcms-pin-custom {
            border-color:rgba(80,227,230,.76) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} {
            position:fixed !important;
            border:1px solid rgba(244,208,94,.92) !important;
            border-radius:16px !important;
            background:
                linear-gradient(rgba(7,23,25,.89),rgba(7,23,25,.94)),
                url("${THEME_ASSETS.hyruleMap}") center/cover no-repeat,
                linear-gradient(145deg,#1e3a2a,#071b21 68%,#3a2410) !important;
            box-shadow:inset 0 0 0 3px rgba(87,55,19,.88),inset 0 0 55px rgba(0,0,0,.42),0 18px 50px rgba(0,0,0,.60),0 0 28px rgba(54,224,211,.12) !important;
            backdrop-filter:blur(12px) saturate(118%) !important;
            -webkit-backdrop-filter:blur(12px) saturate(118%) !important;
            overflow-x:hidden !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::before {
            content:'' !important;
            position:absolute !important;
            right:-52px !important;
            top:72px !important;
            width:235px !important;
            height:235px !important;
            background:url("${THEME_ASSETS.hyruleSwordShield}") center/contain no-repeat !important;
            opacity:.16 !important;
            filter:drop-shadow(0 10px 16px rgba(0,0,0,.65)) !important;
            pointer-events:none !important;
            z-index:0 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::after {
            content:'' !important;
            position:absolute !important;
            left:-68px !important;
            bottom:45px !important;
            width:220px !important;
            height:220px !important;
            background:url("${THEME_ASSETS.hyruleEnergyRing}") center/contain no-repeat !important;
            opacity:.13 !important;
            pointer-events:none !important;
            animation:mcmsHyruleRuneTurn 26s linear infinite !important;
            z-index:0 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} > * { position:relative !important; z-index:1 !important; }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::-webkit-scrollbar { width:8px !important; }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::-webkit-scrollbar-track { background:rgba(5,23,25,.76) !important; }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::-webkit-scrollbar-thumb { background:linear-gradient(#f1d068,#8c5b1d) !important; border:2px solid #14281f !important; border-radius:10px !important; }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-header,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-head {
            border-bottom:1px solid rgba(237,197,75,.72) !important;
            background:
                url("${THEME_ASSETS.hyruleCrest}") 12px center/44px 36px no-repeat,
                linear-gradient(90deg,rgba(78,47,15,.94),rgba(21,57,42,.92) 32%,rgba(7,31,36,.92) 72%,rgba(75,46,16,.90)) !important;
            box-shadow:inset 0 -1px rgba(255,242,163,.15),0 5px 17px rgba(0,0,0,.24) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-header { padding-left:54px !important; }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-title,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-title {
            color:#fff0a1 !important;
            font-family:Georgia,"Palatino Linotype",serif !important;
            font-weight:900 !important;
            letter-spacing:.75px !important;
            text-shadow:0 2px 2px #000,0 0 12px rgba(255,215,79,.28) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-subtitle {
            color:rgba(196,255,240,.72) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-tabs {
            border-bottom:1px solid rgba(232,193,72,.44) !important;
            background:linear-gradient(180deg,rgba(19,55,42,.82),rgba(5,24,29,.82)) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-tab-btn {
            border-color:transparent !important;
            color:rgba(239,227,184,.70) !important;
            background:transparent !important;
            font-family:Georgia,"Palatino Linotype",serif !important;
            letter-spacing:.25px !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-tab-btn:hover {
            color:#fff3ad !important;
            background:rgba(63,177,139,.12) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-tab-btn.mcms-active {
            color:#fff3a1 !important;
            background:linear-gradient(180deg,rgba(86,207,163,.19),rgba(14,62,57,.34)) !important;
            box-shadow:inset 0 -2px #4bf0dd,0 2px 10px rgba(47,226,216,.15) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-section-label {
            color:#ffe887 !important;
            border-color:rgba(232,191,68,.44) !important;
            background:
                linear-gradient(90deg,rgba(111,74,25,.45),rgba(26,78,57,.28),transparent) !important;
            text-shadow:0 1px 2px #000 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-section-label::before { color:#62f4dd !important; }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-theme-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-toggle-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-place-main,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-position-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-small-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-bookmark-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-pin-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-ui-theme-btn,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} input,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} select,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} textarea {
            border-color:rgba(213,174,60,.55) !important;
            background:
                linear-gradient(180deg,rgba(245,218,133,.055),transparent 35%),
                linear-gradient(145deg,rgba(31,65,45,.88),rgba(7,26,31,.92)) !important;
            color:#f6edd0 !important;
            box-shadow:inset 0 0 0 1px rgba(66,41,16,.72),0 3px 8px rgba(0,0,0,.20) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-theme-btn:hover,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-toggle-btn:hover,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-place-main:hover,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-position-btn:hover,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-small-btn:hover,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-ui-theme-btn:hover {
            border-color:#77f6df !important;
            background:linear-gradient(145deg,rgba(40,98,66,.96),rgba(8,42,47,.96)) !important;
            box-shadow:inset 0 0 0 1px rgba(255,231,132,.24),0 0 12px rgba(57,229,214,.23) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-theme-btn.mcms-active,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-toggle-btn.mcms-on,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-position-btn.mcms-active,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-pin-btn.mcms-on,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-ui-theme-btn.mcms-active {
            border-color:#fff09a !important;
            background:
                linear-gradient(135deg,rgba(79,231,133,.34),rgba(29,128,97,.34)),
                linear-gradient(145deg,#28543a,#0a3038) !important;
            color:#fff9d7 !important;
            box-shadow:inset 0 0 0 1px rgba(101,252,229,.45),0 0 14px rgba(66,235,198,.30),0 0 6px rgba(255,213,76,.25) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-pill,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-float-key {
            border-color:rgba(78,235,220,.55) !important;
            background:rgba(4,32,37,.68) !important;
            color:#a8fff2 !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-profile-main,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-setting-row,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId} .mcms-payout-history-item {
            border-color:rgba(211,172,60,.34) !important;
            background:linear-gradient(145deg,rgba(52,71,41,.45),rgba(6,27,31,.65)) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.majorIncidentFeedId} {
            border:1px solid rgba(236,196,72,.86) !important;
            background:
                linear-gradient(rgba(6,24,28,.92),rgba(6,24,28,.95)),
                url("${THEME_ASSETS.hyruleMap}") center/cover no-repeat,
                linear-gradient(145deg,#1d3929,#081a21) !important;
            box-shadow:inset 0 0 0 2px rgba(79,51,18,.78),0 12px 34px rgba(0,0,0,.52),0 0 20px rgba(51,222,209,.10) !important;
            backdrop-filter:blur(10px) !important;
            -webkit-backdrop-filter:blur(10px) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.vehicleStatusId} .mcms-vehicle-status-row,
        html[data-mcms-ui-theme="hyrule"] #${SCRIPT.majorIncidentFeedId} .mcms-major-feed-item {
            border-color:rgba(219,181,65,.40) !important;
            background:linear-gradient(145deg,rgba(38,70,47,.72),rgba(6,28,33,.78)) !important;
            box-shadow:inset 0 0 0 1px rgba(63,39,14,.52),0 4px 12px rgba(0,0,0,.18) !important;
        }html[data-mcms-ui-theme="hyrule"] #${SCRIPT.majorIncidentFeedId} .mcms-major-feed-item:hover {
            border-color:rgba(99,244,221,.72) !important;
            background:linear-gradient(145deg,rgba(46,96,62,.86),rgba(7,43,47,.86)) !important;
        }html[data-mcms-ui-theme="hyrule"] .mcms-mission-age-badge {
            border-color:rgba(238,197,72,.78) !important;
            background:linear-gradient(145deg,rgba(28,67,47,.94),rgba(5,28,33,.94)) !important;
            color:#fff2a8 !important;
            box-shadow:inset 0 0 0 1px rgba(95,61,20,.68),0 2px 8px rgba(0,0,0,.28) !important;
        }html[data-mcms-ui-theme="hyrule"] .mcms-age-critical {
            border-color:#ef6067 !important;
            background:linear-gradient(145deg,rgba(100,27,32,.95),rgba(33,10,18,.95)) !important;
            color:#ffe8d5 !important;
            box-shadow:0 0 13px rgba(229,64,76,.42) !important;
        }html[data-mcms-ui-theme="hyrule"] .mcms-mission-lock-travel-overlay {
            background:radial-gradient(circle at center,rgba(68,250,223,.10),transparent 58%) !important;
        }html[data-mcms-ui-theme="hyrule"] .mcms-mission-lock-reticle,
        html[data-mcms-ui-theme="hyrule"] .mcms-mission-lock-bracket,
        html[data-mcms-ui-theme="hyrule"] .mcms-mission-lock-beam {
            border-color:#65f8e4 !important;
            color:#65f8e4 !important;
            filter:drop-shadow(0 0 7px rgba(74,236,224,.70)) !important;
        }html[data-mcms-ui-theme="hyrule"] .mcms-mission-spawn-ring {
            border-color:#ffe875 !important;
            box-shadow:0 0 12px rgba(255,220,79,.62),inset 0 0 10px rgba(68,244,217,.44) !important;
        }html[data-mcms-ui-theme="hyrule"] .mcms-mission-spawn-label {
            border-color:#e7c14e !important;
            background:linear-gradient(145deg,rgba(37,75,49,.97),rgba(5,28,33,.97)) !important;
            color:#fff0a0 !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] {
            background:
                radial-gradient(circle at 50% 44%,rgba(79,239,196,.10),transparent 35%),
                radial-gradient(circle at 50% 110%,rgba(255,209,65,.12),transparent 48%),
                linear-gradient(180deg,rgba(2,12,16,.46),rgba(2,12,16,.72)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-red {
            background:radial-gradient(ellipse at 0% 58%,rgba(42,238,158,.60),rgba(26,112,85,.24) 31%,transparent 66%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-blue {
            background:radial-gradient(ellipse at 100% 46%,rgba(55,225,244,.64),rgba(28,101,140,.25) 31%,transparent 66%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-cinematic {
            background:
                linear-gradient(rgba(4,20,22,.42),rgba(4,20,22,.54)),
                url("${THEME_ASSETS.hyruleMap}") center/cover no-repeat !important;
            filter:saturate(118%) contrast(106%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-a {
            inset:-12% !important;
            background:
                radial-gradient(circle at 50% 50%,transparent 0 23%,rgba(75,255,219,.13) 23.5% 24.2%,transparent 25% 36%,rgba(255,221,83,.11) 36.5% 37.2%,transparent 38%),
                url("${THEME_ASSETS.hyruleEnergyRing}") center/42vmin 42vmin no-repeat !important;
            opacity:.75 !important;
            animation:mcmsHyruleRuneTurn 16s linear infinite !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-b {
            inset:0 !important;
            background:
                url("${THEME_ASSETS.hyruleEye}") 50% 22%/18vmin 18vmin no-repeat,
                radial-gradient(ellipse at 50% 50%,rgba(81,255,225,.10),transparent 48%) !important;
            filter:drop-shadow(0 0 18px rgba(59,234,225,.45)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-c {
            inset:-4% !important;
            background:url("${THEME_ASSETS.hyruleRupeeBurst}") center/cover no-repeat !important;
            filter:drop-shadow(0 0 12px rgba(255,230,112,.35)) !important;
            opacity:.70 !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-banner {
            width:min(760px,88%) !important;
            min-height:250px !important;
            padding:39px clamp(28px,7vw,104px) 34px !important;
            border:2px solid #e7bd48 !important;
            border-radius:22px 22px 15px 15px !important;
            background:
                url("${THEME_ASSETS.hyruleQuestSeal}") left 12px center/134px 134px no-repeat,
                url("${THEME_ASSETS.hyruleQuestSeal}") right 12px center/134px 134px no-repeat,
                linear-gradient(180deg,rgba(255,239,172,.10),transparent 28%),
                linear-gradient(145deg,rgba(32,69,47,.96),rgba(6,26,31,.97) 62%,rgba(63,39,15,.94)) !important;
            box-shadow:inset 0 0 0 4px rgba(83,50,15,.88),inset 0 0 35px rgba(0,0,0,.34),0 18px 46px rgba(0,0,0,.62),0 0 26px rgba(68,242,213,.18),0 0 11px rgba(255,216,67,.32) !important;
            clip-path:polygon(4% 0,96% 0,100% 13%,100% 87%,96% 100%,4% 100%,0 87%,0 13%) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-banner::before,
        #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-banner::after {
            content:'' !important;
            position:absolute !important;
            top:9px !important;
            width:72px !important;
            height:72px !important;
            background:url("${THEME_ASSETS.hyruleCrest}") center/contain no-repeat !important;
            opacity:.62 !important;
            filter:drop-shadow(0 4px 6px rgba(0,0,0,.65)) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-banner::before { left:50% !important; transform:translateX(-50%) !important; }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-banner::after { display:none !important; }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-tier {
            border-color:rgba(105,247,225,.56) !important;
            background:rgba(4,34,37,.72) !important;
            color:#a9fff3 !important;
            letter-spacing:1.8px !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-title {
            margin-top:6px !important;
            color:#fff1a0 !important;
            font-family:Georgia,"Palatino Linotype",serif !important;
            font-weight:900 !important;
            letter-spacing:1.1px !important;
            text-shadow:0 3px 2px rgba(0,0,0,.86),0 0 19px rgba(255,216,67,.36) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-divider {
            height:8px !important;
            background:
                radial-gradient(circle at center,#f9f2bc 0 4px,transparent 5px),
                linear-gradient(90deg,transparent,#55efe1 18%,#f3d368 50%,#55efe1 82%,transparent) center/100% 2px no-repeat !important;
            box-shadow:none !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-source {
            color:#74f4df !important;
            text-shadow:0 0 10px rgba(69,237,222,.45) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-kicker {
            color:#dac982 !important;
            letter-spacing:1.4px !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-amount {
            color:#fff8c5 !important;
            font-family:Georgia,"Palatino Linotype",serif !important;
            text-shadow:0 4px 2px rgba(0,0,0,.88),0 0 14px rgba(255,221,81,.48),0 0 28px rgba(79,240,209,.28) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-particle {
            border:1px solid rgba(238,255,240,.78) !important;
            background:linear-gradient(135deg,#edffd8,#54ef91 40%,#159d68 72%,#074f45) !important;
            box-shadow:0 0 8px rgba(72,247,145,.72),0 0 14px rgba(41,224,213,.32) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-particle:nth-child(3n+2) {
            background:linear-gradient(135deg,#efffff,#63eee8 40%,#258dd1 72%,#173f78) !important;
            box-shadow:0 0 8px rgba(79,237,241,.72),0 0 14px rgba(50,145,236,.30) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-particle:nth-child(5n) {
            background:linear-gradient(135deg,#fff7c5,#ffd85e 42%,#c08018 72%,#65330b) !important;
            box-shadow:0 0 9px rgba(255,220,92,.82),0 0 15px rgba(255,183,48,.30) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"][data-tier="elite"] .mcms-payout-banner {
            border-color:#fff4a6 !important;
            box-shadow:inset 0 0 0 4px rgba(100,60,14,.9),0 18px 50px rgba(0,0,0,.65),0 0 36px rgba(255,222,83,.40),0 0 28px rgba(75,247,221,.28) !important;
        }#${SCRIPT.payoutFlashId}[data-template="hyruleQuest"][data-tier="elite"] .mcms-payout-title,
        #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"][data-tier="elite"] .mcms-payout-amount { color:#fffce1 !important; }
        @keyframes mcmsHyruleRuneTurn { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }
        @keyframes mcmsHyrulePulse { 0%,100% { filter:brightness(.9) drop-shadow(0 0 5px rgba(66,229,211,.22)); } 50% { filter:brightness(1.2) drop-shadow(0 0 14px rgba(66,229,211,.58)); } }html[data-mcms-tablet-active="true"][data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::before { width:280px !important; height:280px !important; right:-60px !important; opacity:.13 !important; }html[data-mcms-mobile-active="true"][data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::before { width:170px !important; height:170px !important; right:-45px !important; top:86px !important; opacity:.11 !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-banner {
            width:min(94%,620px) !important;
            min-height:220px !important;
            padding:36px 24px 28px !important;
            background:
                url("${THEME_ASSETS.hyruleQuestSeal}") left 7px bottom 10px/88px 88px no-repeat,
                url("${THEME_ASSETS.hyruleQuestSeal}") right 7px bottom 10px/88px 88px no-repeat,
                linear-gradient(145deg,rgba(32,69,47,.97),rgba(6,26,31,.98) 62%,rgba(63,39,15,.95)) !important;
        }html[data-mcms-mobile-active="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-title { font-size:clamp(25px,8vw,46px) !important; }html[data-mcms-mobile-active="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-amount { font-size:clamp(28px,9vw,52px) !important; }html[data-mcms-economy="true"][data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId},
        html[data-mcms-economy="true"][data-mcms-ui-theme="hyrule"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-economy="true"][data-mcms-ui-theme="hyrule"] #${SCRIPT.majorIncidentFeedId} {
            backdrop-filter:none !important;
            -webkit-backdrop-filter:none !important;
        }html[data-mcms-economy="true"][data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::after,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-a,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-b,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-c,
        html[data-mcms-economy="true"] #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-particles {
            animation:none !important;
            display:none !important;
        }html[data-mcms-mobile-active="true"],
        html[data-mcms-tablet-active="true"] {--mcms-touch-target:44px}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-tl {left:max(5px,env(safe-area-inset-left),var(--mcms-visual-offset-left,0px))!important;top:max(5px,env(safe-area-inset-top),var(--mcms-visual-offset-top,0px))!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-tr {right:max(5px,env(safe-area-inset-right),var(--mcms-visual-gap-right,0px))!important;top:max(5px,env(safe-area-inset-top),var(--mcms-visual-offset-top,0px))!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-bl {left:max(5px,env(safe-area-inset-left),var(--mcms-visual-offset-left,0px))!important;bottom:max(5px,env(safe-area-inset-bottom),var(--mcms-visual-gap-bottom,0px))!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId}.mcms-pos-br {right:max(5px,env(safe-area-inset-right),var(--mcms-visual-gap-right,0px))!important;bottom:max(5px,env(safe-area-inset-bottom),var(--mcms-visual-gap-bottom,0px))!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-tl {left:max(10px,env(safe-area-inset-left),var(--mcms-visual-offset-left,0px))!important;top:max(10px,env(safe-area-inset-top),var(--mcms-visual-offset-top,0px))!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-tr {right:max(10px,env(safe-area-inset-right),var(--mcms-visual-gap-right,0px))!important;top:max(10px,env(safe-area-inset-top),var(--mcms-visual-offset-top,0px))!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-bl {left:max(10px,env(safe-area-inset-left),var(--mcms-visual-offset-left,0px))!important;bottom:max(10px,env(safe-area-inset-bottom),var(--mcms-visual-gap-bottom,0px))!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId}.mcms-pos-br {right:max(10px,env(safe-area-inset-right),var(--mcms-visual-gap-right,0px))!important;bottom:max(10px,env(safe-area-inset-bottom),var(--mcms-visual-gap-bottom,0px))!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-shell {grid-column:span 2!important;width:100%!important;height:var(--mcms-mobile-filter-height,44px)!important;min-height:44px!important;flex-direction:row!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-menu-btn {min-width:44px!important;min-height:44px!important;height:100%!important;flex:1 1 auto!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {width:44px!important;min-width:44px!important;height:100%!important;min-height:44px!important;flex:0 0 44px!important;border-top:0!important;border-left:1px solid rgba(255,255,255,.16)!important;font-size:14px!important}html[data-mcms-command-bar-open="false"][data-mcms-mobile-active="true"] #${SCRIPT.controlId} {width:140px!important;max-width:140px!important;grid-template-columns:repeat(3,44px)!important}html[data-mcms-command-bar-open="false"][data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-shell {grid-column:span 2!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} {grid-template-columns:145px minmax(0,1fr)!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-launch-row {width:145px!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-shell {width:92px!important;height:48px!important;flex-direction:row!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-menu-btn {min-width:44px!important;min-height:44px!important;height:100%!important;flex:1 1 auto!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-dock-toggle-btn {width:44px!important;min-width:44px!important;height:100%!important;min-height:44px!important;flex:0 0 44px!important;border-top:0!important;border-left:1px solid rgba(255,255,255,.16)!important;font-size:15px!important}html[data-mcms-command-bar-open="false"][data-mcms-tablet-active="true"] #${SCRIPT.controlId} {width:145px!important;max-width:145px!important;grid-template-columns:145px!important;grid-template-areas:"menu"!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pins {display:flex!important;grid-template-columns:none!important;gap:6px!important;overflow-x:auto!important;overflow-y:hidden!important;padding:1px 0 3px!important;pointer-events:auto!important;touch-action:pan-x!important;overscroll-behavior-x:contain!important;-webkit-overflow-scrolling:touch!important;scrollbar-width:none!important;scroll-snap-type:x proximity!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pins::-webkit-scrollbar {display:none!important}html[data-mcms-mobile-active="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {flex:0 0 clamp(88px,28vw,118px)!important;width:auto!important;min-width:88px!important;height:44px!important;min-height:44px!important;scroll-snap-align:start!important}html[data-mcms-tablet-active="true"] #${SCRIPT.controlId} .mcms-screen-pin-btn {height:44px!important;min-height:44px!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} {max-height:calc(var(--mcms-visual-height,100dvh) - 8px)!important;padding-bottom:max(10px,calc(8px + env(safe-area-inset-bottom)))!important;scroll-padding-bottom:calc(16px + env(safe-area-inset-bottom))!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tabs {display:flex!important;grid-template-columns:none!important;gap:6px!important;overflow-x:auto!important;overflow-y:hidden!important;padding:3px 2px 7px!important;touch-action:pan-x!important;scroll-snap-type:x proximity!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-tab-btn {flex:0 0 auto!important;width:auto!important;min-width:88px!important;height:44px!important;min-height:44px!important;padding:0 11px!important;font-size:10px!important;scroll-snap-align:start!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-bookmark-row {grid-template-columns:repeat(4,minmax(44px,1fr))!important;gap:6px!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-bookmark-name {grid-column:1/-1!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-profile-row {grid-template-columns:repeat(3,minmax(44px,1fr))!important;gap:6px!important}html[data-mcms-mobile-active="true"] #${SCRIPT.panelId} .mcms-profile-main {grid-column:1/-1!important}html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId},
        html[data-mcms-mobile-active="true"] #${SCRIPT.majorIncidentFeedId},
        html[data-mcms-tablet-active="true"] #${SCRIPT.majorIncidentFeedId} {max-height:calc(var(--mcms-visual-height,100dvh) - 20px)!important;max-width:calc(var(--mcms-visual-width,100vw) - 20px)!important;-webkit-overflow-scrolling:touch!important;overscroll-behavior:contain!important}html[data-mcms-mobile-active="true"] #${SCRIPT.vehicleStatusId} :is(button,.mcms-vcs-refresh,.mcms-vcs-close),
        html[data-mcms-tablet-active="true"] #${SCRIPT.vehicleStatusId} :is(button,.mcms-vcs-refresh,.mcms-vcs-close),
        html[data-mcms-mobile-active="true"] #${SCRIPT.majorIncidentFeedId} button,
        html[data-mcms-tablet-active="true"] #${SCRIPT.majorIncidentFeedId} button {min-width:44px!important;min-height:44px!important}html[data-mcms-mobile-active="true"] #${SCRIPT.toastId} {right:max(10px,env(safe-area-inset-right),var(--mcms-visual-gap-right,0px))!important;top:max(10px,env(safe-area-inset-top),var(--mcms-visual-offset-top,0px))!important;max-width:min(320px,calc(var(--mcms-visual-width,100vw) - 20px))!important}html:is([data-mcms-mobile-active="true"],[data-mcms-tablet-active="true"]) :is(#${SCRIPT.controlId},#${SCRIPT.panelId},#${SCRIPT.vehicleStatusId},#${SCRIPT.majorIncidentFeedId}) :is(button,[role="button"]){-webkit-touch-callout:none!important;touch-action:manipulation!important}html:is([data-mcms-mobile-active="true"],[data-mcms-tablet-active="true"]) :is(#${SCRIPT.controlId},#${SCRIPT.panelId},#${SCRIPT.vehicleStatusId},#${SCRIPT.majorIncidentFeedId}) :is(button,[role="button"]):active{filter:brightness(1.16) saturate(1.06)!important;opacity:.88!important}html[data-mcms-keyboard-open="true"] #${SCRIPT.panelId} {max-height:calc(var(--mcms-visual-height,100dvh) - 8px)!important}
        @media (prefers-reduced-motion:reduce) {html[data-mcms-ui-theme="hyrule"] #${SCRIPT.panelId}::after,
        #${SCRIPT.payoutFlashId}[data-template="hyruleQuest"] .mcms-payout-theme-fx-a { animation:none !important; }
        }
        `);
        recordStartupMetric('stylesheetInstallMs', styleStartedAt, { stylesheetPhase: 'document-start' });
    }

    // Install presentation rules while the document is still sparse. This avoids a late
    // full-page selector rematch after MissionChief has rendered its map and mission list.
    removeOldInstances();
    try { localStorage.removeItem('mc_map_command_toolkit_attention_v170'); } catch (err) {}
    installMainStyles();
    applyRootAttributes();

    function isVisible(el) {
        if (!el || !(el instanceof Element)) return false;
        const rect = el.getBoundingClientRect();
        if (rect.width <= 0 || rect.height <= 0) return false;
        const style = pageWindow.getComputedStyle(el);
        return style.display !== 'none' && style.visibility !== 'hidden' && Number(style.opacity || 1) !== 0;
    }

    function normaliseRegistryValues(registry) {
        if (!registry) return [];
        if (Array.isArray(registry)) return registry;
        try {
        if (typeof registry.values === 'function') return Array.from(registry.values());
        if (typeof registry[Symbol.iterator] === 'function') return Array.from(registry);
        if (typeof registry === 'object') return Object.values(registry);
        } catch (err) {}
        return [];
    }

    function getCachedRegistry(globalName, maxAge = MARKER_REGISTRY_CACHE_MS) {
        let registry;
        try { registry = pageWindow[globalName]; } catch (err) { return []; }
        if (!registry) return [];
        const now = Date.now();
        const cached = markerRegistryCache.get(globalName);
        if (cached && cached.registry === registry && now - cached.createdAt <= maxAge) return cached.values;
        const values = normaliseRegistryValues(registry);
        markerRegistryCache.set(globalName, { registry, createdAt: now, values });
        return values;
    }

    function invalidateMarkerRegistryCaches(scope = 'all') {
        markerRegistryRevision += 1;
        if (scope === 'all' || scope === 'mission') {
        markerRegistryCache.delete('mission_markers');
        missionIconMarkerCache = new WeakMap();
        missionRegistryRevision += 1;
        missionMarkerIndexCache = { revision: -1, registry: null, markers: [], byId: new Map() };
        }
        if (scope === 'all' || scope === 'vehicle') {
        markerRegistryCache.delete('vehicle_markers');
        vehicleRegistryRevision += 1;
        personalVehicleRecordsCache.vehicleRevision = -1;
        }
        if (scope === 'all' || scope === 'building') {
        markerRegistryCache.delete('building_markers');
        markerRegistryCache.delete('building_markers_cache');
        buildingRegistryRevision += 1;
        personalBuildingIdsCache.createdAt = 0;
        }
    }

    function currentUserIdCached() {
        const now = Date.now();
        if (cachedUserId !== null || now - cachedUserIdReadAt < 1000) return cachedUserId;
        cachedUserIdReadAt = now;
        try {
        const value = pageWindow.user_id;
        cachedUserId = value === undefined || value === null || value === '' ? null : String(value);
        } catch (err) {
        cachedUserId = null;
        }
        return cachedUserId;
    }

    function schedulePanelPosition(useSavedPosition = true, delay = 80) {
        runtimeClearTimeout(panelPositionTimer);
        panelPositionTimer = runtimeSetTimeout(() => positionPanelOverlay(useSavedPosition), Math.max(0, Number(delay) || 0));
    }

    function setInnerHtmlIfChanged(element, html, signature = html) {
        if (!element) return false;
        const nextSignature = String(signature);
        if (element.__mcmsRenderSignature === nextSignature) return false;
        element.__mcmsRenderSignature = nextSignature;
        element.innerHTML = html;
        return true;
    }

    function invalidateMapElementCache() {
        cachedMapElementCheckedAt = 0;
        if (cachedMapElement && !cachedMapElement.isConnected) cachedMapElement = null;
    }

    function getLargestLeafletMap() {
        const now = Date.now();
        if (cachedMapElement?.isConnected && now - cachedMapElementCheckedAt <= MAP_ELEMENT_CACHE_MS) return cachedMapElement;
        if (cachedMapElement?.isConnected && isVisible(cachedMapElement)) {
        cachedMapElementCheckedAt = now;
        return cachedMapElement;
        }
        const candidates = Array.from(document.querySelectorAll('.leaflet-container, #map, [data-leaflet-map]')).filter(isVisible);
        let largest = null;
        let largestArea = 0;
        for (const candidate of candidates) {
        const rect = candidate.getBoundingClientRect();
        const area = rect.width * rect.height;
        if (area > largestArea) {
            largest = candidate;
            largestArea = area;
        }
        }
        cachedMapElement = largest;
        cachedMapElementCheckedAt = now;
        return largest;
    }

    function getViewportMetrics() {
        const viewport = pageWindow.visualViewport;
        const width = Math.max(1, Number(viewport?.width) || Number(pageWindow.innerWidth) || Number(document.documentElement.clientWidth) || 1);
        const height = Math.max(1, Number(viewport?.height) || Number(pageWindow.innerHeight) || Number(document.documentElement.clientHeight) || 1);
        const offsetLeft = Number.isFinite(Number(viewport?.offsetLeft)) ? Number(viewport.offsetLeft) : 0;
        const offsetTop = Number.isFinite(Number(viewport?.offsetTop)) ? Number(viewport.offsetTop) : 0;
        return {
        width,
        height,
        offsetLeft,
        offsetTop,
        orientation: width >= height ? 'landscape' : 'portrait'
        };
    }

    function setRootStylePropertyIfChanged(root,name,value){if(!root?.style||root.style.getPropertyValue(name)===value)return false;root.style.setProperty(name,value);return true;}
    function applyVisualViewportGeometry(root=document.documentElement,viewport=getViewportMetrics()){if(!root)return viewport;const layoutWidth=Math.max(viewport.width,Number(pageWindow.innerWidth)||Number(root.clientWidth)||viewport.width),layoutHeight=Math.max(viewport.height,Number(pageWindow.innerHeight)||Number(root.clientHeight)||viewport.height),rightGap=Math.max(0,layoutWidth-(viewport.offsetLeft+viewport.width)),bottomGap=Math.max(0,layoutHeight-(viewport.offsetTop+viewport.height)),keyboardLoss=Math.max(0,layoutHeight-viewport.height),keyboardOpen=isTouchLayoutActive()&&keyboardLoss>=Math.max(120,layoutHeight*.18),px=value=>`${Math.round(Math.max(0,Number(value)||0)*100)/100}px`;
    for(const [name,value] of [['--mcms-visual-offset-left',viewport.offsetLeft],['--mcms-visual-offset-top',viewport.offsetTop],['--mcms-visual-gap-right',rightGap],['--mcms-visual-gap-bottom',bottomGap],['--mcms-visual-width',viewport.width],['--mcms-visual-height',viewport.height]])setRootStylePropertyIfChanged(root,name,px(value));setAttributeIfChanged(root,'data-mcms-keyboard-open',String(Boolean(keyboardOpen)));return{...viewport,layoutWidth,layoutHeight,rightGap,bottomGap,keyboardOpen};}
    function refreshTouchViewportLayout(){if(runtime.destroyed)return;applyRootAttributes();applyVisualViewportGeometry();refreshTabletModeUi();fitControlToMap();const panel=document.getElementById(SCRIPT.panelId);if(panel?.classList.contains('mcms-open'))applyTabletPanelPosition();scheduleMajorIncidentFeedLayout();}
    function scheduleVisualViewportStabilisation(reason='viewport'){const generation=++visualViewportRefreshGeneration,delays=isTouchLayoutActive()?[0,80,220,420]:[0];for(const delay of delays)pageWindow.setTimeout(()=>{if(runtime.destroyed||generation!==visualViewportRefreshGeneration)return;refreshTouchViewportLayout();},delay);return reason;}
    function hasCoarsePointer() {
        try {
        return Boolean(
            pageWindow.matchMedia?.('(pointer: coarse)')?.matches ||
            pageWindow.matchMedia?.('(any-pointer: coarse)')?.matches
        );
        } catch (err) {
        return false;
        }
    }

    function collectDesktopWorkspaceObstructions(
        viewport = getViewportMetrics(),
        mapEl = getLargestLeafletMap(),
        panel = document.getElementById(SCRIPT.panelId)
    ) {
        const viewportLeft = Number.isFinite(Number(viewport?.offsetLeft)) ? Number(viewport.offsetLeft) : 0;
        const viewportTop = Number.isFinite(Number(viewport?.offsetTop)) ? Number(viewport.offsetTop) : 0;
        const viewportWidth = Math.max(1, Number(viewport?.width) || 1);
        const viewportHeight = Math.max(1, Number(viewport?.height) || 1);
        const viewportRight = viewportLeft + viewportWidth;
        const scanBottom = viewportTop + Math.min(220, Math.max(96, viewportHeight * 0.22));
        const minimumWidth = Math.min(280, Math.max(180, viewportWidth * 0.18));
        const selectors = [
        'header',
        'nav',
        '[role="banner"]',
        '[role="navigation"]',
        '.navbar',
        '.navbar-fixed-top',
        '.navbar-static-top',
        '[id*="ticker"]',
        '[class*="ticker"]',
        'body > *',
            'body > * > *'
        ].join(',');
        const candidates = new Set();
        try {
        document.querySelectorAll(selectors).forEach(element => candidates.add(element));
        } catch (err) {}

        const obstructions = [];
        for (const element of candidates) {
        if (!element || element === panel || panel?.contains?.(element) || element === mapEl) continue;
        if (element.classList?.contains?.('leaflet-container')) continue;
        let rect;
        try { rect = element.getBoundingClientRect?.(); } catch (err) { rect = null; }
        if (!rect || rect.width < minimumWidth || rect.height < 6 || rect.height > 180) continue;
        if (rect.right <= viewportLeft || rect.left >= viewportRight) continue;
        if (rect.bottom <= viewportTop || rect.top >= scanBottom || rect.bottom > scanBottom + 24) continue;

        let style = null;
        try { style = pageWindow.getComputedStyle?.(element); } catch (err) {}
        if (style?.display === 'none' || style?.visibility === 'hidden' || Number(style?.opacity) === 0) continue;
        const positioned = ['fixed', 'sticky', 'absolute'].includes(style?.position);
        const semantic = element.matches?.('header, nav, [role="banner"], [role="navigation"], .navbar, .navbar-fixed-top, .navbar-static-top');
        const nearRoot = element.parentElement === document.body || element.parentElement?.parentElement === document.body;
        if (!positioned && !semantic && !nearRoot) continue;

        obstructions.push({
            element,
            rect: {
                left: Number(rect.left),
                right: Number(rect.right),
                top: Number(rect.top),
                bottom: Number(rect.bottom)
            }
        });
        }
        return obstructions.sort((a, b) => a.rect.bottom - b.rect.bottom);
    }

    function resolveDesktopPanelBounds(
        mapRect,
        viewport = getViewportMetrics(),
        margin = 12,
        obstructionRects = []
    ) {
        const finite = value => typeof value === 'number' && Number.isFinite(value);
        const viewportLeft = finite(viewport?.offsetLeft) ? viewport.offsetLeft : 0;
        const viewportTop = finite(viewport?.offsetTop) ? viewport.offsetTop : 0;
        const viewportWidth = Math.max(1, finite(viewport?.width) ? viewport.width : 1);
        const viewportHeight = Math.max(1, finite(viewport?.height) ? viewport.height : 1);
        const viewportRight = viewportLeft + viewportWidth;
        const viewportBottom = viewportTop + viewportHeight;
        const safeMargin = Math.max(0, finite(margin) ? margin : 12);

        const mapValid = mapRect
        && finite(mapRect.left)
        && finite(mapRect.right)
        && finite(mapRect.top)
        && finite(mapRect.bottom)
        && mapRect.right > mapRect.left
        && mapRect.bottom > mapRect.top;
        let workspaceTop = mapValid
        ? Math.max(viewportTop, Math.min(viewportBottom, mapRect.top))
        : viewportTop;
        const minimumTopChrome = Math.min(88, Math.max(52, viewportHeight * 0.055));
        workspaceTop = Math.max(workspaceTop, viewportTop + minimumTopChrome);
        const scanBottom = viewportTop + Math.min(220, Math.max(96, viewportHeight * 0.22));

        for (const rect of Array.isArray(obstructionRects) ? obstructionRects : []) {
        if (!rect || !finite(rect.left) || !finite(rect.right) || !finite(rect.top) || !finite(rect.bottom)) continue;
        if (rect.right <= viewportLeft || rect.left >= viewportRight) continue;
        if (rect.bottom <= viewportTop || rect.top >= scanBottom || rect.bottom > viewportBottom) continue;
        workspaceTop = Math.max(workspaceTop, rect.bottom);
        }

        const areaLeft = viewportLeft;
        const areaRight = viewportRight;
        const areaTop = Math.min(viewportBottom, workspaceTop);
        const areaBottom = viewportBottom;
        const left = Math.min(areaRight, areaLeft + safeMargin);
        const right = Math.max(left, areaRight - safeMargin);
        const top = Math.min(areaBottom, areaTop + safeMargin);
        const bottom = Math.max(top, areaBottom - safeMargin);

        return {
        left: Math.round(left),
        right: Math.round(right),
        top: Math.round(top),
        bottom: Math.round(bottom),
        maxHeight: Math.max(1, Math.floor(bottom - top))
        };
    }

    function clampDesktopPanelPoint(left, top, panelWidth, panelHeight, bounds) {
        const safeBounds = bounds || resolveDesktopPanelBounds(null);
        const availableWidth = Math.max(1, safeBounds.right - safeBounds.left);
        const availableHeight = Math.max(1, safeBounds.bottom - safeBounds.top);
        const width = Math.min(availableWidth, Math.max(1, Number(panelWidth) || 318));
        const height = Math.min(availableHeight, Math.max(1, Number(panelHeight) || availableHeight));
        const desiredLeft = Number.isFinite(Number(left)) ? Number(left) : safeBounds.left;
        const desiredTop = Number.isFinite(Number(top)) ? Number(top) : safeBounds.top;
        return {
        left: Math.round(Math.max(safeBounds.left, Math.min(desiredLeft, safeBounds.right - width))),
        top: Math.round(Math.max(safeBounds.top, Math.min(desiredTop, safeBounds.bottom - height)))
        };
    }

    function stopDesktopPanelWorkspaceObservation() {
        if (desktopPanelResizeObserver) {
        for (const element of desktopPanelObservedElements) {
            try { desktopPanelResizeObserver.unobserve(element); } catch (err) {}
        }
        }
        desktopPanelObservedElements.clear();
    }

    function clearDesktopPanelSizing(panel = document.getElementById(SCRIPT.panelId)) {
        if (panel) {
        panel.style.removeProperty('--mcms-desktop-panel-max-height');
        panel.style.removeProperty('max-height');
        delete panel.dataset.mcmsDesktopFit;
        }
        stopDesktopPanelWorkspaceObservation();
    }

    function observeDesktopPanelWorkspace(mapEl) {
        if (activeDeviceLayout !== 'desktop') {
        stopDesktopPanelWorkspaceObservation();
        return;
        }
        const ResizeObserverCtor = pageWindow.ResizeObserver;
        if (typeof ResizeObserverCtor !== 'function') return;
        if (!desktopPanelResizeObserver) {
        desktopPanelResizeObserver = runtimeTrackObserver(new ResizeObserverCtor(() => {
            if (runtime.destroyed || activeDeviceLayout !== 'desktop') return;
            const panel = document.getElementById(SCRIPT.panelId);
            if (!panel) return;
            applyDesktopPanelSizing(panel, getLargestLeafletMap());
            if (!dragState && panel.classList.contains('mcms-open')) schedulePanelPosition(true, 20);
        }));
        }

        const viewport = getViewportMetrics();
        const panel = document.getElementById(SCRIPT.panelId);
        const obstructionElements = collectDesktopWorkspaceObstructions(viewport, mapEl, panel)
        .map(item => item.element);
        const nextElements = new Set([
        document.documentElement,
        document.body,
        ...(mapEl ? [mapEl] : []),
        ...obstructionElements
        ].filter(Boolean));

        for (const element of desktopPanelObservedElements) {
        if (nextElements.has(element)) continue;
        try { desktopPanelResizeObserver.unobserve(element); } catch (err) {}
        }
        for (const element of nextElements) {
        if (desktopPanelObservedElements.has(element)) continue;
        try { desktopPanelResizeObserver.observe(element); } catch (err) {}
        }
        desktopPanelObservedElements = nextElements;
    }

    function applyDesktopPanelSizing(panel = document.getElementById(SCRIPT.panelId), mapEl = getLargestLeafletMap()) {
        if (!panel || activeDeviceLayout !== 'desktop' || isTouchLayoutActive()) return null;
        const viewport = getViewportMetrics();
        let mapRect = null;
        try { mapRect = mapEl?.getBoundingClientRect?.() || null; } catch (err) {}
        const obstructionRects = collectDesktopWorkspaceObstructions(viewport, mapEl, panel)
        .map(item => item.rect);
        const bounds = resolveDesktopPanelBounds(mapRect, viewport, 12, obstructionRects);
        panel.style.setProperty('--mcms-desktop-panel-max-height', `${bounds.maxHeight}px`);
        panel.style.setProperty('max-height', `${bounds.maxHeight}px`, 'important');
        panel.dataset.mcmsDesktopFit = `${bounds.left}:${bounds.top}:${bounds.right}:${bounds.bottom}:${bounds.maxHeight}`;

        if (!dragState && panel.classList.contains('mcms-open')) {
        let panelRect = null;
        try { panelRect = panel.getBoundingClientRect?.() || null; } catch (err) {}
        if (panelRect) {
            const clamped = clampDesktopPanelPoint(
                panelRect.left,
                panelRect.top,
                panelRect.width || panel.offsetWidth || 318,
                Math.min(panelRect.height || panel.offsetHeight || 500, bounds.maxHeight),
                bounds
            );
            if (Math.abs(panelRect.left - clamped.left) > 0.5 || Math.abs(panelRect.top - clamped.top) > 0.5) {
                panel.style.setProperty('left', `${clamped.left}px`, 'important');
                panel.style.setProperty('top', `${clamped.top}px`, 'important');
                panel.style.removeProperty('right');
                panel.style.removeProperty('bottom');
            }
        }
        }
        return bounds;
    }

    function getIosBrowserSignals() {
        const nav = pageWindow.navigator || navigator;
        const userAgent = String(nav?.userAgent || '');
        const platform = String(nav?.platform || '');
        const touchPoints = Number(nav?.maxTouchPoints || 0);
        const { width, height } = getViewportMetrics();
        const shortestSide = Math.min(width, height);
        const iosHandheld = /iPhone|iPod/i.test(userAgent) || (/MacIntel/i.test(platform) && touchPoints > 1 && shortestSide < 500);
        const appleWebKit = /AppleWebKit/i.test(userAgent);
        const alternateIosBrowser = /CriOS|FxiOS|EdgiOS|OPiOS|DuckDuckGo|YaBrowser|GSA/i.test(userAgent);
        const safari = appleWebKit && !alternateIosBrowser;
        return { iosHandheld, safari, appleWebKit, touchPoints };
    }

    function autoDetectMobileMode() {
        const { width, height } = getViewportMetrics();
        const shortestSide = Math.min(width, height);
        const longestSide = Math.max(width, height);
        const signals = getIosBrowserSignals();
        return signals.iosHandheld && signals.safari && signals.touchPoints > 0 && shortestSide < 500 && longestSide <= 1100;
    }

    function autoDetectTabletMode() {
        const { width, height } = getViewportMetrics();
        const shortestSide = Math.min(width, height);
        const longestSide = Math.max(width, height);
        const touchPoints = Number(pageWindow.navigator?.maxTouchPoints || navigator.maxTouchPoints || 0);
        return touchPoints > 0 && hasCoarsePointer() && shortestSide >= 500 && longestSide <= 1600;
    }

    function resolveDeviceLayout() {
        if (state.mobileMode === 'on') return 'mobile';
        if (state.tabletMode === 'on') return 'tablet';
        if (state.mobileMode !== 'off' && autoDetectMobileMode()) return 'mobile';
        if (state.tabletMode !== 'off' && autoDetectTabletMode()) return 'tablet';
        return 'desktop';
    }

    function resolveTabletMode(layout = activeDeviceLayout) {
        return layout === 'tablet';
    }

    function resolveMobileMode(layout = activeDeviceLayout) {
        return layout === 'mobile';
    }

    function isTouchLayoutActive() {
        return tabletModeActive || mobileModeActive;
    }

    function deviceLayoutStatusText() {
        const { width, height, orientation } = getViewportMetrics();
        const mobileLabel = state.mobileMode === 'auto' ? 'Mobile auto' : state.mobileMode === 'on' ? 'Mobile forced on' : 'Mobile forced off';
        const tabletLabel = state.tabletMode === 'auto' ? 'Tablet auto' : state.tabletMode === 'on' ? 'Tablet forced on' : 'Tablet forced off';
        const activeLabel = activeDeviceLayout === 'mobile' ? 'iOS mobile layout active' : activeDeviceLayout === 'tablet' ? 'tablet layout active' : 'desktop layout active';
        return `${activeLabel} · ${mobileLabel} · ${tabletLabel} · ${Math.round(width)}×${Math.round(height)} ${orientation}`;
    }

    function tabletModeStatusText() {
        return deviceLayoutStatusText();
    }

    function refreshTabletModeUi(panel = document.getElementById(SCRIPT.panelId)) {
        if (!panel) return;
        panel.classList.toggle('mcms-tablet-active', tabletModeActive);
        panel.classList.toggle('mcms-mobile-active', mobileModeActive);
        const tabletSelect = panel.querySelector('[data-setting="tablet-mode"]');
        const mobileSelect = panel.querySelector('[data-setting="mobile-mode"]');
        if (tabletSelect && document.activeElement !== tabletSelect) tabletSelect.value = state.tabletMode;
        if (mobileSelect && document.activeElement !== mobileSelect) mobileSelect.value = state.mobileMode;
        const status = panel.querySelector('[data-device-layout-status], [data-tablet-status]');
        if (status) status.textContent = tabletModeStatusText();
        const dragHandle = panel.querySelector('.mcms-drag-handle');
        const title = panel.querySelector('.mcms-title');
        const subtitle = panel.querySelector('.mcms-subtitle');
        const touchLayout = isTouchLayoutActive();
        const layoutName = mobileModeActive ? 'MOBILE COMMAND PANEL' : tabletModeActive ? 'TABLET COMMAND PANEL' : '☰ DRAG MENU HERE';
        const layoutHelp = mobileModeActive
        ? 'iPhone Safari layout · swipe vertically · close with ×'
        : tabletModeActive
            ? 'Touch-optimised layout · scroll vertically · close with ×'
            : 'Hold left-click on this title area. Position saves.';
        if (dragHandle) dragHandle.title = touchLayout ? `${mobileModeActive ? 'Mobile' : 'Tablet'} Mode uses a fixed responsive panel` : 'Hold left-click and drag this bar to move the menu';
        if (title) title.textContent = layoutName;
        if (subtitle) subtitle.textContent = layoutHelp;
    }

    function clearTabletDockSizing(control = document.getElementById(SCRIPT.controlId)) {
        if (control) {
        control.style.removeProperty('--mcms-tablet-dock-width');
        control.style.removeProperty('--mcms-tablet-filter-columns');
        control.style.removeProperty('--mcms-tablet-pin-columns');
        control.style.removeProperty('--mcms-tablet-filter-height');
        control.style.removeProperty('--mcms-tablet-pin-height');
        control.style.removeProperty('--mcms-mobile-dock-width');
        control.style.removeProperty('--mcms-mobile-columns');
        control.style.removeProperty('--mcms-mobile-pin-columns');
        control.style.removeProperty('--mcms-mobile-filter-height');
        control.style.removeProperty('--mcms-mobile-pin-height');
        delete control.dataset.mcmsTabletFit;
        delete control.dataset.mcmsMobileFit;
        }
        if (tabletDockResizeObserver && tabletDockObservedMap) {
        try { tabletDockResizeObserver.unobserve(tabletDockObservedMap); } catch (err) {}
        tabletDockObservedMap = null;
        }
    }

    function observeTabletMapArea(mapEl) {
        if (!isTouchLayoutActive() || !mapEl) return;
        const ResizeObserverCtor = pageWindow.ResizeObserver;
        if (typeof ResizeObserverCtor !== 'function') return;

        if (!tabletDockResizeObserver) {
        tabletDockResizeObserver = runtimeTrackObserver(new ResizeObserverCtor(entries => {
            if (!isTouchLayoutActive() || runtime.destroyed) return;
            if (entries.some(entry => entry?.target === tabletDockObservedMap)) fitControlToMap();
        }));
        }

        if (tabletDockObservedMap === mapEl) return;
        if (tabletDockObservedMap) {
        try { tabletDockResizeObserver.unobserve(tabletDockObservedMap); } catch (err) {}
        }
        tabletDockObservedMap = mapEl;
        try { tabletDockResizeObserver.observe(mapEl); } catch (err) {}
    }

    function estimateTabletDockHeight(filterCount, filterColumns, pinCount, pinColumns, filterHeight, pinHeight, gap) {
        const filterRows = Math.max(1, Math.ceil(filterCount / Math.max(1, filterColumns)));
        const filterBlockHeight = Math.max(48, (filterRows * filterHeight) + (Math.max(0, filterRows - 1) * gap));
        if (!pinCount) return filterBlockHeight;
        const pinRows = Math.max(1, Math.ceil(pinCount / Math.max(1, pinColumns)));
        return filterBlockHeight + gap + (pinRows * pinHeight) + (Math.max(0, pinRows - 1) * gap);
    }

    function applyTabletDockLayout(mapEl = getLargestLeafletMap()) {
        const control = document.getElementById(SCRIPT.controlId);
        if (!control || !mapEl || !tabletModeActive) {
        clearTabletDockSizing(control);
        return false;
        }

        const rect = mapEl.getBoundingClientRect();
        if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || rect.width < 1 || rect.height < 1) return false;

        observeTabletMapArea(mapEl);

        const margin = rect.width < 700 ? 8 : 10;
        const gap = 5;
        const menuWidth = 145;
        const nudgeX = Math.abs(Number(state.nudge?.x) || 0);
        const nudgeY = Math.abs(Number(state.nudge?.y) || 0);
        const viewport = getViewportMetrics();
        const mapWidth = Math.min(rect.width, viewport.width);
        const availableMapWidth = Math.max(1, mapWidth - (margin * 2) - nudgeX);
        const dockWidth = Math.max(1, Math.min(960, availableMapWidth));
        const contentWidth = Math.max(1, dockWidth - menuWidth - gap);

        const filterCount = Math.max(1, control.querySelectorAll('.mcms-floating-filter .mcms-float-btn').length);
        const pinCount = control.querySelectorAll('.mcms-screen-pins .mcms-screen-pin-btn').length;
        const preferredFilterWidth = contentWidth >= 600 ? 92 : 82;
        const preferredPinWidth = contentWidth >= 600 ? 78 : 70;

        let filterColumns = Math.max(1, Math.min(filterCount, Math.floor((contentWidth + gap) / (preferredFilterWidth + gap)) || 1));
        let pinColumns = pinCount
        ? Math.max(1, Math.min(pinCount, Math.floor((contentWidth + gap) / (preferredPinWidth + gap)) || 1))
        : 1;
        let filterHeight = 48;
        let pinHeight = 44;
        const availableMapHeight = Math.max(80, rect.height - (margin * 2) - nudgeY);

        let estimatedHeight = estimateTabletDockHeight(filterCount, filterColumns, pinCount, pinColumns, filterHeight, pinHeight, gap);
        while (estimatedHeight > availableMapHeight && (filterColumns < filterCount || pinColumns < Math.max(1, pinCount))) {
        const filterCandidate = filterColumns < filterCount
            ? estimateTabletDockHeight(filterCount, filterColumns + 1, pinCount, pinColumns, filterHeight, pinHeight, gap)
            : Number.POSITIVE_INFINITY;
        const pinCandidate = pinCount && pinColumns < pinCount
            ? estimateTabletDockHeight(filterCount, filterColumns, pinCount, pinColumns + 1, filterHeight, pinHeight, gap)
            : Number.POSITIVE_INFINITY;

        if (filterCandidate <= pinCandidate) filterColumns += 1;
        else pinColumns += 1;
        estimatedHeight = Math.min(filterCandidate, pinCandidate);
        }

        if (estimatedHeight > availableMapHeight) {
        filterHeight = 44;
        estimatedHeight = estimateTabletDockHeight(filterCount, filterColumns, pinCount, pinColumns, filterHeight, pinHeight, gap);
        }

        control.style.setProperty('--mcms-tablet-dock-width', `${Math.floor(dockWidth)}px`);
        control.style.setProperty('--mcms-tablet-filter-columns', String(filterColumns));
        control.style.setProperty('--mcms-tablet-pin-columns', String(pinColumns));
        control.style.setProperty('--mcms-tablet-filter-height', `${filterHeight}px`);
        control.style.setProperty('--mcms-tablet-pin-height', `${pinHeight}px`);
        control.dataset.mcmsTabletFit = `${Math.floor(dockWidth)}:${filterColumns}:${pinColumns}:${Math.round(estimatedHeight)}`;
        return true;
    }

    function estimateMobileDockHeight(commandCount, columns, pinCount, pinColumns, commandHeight, pinHeight, gap) {
        const commandRows = Math.max(1, Math.ceil(commandCount / Math.max(1, columns)));
        const commandBlockHeight = (commandRows * commandHeight) + (Math.max(0, commandRows - 1) * gap);
        if (!pinCount) return commandBlockHeight;
        const pinRows = Math.max(1, Math.ceil(pinCount / Math.max(1, pinColumns)));
        return commandBlockHeight + gap + (pinRows * pinHeight) + (Math.max(0, pinRows - 1) * gap);
    }

    function applyMobileDockLayout(mapEl = getLargestLeafletMap()) {
        const control = document.getElementById(SCRIPT.controlId);
        if (!control || !mapEl || !mobileModeActive) {
        if (!tabletModeActive) clearTabletDockSizing(control);
        return false;
        }

        const rect = mapEl.getBoundingClientRect();
        if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || rect.width < 1 || rect.height < 1) return false;
        observeTabletMapArea(mapEl);

        const viewport = getViewportMetrics();
        const margin = rect.width < 500 ? 5 : 7;
        const gap = rect.width < 500 ? 4 : 5;
        const nudgeX = Math.abs(Number(state.nudge?.x) || 0);
        const nudgeY = Math.abs(Number(state.nudge?.y) || 0);
        const mapWidth = Math.min(rect.width, viewport.width);
        const dockWidth = Math.max(1, Math.min(1000, mapWidth - (margin * 2) - nudgeX));
        const filterCount = Math.max(1, control.querySelectorAll('.mcms-floating-filter .mcms-float-btn').length);
        const launchSlotCount = control.querySelector('.mcms-economy-btn') ? 3 : 2;
        const commandCount = launchSlotCount + filterCount;
        const pinCount = control.querySelectorAll('.mcms-screen-pins .mcms-screen-pin-btn').length;
        const minCommandWidth = viewport.orientation === 'landscape' ? 68 : 62;
        const maxPortraitColumns = viewport.orientation === 'portrait' ? 5 : commandCount;
        let columns = Math.max(3, Math.min(commandCount, maxPortraitColumns, Math.floor((dockWidth + gap) / (minCommandWidth + gap)) || 3));
        if (viewport.orientation === 'landscape' && dockWidth >= 700) columns = commandCount;
        let pinColumns = Math.max(1, pinCount);
        let commandHeight = 44;
        let pinHeight = 44;
        const availableMapHeight = Math.max(72, rect.height - (margin * 2) - nudgeY);

        let estimatedHeight = estimateMobileDockHeight(commandCount, columns, pinCount, pinColumns, commandHeight, pinHeight, gap);
        while (estimatedHeight > availableMapHeight && columns < commandCount) {
        columns += 1;
        estimatedHeight = estimateMobileDockHeight(commandCount, columns, pinCount, pinColumns, commandHeight, pinHeight, gap);
        }
        if (estimatedHeight > availableMapHeight) {
        estimatedHeight = estimateMobileDockHeight(commandCount, columns, pinCount, pinColumns, commandHeight, pinHeight, gap);
        }

        control.style.setProperty('--mcms-mobile-dock-width', `${Math.floor(dockWidth)}px`);
        control.style.setProperty('--mcms-mobile-columns', String(columns));
        control.style.setProperty('--mcms-mobile-pin-columns', String(pinColumns));
        control.style.setProperty('--mcms-mobile-filter-height', `${commandHeight}px`);
        control.style.setProperty('--mcms-mobile-pin-height', `${pinHeight}px`);
        control.dataset.mcmsMobileFit = `${Math.floor(dockWidth)}:${columns}:${pinColumns}:${Math.round(estimatedHeight)}`;
        return true;
    }

    function applyTabletPanelPosition() {
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel || !panel.classList.contains('mcms-open') || !isTouchLayoutActive()) return false;
        clearDesktopPanelSizing(panel);

        const viewport = getViewportMetrics();
        const mobile = mobileModeActive;
        const margin = mobile ? 4 : (viewport.width < 700 ? 6 : 10);
        const availableWidth = Math.max(1, viewport.width - (margin * 2));
        const availableHeight = Math.max(mobile ? 160 : 180, viewport.height - (margin * 2));
        const desiredWidth = mobile
        ? availableWidth
        : Math.min(availableWidth, viewport.orientation === 'landscape' ? 760 : 700);
        const heightRatio = mobile
        ? (viewport.orientation === 'landscape' ? 0.94 : 0.88)
        : (viewport.orientation === 'landscape' ? 0.88 : 0.82);
        const maxHeight = Math.min(availableHeight, Math.max(mobile ? 220 : 260, viewport.height * heightRatio));
        const left = Math.round(viewport.offsetLeft + Math.max(margin, (viewport.width - desiredWidth) / 2));

        panel.style.setProperty('position', 'fixed', 'important');
        panel.style.setProperty('width', `${Math.round(desiredWidth)}px`, 'important');
        panel.style.setProperty('max-width', `${Math.round(desiredWidth)}px`, 'important');
        panel.style.setProperty('max-height', `${Math.round(maxHeight)}px`, 'important');
        const layoutViewportHeight = Math.max(viewport.height, Number(pageWindow.innerHeight) || Number(document.documentElement.clientHeight) || viewport.height);
        const bottomOffset = Math.round(Math.max(0, layoutViewportHeight - (viewport.offsetTop + viewport.height)) + margin);
        panel.style.setProperty('left', `${left}px`, 'important');
        panel.style.setProperty('right', 'auto', 'important');
        panel.style.setProperty('top', 'auto', 'important');
        panel.style.setProperty('bottom', `${bottomOffset}px`, 'important');
        panel.style.setProperty('transform', 'none', 'important');
        return true;
    }

    function clearTabletPanelSizing(panel = document.getElementById(SCRIPT.panelId)) {
        if (!panel) return;
        panel.style.removeProperty('width');
        panel.style.removeProperty('max-width');
    }

    function scheduleTabletLayoutRefresh(delay = 40) {
        runtimeClearTimeout(tabletLayoutTimer);
        tabletLayoutTimer = runtimeSetTimeout(() => {
        tabletLayoutTimer = null;
        const previousLayout = activeDeviceLayout;
        applyRootAttributes();
        const panel = document.getElementById(SCRIPT.panelId);
        refreshTabletModeUi(panel);
        if (previousLayout !== activeDeviceLayout && !isTouchLayoutActive()) {
            clearTabletPanelSizing(panel);
            clearTabletDockSizing();
        }
        fitControlToMap();
        if (panel?.classList.contains('mcms-open')) positionPanelOverlay(true);
        }, Math.max(0, Number(delay) || 0));
    }

    function setAttributeIfChanged(element, name, value) {
        const nextValue = String(value);
        if (element.getAttribute(name) === nextValue) return false;
        element.setAttribute(name, nextValue);
        return true;
    }

    function applyRootAttributes() {
        const root = document.documentElement;
        setAttributeIfChanged(root, 'data-mcms-ui-theme', normaliseUiTheme(state.uiTheme));
        setAttributeIfChanged(root, 'data-mc-map-skin', state.theme);
        setAttributeIfChanged(root, 'data-mcms-clean', String(Boolean(state.cleanMode)));
        setAttributeIfChanged(root, 'data-mcms-marker-focus', String(Boolean(state.markerFocus)));
        setAttributeIfChanged(root, 'data-mcms-mission-pulse', String(Boolean(state.missionPulse)));
        setAttributeIfChanged(root, 'data-mcms-road-priority', String(Boolean(state.roadPriority)));
        setAttributeIfChanged(root, 'data-mcms-compact-dock', String(Boolean(state.compactDock)));
        setAttributeIfChanged(root, 'data-mcms-command-bar-open', String(state.commandBarOpen !== false));
        setAttributeIfChanged(root, 'data-mcms-economy', String(Boolean(state.economyMode)));
        setAttributeIfChanged(root, 'data-mcms-alliance-buildings-map', state.allianceBuildingsMap === false ? 'disabled' : 'enabled');
        activeDeviceLayout = resolveDeviceLayout();
        tabletModeActive = resolveTabletMode(activeDeviceLayout);
        mobileModeActive = resolveMobileMode(activeDeviceLayout);
        const tabletViewport = getViewportMetrics();
        setAttributeIfChanged(root, 'data-mcms-device-layout', activeDeviceLayout);
        setAttributeIfChanged(root, 'data-mcms-tablet-mode', String(state.tabletMode));
        setAttributeIfChanged(root, 'data-mcms-tablet-active', String(Boolean(tabletModeActive)));
        setAttributeIfChanged(root, 'data-mcms-mobile-mode', String(state.mobileMode));
        setAttributeIfChanged(root, 'data-mcms-mobile-active', String(Boolean(mobileModeActive)));
        setAttributeIfChanged(root, 'data-mcms-tablet-orientation', tabletViewport.orientation);
        setAttributeIfChanged(root, 'data-mcms-mobile-orientation', tabletViewport.orientation);
        setAttributeIfChanged(root, 'data-mcms-show-alliance-missions', String(Boolean(state.visibility.allianceMissions)));
        setAttributeIfChanged(root, 'data-mcms-show-my-missions', String(Boolean(state.visibility.myMissions)));
        setAttributeIfChanged(root, 'data-mcms-show-vehicles', String(Boolean(state.visibility.vehicles)));
        setAttributeIfChanged(root, 'data-mcms-show-buildings', String(Boolean(state.visibility.buildings)));
    }

    function getStrongMarkerSignal(icon) {
        if (!icon) return { hrefs: [], srcs: [], classes: '', text: '' };

        const hrefs = [];
        const srcs = [];
        const classes = [];
        const texts = [];

        classes.push(icon.className || '');
        texts.push(icon.title || '', icon.alt || '', icon.getAttribute?.('aria-label') || '');

        try {
        const anchor = icon.closest('a') || icon.querySelector('a');
        if (anchor) {
            hrefs.push(anchor.href || '');
            classes.push(anchor.className || '');
            texts.push(anchor.title || '', anchor.getAttribute('aria-label') || '');
        }
        } catch (err) {}

        try {
        const imgs = icon.tagName === 'IMG' ? [icon] : Array.from(icon.querySelectorAll('img'));
        for (const img of imgs) {
            srcs.push(img.src || '');
            classes.push(img.className || '');
            texts.push(img.alt || '', img.title || '', img.getAttribute('aria-label') || '');
        }
        } catch (err) {}

        try {
        if (icon.dataset) texts.push(Object.entries(icon.dataset).map(([key, value]) => `${key}:${value}`).join(' '));
        } catch (err) {}

        return { hrefs, srcs, classes: classes.join(' ').toLowerCase(), text: texts.join(' ').toLowerCase() };
    }

    function pathFromUrl(value) {
        try { return new URL(value, location.href).pathname.toLowerCase(); }
        catch (err) { return String(value || '').toLowerCase(); }
    }

    function classifyMarker(icon) {
        const signal = getStrongMarkerSignal(icon);
        const hrefPaths = signal.hrefs.map(pathFromUrl);
        const srcPaths = signal.srcs.map(pathFromUrl);
        const combined = `${hrefPaths.join(' ')} ${srcPaths.join(' ')} ${signal.classes} ${signal.text}`;

        const hrefSaysVehicle = hrefPaths.some(path => /\/vehicles\/\d+/.test(path) || /\/vehicles\/?$/.test(path));
        const hrefSaysBuilding = hrefPaths.some(path => /\/buildings\/\d+/.test(path) || /\/buildings\/?$/.test(path));
        const hrefSaysMission = hrefPaths.some(path => /\/missions\/\d+/.test(path) || /\/missions\/?$/.test(path));

        if (hrefSaysVehicle) return 'vehicle';
        if (hrefSaysBuilding) return 'building';
        if (hrefSaysMission) return isAllianceMissionSignal(combined) ? 'alliance-mission' : 'my-mission';

        const explicitVehicle = /\bvehicle[_-]?marker\b/.test(combined) || /\bvehicle[_-]?icon\b/.test(combined) || /\bvehicle[_-]?id\b/.test(combined) || combined.includes('/vehicle_graphic_images/') || combined.includes('/vehicle_images/') || combined.includes('/vehicles/');
        const explicitBuilding = /\bbuilding[_-]?marker\b/.test(combined) || /\bbuilding[_-]?icon\b/.test(combined) || /\bbuilding[_-]?id\b/.test(combined) || combined.includes('/building_icons/') || combined.includes('/buildings/');
        const explicitMission = /\bmission[_-]?marker\b/.test(combined) || /\bmission[_-]?icon\b/.test(combined) || /\bmission[_-]?id\b/.test(combined) || combined.includes('/missions/');

        if (explicitVehicle && !explicitMission && !explicitBuilding) return 'vehicle';
        if (explicitBuilding && !explicitMission && !explicitVehicle) return 'building';
        if (explicitMission && !explicitVehicle && !explicitBuilding) return isAllianceMissionSignal(combined) ? 'alliance-mission' : 'my-mission';

        return 'unknown';
    }

    function isAllianceMissionSignal(signal) {
        return signal.includes('alliance') || signal.includes('shared_mission') || signal.includes('alliance_mission') || signal.includes('verband') || signal.includes('verbandseinsatz') || signal.includes('association');
    }

    function getMissionMarkerLayers() {
        return getCachedRegistry('mission_markers');
    }

    function normaliseMissionId(value) {
        if (value === undefined || value === null || value === '') return null;
        return String(value);
    }

    function missionIdFromMarker(marker) {
        return normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
    }

    function getMissionMarkerIndex() {
        const registry = getMissionMarkerLayers();
        if (missionMarkerIndexCache.revision === missionRegistryRevision && missionMarkerIndexCache.registry === registry) return missionMarkerIndexCache;
        const byId = new Map();
        for (const marker of registry) {
        const missionId = missionIdFromMarker(marker);
        if (missionId === null) continue;
        const existing = byId.get(missionId);
        if (!existing || (!existing?._map && marker?._map) || (!existing?._icon?.isConnected && marker?._icon?.isConnected)) byId.set(missionId, marker);
        }
        const markers = Array.from(byId.values());
        missionMarkerIndexCache = { revision: missionRegistryRevision, registry, markers, byId };
        return missionMarkerIndexCache;
    }

    function shallowRecordEqual(left, right) {
        if (left === right) return true;
        if (!left || !right) return false;
        const leftKeys = Object.keys(left);
        const rightKeys = Object.keys(right);
        if (leftKeys.length !== rightKeys.length) return false;
        for (const key of leftKeys) if (!Object.is(left[key], right[key])) return false;
        return true;
    }

    function setMissionOverlayRecord(missionId, record) {
        const id = normaliseMissionId(missionId);
        if (id === null || !record || typeof record !== 'object') return record;
        const previous = missionOverlayData.get(id);
        if (shallowRecordEqual(previous, record)) return previous;
        missionOverlayData.set(id, record);
        missionOverlayVersions.set(id, (missionOverlayVersions.get(id) || 0) + 1);
        missionSnapshotCache.delete(id);
        return record;
    }

    function deleteMissionOverlayRecord(missionId) {
        const id = normaliseMissionId(missionId);
        if (id === null) return false;
        missionOverlayVersions.delete(id);
        missionSnapshotCache.delete(id);
        missionPanelCache.delete(id);
        return missionOverlayData.delete(id);
    }

    function missionOverlayVersion(missionId) {
        return missionOverlayVersions.get(String(missionId)) || 0;
    }

    function getMissionPanelElement(missionId) {
        const id = normaliseMissionId(missionId);
        if (id === null) return null;
        const cached = missionPanelCache.get(id);
        if (cached?.isConnected && cached.id === `mission_${id}`) return cached;
        const panel = document.getElementById(`mission_${id}`);
        if (panel) missionPanelCache.set(id, panel);
        else missionPanelCache.delete(id);
        return panel;
    }

    function parseCreditValue(value) {
        if (typeof value === 'number' && Number.isFinite(value)) return Math.max(0, Math.round(value));
        const raw = String(value ?? '').trim();
        if (!raw) return null;

        const compactMatch = raw.match(/(-?[\d.,]+)\s*([km])\b/i);
        if (compactMatch) {
        const numeric = Number(compactMatch[1].replaceAll(',', ''));
        if (Number.isFinite(numeric)) return Math.max(0, Math.round(numeric * (compactMatch[2].toLowerCase() === 'm' ? 1000000 : 1000)));
        }

        const match = raw.match(/-?\d[\d\s.,]*/);
        if (!match) return null;
        const digits = match[0].replace(/\D/g, '');
        if (!digits) return null;
        const numeric = Number(digits);
        return Number.isFinite(numeric) ? Math.max(0, Math.round(numeric)) : null;
    }

    function normaliseMissionBoolean(value) {
        if (value === true || value === 1) return true;
        if (value === false || value === 0 || value === null || value === undefined || value === '') return false;
        const text = String(value).trim().toLowerCase();
        return ['true', '1', 'yes', 'on'].includes(text);
    }

    function parseMissionTimestamp(value) {
        if (value instanceof Date) {
        const timestamp = value.getTime();
        return Number.isFinite(timestamp) && timestamp > 0 ? timestamp : null;
        }

        if (typeof value === 'number' && Number.isFinite(value)) {
        if (value <= 0) return null;
        return value < 100000000000 ? Math.round(value * 1000) : Math.round(value);
        }

        const raw = String(value ?? '').trim();
        if (!raw) return null;
        if (/^\d+(?:\.\d+)?$/.test(raw)) return parseMissionTimestamp(Number(raw));

        const parsed = Date.parse(raw);
        return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
    }

    function normaliseMissionOverlayRecord(item, existing) {
        const credits = parseCreditValue(item.average_credits ?? item.averageCredits ?? item.average_credit);
        const createdAt = parseMissionTimestamp(item.created_at ?? item.createdAt ?? item.date_created ?? item.dateCreated);
        const allianceSharedAt = parseMissionTimestamp(item.alliance_shared_at ?? item.allianceSharedAt ?? item.shared_at ?? item.sharedAt);
        const userId = item.user_id ?? item.userId;
        const allianceId = item.alliance_id ?? item.allianceId;
        const missionType = item.mission_type ?? item.missionType;
        const filterId = item.filter_id ?? item.filterId;
        const eventId = item.event_id ?? item.eventId;
        const eventFlag = item.sw ?? item.sicherheitswache ?? item.security_watch ?? item.securityWatch ?? item.is_event ?? item.isEvent ?? item.event;
        const eventName = item.event_name ?? item.eventName ?? item.event_title ?? item.eventTitle ?? item.event_caption ?? item.eventCaption;
        const specialEventFlag = item.special_event ?? item.specialEvent ?? item.is_special_event ?? item.isSpecialEvent ?? item.global_event ?? item.globalEvent ?? item.developer_event ?? item.developerEvent;
        const dateEndCalc = parseMissionTimestamp(item.date_end_calc ?? item.dateEndCalc);
        const dateEnd = parseMissionTimestamp(item.date_end ?? item.dateEnd);
        const dateNow = parseMissionTimestamp(item.date_now ?? item.dateNow);
        const dateNowUpdatedAt = dateNow !== null ? Date.now() : null;
        const rawVehicleState = item.vehicle_state ?? item.vehicleState;
        const vehicleState = Number(rawVehicleState);
        const missingTextKeys = ['missing_text', 'missingText', 'missing_text_short', 'missingTextShort'];
        const missingTextKnown = missingTextKeys.some(key => Object.prototype.hasOwnProperty.call(item, key));
        const missingText = item.missing_text ?? item.missingText ?? item.missing_text_short ?? item.missingTextShort ?? '';
        const normalisedMissingText = normaliseMissingRequirementText(missingText);
        const patientsCount = Number(item.patients_count ?? item.patientsCount);
        const possiblePatientsCount = Number(item.possible_patients_count ?? item.possiblePatientsCount);
        const prisonersCount = Number(item.prisoners_count ?? item.prisonersCount);
        const possiblePrisonersCount = Number(item.possible_prisoners_count ?? item.possiblePrisonersCount);
        const liveCurrentValue = Number(item.live_current_value ?? item.liveCurrentValue ?? item.current_value ?? item.currentValue);
        const liveCurrentValueUpdatedAt = Date.now();

        return {
        ...existing,
        ...(credits !== null ? { averageCredits: credits } : {}),
        ...(createdAt !== null ? { createdAt } : {}),
        ...(allianceSharedAt !== null ? { allianceSharedAt } : {}),
        ...(userId !== undefined && userId !== null ? { userId: String(userId) } : {}),
        ...(allianceId !== undefined ? { allianceId } : {}),
        ...(missionType !== undefined && missionType !== null ? { missionType: String(missionType) } : {}),
        ...(filterId !== undefined && filterId !== null ? { filterId: String(filterId) } : {}),
        ...(eventId !== undefined && eventId !== null ? { eventId: String(eventId) } : {}),
        ...(eventFlag !== undefined && eventFlag !== null ? { isEvent: normaliseMissionBoolean(eventFlag) } : {}),
        ...(eventName !== undefined && eventName !== null && String(eventName).trim() ? { eventName: normaliseMissionCaption(eventName) } : {}),
        ...(specialEventFlag !== undefined && specialEventFlag !== null ? { isSpecialEvent: normaliseMissionBoolean(specialEventFlag) } : {}),
        ...(dateEndCalc !== null ? { dateEndCalc } : {}),
        ...(dateEnd !== null ? { dateEnd } : {}),
        ...(dateNow !== null ? { dateNow, dateNowUpdatedAt } : {}),
        ...(Number.isFinite(vehicleState) ? { vehicleState } : {}),
        ...(missingTextKnown ? { missingText: normalisedMissingText, missingTextKnown: true } : {}),
        ...(Number.isFinite(patientsCount) ? { patientsCount } : {}),
        ...(Number.isFinite(possiblePatientsCount) ? { possiblePatientsCount } : {}),
        ...(Number.isFinite(prisonersCount) ? { prisonersCount } : {}),
        ...(Number.isFinite(possiblePrisonersCount) ? { possiblePrisonersCount } : {}),
        ...(Number.isFinite(liveCurrentValue) ? { liveCurrentValue, liveCurrentValueUpdatedAt } : {}),
        ...(item.caption ? { caption: normaliseMissionCaption(item.caption) } : {})
        };
    }

    function resolveMissionMarkerCandidates(payload) {
        if (!payload) return [];
        if (Array.isArray(payload)) {
        return payload.flatMap(resolveMissionMarkerCandidates);
        }
        if (typeof payload !== 'object') return [];
        return [payload, payload.params, payload.mission, payload.data]
        .filter(item => item && typeof item === 'object')
        .map(item => ({ item, missionId: normaliseMissionId(item.id ?? item.mission_id ?? item.missionId) }))
        .filter(candidate => candidate.missionId !== null);
    }
    function captureMissionMarkerData(payload) {
        for (const { item, missionId } of resolveMissionMarkerCandidates(payload)) {
        const existing = missionOverlayData.get(missionId) || {};
        setMissionOverlayRecord(missionId, normaliseMissionOverlayRecord(item, existing));
        }
    }

    function readBalancedObject(source, startIndex) {
        if (source[startIndex] !== '{') return null;
        let depth = 0;
        let quote = '';
        let escaped = false;

        for (let index = startIndex; index < source.length; index += 1) {
        const char = source[index];
        if (quote) {
            if (escaped) escaped = false;
            else if (char === '\\') escaped = true;
            else if (char === quote) quote = '';
            continue;
        }
        if (char === '"' || char === "'") { quote = char; continue; }
        if (char === '{') depth += 1;
        else if (char === '}') {
            depth -= 1;
            if (depth === 0) return source.slice(startIndex, index + 1);
        }
        }
        return null;
    }

    function captureMissionMarkerDataFromSource(source) {
        const content = String(source || '');
        if (!content.includes('missionMarkerAdd')) return 0;
        const matcher = /missionMarkerAdd\s*\(/g;
        let captured = 0;
        while (matcher.exec(content)) {
        let cursor = matcher.lastIndex;
        while (/\s/.test(content[cursor] || '')) cursor += 1;
        if (content[cursor] !== '{') continue;
        const objectText = readBalancedObject(content, cursor);
        if (!objectText) continue;
        try {
            captureMissionMarkerData(JSON.parse(objectText));
            captured += 1;
        } catch (err) {}
        matcher.lastIndex = cursor + objectText.length;
        }
        return captured;
    }

    function captureMissionMarkerDataFromDocument(doc) {
        let captured = 0;
        for (const script of Array.from(doc?.scripts || [])) captured += captureMissionMarkerDataFromSource(script.textContent || '');
        return captured;
    }
    function scanInlineMissionMarkerData(force = false) { if(inlineMissionDataScanned&&!force)return 0;const captured=captureMissionMarkerDataFromDocument(document);inlineMissionDataScanned=captured>0;return captured; }

    async function refreshMissionProgressFromPage(force = false, minimumIntervalMs = MISSION_PROGRESS_PAGE_REFRESH_MS) {
        const now = Date.now();
        const minimumInterval = Math.max(5000, Number(minimumIntervalMs) || MISSION_PROGRESS_PAGE_REFRESH_MS);
        if (!force && now - missionProgressPageLastFetch < minimumInterval) return false;
        if (missionProgressPageFetchPromise) return missionProgressPageFetchPromise;

        missionProgressPageFetchPromise = (async () => {
        let succeeded = false;
        try {
            const requestModes = [
                { 'X-Requested-With': 'XMLHttpRequest', Accept: 'text/html, */*;q=0.8' },
                { Accept: 'text/html,application/xhtml+xml' }
            ];
            for (const headers of requestModes) {
                const response = await runtimeFetch('/', {
                    method: 'GET',
                    credentials: 'same-origin',
                    cache: 'no-store',
                    headers
                });
                if (!response.ok) continue;
                const html = await response.text();
                if (!html || !html.includes('missionMarkerAdd')) continue;
                const doc = new DOMParser().parseFromString(html, 'text/html');
                if (captureMissionMarkerDataFromDocument(doc) > 0) {
                    succeeded = true;
                    missionProgressPageLastSuccessAt = Date.now();
                    return true;
                }
            }
            return false;
        } catch (err) {
            return false;
        } finally {
            missionProgressPageLastFetch = Date.now();
            missionProgressPageFetchPromise = null;
        }
        })();

        return missionProgressPageFetchPromise;
    }

    function installMissionMarkerAddHook() {
        let current;
        try { current = pageWindow.missionMarkerAdd; } catch (err) { return false; }
        if (typeof current !== 'function') return false;
        if (current.__mcmsMissionOverlaysWrappedV313) return true;

        const original = current.__mcmsOriginal || current;
        const wrapped = function (...args) {
        args.forEach(captureMissionMarkerData);
        const result = original.apply(this, args);
        invalidateMarkerRegistryCaches('mission');
        handleMissionSpawnArguments(args);
        scheduleEnabledMapRefreshes({ includeSnapshots: true, positionPanel: false });
        return result;
        };

        try {
        Object.defineProperty(wrapped, '__mcmsMissionOverlaysWrappedV313', { value: true });
        Object.defineProperty(wrapped, '__mcmsOriginal', { value: original });
        pageWindow.missionMarkerAdd = wrapped;
        if (pageWindow.missionMarkerAdd !== wrapped) return false;
        runtime.hookRestorers.push(() => {
            try {
                if (pageWindow.missionMarkerAdd === wrapped) pageWindow.missionMarkerAdd = original;
            } catch (err) {}
        });
        return true;
        } catch (err) {
        return false;
        }
    }

    function exactCreditFromObject(source) {
        if (!source || typeof source !== 'object') return null;
        const direct = parseCreditValue(source.average_credits ?? source.averageCredits ?? source.average_credit);
        if (direct !== null) return direct;
        for (const key of ['options', 'params', 'mission', 'data', 'missionData', '_missionData']) {
        const nested = source[key];
        if (!nested || typeof nested !== 'object') continue;
        const value = parseCreditValue(nested.average_credits ?? nested.averageCredits ?? nested.average_credit);
        if (value !== null) return value;
        }
        return null;
    }

    function creditsFromMissionPanel(missionId) {
        const panel = getMissionPanelElement(missionId);
        if (!panel) return null;

        const selectors = [
        '[average_credits]', '[average-credits]', '[data-average-credits]',
        '[data-average_credits]', '[data-average-credit]', '[data-mission-credits]'
        ];
        const nodes = [panel, ...panel.querySelectorAll(selectors.join(','))];
        const attributes = ['average_credits', 'average-credits', 'data-average-credits', 'data-average_credits', 'data-average-credit', 'data-mission-credits'];

        for (const node of nodes) {
        for (const attribute of attributes) {
            const value = parseCreditValue(node.getAttribute?.(attribute));
            if (value !== null) return value;
        }
        }

        for (const node of panel.querySelectorAll('span, small, .label, .badge')) {
        const text = String(node.textContent || '').trim();
        if (!/[≈~]/.test(text)) continue;
        const match = text.match(/[≈~]\s*([\d][\d.,\s]*(?:[kKmM])?)/);
        const value = parseCreditValue(match?.[1]);
        if (value !== null) return value;
        }

        return null;
    }

    function getMissionAverageCredits(marker, missionId) {
        const cached = missionOverlayData.get(missionId);
        if (cached && Number.isFinite(cached.averageCredits)) return cached.averageCredits;

        const markerCredits = exactCreditFromObject(marker);
        if (markerCredits !== null) {
        setMissionOverlayRecord(missionId, { ...(cached || {}), averageCredits: markerCredits });
        return markerCredits;
        }

        const panelCredits = creditsFromMissionPanel(missionId);
        if (panelCredits !== null) {
        setMissionOverlayRecord(missionId, { ...(cached || {}), averageCredits: panelCredits });
        return panelCredits;
        }

        return null;
    }

    function missionOwnerId(marker, missionId) {
        const cached = missionOverlayData.get(missionId);
        const panel = getMissionPanelElement(missionId);
        return marker?.user_id ?? marker?.userId ?? marker?.options?.user_id ?? marker?.options?.userId
        ?? cached?.userId
        ?? panel?.getAttribute?.('data-user-id') ?? panel?.getAttribute?.('data-user_id')
        ?? panel?.dataset?.userId ?? null;
    }

    function currentMissionUserId() {
        return currentUserIdCached();
    }

    function missionStructuredTypeSignal(marker, missionId, snapshot = null) {
        const id = normaliseMissionId(missionId);
        if (id === null) return '';
        const overlay = missionOverlayData.get(id) || {};
        const panel = document.getElementById(`mission_${id}`);
        const pieces = [];
        const containers = [marker, marker?.options, marker?.params, marker?.mission, marker?.data, overlay, snapshot]
        .filter(item => item && typeof item === 'object');
        for (const item of containers) {
        for (const key of [
            'mission_type', 'missionType', 'filter_id', 'filterId', 'event_id', 'eventId',
            'event_name', 'eventName', 'event_title', 'eventTitle', 'special_event', 'specialEvent',
            'global_event', 'globalEvent', 'developer_event', 'developerEvent',
            'kind', 'category', 'source', 'alliance_id', 'allianceId', 'alliance_shared_at',
            'allianceSharedAt', 'shared_at', 'sharedAt'
        ]) {
            const value = item[key];
            if (value !== undefined && value !== null && value !== '') pieces.push(`${key}:${value}`);
        }
        }
        if (panel) {
        pieces.push(panel.id || '', panel.className || '');
        try {
            for (const [key, value] of Object.entries(panel.dataset || {})) pieces.push(`${key}:${value}`);
        } catch (err) {}
        for (const selector of [
            '[data-mission-type]', '[data-mission_type]', '[data-filter-id]', '[data-filter_id]',
            '[data-event-id]', '[data-event_id]', '[data-event-name]', '[data-event-title]',
            '[data-special-event]', '[data-global-event]', '[data-alliance-id]', '[data-alliance_id]',
            '.mission_event', '.mission-event', '.special-event', '.global-event', '.alliance_mission', '.alliance-mission'
        ]) {
            const node = panel.querySelector?.(selector);
            if (!node) continue;
            pieces.push(node.id || '', node.className || '');
            try {
                for (const [key, value] of Object.entries(node.dataset || {})) pieces.push(`${key}:${value}`);
            } catch (err) {}
        }
        }
        const icon = marker?._icon;
        if (icon) {
        const signal = getStrongMarkerSignal(icon);
        pieces.push(signal.classes, signal.text, ...signal.hrefs, ...signal.srcs);
        }
        return pieces.join(' ').toLowerCase();
    }

    function missionHasExplicitPersonalOwner(marker, missionId) {
        const currentUserId = currentMissionUserId();
        const ownerId = missionOwnerId(marker, missionId);
        return currentUserId !== null && ownerId !== undefined && ownerId !== null && ownerId !== '' && String(ownerId) === currentUserId;
    }

    function missionHasExplicitAllianceOwner(marker, missionId) {
        const currentUserId = currentMissionUserId();
        const ownerId = missionOwnerId(marker, missionId);
        return currentUserId !== null && ownerId !== undefined && ownerId !== null && ownerId !== '' && String(ownerId) !== currentUserId;
    }

    function isAllianceMissionLayer(marker, missionId, snapshot = null) {
        const id = normaliseMissionId(missionId);
        if (id === null) return false;
        if (missionHasExplicitPersonalOwner(marker, id)) return false;
        if (missionHasExplicitAllianceOwner(marker, id)) return true;
        if (snapshot?.source === 'alliance') return true;
        if (marker?._icon?.classList?.contains('mcms-marker-alliance-mission')) return true;
        if (classifyMarker(marker?._icon) === 'alliance-mission') return true;

        const overlay = missionOverlayData.get(id) || {};
        const rawMissionType = String(overlay.missionType ?? marker?.mission_type ?? marker?.missionType ?? marker?.options?.mission_type ?? '').toLowerCase();
        if (/(?:^|[\s_:-])(alliance|alliance_custom|shared_mission|verband|association)(?:$|[\s_:-])/i.test(rawMissionType)) return true;

        const signal = missionStructuredTypeSignal(marker, id, snapshot);
        if (/(?:^|[\s_:-])(alliance|alliance_custom|alliance_mission|shared_mission|verband|verbandseinsatz|association)(?:$|[\s_:-])/i.test(signal)) return true;

        const allianceId = overlay.allianceId ?? marker?.alliance_id ?? marker?.allianceId ?? marker?.options?.alliance_id;
        const sharedAt = overlay.allianceSharedAt ?? marker?.alliance_shared_at ?? marker?.allianceSharedAt ?? marker?.options?.alliance_shared_at;
        return (allianceId !== undefined && allianceId !== null && allianceId !== '' && String(allianceId) !== '0')
        || (sharedAt !== undefined && sharedAt !== null && sharedAt !== '' && String(sharedAt) !== '0');
    }

    function isPersonalMissionLayer(marker, missionId) {
        const id = normaliseMissionId(missionId);
        if (id === null) return false;
        if (missionHasExplicitPersonalOwner(marker, id)) return true;
        if (missionHasExplicitAllianceOwner(marker, id)) return false;
        return Boolean(marker?._icon?.classList?.contains('mcms-marker-my-mission'));
    }

    function missionIsEvent(marker, missionId, snapshot = null) {
        const id = normaliseMissionId(missionId);
        if (id === null) return false;
        const overlay = missionOverlayData.get(id) || {};
        const containers = [marker, marker?.options, marker?.params, marker?.mission, marker?.data, overlay, snapshot]
        .filter(item => item && typeof item === 'object');
        for (const item of containers) {
        const explicit = item.sw ?? item.sicherheitswache ?? item.security_watch ?? item.securityWatch ?? item.is_event ?? item.isEvent ?? item.event;
        if (normaliseMissionBoolean(explicit)) return true;
        const eventId = item.event_id ?? item.eventId;
        if (eventId !== undefined && eventId !== null && eventId !== '' && String(eventId) !== '0' && String(eventId).toLowerCase() !== 'false') return true;
        }
        const signal = missionStructuredTypeSignal(marker, id, snapshot);
        return /(?:^|[\s_:-])(event|event_mission|planned|planned_mission|sicherheitswache|security[\s_:-]?watch|standby|special_event)(?:$|[\s_:-])/i.test(signal);
    }

    function activeDeveloperEventLabel() {
        const selectors = [
        '#missions .alert-info', '#missions .alert-success', '#mission_list .alert-info', '#mission_list .alert-success',
        '.missions-panel .alert-info', '.missions-panel .alert-success', '.alert-info', '.alert-success'
        ];
        const seen = new Set();
        for (const selector of selectors) {
        let nodes = [];
        try { nodes = Array.from(document.querySelectorAll(selector)).slice(0, 24); } catch (err) {}
        for (const node of nodes) {
            if (!node?.isConnected || seen.has(node)) continue;
            seen.add(node);
            const text = normaliseMissionCaption(String(node.textContent || '')).replace(/\s+/g, ' ').trim();
            if (!text || text.length > 900) continue;
            const related = text.match(/more\s+(.{2,70}?)\s+related\s+missions\s+will\s+(?:show|appear)/i);
            if (related?.[1]) return `${related[1].trim().replace(/\bevent\b/ig, '').trim()} Event`;
            const named = text.match(/(?:special|seasonal|global)\s+event\s*[:\-–—]?\s*([^.!|]{2,70})/i);
            if (named?.[1]) return named[1].trim();
        }
        }
        return '';
    }

    function normaliseDeveloperEventLabel(value) {
        const raw = normaliseMissionCaption(value).replace(/\s+/g, ' ').trim();
        if (!raw) return '';
        const cleaned = raw.replace(/^(?:special|seasonal|global|developer)\s+event\s*[:\-–—]?\s*/i, '').trim();
        if (!cleaned) return 'SPECIAL EVENT';
        return /\bevent\b/i.test(cleaned) ? cleaned.toUpperCase() : `${cleaned} EVENT`.toUpperCase();
    }

    const FOOTBALL_SPECIAL_EVENT_MISSIONS = new Set([
        'inflate football',
        'team bus parked in no stopping zone',
        'treatment after diving',
        'injury after hitting bar',
        'goal fell down',
        'stolen trophy',
        'frostbite from ice spray',
        'sore throat after celebrating',
        'missing captain armband',
        'burning corner flag',
        'supporters with fireworks on stand',
        'football player slipped in shower',
        'panic in stands',
        'fire in the stadium'
    ]);

    function normaliseDeveloperEventMissionTitle(value) {
        return normaliseMissionCaption(value)
        .replace(/^\s*\[\s*event\s*\]\s*/i, '')
        .replace(/\s+/g, ' ')
        .trim()
        .toLowerCase();
    }

    function knownDeveloperEventFallback(marker, missionId, snapshot = null) {
        const id = normaliseMissionId(missionId);
        if (id === null) return { active: false, label: '', eventId: '' };
        const overlay = missionOverlayData.get(id) || {};
        const title = normaliseDeveloperEventMissionTitle(
        snapshot?.caption ?? overlay.caption ?? getMissionCaption(marker, id)
        );
        if (!title || !missionIsEvent(marker, id, snapshot)) return { active: false, label: '', eventId: '' };
        if (FOOTBALL_SPECIAL_EVENT_MISSIONS.has(title)) {
        return {
            active: true,
            label: 'FOOTBALL EVENT',
            eventId: 'football-title-fallback',
            source: 'known-title'
        };
        }
        return { active: false, label: '', eventId: '' };
    }

    function missionDeveloperEventInfo(marker, missionId, snapshot = null) {
        const id = normaliseMissionId(missionId);
        if (id === null) return { active: false, label: '', eventId: '' };
        const overlay = missionOverlayData.get(id) || {};
        const containers = [marker, marker?.options, marker?.params, marker?.mission, marker?.data, overlay, snapshot]
        .filter(item => item && typeof item === 'object');
        let eventId = '';
        let eventName = '';
        let explicitSpecial = false;
        for (const item of containers) {
        const rawEventId = item.event_id ?? item.eventId ?? item.global_event_id ?? item.globalEventId ?? item.active_event_id ?? item.activeEventId;
        if (rawEventId !== undefined && rawEventId !== null && rawEventId !== '' && String(rawEventId) !== '0' && String(rawEventId).toLowerCase() !== 'false') eventId = String(rawEventId);
        const rawName = item.event_name ?? item.eventName ?? item.event_title ?? item.eventTitle ?? item.event_caption ?? item.eventCaption;
        if (!eventName && rawName !== undefined && rawName !== null && String(rawName).trim()) eventName = String(rawName);
        const rawSpecial = item.special_event ?? item.specialEvent ?? item.is_special_event ?? item.isSpecialEvent ?? item.global_event ?? item.globalEvent ?? item.developer_event ?? item.developerEvent;
        if (normaliseMissionBoolean(rawSpecial)) explicitSpecial = true;
        }
        const signal = missionStructuredTypeSignal(marker, id, snapshot);
        const signalSpecial = /(?:^|[\s_:-])(special_event|global_event|seasonal_event|developer_event|world_event)(?:$|[\s_:-])/i.test(signal);
        const active = Boolean(eventId || explicitSpecial || signalSpecial);
        if (!active) return knownDeveloperEventFallback(marker, id, snapshot);
        const label = normaliseDeveloperEventLabel(eventName || activeDeveloperEventLabel() || 'SPECIAL EVENT');
        return { active: true, label: label || 'SPECIAL EVENT', eventId, source: 'structured' };
    }

    function missionWatchOwnership(marker, missionId, snapshot = null) {
        const id = normaliseMissionId(missionId);
        if (id === null) return 'personal';
        const explicit = String(snapshot?.ownership || '').toLowerCase();
        if (['personal', 'alliance'].includes(explicit)) return explicit;
        if (missionHasExplicitPersonalOwner(marker, id)) return 'personal';
        if (isAllianceMissionLayer(marker, id, snapshot) || snapshot?.source === 'alliance') return 'alliance';
        if (isPersonalMissionLayer(marker, id)) return 'personal';
        return 'personal';
    }


    function missionWatchCategory(marker, missionId, snapshot = null, specialEvent = null) {
        const explicit = String(snapshot?.category || '').toLowerCase();
        if (['standard', 'event', 'special'].includes(explicit)) return explicit;
        const special = specialEvent || missionDeveloperEventInfo(marker, missionId, snapshot);
        if (special?.active) return 'special';
        if (missionIsEvent(marker, missionId, snapshot)) return 'event';
        return 'standard';
    }

    function missionWatchOwnershipLabel(type) {
        return type === 'alliance' ? 'ALLIANCE' : 'PERSONAL';
    }


    function missionWatchCategoryLabel(category) {
        if (category === 'special') return 'SPECIAL EVENT';
        if (category === 'event') return 'TIMED EVENT';
        return 'STANDARD';
    }

    function formatAllianceCredits(value) {
        const credits = Math.max(0, Math.round(Number(value) || 0));
        const trim = number => String(number).replace(/\.0+$|(\.\d*[1-9])0+$/, '$1');

        if (credits < 1000) return String(credits);
        if (credits < 10000) return `${trim((credits / 1000).toFixed(credits % 1000 === 0 ? 0 : 2))}k`;
        if (credits < 999500) return `${trim((credits / 1000).toFixed(credits % 1000 === 0 ? 0 : 1))}k`;
        return `${trim((credits / 1000000).toFixed(credits % 1000000 === 0 ? 0 : credits < 10000000 ? 2 : 1))}m`;
    }

    function ensureMissionFloatPane(map) {
        if (!map || typeof map.getPane !== 'function' || typeof map.createPane !== 'function') return null;

        let pane = null;
        try { pane = map.getPane(MISSION_OVERLAY_PANE); } catch (err) {}
        if (!pane) {
        try { pane = map.createPane(MISSION_OVERLAY_PANE); } catch (err) { pane = null; }
        }
        if (!pane) return null;

        pane.classList.add('mcms-mission-float-pane');
        pane.style.setProperty('z-index', '750');
        pane.style.setProperty('pointer-events', 'none');
        pane.style.setProperty('touch-action', 'none');
        return MISSION_OVERLAY_PANE;
    }

    function clearAllianceCreditLabels() {
        if (allianceCreditGroup) {
        try { allianceCreditGroup.clearLayers(); allianceCreditGroup.remove(); } catch (err) {}
        }
        allianceCreditLabels.clear();
        allianceCreditGroup = null;
    }

    function missionVehicleStateFromObject(source) {
        if (!source || typeof source !== 'object') return null;
        const containers = [source, source.options, source.params, source.mission, source.data, source.missionData, source._missionData]
        .filter(item => item && typeof item === 'object');

        for (const item of containers) {
        const value = Number(item.vehicle_state ?? item.vehicleState);
        if (Number.isFinite(value)) return value;
        }
        return null;
    }

    function vehicleAssignedMissionId(vehicle) {
        if (!vehicle || typeof vehicle !== 'object') return null;
        const containers = [vehicle, vehicle.options, vehicle.params, vehicle.vehicle, vehicle.data, vehicle.vehicleData, vehicle._vehicleData]
        .filter(item => item && typeof item === 'object');
        const keys = ['mission_id', 'missionId', 'target_mission_id', 'targetMissionId'];

        for (const item of containers) {
        const targetType = String(item.target_type ?? item.targetType ?? '').toLowerCase();
        if (targetType === 'mission') {
            const targetMissionId = normaliseMissionId(item.target_id ?? item.targetId);
            if (targetMissionId !== null && targetMissionId !== '0') return targetMissionId;
        }
        for (const key of keys) {
            const missionId = normaliseMissionId(item[key]);
            if (missionId !== null && missionId !== '0') return missionId;
        }
        }
        return null;
    }

    function vehicleOwnerId(vehicle) {
        if (!vehicle || typeof vehicle !== 'object') return null;
        const containers = [vehicle, vehicle.options, vehicle.params, vehicle.vehicle, vehicle.data, vehicle.vehicleData, vehicle._vehicleData]
        .filter(item => item && typeof item === 'object');

        for (const item of containers) {
        const value = item.user_id ?? item.userId ?? item.owner_id ?? item.ownerId;
        if (value !== undefined && value !== null && value !== '') return String(value);
        }
        return null;
    }

    function vehicleRecordId(vehicle) {
        if (!vehicle || typeof vehicle !== 'object') return null;
        const containers = [vehicle, vehicle.options, vehicle.params, vehicle.vehicle, vehicle.data, vehicle.vehicleData, vehicle._vehicleData]
        .filter(item => item && typeof item === 'object');
        for (const item of containers) {
        const value = item.id ?? item.vehicle_id ?? item.vehicleId;
        if (value !== undefined && value !== null && value !== '') return String(value);
        }
        return null;
    }

    function normaliseVehicleApiPayload(payload) {
        if (Array.isArray(payload)) return payload.filter(item => item && typeof item === 'object');
        if (Array.isArray(payload?.result)) return payload.result.filter(item => item && typeof item === 'object');
        if (payload && typeof payload === 'object') return Object.values(payload).filter(item => item && typeof item === 'object');
        return [];
    }


    // CUSTOM VEHICLE BADGES START
    const CUSTOM_VEHICLE_BADGE_SELECTOR = '[data-mcms-custom-vehicle-badge="1"]';
    const CUSTOM_VEHICLE_AVAILABLE_SELECTOR = [
        '#vehicle_show_table_body_all .vehicle_checkbox',
        '#vehicle_show_table_body_all [vehicle_id]',
        '#vehicle_show_table_body_all [data-vehicle-id]',
        '#vehicle_show_table_body_all [data-vehicle_id]',
        '#occupied .vehicle_checkbox',
        '#occupied [vehicle_id]',
        '#occupied [data-vehicle-id]',
        '#occupied [data-vehicle_id]'
    ].join(', ');
    const CUSTOM_VEHICLE_ROW_SELECTOR = 'tr, li, .vehicle_select_table_tr, .vehicle_select_table_body_tr, .vehicle-row, .vehicle_row, .vehicle';

    function customVehicleCategoryText(value) {
        return String(value ?? '').replace(/\s+/g, ' ').trim();
    }

    function customVehicleClassificationFromRecord(record) {
        if (!record || typeof record !== 'object') return null;
        const vehicleId = vehicleRecordId(record);
        const category = customVehicleCategoryText(
            record.vehicle_type_caption
            ?? record.vehicleTypeCaption
            ?? record.own_vehicle_category
            ?? record.ownVehicleCategory
        );
        if (!vehicleId || !category) return null;
        const baseTypeRaw = record.vehicle_type ?? record.vehicleType ?? record.vehicle_type_id ?? record.vehicleTypeId;
        const baseTypeId = Number.isFinite(Number(baseTypeRaw)) ? Number(baseTypeRaw) : null;
        const locked = Boolean(
            record.ignore_aao
            ?? record.ignoreAao
            ?? record.only_dispatch_as_own_vehicle_class
            ?? record.onlyDispatchAsOwnVehicleClass
        );
        return Object.freeze({ vehicleId: String(vehicleId), category, baseTypeId, locked });
    }

    function rebuildCustomVehicleClassificationCache() {
        customVehicleClassificationCache.clear();
        for (const record of personalVehicleApiCache.values()) {
            const classification = customVehicleClassificationFromRecord(record);
            if (classification) customVehicleClassificationCache.set(classification.vehicleId, classification);
        }
        customVehicleClassificationRevision = vehicleDataRevision;
        return customVehicleClassificationCache;
    }

    function customVehicleClassificationForId(vehicleId) {
        const key = String(vehicleId ?? '').trim();
        if (!key) return null;
        if (customVehicleClassificationRevision !== vehicleDataRevision) rebuildCustomVehicleClassificationCache();
        return customVehicleClassificationCache.get(key) || null;
    }

    const customVehicleClassificationApi = Object.freeze({
        get(vehicleId) {
            const classification = customVehicleClassificationForId(vehicleId);
            return classification ? { ...classification } : null;
        },
        has(vehicleId) {
            return Boolean(customVehicleClassificationForId(vehicleId));
        },
        entries() {
            if (customVehicleClassificationRevision !== vehicleDataRevision) rebuildCustomVehicleClassificationCache();
            return Array.from(customVehicleClassificationCache.entries(), ([vehicleId, value]) => [vehicleId, { ...value }]);
        },
        get revision() {
            return customVehicleClassificationRevision;
        }
    });

    function customVehicleBadgeVehicleId(row) {
        if (!row) return '';
        const checkbox = row.matches?.('.vehicle_checkbox')
            ? row
            : row.querySelector?.('.vehicle_checkbox, input[vehicle_id], input[data-vehicle-id], input[data-vehicle_id]');
        const candidate = checkbox || row;
        const vehicleRow = candidate?.closest?.('tr') || candidate;
        const raw = candidate?.getAttribute?.('value')
            || candidate?.getAttribute?.('vehicle_id')
            || candidate?.getAttribute?.('data-vehicle-id')
            || vehicleRow?.getAttribute?.('vehicle_id')
            || vehicleRow?.getAttribute?.('data-vehicle-id')
            || '';
        const resolved = Number.parseInt(String(raw).replace(/[^0-9-]/gu, ''), 10);
        if (Number.isFinite(resolved) && resolved >= 0) return String(resolved);
        const link = row.matches?.('a[href*="/vehicles/"]') ? row : row.querySelector?.('a[href*="/vehicles/"]');
        const match = String(link?.getAttribute?.('href') || link?.href || '').match(/\/vehicles\/(\d+)(?:\/|$)/u);
        return match?.[1] || '';
    }

    function customVehicleBadgeRows(doc) {
        const rows = new Set();
        let nodes = [];
        try { nodes = Array.from(doc?.querySelectorAll?.(CUSTOM_VEHICLE_AVAILABLE_SELECTOR) || []); } catch (err) {}
        for (const node of nodes) {
            const row = node?.closest?.(CUSTOM_VEHICLE_ROW_SELECTOR) || node?.parentElement || node;
            if (row) rows.add(row);
        }
        return Array.from(rows);
    }

    function customVehicleBadgeHost(row) {
        if (!row) return null;
        const checkbox = row.matches?.('.vehicle_checkbox')
            ? row
            : row.querySelector?.('.vehicle_checkbox, input[vehicle_id], input[data-vehicle-id], input[data-vehicle_id]');
        const directLabel = checkbox?.closest?.('label');
        if (directLabel) return directLabel;
        if (checkbox?.id) {
            for (const label of Array.from(row.querySelectorAll?.('label') || [])) {
                if (String(label.getAttribute?.('for') || label.htmlFor || '') === String(checkbox.id)) return label;
            }
        }
        return row.querySelector?.('.vehicle_caption, .vehicle-name, .vehicle_name, [data-vehicle-caption], a[href*="/vehicles/"]')
            || checkbox?.parentElement
            || row;
    }

    function customVehicleBadgeRemoveRow(row) {
        if (!row) return;
        try { row.querySelectorAll?.(CUSTOM_VEHICLE_BADGE_SELECTOR).forEach(badge => badge.remove?.()); } catch (err) {}
        try {
            delete row.dataset.mcmsCustomVehicleCategory;
            delete row.dataset.mcmsCustomVehicleLocked;
            delete row.dataset.mcmsCustomVehicleId;
        } catch (err) {
            row.removeAttribute?.('data-mcms-custom-vehicle-category');
            row.removeAttribute?.('data-mcms-custom-vehicle-locked');
            row.removeAttribute?.('data-mcms-custom-vehicle-id');
        }
    }

    function customVehicleBadgeApplyRow(row) {
        if (!row) return null;
        const vehicleId = customVehicleBadgeVehicleId(row);
        const classification = customVehicleClassificationForId(vehicleId);
        if (!classification) {
            customVehicleBadgeRemoveRow(row);
            return null;
        }
        const host = customVehicleBadgeHost(row);
        const doc = row.ownerDocument || host?.ownerDocument || document;
        if (!host?.appendChild || !doc?.createElement) return null;
        const badges = Array.from(row.querySelectorAll?.(CUSTOM_VEHICLE_BADGE_SELECTOR) || []);
        let badge = badges.shift() || null;
        badges.forEach(duplicate => duplicate.remove?.());
        if (!badge) {
            badge = doc.createElement('span');
            badge.setAttribute('data-mcms-custom-vehicle-badge', '1');
            badge.setAttribute('aria-label', `Own Vehicle Category: ${classification.category}`);
        }
        badge.textContent = `[${classification.category}]`;
        badge.title = `Own Vehicle Category: ${classification.category}`;
        badge.dataset.mcmsTheme = state.uiTheme;
        badge.dataset.mcmsVehicleId = classification.vehicleId;
        badge.dataset.mcmsLocked = classification.locked ? 'true' : 'false';
        if (badge.parentElement !== host) host.appendChild(badge);
        row.dataset.mcmsCustomVehicleCategory = classification.category;
        row.dataset.mcmsCustomVehicleLocked = classification.locked ? 'true' : 'false';
        row.dataset.mcmsCustomVehicleId = classification.vehicleId;
        return badge;
    }

    function customVehicleBadgeDocumentCss() {
        return `
${CUSTOM_VEHICLE_BADGE_SELECTOR}{display:inline-flex!important;align-items:center!important;vertical-align:middle!important;max-width:min(240px,45vw)!important;margin-inline-start:4px!important;padding:1px 4px!important;border:1px solid rgba(116,190,255,.48)!important;border-radius:999px!important;background:rgba(24,91,140,.20)!important;color:#d8efff!important;font:800 9.5px/1.25 Arial,sans-serif!important;letter-spacing:.04px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;pointer-events:none!important;box-sizing:border-box!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="mapCommand"]{border-color:rgba(103,190,255,.52)!important;background:rgba(34,107,158,.22)!important;color:#d8f1ff!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="cyberpunk"]{border-color:rgba(0,238,255,.58)!important;background:rgba(0,238,255,.12)!important;color:#8ff8ff!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="fallout4"]{border-color:rgba(164,234,101,.55)!important;background:rgba(102,180,68,.14)!important;color:#d8ffad!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="umbrella"]{border-color:rgba(214,39,50,.62)!important;background:rgba(214,39,50,.16)!important;color:#fff1f2!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="factorio"]{border-color:rgba(240,164,74,.58)!important;background:rgba(240,164,74,.14)!important;color:#ffe1b7!important;border-radius:3px!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="bond007"]{border-color:rgba(217,189,119,.58)!important;background:rgba(217,189,119,.13)!important;color:#f6e9c7!important}
${CUSTOM_VEHICLE_BADGE_SELECTOR}[data-mcms-theme="hyrule"]{border-color:rgba(217,183,90,.58)!important;background:rgba(110,230,214,.12)!important;color:#e8fff8!important}
@media(max-width:767px){${CUSTOM_VEHICLE_BADGE_SELECTOR}{max-width:42vw!important;margin-inline-start:3px!important;padding:1px 3px!important;font-size:8.5px!important}}
`;
    }

    function ensureCustomVehicleBadgeDocumentStyle(doc) {
        if (!doc?.head?.appendChild || doc.getElementById?.(SCRIPT.customVehicleBadgeStyleId)) return;
        const style = doc.createElement('style');
        style.id = SCRIPT.customVehicleBadgeStyleId;
        style.textContent = customVehicleBadgeDocumentCss();
        doc.head.appendChild(style);
    }

    function customVehicleBadgeDocumentContexts() {
        const docs = [];
        const seen = new Set();
        const add = (doc, depth = 0) => {
            if (!doc || seen.has(doc) || depth > 3) return;
            seen.add(doc);
            docs.push(doc);
            let frames = [];
            try { frames = Array.from(doc.querySelectorAll?.('iframe, frame') || []); } catch (err) {}
            for (const frame of frames) {
                try { add(frame.contentDocument || frame.contentWindow?.document, depth + 1); } catch (err) {}
            }
        };
        add(document);
        return docs;
    }

    function customVehicleBadgeMutationRelevant(mutation) {
        const target = mutation?.target;
        if (target?.closest?.(CUSTOM_VEHICLE_BADGE_SELECTOR)) return false;
        const selector = '#vehicle_show_table_body_all, #occupied, .vehicle_checkbox, [vehicle_id], [data-vehicle-id], [data-vehicle_id], a[href*="/vehicles/"]';
        if (target?.matches?.(selector) || target?.closest?.('#vehicle_show_table_body_all, #occupied')) return true;
        for (const node of Array.from(mutation?.addedNodes || [])) {
            if (node?.nodeType !== 1) continue;
            if (node.matches?.(selector) || node.querySelector?.(selector)) return true;
        }
        return false;
    }

    function scheduleCustomVehicleBadgeScan(delay = 35) {
        runtimeClearTimeout(customVehicleBadgeScanTimer);
        customVehicleBadgeScanTimer = runtimeSetTimeout(scanCustomVehicleBadges, Math.max(0, Number(delay) || 0));
    }

    function observeCustomVehicleBadgeFrame(frame) {
        if (!frame || customVehicleBadgeObservedFrames.has(frame)) return;
        customVehicleBadgeObservedFrames.add(frame);
        runtimeListen(frame, 'load', () => scheduleCustomVehicleBadgeScan(20));
    }

    function observeCustomVehicleBadgeDocument(doc) {
        if (!doc) return;
        ensureCustomVehicleBadgeDocumentStyle(doc);
        try { doc.querySelectorAll?.('iframe, frame').forEach(observeCustomVehicleBadgeFrame); } catch (err) {}
        if (customVehicleBadgeObservedDocuments.has(doc)) return;
        customVehicleBadgeObservedDocuments.add(doc);
        const root = doc.documentElement || doc.body;
        const Observer = doc.defaultView?.MutationObserver || pageWindow.MutationObserver || MutationObserver;
        if (!root || typeof Observer !== 'function') return;
        const observer = runtimeTrackObserver(new Observer(mutations => {
            if (!mutations.some(customVehicleBadgeMutationRelevant)) return;
            try { doc.querySelectorAll?.('iframe, frame').forEach(observeCustomVehicleBadgeFrame); } catch (err) {}
            scheduleCustomVehicleBadgeScan(25);
        }));
        observer.observe(root, {
            childList: true,
            subtree: true,
            attributes: true,
            attributeFilter: ['id', 'class', 'vehicle_id', 'data-vehicle-id', 'data-vehicle_id', 'vehicle_type_id', 'data-vehicle-type-id', 'data-vehicle_type_id']
        });
    }

    function clearCustomVehicleBadges() {
        runtimeClearTimeout(customVehicleBadgeScanTimer);
        customVehicleBadgeScanTimer = null;
        for (const doc of customVehicleBadgeDocumentContexts()) {
            try { doc.querySelectorAll?.(CUSTOM_VEHICLE_BADGE_SELECTOR).forEach(badge => badge.remove?.()); } catch (err) {}
            try {
                doc.querySelectorAll?.('[data-mcms-custom-vehicle-category], [data-mcms-custom-vehicle-id]').forEach(row => {
                    row.removeAttribute?.('data-mcms-custom-vehicle-category');
                    row.removeAttribute?.('data-mcms-custom-vehicle-locked');
                    row.removeAttribute?.('data-mcms-custom-vehicle-id');
                });
            } catch (err) {}
        }
    }

    function scanCustomVehicleBadges() {
        customVehicleBadgeScanTimer = null;
        const docs = customVehicleBadgeDocumentContexts();
        if (!state.customVehicleBadges) {
            clearCustomVehicleBadges();
            return 0;
        }
        let rendered = 0;
        for (const doc of docs) {
            observeCustomVehicleBadgeDocument(doc);
            for (const row of customVehicleBadgeRows(doc)) {
                if (customVehicleBadgeApplyRow(row)) rendered += 1;
            }
        }
        if (!vehicleApiReady && !customVehicleBadgeRefreshPromise) {
            customVehicleBadgeRefreshPromise = Promise.resolve(refreshPersonalVehicleData(false))
                .then(ok => { if (ok) scheduleCustomVehicleBadgeScan(0); return ok; })
                .catch(() => false)
                .finally(() => { customVehicleBadgeRefreshPromise = null; });
        }
        return rendered;
    }

    function installCustomVehicleBadges() {
        if (!customVehicleBadgeFeatureInstalled) {
            customVehicleBadgeFeatureInstalled = true;
            runtime.customVehicleClassifications = customVehicleClassificationApi;
            try { pageWindow.__MCMS_CUSTOM_VEHICLE_CLASSIFICATIONS__ = customVehicleClassificationApi; } catch (err) {}
            runtimeOnCleanup(() => {
                clearCustomVehicleBadges();
                for (const doc of customVehicleBadgeDocumentContexts()) doc.getElementById?.(SCRIPT.customVehicleBadgeStyleId)?.remove?.();
                if (pageWindow.__MCMS_CUSTOM_VEHICLE_CLASSIFICATIONS__ === customVehicleClassificationApi) {
                    try { delete pageWindow.__MCMS_CUSTOM_VEHICLE_CLASSIFICATIONS__; } catch (err) { pageWindow.__MCMS_CUSTOM_VEHICLE_CLASSIFICATIONS__ = null; }
                }
            });
        }
        scheduleCustomVehicleBadgeScan(0);
        if (!vehicleApiReady && !customVehicleBadgeRefreshPromise) {
            customVehicleBadgeRefreshPromise = Promise.resolve(refreshPersonalVehicleData(false))
                .then(ok => { if (ok) scheduleCustomVehicleBadgeScan(0); return ok; })
                .catch(() => false)
                .finally(() => { customVehicleBadgeRefreshPromise = null; });
        }
    }

    if (pageWindow.__MCMS_TEST_HOOKS__ && typeof pageWindow.__MCMS_TEST_HOOKS__ === 'object') {
        pageWindow.__MCMS_TEST_HOOKS__.customVehicleBadges = Object.freeze({
            classificationFromRecord: customVehicleClassificationFromRecord,
            rebuildCache: rebuildCustomVehicleClassificationCache,
            classificationForId: customVehicleClassificationForId,
            vehicleId: customVehicleBadgeVehicleId,
            rows: customVehicleBadgeRows,
            host: customVehicleBadgeHost,
            applyRow: customVehicleBadgeApplyRow,
            removeRow: customVehicleBadgeRemoveRow
        });
    }
    // CUSTOM VEHICLE BADGES END

    function getPersonalVehicleRecords() {
        const now = Date.now();
        if (
        personalVehicleRecordsCache.vehicleRevision === vehicleDataRevision &&
        personalVehicleRecordsCache.markerRevision === vehicleRegistryRevision &&
        personalVehicleRecordsCache.apiReady === vehicleApiReady &&
        (vehicleApiReady || now - personalVehicleRecordsCache.createdAt <= 1000)
        ) return personalVehicleRecordsCache.records;

        let records;
        if (vehicleApiReady) {
        records = Array.from(personalVehicleApiCache.values());
        } else {
        const merged = new Map(personalVehicleApiCache);
        const currentUserId = currentMissionUserId();
        for (const vehicle of getVehicleMarkerLayers()) {
            const ownerId = vehicleOwnerId(vehicle);
            if (currentUserId !== null && ownerId !== null && ownerId !== currentUserId) continue;
            const id = vehicleRecordId(vehicle) || `marker:${vehicle?._leaflet_id ?? merged.size}`;
            if (!merged.has(id)) merged.set(id, vehicle);
        }
        records = Array.from(merged.values());
        }
        personalVehicleRecordsCache = {
        vehicleRevision: vehicleDataRevision,
        markerRevision: vehicleRegistryRevision,
        apiReady: vehicleApiReady,
        createdAt: now,
        records
        };
        return records;
    }

    function invalidateMissionCommitmentIndex() {
        missionCommitmentIndexDirty = true;
    }

    function rebuildMissionCommitmentIndex() {
        if (!missionCommitmentIndexDirty) return missionCommitmentIndex;

        missionCommitmentIndex.clear();
        const seenVehicles = new Set();
        const currentUserId = currentMissionUserId();

        for (const vehicle of getPersonalVehicleRecords()) {
        const missionId = vehicleAssignedMissionId(vehicle);
        if (missionId === null) continue;

        if (!vehicleApiReady) {
            const ownerId = vehicleOwnerId(vehicle);
            if (currentUserId !== null && ownerId !== null && ownerId !== currentUserId) continue;
        }

        const vehicleId = vehicleRecordId(vehicle) || `anon:${seenVehicles.size}`;
        if (seenVehicles.has(vehicleId)) continue;
        seenVehicles.add(vehicleId);

        let commitment = missionCommitmentIndex.get(missionId);
        if (!commitment) {
            commitment = {
                total: 0,
                active: 0,
                onScene: 0,
                onWay: 0,
                travelling: 0,
                transporting: 0,
                awaitingPickup: 0,
                requestingDispatch: 0,
                outOfService: 0,
                available: 0,
                unknownStatus: 0
            };
            missionCommitmentIndex.set(missionId, commitment);
        }

        commitment.total += 1;
        const code = vehicleStatusCode(vehicle);
        if (code === 3) {
            commitment.onWay += 1;
            commitment.travelling += 1;
            commitment.active += 1;
        } else if (code === 4) {
            commitment.onScene += 1;
            commitment.active += 1;
        } else if (code === 7) {
            commitment.transporting += 1;
            commitment.active += 1;
        } else if (code === 9) {
            commitment.awaitingPickup += 1;
            commitment.active += 1;
        } else if (code === 5) commitment.requestingDispatch += 1;
        else if (code === 6) commitment.outOfService += 1;
        else if (code === 1 || code === 2) commitment.available += 1;
        else commitment.unknownStatus += 1;
        }

        missionCommitmentIndexDirty = false;
        return missionCommitmentIndex;
    }

    function refreshPersonalVehicleData(force = false) {
        const now = Date.now();
        if (vehicleApiFetchPromise) return vehicleApiFetchPromise;
        if (!force && vehicleApiLastError && now - vehicleApiLastError < VEHICLE_API_ERROR_BACKOFF_MS) return Promise.resolve(false);
        if (!force && vehicleApiReady && now - vehicleApiLastFetch < VEHICLE_API_MIN_REFRESH_MS) return Promise.resolve(true);

        vehicleApiFetchPromise = runtimeFetch(new URL('/api/vehicles', document.baseURI || pageWindow.location.href), {
        credentials: 'same-origin',
        cache: 'no-store',
        headers: { Accept: 'application/json' }
        })
        .then(response => {
            if (!response.ok) throw new Error(`Vehicle API ${response.status}`);
            return response.json();
        })
        .then(payload => {
            const records = normaliseVehicleApiPayload(payload);
            const next = new Map();
            for (const vehicle of records) {
                const id = vehicleRecordId(vehicle);
                if (id !== null) next.set(id, vehicle);
            }
            personalVehicleApiCache.clear();
            for (const [id, vehicle] of next) personalVehicleApiCache.set(id, vehicle);
            vehicleApiReady = true;
            vehicleApiLastFetch = Date.now();
            vehicleStatusLastUpdate = vehicleApiLastFetch;
            vehicleApiLastError = 0;
            vehicleDataRevision += 1;
            rebuildCustomVehicleClassificationCache();
            scheduleCustomVehicleBadgeScan(0);
            invalidateMarkerRegistryCaches('vehicle');
            invalidateMissionCommitmentIndex();
            rebuildMissionCommitmentIndex();
            resourceGapAnalysisCache.clear();
            resourceGapVehicleContextCache.key = '';
            if (!startupDataPassActive) {
                if (state.unitCommitment) scheduleUnitCommitmentRefresh(280);
                scheduleMissionSnapshotRefresh(650);
                if (state.resourceGap.enabled) scheduleResourceGapRefresh(520);
                if (operationalUiIsVisible()) scheduleOperationalPanelsRender(750);
            }
            return true;
        })
        .catch(() => {
            vehicleApiLastError = Date.now();
            return false;
        })
        .finally(() => { vehicleApiFetchPromise = null; });

        return vehicleApiFetchPromise;
    }

    function captureRadioVehicleMessage(message) {
        if (!message || typeof message !== 'object' || message.type !== 'vehicle_fms') return;
        const currentUserId = currentMissionUserId();
        if (currentUserId !== null && message.user_id !== undefined && String(message.user_id) !== currentUserId) return;
        const id = vehicleRecordId(message);
        if (id === null) return;

        const existing = personalVehicleApiCache.get(id) || {};
        const targetType = Number(message.target_building_id) > 0 ? 'building' : Number(message.mission_id) > 0 ? 'mission' : null;
        const targetId = targetType === 'building' ? message.target_building_id : targetType === 'mission' ? message.mission_id : null;
        personalVehicleApiCache.set(id, {
        ...existing,
        id: Number.isFinite(Number(message.id)) ? Number(message.id) : message.id,
        caption: message.caption ?? existing.caption,
        fms_real: Number.isFinite(Number(message.fms_real)) ? Number(message.fms_real) : existing.fms_real,
        fms_show: Number.isFinite(Number(message.fms)) ? Number(message.fms) : existing.fms_show,
        target_type: targetType,
        target_id: targetId
        });
        vehicleDataRevision += 1;
        vehicleStatusLastUpdate = Date.now();
        invalidateMarkerRegistryCaches('vehicle');
        invalidateMissionCommitmentIndex();
        resourceGapAnalysisCache.clear();
        resourceGapVehicleContextCache.key = '';
        if (state.unitCommitment) scheduleUnitCommitmentRefresh(500);
        scheduleMissionSnapshotRefresh(850);
        if (state.resourceGap.enabled) scheduleResourceGapRefresh(900);
        if (operationalUiIsVisible()) scheduleOperationalPanelsRender(1000);
    }

    function installRadioMessageHook() {
        let current;
        try { current = pageWindow.radioMessage; } catch (err) { return false; }
        if (typeof current !== 'function') return false;
        if (current.__mcmsVehicleDataWrappedV313) return true;

        const original = current.__mcmsOriginal || current;
        const wrapped = function (...args) {
        for (const arg of args) captureRadioVehicleMessage(arg);
        return original.apply(this, args);
        };
        try {
        Object.defineProperty(wrapped, '__mcmsVehicleDataWrappedV313', { value: true });
        Object.defineProperty(wrapped, '__mcmsOriginal', { value: original });
        pageWindow.radioMessage = wrapped;
        if (pageWindow.radioMessage !== wrapped) return false;
        runtime.hookRestorers.push(() => {
            try {
                if (pageWindow.radioMessage === wrapped) pageWindow.radioMessage = original;
            } catch (err) {}
        });
        return true;
        } catch (err) {
        return false;
        }
    }

    function missionPersonalUnitState(marker, missionId) {
        const commitment = personalUnitCommitmentForMission(missionId);
        if (commitment.total > 0) return { hasUnit: true, known: true, commitment };
        if (commitment.known) return { hasUnit: false, known: true, commitment };

        const markerState = missionVehicleStateFromObject(marker);
        if (markerState !== null) return { hasUnit: markerState > 0, known: true, commitment };

        const cached = missionOverlayData.get(missionId);
        if (Number.isFinite(Number(cached?.vehicleState))) {
        return { hasUnit: Number(cached.vehicleState) > 0, known: true, commitment };
        }

        return { hasUnit: false, known: false, commitment };
    }

    function missionHasPersonalUnit(marker, missionId) {
        return missionPersonalUnitState(marker, missionId).hasUnit;
    }

    function makeAllianceCreditIcon(credits, qualified) {
        const statusClass = qualified ? 'mcms-credit-qualified' : 'mcms-credit-unqualified';
        return pageWindow.L.divIcon({
        className: 'mcms-alliance-credit-icon',
        html: `<span class="mcms-alliance-credit-badge ${statusClass}">≈ ${escapeHtml(formatAllianceCredits(credits))}</span>`,
        iconSize: [0, 0],
        iconAnchor: [0, 18]
        });
    }

    function updateAllianceCreditLabels() {
        if (state.economyMode && economyMapMoving) return;
        if (!state.allianceCredits || !state.visibility.allianceMissions) {
        clearAllianceCreditLabels();
        return;
        }

        scanInlineMissionMarkerData();
        installMissionMarkerAddHook();

        const map = findLeafletMapInstance(false);
        if (!map || !pageWindow.L || typeof pageWindow.L.layerGroup !== 'function' || typeof pageWindow.L.marker !== 'function' || typeof pageWindow.L.divIcon !== 'function') {
        clearAllianceCreditLabels();
        return;
        }
        const floatPane = ensureMissionFloatPane(map);
        if (!floatPane) {
        clearAllianceCreditLabels();
        return;
        }
        const economyBounds = state.economyMode ? economyPaddedBounds(map, 0.08) : null;

        try {
        if (!allianceCreditGroup || allianceCreditGroup._map !== map) {
            clearAllianceCreditLabels();
            allianceCreditGroup = pageWindow.L.layerGroup();
            allianceCreditGroup.__mcmsAllianceCreditLayer = true;
            allianceCreditGroup.addTo(map);
        }
        const activeMissionIds = new Set();

        for (const marker of getMissionMarkerIndex().markers) {
            const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
            if (missionId === null || !isAllianceMissionLayer(marker, missionId)) continue;

            let latLng;
            try { latLng = marker.getLatLng?.(); } catch (err) { latLng = null; }
            if (!latLng || (economyBounds && !economyBounds.contains?.(latLng))) continue;

            try {
                const isOnMap = typeof map.hasLayer === 'function' ? map.hasLayer(marker) : Boolean(marker._map);
                if (!isOnMap) continue;
            } catch (err) {}

            const credits = getMissionAverageCredits(marker, missionId);
            if (credits === null || credits < state.allianceCreditMinimum) continue;
            const qualified = missionHasPersonalUnit(marker, missionId);
            activeMissionIds.add(missionId);

            let label = allianceCreditLabels.get(missionId);
            if (!label) {
                label = pageWindow.L.marker(latLng, {
                    interactive: false,
                    keyboard: false,
                    bubblingMouseEvents: false,
                    pane: floatPane,
                    zIndexOffset: 0,
                    icon: makeAllianceCreditIcon(credits, qualified)
                });
                label.__mcmsAllianceCreditLabel = true;
                label.__mcmsAllianceCreditValue = credits;
                label.__mcmsAllianceCreditQualified = qualified;
                label.addTo(allianceCreditGroup);
                allianceCreditLabels.set(missionId, label);
                continue;
            }

            try { label.setLatLng(latLng); } catch (err) {}
            if (label.__mcmsAllianceCreditValue !== credits || label.__mcmsAllianceCreditQualified !== qualified) {
                label.__mcmsAllianceCreditValue = credits;
                label.__mcmsAllianceCreditQualified = qualified;
                try { label.setIcon(makeAllianceCreditIcon(credits, qualified)); } catch (err) {}
            }
        }

        for (const [missionId, label] of allianceCreditLabels.entries()) {
            if (activeMissionIds.has(missionId)) continue;
            allianceCreditLabels.delete(missionId);
            try { allianceCreditGroup.removeLayer(label); } catch (err) {}
        }
        } catch (err) {
        clearAllianceCreditLabels();
        }
    }

    function scheduleAllianceCreditRefresh(delay = 220) {
        runtimeClearTimeout(allianceCreditTimer);
        allianceCreditTimer = runtimeSetTimeout(updateAllianceCreditLabels, state.economyMode ? Math.max(700, delay) : delay);
    }

    function exactMissionTimestampFromObject(source) {
        if (!source || typeof source !== 'object') return null;
        const direct = parseMissionTimestamp(source.created_at ?? source.createdAt ?? source.date_created ?? source.dateCreated);
        if (direct !== null) return direct;

        for (const key of ['options', 'params', 'mission', 'data', 'missionData', '_missionData']) {
        const nested = source[key];
        if (!nested || typeof nested !== 'object') continue;
        const value = parseMissionTimestamp(nested.created_at ?? nested.createdAt ?? nested.date_created ?? nested.dateCreated);
        if (value !== null) return value;
        }
        return null;
    }

    function timestampFromMissionPanel(missionId) {
        const panel = getMissionPanelElement(missionId);
        if (!panel) return null;

        const attributes = [
        'created_at', 'created-at', 'data-created-at', 'data-created_at',
        'mission-created-at', 'data-mission-created-at'
        ];
        const selectors = attributes.map(attribute => `[${attribute}]`).join(',');
        const nodes = [panel, ...panel.querySelectorAll(selectors)];

        for (const node of nodes) {
        for (const attribute of attributes) {
            const value = parseMissionTimestamp(node.getAttribute?.(attribute));
            if (value !== null) return value;
        }
        }
        return null;
    }

    function getMissionCreatedAt(marker, missionId) {
        const cached = missionOverlayData.get(missionId);
        if (cached && Number.isFinite(cached.createdAt)) return cached.createdAt;

        const markerTimestamp = exactMissionTimestampFromObject(marker);
        if (markerTimestamp !== null) {
        setMissionOverlayRecord(missionId, { ...(cached || {}), createdAt: markerTimestamp });
        return markerTimestamp;
        }

        const panelTimestamp = timestampFromMissionPanel(missionId);
        if (panelTimestamp !== null) {
        setMissionOverlayRecord(missionId, { ...(cached || {}), createdAt: panelTimestamp });
        return panelTimestamp;
        }

        return null;
    }

    function formatMissionAge(createdAt, now = Date.now()) {
        const ageMs = Math.max(0, now - createdAt);
        const totalHours = Math.floor(ageMs / (60 * 60 * 1000));
        const days = Math.floor(totalHours / 24);
        const hours = totalHours % 24;
        if (days > 0) return `${days}D ${hours}H`;
        return totalHours > 0 ? `${totalHours}H` : '<1H';
    }

    function clearMissionAgeLabels() {
        if (missionAgeGroup) {
        try { missionAgeGroup.clearLayers(); missionAgeGroup.remove(); } catch (err) {}
        }
        missionAgeLabels.clear();
        missionAgeGroup = null;
    }

    function makeMissionAgeIcon(ageText, severity = missionAgeSeverity(0)) {
        const severityClass = severity?.className || 'mcms-age-recent';
        const severityLabel = severity?.label || 'RECENT';
        return pageWindow.L.divIcon({
        className: 'mcms-mission-age-icon',
        html: `<span class="mcms-mission-age-badge ${severityClass}" aria-label="${escapeHtml(`${ageText} · ${severityLabel}`)}">${escapeHtml(ageText)}</span>`,
        iconSize: [0, 0],
        iconAnchor: [0, 18]
        });
    }
    function missionAgeRefreshPlan({enabled=true,moving=false,mapReady=true,markers=0,candidates=0,labels=0}={}){if(!enabled)return{clear:true,delay:0};if(moving||!mapReady)return{clear:!mapReady,delay:700};if(!markers||(!labels&&candidates))return{clear:false,delay:1000};return{clear:false,delay:MISSION_AGE_LABEL_REFRESH_MS};}
    function updateMissionAgeLabels() { const enabled=Boolean(state.missionAge&&state.visibility.myMissions);if(!enabled){clearMissionAgeLabels();return;}if(state.economyMode&&economyMapMoving){scheduleMissionAgeRefresh(700);return;}scanInlineMissionMarkerData(true);installMissionMarkerAddHook();const map=findLeafletMapInstance(false);if(!map||!pageWindow.L||typeof pageWindow.L.layerGroup!=='function'||typeof pageWindow.L.marker!=='function'||typeof pageWindow.L.divIcon!=='function'){clearMissionAgeLabels();if(!document.hidden)scheduleMissionAgeRefresh(700);return;}const floatPane=ensureMissionFloatPane(map);if(!floatPane){clearMissionAgeLabels();if(!document.hidden)scheduleMissionAgeRefresh(700);return;}let markers=getMissionMarkerIndex().markers;if(!markers.length){invalidateMarkerRegistryCaches('mission');markers=getMissionMarkerIndex().markers;}const economyBounds=state.economyMode?economyPaddedBounds(map,0.08):null,activeMissionIds=new Set(),now=Date.now();let candidates=0,rendered=0,missingEvidence=0;try{if(!missionAgeGroup||missionAgeGroup._map!==map){clearMissionAgeLabels();missionAgeGroup=pageWindow.L.layerGroup();missionAgeGroup.__mcmsMissionAgeLayer=true;missionAgeGroup.addTo(map);}for(const marker of markers){const missionId=normaliseMissionId(marker?.mission_id??marker?.missionId??marker?.options?.mission_id??marker?.options?.missionId);if(missionId===null)continue;if(!missionKnownPersonal(marker,missionId)){if(!missionHasExplicitAllianceOwner(marker,missionId))missingEvidence+=1;continue;}candidates+=1;const existingLabel=missionAgeLabels.get(missionId);let latLng;try{latLng=marker.getLatLng?.();}catch(error){latLng=null;}if(!latLng||(economyBounds&&!economyBounds.contains?.(latLng)))continue;try{const onMap=typeof map.hasLayer==='function'?map.hasLayer(marker):Boolean(marker._map);if(!onMap){if(existingLabel)activeMissionIds.add(missionId);continue;}}catch(error){if(existingLabel)activeMissionIds.add(missionId);continue;}let createdAt=getMissionCreatedAt(marker,missionId);if(createdAt===null){captureMissionMarkerData(marker);createdAt=getMissionCreatedAt(marker,missionId);}if(createdAt===null){missingEvidence+=1;if(existingLabel)activeMissionIds.add(missionId);continue;}const ageMs=Math.max(0,now-createdAt),ageText=formatMissionAge(createdAt,now),severity=missionAgeSeverity(ageMs);activeMissionIds.add(missionId);let label=existingLabel;const attached=Boolean(label&&typeof missionAgeGroup.hasLayer==='function'&&missionAgeGroup.hasLayer(label));if(!label||!attached){if(label)try{missionAgeGroup.removeLayer(label);}catch(error){}label=pageWindow.L.marker(latLng,{interactive:false,keyboard:false,bubblingMouseEvents:false,pane:floatPane,zIndexOffset:0,icon:makeMissionAgeIcon(ageText,severity)});label.__mcmsMissionAgeLabel=true;label.__mcmsMissionAgeText=ageText;label.__mcmsMissionAgeSeverityRank=severity.rank;label.__mcmsMissionAgeCreatedAt=createdAt;label.__mcmsMissionAgeSourceMarker=marker;label.addTo(missionAgeGroup);missionAgeLabels.set(missionId,label);}else{try{label.setLatLng(latLng);}catch(error){}label.__mcmsMissionAgeSourceMarker=marker;if(label.__mcmsMissionAgeText!==ageText||label.__mcmsMissionAgeSeverityRank!==severity.rank||label.__mcmsMissionAgeCreatedAt!==createdAt){label.__mcmsMissionAgeText=ageText;label.__mcmsMissionAgeSeverityRank=severity.rank;label.__mcmsMissionAgeCreatedAt=createdAt;try{label.setIcon(makeMissionAgeIcon(ageText,severity));}catch(error){}}}rendered+=1;}for(const[missionId,label]of missionAgeLabels.entries()){if(activeMissionIds.has(missionId))continue;missionAgeLabels.delete(missionId);try{missionAgeGroup.removeLayer(label);}catch(error){}}const plan=missionAgeRefreshPlan({enabled,moving:false,mapReady:true,markers:markers.length,candidates:candidates+missingEvidence,labels:rendered});if(!document.hidden)scheduleMissionAgeRefresh(plan.delay);}catch(error){clearMissionAgeLabels();if(!document.hidden)scheduleMissionAgeRefresh(1000);} }

    function scheduleMissionAgeRefresh(delay = 220) {
        runtimeClearTimeout(missionAgeTimer);
        missionAgeTimer = runtimeSetTimeout(updateMissionAgeLabels, state.economyMode ? Math.max(700, delay) : delay);
    }

    function missionAgeSeverity(ageMs) {
        const age = Math.max(0, Number(ageMs) || 0);
        if (age >= 24 * 60 * 60 * 1000) return { rank: 3, label: '24H+ CRITICAL', className: 'mcms-age-critical' };
        if (age >= 16 * 60 * 60 * 1000) return { rank: 2, label: '16H+ HIGH', className: 'mcms-age-high' };
        if (age >= 8 * 60 * 60 * 1000) return { rank: 1, label: '8H+ AGED', className: 'mcms-age-aged' };
        return { rank: 0, label: 'RECENT', className: 'mcms-age-recent' };
    }

    function missionKnownPersonal(marker, missionId) {
        const id = normaliseMissionId(missionId);
        if (!marker || id === null) return false;
        if (isPersonalMissionLayer(marker, id)) return true;
        const overlay = missionOverlayData.get(id);
        const currentUserId = currentUserIdCached();
        if (currentUserId !== null && overlay?.userId !== undefined && String(overlay.userId) === currentUserId) return true;
        if (liveMissionSnapshots.get(id)?.source === 'personal') return true;
        return false;
    }


    function clearUnitCommitmentLabels() {
        if (unitCommitmentGroup) {
        try { unitCommitmentGroup.clearLayers(); unitCommitmentGroup.remove(); } catch (err) {}
        }
        unitCommitmentLabels.clear();
        unitCommitmentGroup = null;
    }

    function unitCommitmentAnchor(marker, missionId) {
        const personal = isPersonalMissionLayer(marker, missionId);
        let rowsAbove = 0;
        if (personal) {
        if (state.missionAge) rowsAbove += 1;
        } else if (state.allianceCredits) rowsAbove += 1;
        return 18 + (rowsAbove * 20);
    }

    function makeUnitCommitmentIcon(commitment, personal, anchor) {
        const text = commitment.onScene && commitment.travelling
        ? `${commitment.onScene}✓ ${commitment.travelling}→`
        : commitment.onScene ? `${commitment.onScene}✓` : commitment.travelling ? `${commitment.travelling}→` : `U ${commitment.total}`;
        return pageWindow.L.divIcon({
        className: 'mcms-unit-commitment-icon',
        html: `<span class="mcms-unit-commitment-badge ${personal ? 'mcms-unit-personal' : 'mcms-unit-alliance'}">${escapeHtml(text)}</span>`,
        iconSize: [0, 0], iconAnchor: [0, anchor]
        });
    }

    function updateUnitCommitmentLabels() {
        if (state.economyMode && economyMapMoving) return;
        if (!state.unitCommitment) { clearUnitCommitmentLabels(); return; }
        const vehicleDataFreshnessMs = state.economyMode ? 5 * 60 * 1000 : VEHICLE_API_REFRESH_MS;
        if (!vehicleApiReady || Date.now() - vehicleApiLastFetch >= vehicleDataFreshnessMs) refreshPersonalVehicleData(false);
        const map = findLeafletMapInstance(false);
        if (!map || !pageWindow.L || typeof pageWindow.L.layerGroup !== 'function' || typeof pageWindow.L.marker !== 'function' || typeof pageWindow.L.divIcon !== 'function') {
        clearUnitCommitmentLabels(); return;
        }
        const floatPane = ensureMissionFloatPane(map);
        if (!floatPane) { clearUnitCommitmentLabels(); return; }
        const economyBounds = state.economyMode ? economyPaddedBounds(map, 0.08) : null;
        try {
        if (!unitCommitmentGroup || unitCommitmentGroup._map !== map) {
            clearUnitCommitmentLabels();
            unitCommitmentGroup = pageWindow.L.layerGroup();
            unitCommitmentGroup.__mcmsUnitCommitmentLayer = true;
            unitCommitmentGroup.addTo(map);
        }
        const activeIds = new Set();
        for (const marker of getMissionMarkerIndex().markers) {
            const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
            if (missionId === null) continue;
            const personal = isPersonalMissionLayer(marker, missionId);
            if (personal && !state.visibility.myMissions) continue;
            if (!personal && !state.visibility.allianceMissions) continue;
            const commitment = personalUnitCommitmentForMission(missionId);
            if (commitment.total <= 0) continue;
            let latLng = null;
            try { latLng = marker.getLatLng?.() || null; } catch (err) {}
            if (!latLng || (economyBounds && !economyBounds.contains?.(latLng))) continue;
            const anchor = unitCommitmentAnchor(marker, missionId);
            const signature = `${commitment.total}:${commitment.onScene}:${commitment.travelling}:${personal}:${anchor}`;
            activeIds.add(missionId);
            let label = unitCommitmentLabels.get(missionId);
            if (!label) {
                label = pageWindow.L.marker(latLng, { interactive:false, keyboard:false, bubblingMouseEvents:false, pane:floatPane, zIndexOffset:0, icon:makeUnitCommitmentIcon(commitment, personal, anchor) });
                label.__mcmsUnitCommitmentSignature = signature;
                label.__mcmsUnitCommitmentLabel = true;
                label.addTo(unitCommitmentGroup);
                unitCommitmentLabels.set(missionId, label);
            } else {
                try { label.setLatLng(latLng); } catch (err) {}
                if (label.__mcmsUnitCommitmentSignature !== signature) {
                    label.__mcmsUnitCommitmentSignature = signature;
                    try { label.setIcon(makeUnitCommitmentIcon(commitment, personal, anchor)); } catch (err) {}
                }
            }
        }
        for (const [missionId, label] of unitCommitmentLabels.entries()) {
            if (activeIds.has(missionId)) continue;
            unitCommitmentLabels.delete(missionId);
            try { unitCommitmentGroup.removeLayer(label); } catch (err) {}
        }
        } catch (err) { clearUnitCommitmentLabels(); }
    }

    function scheduleUnitCommitmentRefresh(delay = 400) {
        runtimeClearTimeout(unitCommitmentTimer);
        unitCommitmentTimer = runtimeSetTimeout(updateUnitCommitmentLabels, state.economyMode ? Math.max(900, delay) : delay);
    }


    function clearTransportWatcherLabels() {
        if (transportWatcherGroup) {
        try { transportWatcherGroup.clearLayers(); transportWatcherGroup.remove(); } catch (err) {}
        }
        transportWatcherLabels.clear();
        transportWatcherGroup = null;
    }

    function transportRequirementFromSnapshot(snapshot) {
        const raw = normaliseMissingRequirementText(snapshot?.missingText);
        if (!raw) return null;
        const text = raw.toLowerCase();
        const transportRequired = [
        /\btransport(?:ation)?\b.{0,34}\b(?:needed|required|waiting|pending)\b/i,
        /\b(?:needs?|requires?|awaiting)\b.{0,34}\btransport(?:ation)?\b/i,
        /\bmust be transported\b/i,
        /\btransport is needed\b/i,
        /\b(?:transport|abtransport|gefangenentransport)\b.{0,34}\b(?:erforderlich|ben[oö]tigt|notwendig)\b/i,
        /\b(?:muss|müssen)\b.{0,34}\btransportiert werden\b/i,
        /\b(?:transport|vervoer)\b.{0,34}\b(?:nodig|vereist)\b/i,
            /\b(?:moet|moeten)\b.{0,34}\b(?:vervoerd|afgevoerd)\b/i
        ].some(pattern => pattern.test(text));
        if (!transportRequired) return null;

        const prisonerTerms = /prison|prisoner|custod|detainee|arrest|cell|jail|gefangen|haft|arrestant|gevangen/i;
        const patientTerms = /patient|hospital|ambulance|medical|casualt|injur|verletz|krankenhaus|ziekenhuis|gewond/i;
        const patients = Number(snapshot?.patientsCount) || 0;
        const prisoners = Number(snapshot?.prisonersCount) || 0;
        let type = 'general';
        if (prisonerTerms.test(text) || (prisoners > 0 && patients <= 0)) type = 'prisoner';
        else if (patientTerms.test(text) || (patients > 0 && prisoners <= 0)) type = 'patient';

        const explicitCount = raw.match(/\b(\d{1,2})\b/);
        let count = explicitCount ? Number(explicitCount[1]) : 0;
        if (!count && type === 'patient' && patients > 1) count = patients;
        if (!count && type === 'prisoner' && prisoners > 1) count = prisoners;
        count = Math.min(99, Math.max(0, Math.round(count || 0)));

        return {
        type,
        count,
        label: type === 'patient' ? 'Patient transport required' : type === 'prisoner' ? 'Prisoner transport required' : 'Transport required'
        };
    }

    function transportWatcherSvg(type) {
        if (type === 'prisoner') {
        return `<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3.5 8.5h12.2l3.1 3.3v5.1H3.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M15.7 8.5v3.3h3.1M7 11.2v3.2M10 11.2v3.2M13 11.2v3.2" fill="none" stroke="currentColor" stroke-width="1.55" stroke-linecap="round"/><circle cx="7.1" cy="18" r="1.7" fill="#171008" stroke="currentColor" stroke-width="1.3"/><circle cx="16.4" cy="18" r="1.7" fill="#171008" stroke="currentColor" stroke-width="1.3"/></svg>`;
        }
        if (type === 'patient') {
        return `<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3.5 8.5h11.8l3.7 3.5v4.9H3.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M15.3 8.5V12H19M8.3 10.2v4.3M6.15 12.35h4.3" fill="none" stroke="currentColor" stroke-width="1.65" stroke-linecap="round"/><circle cx="7.1" cy="18" r="1.7" fill="#171008" stroke="currentColor" stroke-width="1.3"/><circle cx="16.4" cy="18" r="1.7" fill="#171008" stroke="currentColor" stroke-width="1.3"/></svg>`;
        }
        return `<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M2.8 8.8h11.9l3.7 3.4v4.7H2.8z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M14.7 8.8v3.4h3.7M7.4 12.7h5.1M10.8 10.8l2 1.9-2 1.9" fill="none" stroke="currentColor" stroke-width="1.55" stroke-linecap="round" stroke-linejoin="round"/><circle cx="6.5" cy="18" r="1.7" fill="#171008" stroke="currentColor" stroke-width="1.3"/><circle cx="15.8" cy="18" r="1.7" fill="#171008" stroke="currentColor" stroke-width="1.3"/></svg>`;
    }

    function renderedMissionFloatWidth(label, selector, fallback) {
        try {
        const badge = label?._icon?.querySelector?.(selector);
        const width = Number(badge?.getBoundingClientRect?.().width);
        if (Number.isFinite(width) && width > 0) return width;
        } catch (err) {}
        return fallback;
    }

    function transportWatcherPlacement(map, marker, missionId, requirement) {
        const personal = isPersonalMissionLayer(marker, missionId);
        let occupiedWidth = 0;
        let source = 'marker';

        if (personal && state.missionAge) {
        occupiedWidth = renderedMissionFloatWidth(
            missionAgeLabels.get(missionId),
            '.mcms-mission-age-badge',
            52
        );
        source = 'mission-age';
        } else if (!personal && state.allianceCredits) {
        occupiedWidth = renderedMissionFloatWidth(
            allianceCreditLabels.get(missionId),
            '.mcms-alliance-credit-badge',
            64
        );
        source = 'alliance-credit';
        } else if (state.unitCommitment) {
        const commitment = personalUnitCommitmentForMission(missionId);
        if (commitment.total > 0) {
            occupiedWidth = renderedMissionFloatWidth(
                unitCommitmentLabels.get(missionId),
                '.mcms-unit-commitment-badge',
                54
            );
            source = 'unit-count';
        }
        }

        const watcherHalfWidth = 13;
        const gap = occupiedWidth > 0 ? 6 : 4;
        const horizontalOffset = occupiedWidth > 0
        ? Math.ceil((occupiedWidth / 2) + watcherHalfWidth + gap)
        : 21;

        let side = 'right';
        try {
        const latLng = marker?.getLatLng?.();
        const point = latLng && map?.latLngToContainerPoint?.(latLng);
        const size = map?.getSize?.();
        const countExtra = Number(requirement?.count) > 1 ? 10 : 3;
        if (point && size && point.x + horizontalOffset + watcherHalfWidth + countExtra > size.x - 4) side = 'left';
        } catch (err) {}

        return {
        side,
        source,
        horizontalOffset,
        iconAnchor: [side === 'right' ? -horizontalOffset : horizontalOffset, 18],
        signature: `${side}:${source}:${horizontalOffset}`
        };
    }

    function makeTransportWatcherIcon(requirement, placement) {
        const type = ['patient', 'prisoner'].includes(requirement?.type) ? requirement.type : 'general';
        const side = placement?.side === 'left' ? 'left' : 'right';
        const count = Number(requirement?.count) > 1 ? `<span class="mcms-transport-watcher-count">${escapeHtml(requirement.count)}</span>` : '';
        return pageWindow.L.divIcon({
        className: 'mcms-transport-watcher-icon',
        html: `<span class="mcms-transport-watcher-badge mcms-transport-${type} mcms-transport-side-${side}" aria-label="${escapeHtml(requirement?.label || 'Transport required')}" title="${escapeHtml(requirement?.label || 'Transport required')}">${transportWatcherSvg(type)}${count}</span>`,
        iconSize: [0, 0],
        iconAnchor: placement?.iconAnchor || [-21, 18]
        });
    }

    function updateTransportWatcherLabels() {
        if (state.economyMode && economyMapMoving) return;
        runtimeClearTimeout(transportWatcherTimer);
        transportWatcherTimer = null;
        if (!state.transportWatcher) {
        clearTransportWatcherLabels();
        return;
        }

        const map = findLeafletMapInstance(false);
        if (!map || !pageWindow.L || typeof pageWindow.L.layerGroup !== 'function' || typeof pageWindow.L.marker !== 'function' || typeof pageWindow.L.divIcon !== 'function') {
        clearTransportWatcherLabels();
        return;
        }
        const pane = ensureMissionFloatPane(map);
        if (!pane) {
        clearTransportWatcherLabels();
        return;
        }
        const economyBounds = state.economyMode ? economyPaddedBounds(map, 0.08) : null;

        try {
        if (!transportWatcherGroup || transportWatcherGroup._map !== map) {
            clearTransportWatcherLabels();
            transportWatcherGroup = pageWindow.L.layerGroup();
            transportWatcherGroup.__mcmsTransportWatcherLayer = true;
            transportWatcherGroup.addTo(map);
        }

        const activeIds = new Set();
        const now = Date.now();
        for (const marker of getMissionMarkerIndex().markers) {
            const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
            if (missionId === null) continue;
            const personal = isPersonalMissionLayer(marker, missionId);
            if (personal && !state.visibility.myMissions) continue;
            if (!personal && !state.visibility.allianceMissions) continue;

            const snapshot = liveMissionSnapshots.get(missionId) || missionSnapshotFromMarker(marker, now);
            const requirement = transportRequirementFromSnapshot(snapshot);
            if (!requirement) continue;

            let latLng = null;
            try { latLng = marker.getLatLng?.() || null; } catch (err) {}
            if (!latLng || (economyBounds && !economyBounds.contains?.(latLng))) continue;
            try {
                const onMap = typeof map.hasLayer === 'function' ? map.hasLayer(marker) : Boolean(marker._map);
                if (!onMap) continue;
            } catch (err) {}

            const placement = transportWatcherPlacement(map, marker, missionId, requirement);
            const signature = `${requirement.type}:${requirement.count}:${requirement.label}:${placement.signature}`;
            activeIds.add(missionId);
            let label = transportWatcherLabels.get(missionId);
            if (!label) {
                label = pageWindow.L.marker(latLng, {
                    interactive: false, keyboard: false, bubblingMouseEvents: false,
                    pane, zIndexOffset: 0, icon: makeTransportWatcherIcon(requirement, placement)
                });
                label.__mcmsTransportWatcherSignature = signature;
                label.__mcmsTransportWatcherLabel = true;
                label.addTo(transportWatcherGroup);
                transportWatcherLabels.set(missionId, label);
            } else {
                try { label.setLatLng(latLng); } catch (err) {}
                if (label.__mcmsTransportWatcherSignature !== signature) {
                    label.__mcmsTransportWatcherSignature = signature;
                    try { label.setIcon(makeTransportWatcherIcon(requirement, placement)); } catch (err) {}
                }
            }
        }

        for (const [missionId, label] of transportWatcherLabels.entries()) {
            if (activeIds.has(missionId)) continue;
            transportWatcherLabels.delete(missionId);
            try { transportWatcherGroup.removeLayer(label); } catch (err) {}
        }
        } catch (err) {
        clearTransportWatcherLabels();
        }
    }

    function scheduleTransportWatcherRefresh(delay = 320) {
        runtimeClearTimeout(transportWatcherTimer);
        transportWatcherTimer = runtimeSetTimeout(updateTransportWatcherLabels, state.economyMode ? Math.max(900, delay) : delay);
    }

    function transportSweepSleep(ms) {
        return runtimeDelay(ms);
    }

    function transportSweepElementVisible(element) {
        if (!element || !element.isConnected) return false;
        try {
        const view = element.ownerDocument?.defaultView || window;
        const style = view.getComputedStyle(element);
        if (style.display === 'none' || style.visibility === 'hidden' || Number(style.opacity) === 0) return false;
        const rect = element.getBoundingClientRect();
        return rect.width > 0 && rect.height > 0;
        } catch (err) {
        return false;
        }
    }

    async function transportSweepWaitFor(test, timeoutMs = 5000, intervalMs = 120) {
        const started = Date.now();
        while (Date.now() - started < timeoutMs) {
        if (runtime.destroyed || transportSweepRuntime.stopRequested) return null;
        try {
            const value = test();
            if (value) return value;
        } catch (err) {}
        if (!await transportSweepSleep(intervalMs)) return null;
        }
        return null;
    }

    function transportSweepLog(message, level = 'info') {
        const clean = String(message || '').trim();
        if (!clean) return;
        transportSweepRuntime.statusMessage = clean;
        transportSweepRuntime.statusLevel = String(level || 'info');
        transportSweepRuntime.log.unshift({ time: Date.now(), message: clean, level });
        if (transportSweepRuntime.log.length > 18) transportSweepRuntime.log.length = 18;
        renderTransportSweepPanel();
    }

    function buildTransportSweepQueue() {
        const now = Date.now();
        const queue = [];
        const seen = new Set();
        for (const marker of getMissionMarkerIndex().markers) {
        const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
        if (missionId === null || seen.has(missionId)) continue;
        const personal = isPersonalMissionLayer(marker, missionId);
        if (personal) continue;
        const snapshot = liveMissionSnapshots.get(missionId) || missionSnapshotFromMarker(marker, now);
        const requirement = transportRequirementFromSnapshot(snapshot);
        const patientCount = Math.max(0, Number(snapshot?.patientsCount) || 0);
        if (!requirement || requirement.type === 'prisoner') continue;
        if (requirement.type !== 'patient' && patientCount <= 0) continue;
        const count = Math.max(1, Math.min(99, Number(requirement.count) || patientCount || 1));
        seen.add(missionId);
        queue.push({
            missionId,
            caption: String(snapshot?.caption || `Alliance mission ${missionId}`),
            count,
            createdAt: Number(snapshot?.createdAt) || 0,
            requirement: requirement.label || 'Patient transport required'
        });
        }
        queue.sort((a, b) => (a.createdAt || Number.MAX_SAFE_INTEGER) - (b.createdAt || Number.MAX_SAFE_INTEGER));
        transportSweepRuntime.queue = queue;
        transportSweepRuntime.scannedAt = now;
        renderTransportSweepPanel();
        return queue;
    }


    function transportSweepHudElements() {
        try { return Array.from(document.querySelectorAll(`#${SCRIPT.transportSweepHudId}`)); }
        catch (err) { return []; }
    }

    function ensureTransportSweepHud() {
        const matches = transportSweepHudElements();
        let hud = matches.shift() || null;
        for (const duplicate of matches) {
        try { duplicate.remove(); } catch (err) {}
        }
        if (hud?.isConnected) return hud;
        const mount = document.body || document.documentElement;
        if (!mount) return null;
        hud = document.createElement('section');
        hud.id = SCRIPT.transportSweepHudId;
        hud.className = 'mcms-transport-sweep-hud';
        hud.setAttribute('role', 'status');
        hud.setAttribute('aria-live', 'polite');
        hud.setAttribute('aria-atomic', 'true');
        mount.appendChild(hud);
        return hud;
    }

    function removeTransportSweepHud() {
        runtimeClearTimeout(transportSweepRuntime.hudDismissTimer);
        transportSweepRuntime.hudDismissTimer = null;
        for (const hud of transportSweepHudElements()) {
        try { hud.remove(); } catch (err) {}
        }
    }

    function scheduleTransportSweepHudDismiss(delay = 6500) {
        runtimeClearTimeout(transportSweepRuntime.hudDismissTimer);
        transportSweepRuntime.hudDismissTimer = runtimeSetTimeout(() => {
        transportSweepRuntime.hudDismissTimer = null;
        transportSweepRuntime.hudFinal = false;
        removeTransportSweepHud();
        }, Math.max(0, Number(delay) || 0));
    }

    function transportSweepHudElapsed() {
        const startedAt = Number(transportSweepRuntime.startedAt) || 0;
        if (!startedAt) return '0:00';
        const totalSeconds = Math.max(0, Math.floor((Date.now() - startedAt) / 1000));
        const minutes = Math.floor(totalSeconds / 60);
        return `${minutes}:${String(totalSeconds % 60).padStart(2, '0')}`;
    }

    function renderTransportSweepHud() {
        const sweep = transportSweepRuntime;
        const visible = sweep.running || sweep.stopRequested || sweep.hudFinal;
        if (!visible) {
        removeTransportSweepHud();
        return;
        }
        const hud = ensureTransportSweepHud();
        if (!hud) return;
        const total = Math.max(0, Number(sweep.missionTotal) || Number(sweep.queue?.length) || 0);
        const index = total ? Math.min(total, Math.max(1, Number(sweep.missionIndex) || 1)) : 0;
        const phase = sweep.hudFinal ? (sweep.statusLevel === 'error' ? 'Finished with errors' : 'Sweep complete')
        : sweep.stopRequested ? 'Stopping'
        : 'Sweep running';
        const current = String(sweep.currentItem || '').trim();
        const message = String(sweep.statusMessage || (sweep.running ? 'Preparing patient transport sweep' : phase)).trim();
        hud.dataset.state = sweep.hudFinal ? (sweep.errors ? 'error' : 'complete') : sweep.stopRequested ? 'stopping' : 'running';
        hud.innerHTML = `<div class="mcms-sweep-hud-head"><span><i></i>Patient Transport Sweep</span><b>${escapeHtml(phase)}</b></div><div class="mcms-sweep-hud-status">${escapeHtml(message)}</div>${current ? `<div class="mcms-sweep-hud-current">${escapeHtml(current)}</div>` : ''}<div class="mcms-sweep-hud-stats"><span><b>${index}/${total}</b><small>Missions</small></span><span class="mcms-sweep-hud-cleared"><b>${Math.max(0, Number(sweep.cleared) || 0)}</b><small>Patients cleared</small></span><span><b>${Math.max(0, Number(sweep.skipped) || 0)}</b><small>Skipped</small></span><span><b>${Math.max(0, Number(sweep.errors) || 0)}</b><small>Errors</small></span></div><div class="mcms-sweep-hud-foot"><span>${escapeHtml(transportSweepHudElapsed())} elapsed</span><span>${Math.max(0, Number(sweep.processed) || 0)} processed</span></div>`;
    }

    runtimeOnCleanup(removeTransportSweepHud);

    function renderTransportSweepPanel() {
        renderTransportSweepHud();
        const host = document.querySelector(`#${SCRIPT.panelId} [data-transport-sweep]`);
        if (!host) return;
        const runtime = transportSweepRuntime;
        const queue = runtime.queue || [];
        const currentId = normaliseMissionId(runtime.currentMissionId);
        const status = runtime.running ? 'RUNNING' : runtime.stopRequested ? 'STOPPING' : queue.length ? 'READY' : 'IDLE';
        const list = queue.length ? queue.map((item, index) => {
            const current = currentId !== null && normaliseMissionId(item.missionId) === currentId;
        return `<div class="mcms-sweep-entry ${current ? 'mcms-current' : ''}"><div><span class="mcms-sweep-title">${escapeHtml(`${index + 1}. ${item.caption}`)}</span><span class="mcms-sweep-meta">Mission ${escapeHtml(item.missionId)} · ${escapeHtml(item.requirement)}</span></div><span class="mcms-sweep-count">${escapeHtml(item.count)} req</span></div>`;
        }).join('') : `<div class="mcms-empty-state">Scan to find alliance missions currently reporting patient transport requirements.</div>`;
        const logs = runtime.log.length ? runtime.log.map(entry => {
            const stamp = new Date(entry.time).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' });
        return `<div>${escapeHtml(stamp)} · ${escapeHtml(entry.message)}</div>`;
        }).join('') : '<div>No sweep activity yet.</div>';
        const html = `<div class="mcms-sweep-card"><div class="mcms-sweep-head"><span>Patient Transport Sweep</span><span class="mcms-sweep-state ${runtime.running ? 'mcms-running' : ''}">${status}</span></div><div class="mcms-sweep-stats"><div class="mcms-sweep-stat"><b>${queue.length}</b><span>Missions</span></div><div class="mcms-sweep-stat"><b>${runtime.cleared}</b><span>Cleared</span></div><div class="mcms-sweep-stat"><b>${runtime.skipped}</b><span>Skipped</span></div><div class="mcms-sweep-stat"><b>${runtime.errors}</b><span>Errors</span></div></div><div class="mcms-sweep-queue">${list}</div><div class="mcms-sweep-log">${logs}</div></div>`;
        setInnerHtmlIfChanged(host, html);
        const start = document.querySelector(`#${SCRIPT.panelId} [data-action="start-transport-sweep"]`);
        const stop = document.querySelector(`#${SCRIPT.panelId} [data-action="stop-transport-sweep"]`);
        const scan = document.querySelector(`#${SCRIPT.panelId} [data-action="scan-transport-sweep"]`);
        if (start) start.disabled = runtime.running;
        if (stop) stop.disabled = !runtime.running;
        if (scan) scan.disabled = runtime.running;
    }

    function transportSweepVehicleIdFromHref(href) {
        let pathname = String(href || '').trim();
        try { pathname = new URL(pathname, document.baseURI || pageWindow.location.href).pathname; } catch (err) {}
        const match = pathname.match(/^\/vehicles\/(\d+)(?:\/|$)/);
        return match ? match[1] : null;
    }


    
    
    function transportSweepAnchorUsable(anchor) {
        if (!anchor || !anchor.isConnected || anchor.closest?.(`#${SCRIPT.panelId}`)) return false;
        try {
            const view = anchor.ownerDocument?.defaultView || window;
            let node = anchor;
            for (let depth = 0; depth < 7 && node; depth += 1, node = node.parentElement) {
                const style = view.getComputedStyle(node);
            if (style.display === 'none' || style.visibility === 'hidden') continue;
                const rect = node.getBoundingClientRect();
                if (rect.width > 0 && rect.height > 0) return true;
            }
        } catch (err) {}
        return false;
    }

    function transportSweepDocumentContexts() {
        const contexts = [];
        const seenDocuments = new Set();
        const visit = (doc, label = 'top') => {
            if (!doc || seenDocuments.has(doc)) return;
            seenDocuments.add(doc);
            contexts.push({ doc, label });
            let frames = [];
        try { frames = Array.from(doc.querySelectorAll('iframe, frame')); } catch (err) {}
            frames.forEach((frame, index) => {
                try {
                    const child = frame.contentDocument || frame.contentWindow?.document;
                    if (child) visit(child, `${label}/frame${index + 1}`);
                } catch (err) {
                    // Cross-origin frames are intentionally ignored.
                }
            });
        };
        visit(document);
        return contexts;
    }

    function transportSweepVehicleAnchorsWithin(root = null, requireUsable = true) {
        const scope = root && (root.isConnected || root.nodeType === 9) ? root : document;
        let anchors = [];
        try { anchors = Array.from(scope.querySelectorAll('a[href*="/vehicles/"]')); } catch (err) {}
        return anchors.filter(anchor => {
        if (!transportSweepVehicleIdFromHref(anchor.getAttribute('href'))) return false;
            return !requireUsable || transportSweepAnchorUsable(anchor);
        });
    }

    function transportSweepVisibleVehicleAnchors() {
        const anchors = [];
        const seen = new Set();
        for (const context of transportSweepDocumentContexts()) {
            for (const anchor of transportSweepVehicleAnchorsWithin(context.doc, true)) {
                if (seen.has(anchor)) continue;
                seen.add(anchor);
                anchors.push(anchor);
            }
        }
        return anchors;
    }

    function transportSweepVisibleWindowRoots() {
        const selectors = [
        '#lightbox_box .lightbox_content', '#lightbox_box', '#lightbox', '.lightbox_content',
        '[id*="lightbox"]', '.lightbox', '.modal.show .modal-content', '.modal.in .modal-content',
        '.modal.show', '.modal.in', '[role="dialog"]', '.ui-dialog-content', '.ui-dialog'
        ];
        const roots = [];
        const seen = new Set();
        for (const context of transportSweepDocumentContexts()) {
            for (const selector of selectors) {
                let matches = [];
                try { matches = Array.from(context.doc.querySelectorAll(selector)); } catch (err) {}
                for (const root of matches) {
                    if (!root || seen.has(root) || !transportSweepElementVisible(root)) continue;
                    if (root.closest?.(`#${SCRIPT.panelId}`)) continue;
                    seen.add(root);
                    roots.push(root);
                }
            }
            if (context.doc !== document) {
                const body = context.doc.body;
                if (body && !seen.has(body) && transportSweepElementVisible(body) && transportSweepVehicleAnchorsWithin(body, true).length) {
                    seen.add(body);
                    roots.push(body);
                }
            }
        }
        return roots;
    }

    function transportSweepRootScore(root, missionId = null) {
        if (!root || !root.isConnected) return -1;
        const anchors = transportSweepVehicleAnchorsWithin(root);
        if (!anchors.length) return -1;
        let score = anchors.length * 10;
        const text = String(root.textContent || '').toLowerCase();
        if (/mission|incident|einsatz|call/.test(text)) score += 15;
        if (/patient|transport|ambulance|discharge/.test(text)) score += 30;
        if (missionId !== null) {
            try {
                if (root.querySelector(`a[href*="/missions/${missionId}"]`)) score += 80;
            } catch (err) {}
        }
        const rect = root.getBoundingClientRect();
        score += Math.min(30, Math.round((rect.width * rect.height) / 50000));
        return score;
    }

    function transportSweepFindMissionWindowRoot(missionId = null) {
        const roots = transportSweepVisibleWindowRoots();
        let best = null;
        let bestScore = -1;
        for (const root of roots) {
            const score = transportSweepRootScore(root, missionId);
            if (score > bestScore) {
                best = root;
                bestScore = score;
            }
        }
        if (best) return best;

        // Fallback for MissionChief builds that render lightbox content without a stable wrapper.
        const baseline = transportSweepRuntime.missionAnchorBaseline;
        const anchor = transportSweepVisibleVehicleAnchors().find(item => !(baseline instanceof Set) || !baseline.has(item));
        if (!anchor) return null;
        return anchor.closest?.('#lightbox_box, #lightbox, .lightbox_content, .modal-content, [role="dialog"], .ui-dialog-content') || anchor.ownerDocument?.body || anchor.parentElement;
    }

    function transportSweepAnchorBelongsToMissionWindow(anchor) {
        if (!anchor || !transportSweepAnchorUsable(anchor)) return false;
        const root = transportSweepRuntime.missionWindowRoot;
        if (root?.isConnected && root.contains(anchor)) return true;
        const baseline = transportSweepRuntime.missionAnchorBaseline;
        if (baseline instanceof Set && !baseline.has(anchor)) return true;
        return transportSweepVisibleWindowRoots().some(windowRoot => windowRoot.contains(anchor));
    }

    function transportSweepOwnVehicleIdSet() {
        if (transportSweepRuntime.ownVehicleIds instanceof Set && transportSweepRuntime.ownVehicleIds.size) {
            return new Set(Array.from(transportSweepRuntime.ownVehicleIds, id => String(id)));
        }
        const ids = new Set(Array.from(personalVehicleApiCache.keys(), id => String(id)));
        for (const vehicle of getPersonalVehicleRecords()) {
            const id = vehicleRecordId(vehicle);
            if (id !== null) ids.add(String(id));
        }
        transportSweepRuntime.ownVehicleIds = ids;
        return ids;
    }

    function collectTransportSweepStaticCandidates(anchors, source = 'mission HTML', preserveAnchors = false) {
        const unique = new Map();
        const ownIds = transportSweepOwnVehicleIdSet();
        let rejectedOwn = 0;
        let allianceLinks = 0;
        let rejectedNotFms5 = 0;
        let rejectedNotPatient = 0;

        for (const anchor of Array.from(anchors || [])) {
        const href = String(anchor.getAttribute?.('href') || '').trim();
            const vehicleId = transportSweepVehicleIdFromHref(href);
            if (!vehicleId) continue;

        const row = anchor.closest?.('tr[id^="vehicle_row_"], tr, li, [id^="vehicle_row_"], [class*="vehicle_row"]');
        const fms5 = row?.querySelector?.('.building_list_fms_5');
            if (!row || !fms5) {
                rejectedNotFms5 += 1;
                continue;
            }

            if (ownIds.has(String(vehicleId))) {
                rejectedOwn += 1;
                continue;
            }

            allianceLinks += 1;
        const vehicleTypeId = String(anchor.getAttribute?.('vehicle_type_id') || '');
        const label = String(anchor.textContent || 'Alliance vehicle').trim() || 'Alliance vehicle';
            const rowText = String(row.textContent || '').replace(/\s+/g, ' ').trim();
        const isPatientVehicle = vehicleTypeId === '5' || /ambulance|patient|paramedic|rettungs|krankentransport|rtw\b/i.test(`${label} ${rowText}`);
            if (!isPatientVehicle) {
                rejectedNotPatient += 1;
                continue;
            }

            const normalisedHref = `/vehicles/${vehicleId}`;
            const candidate = {
                href: normalisedHref,
                vehicleId,
                label,
                vehicleTypeId,
                score: 500,
                anchor: preserveAnchors ? anchor : null,
                row: preserveAnchors ? row : null,
                source,
                rowText
            };
            if (!unique.has(normalisedHref)) unique.set(normalisedHref, candidate);
        }

        return {
            candidates: Array.from(unique.values())
                .sort((a, b) => a.label.localeCompare(b.label) || Number(a.vehicleId) - Number(b.vehicleId))
                .slice(0, TRANSPORT_SWEEP_MAX_CANDIDATES_PER_MISSION),
            stats: {
                totalLinks: Array.from(anchors || []).length,
                allianceLinks,
                rejectedOwn,
                rejectedNotFms5,
                rejectedNotPatient,
                candidates: unique.size,
                source
            }
        };
    }

    async function transportSweepFetchMissionCandidates(missionId) {
        const id = normaliseMissionId(missionId);
        if (id === null || transportSweepRuntime.stopRequested) return null;
        const requestModes = [
        { headers: { 'X-Requested-With': 'XMLHttpRequest', Accept: 'text/html, */*;q=0.8' } },
            { headers: { Accept: 'text/html,application/xhtml+xml' } }
        ];
        let bestResult = null;
        for (const mode of requestModes) {
            if (transportSweepRuntime.stopRequested) return null;
            try {
                const response = await runtimeFetch(`/missions/${id}`, {
                    method: 'GET',
                    credentials: 'same-origin',
                    cache: 'no-store',
                    headers: mode.headers
                });
                if (!response.ok) continue;
                const html = await response.text();
                if (!html || html.length < 100) continue;
                const doc = new DOMParser().parseFromString(html, 'text/html');
                const anchors = Array.from(doc.querySelectorAll('a[href*="/vehicles/"]'))
                    .filter(anchor => transportSweepVehicleIdFromHref(anchor.getAttribute('href')));
                if (!anchors.length) continue;
                const result = { ...collectTransportSweepStaticCandidates(anchors, 'mission HTML'), htmlLength: html.length };
                if (!bestResult || result.stats.totalLinks > bestResult.stats.totalLinks) bestResult = result;
                if (result.candidates.length) return result;
            } catch (err) {
                // Try the next request mode.
            }
        }
        return bestResult;
    }

    async function collectTransportSweepVehicleCandidatesForMission(missionId) {
        const domCandidates = collectTransportSweepVehicleCandidates();
        const domStats = { ...(transportSweepRuntime.lastCandidateStats || {}) };
        if (domCandidates.length) return domCandidates;

        const fetched = await transportSweepFetchMissionCandidates(missionId);
        if (fetched) {
            transportSweepRuntime.rejectedOwn = fetched.stats.rejectedOwn || 0;
            transportSweepRuntime.lastCandidateStats = fetched.stats;
            if (fetched.candidates?.length) {
                transportSweepLog(`Recovered ${fetched.stats.totalLinks} vehicle links from mission HTML`);
                return fetched.candidates;
            }
        }

        if (!fetched) transportSweepRuntime.lastCandidateStats = domStats;
        return [];
    }

    function collectTransportSweepVehicleCandidates() {
        const root = transportSweepRuntime.missionWindowRoot?.isConnected ? transportSweepRuntime.missionWindowRoot : null;
        let anchors = root ? transportSweepVehicleAnchorsWithin(root) : [];
        if (!anchors.length) anchors = transportSweepVisibleVehicleAnchors().filter(anchor => transportSweepAnchorBelongsToMissionWindow(anchor));

        const result = collectTransportSweepStaticCandidates(anchors, 'mission window', true);
        transportSweepRuntime.rejectedOwn = result.stats.rejectedOwn || 0;
        transportSweepRuntime.lastCandidateStats = result.stats;
        return result.candidates;
    }


    
    
    const TRANSPORT_SWEEP_RELEASE_CONFIRMATION_TEXT = 'Understood! We have released the patient.';

    function normaliseTransportSweepReleaseText(value) {
        return String(value || '').replace(/\s+/g, ' ').trim().toLowerCase();
    }

    function transportSweepReleaseConfirmationSignature(value) {
        const text = normaliseTransportSweepReleaseText(value);
        if (!text) return '';
        const matches = [];
        const exactConfirmation = normaliseTransportSweepReleaseText(TRANSPORT_SWEEP_RELEASE_CONFIRMATION_TEXT);
        if (text.includes(exactConfirmation)) matches.push(exactConfirmation);
        const patterns = [
            /understood!\s*we have released the patient\.?/gi,
            /we have released the patient\.?/gi,
            /released the patient\.?/gi,
            /patient (?:is not|isn['’]t) transported\.?/gi,
            /patient[^.!?]{0,120}(?:released|discharged)\.?/gi
        ];
        for (const pattern of patterns) {
            for (const match of text.matchAll(pattern)) matches.push(normaliseTransportSweepReleaseText(match[0]));
        }
        return Array.from(new Set(matches)).sort().join(' | ');
    }

    function transportSweepReleaseEvidenceElements() {
        const selectors = [
            '#notice', '#flash', '#flash_messages', '#flashMessage', '.alert', '.alert-success',
            '.notice', '.flash', '.toast', '[role="alert"]', '[aria-live="assertive"]',
            '[aria-live="polite"]', '[class*="alert"]', '[class*="flash"]', '[class*="notice"]', '[class*="toast"]'
        ];
        const elements = [];
        const seen = new Set();
        const add = element => {
            if (!element || seen.has(element) || !element.isConnected) return;
            if (element.closest?.(`#${SCRIPT.panelId}, #${SCRIPT.transportSweepHudId}`)) return;
            const text = String(element.textContent || '');
            if (!transportSweepReleaseConfirmationSignature(text)) return;
            if (element.tagName !== 'BODY' && !transportSweepElementVisible(element)) return;
            seen.add(element);
            elements.push(element);
        };
        for (const root of transportSweepVisibleWindowRoots()) add(root);
        for (const context of transportSweepDocumentContexts()) {
            for (const selector of selectors) {
                let matches = [];
                try { matches = Array.from(context.doc.querySelectorAll(selector)); } catch (err) {}
                matches.forEach(add);
            }
            let directChildren = [];
            try { directChildren = Array.from(context.doc.body?.children || []); } catch (err) {}
            directChildren.forEach(element => {
                if (String(element.textContent || '').length <= 600) add(element);
            });
            const body = context.doc.body;
            if (body && String(body.textContent || '').length <= 1000) add(body);
        }
        return elements;
    }

    function captureTransportSweepReleaseConfirmationBaseline() {
        return new Map(transportSweepReleaseEvidenceElements().map(element => [element, transportSweepReleaseConfirmationSignature(element.textContent)]));
    }

    function transportSweepReleaseConfirmationVisible(baseline = null) {
        const evidence = transportSweepReleaseEvidenceElements();
        if (!(baseline instanceof Map)) return evidence.length > 0;
        return evidence.some(element => {
            const signature = transportSweepReleaseConfirmationSignature(element.textContent);
            return !baseline.has(element) || baseline.get(element) !== signature;
        });
    }

    function transportSweepReleaseKey(missionId, vehicleId) {
        const mission = normaliseMissionId(missionId);
        const vehicle = String(vehicleId || '').trim();
        return mission !== null && vehicle ? `${mission}:${vehicle}` : '';
    }

    function recordTransportSweepConfirmedRelease(releaseKey, message) {
        const key = String(releaseKey || '').trim();
        if (!key || transportSweepRuntime.confirmedReleaseKeys.has(key)) return false;
        transportSweepRuntime.confirmedReleaseKeys.add(key);
        transportSweepRuntime.cleared += 1;
        transportSweepRuntime.processed += 1;
        transportSweepLog(message);
        return true;
    }

    
    function transportSweepVisibleDischargeButtons() {
        const buttons = [];
        const seen = new Set();
        for (const context of transportSweepDocumentContexts()) {
            let matches = [];
            try { matches = Array.from(context.doc.querySelectorAll('button')); } catch (err) {}
            for (const button of matches) {
                if (seen.has(button) || !transportSweepElementVisible(button) || button.disabled) continue;
                if (String(button.textContent || '').trim().toLowerCase() !== 'discharge patient') continue;
                seen.add(button);
                buttons.push(button);
            }
        }
        return buttons;
    }

    function findVisibleDischargePatientButton(excludedButtons = null) {
        const excluded = excludedButtons instanceof Set ? excludedButtons : null;
        return transportSweepVisibleDischargeButtons().find(button => !excluded || !excluded.has(button)) || null;
    }

    function transportSweepTopLevelWindowRoots() {
        const visible = transportSweepVisibleWindowRoots();
        return visible.filter(root => !visible.some(other => other !== root && other.contains?.(root)));
    }

    const TRANSPORT_SWEEP_NATIVE_LAYER_SELECTOR = [
        '#lightbox', '#lightbox_box', '.lightbox', '[id*="lightbox"]',
        '.lightbox_overlay', '.lightbox-overlay', '#lightbox_overlay', '#lightbox_backdrop', '.lightbox-backdrop',
        '.modal.show', '.modal.in', '.modal-backdrop.show', '.modal-backdrop.in',
        '[role="dialog"]', '.ui-dialog', '.ui-widget-overlay'
    ].join(', ');

    function transportSweepNativeWindowLayers() {
        const layers = [];
        const seen = new Set();
        for (const context of transportSweepDocumentContexts()) {
            let matches = [];
            try { matches = Array.from(context.doc.querySelectorAll(TRANSPORT_SWEEP_NATIVE_LAYER_SELECTOR)); } catch (err) {}
            for (const layer of matches) {
                if (!layer || seen.has(layer) || !layer.isConnected || layer.closest?.(`#${SCRIPT.panelId}`)) continue;
                seen.add(layer);
                layers.push(layer);
            }
        }
        return layers;
    }

    function transportSweepWindowLayerChain(root) {
        const chain = [];
        const seen = new Set();
        const collect = start => {
            let node = start;
            while (node?.nodeType === 1) {
                if (!seen.has(node) && node.matches?.(TRANSPORT_SWEEP_NATIVE_LAYER_SELECTOR)) {
                    seen.add(node);
                    chain.push(node);
                }
                node = node.parentElement;
            }
        };
        collect(root);
        try { collect(root?.ownerDocument?.defaultView?.frameElement); } catch (err) {}
        return chain;
    }

    function transportSweepOverlayLayer(layer) {
        if (!layer?.matches) return false;
        return layer.matches('.modal-backdrop, .ui-widget-overlay, .lightbox_overlay, .lightbox-overlay, #lightbox_overlay, #lightbox_backdrop, .lightbox-backdrop');
    }

    function transportSweepOutermostLayer(layers) {
        const candidates = Array.from(layers || []).filter(layer => layer?.isConnected && !transportSweepOverlayLayer(layer));
        return candidates.find(layer => !candidates.some(other => other !== layer && other.contains?.(layer))) || candidates[0] || null;
    }

    function transportSweepClaimWindow(root, beforeLayers = null) {
        if (!root?.isConnected) return null;
        const baseline = beforeLayers instanceof Set ? beforeLayers : new Set();
        const anchor = (() => {
            try { return root.ownerDocument?.defaultView?.frameElement || root; } catch (err) { return root; }
        })();
        const chain = transportSweepWindowLayerChain(root);
        const created = transportSweepNativeWindowLayers().filter(layer => {
            if (baseline.has(layer)) return false;
            if (layer === anchor || layer.contains?.(anchor) || anchor.contains?.(layer)) return true;
            return layer.ownerDocument === anchor.ownerDocument && transportSweepOverlayLayer(layer);
        });
        const owned = new Set([...created, ...chain.filter(layer => !baseline.has(layer))]);
        for (const layer of owned) {
            try { layer.dataset.mcmsTransportSweepOwned = '1'; } catch (err) {}
        }
        transportSweepRuntime.ownedWindowLayers = owned;
        transportSweepRuntime.activeWindowCreatedLayer = owned.size > 0;
        transportSweepRuntime.activeWindowRoot = transportSweepOutermostLayer(owned) || transportSweepOutermostLayer(chain) || root;
        return transportSweepRuntime.activeWindowRoot;
    }

    function transportSweepWindowCloseControl(root) {
        if (!root?.querySelectorAll) return null;
        const selectors = [
            '#lightbox_close', '.lightbox-close', '.lightbox_close',
            '[data-dismiss="modal"]', '[data-bs-dismiss="modal"]',
            'button.close', 'a.close', 'button[aria-label="Close"]', 'a[aria-label="Close"]',
            'button[title="Close"]', 'a[title="Close"]'
        ];
        for (const selector of selectors) {
            const control = Array.from(root.querySelectorAll(selector)).find(transportSweepElementVisible);
            if (control) return control;
        }
        return null;
    }

    async function closeTransportSweepWindows(reason = 'navigation') {
        const target = transportSweepRuntime.activeWindowRoot;
        const ownedLayers = Array.from(transportSweepRuntime.ownedWindowLayers || []).filter(layer => layer?.isConnected);
        transportSweepRuntime.missionWindowRoot = null;
        if ((!target || !target.isConnected || !transportSweepElementVisible(target)) && !ownedLayers.length) {
            transportSweepRuntime.activeWindowRoot = null;
            transportSweepRuntime.ownedWindowLayers = new Set();
            transportSweepRuntime.activeWindowCreatedLayer = false;
            return true;
        }

        const waitUntilClosed = timeoutMs => transportSweepWaitFor(
            () => !target?.isConnected || !transportSweepElementVisible(target) ? true : null,
            timeoutMs,
            100
        );

        let closed = !target?.isConnected || !transportSweepElementVisible(target);
        if (!closed) {
            const closeControl = transportSweepWindowCloseControl(target);
            if (closeControl) {
                try {
                    closeControl.click();
                    closed = Boolean(await waitUntilClosed(1200));
                } catch (err) {}
            }
        }

        if (!closed && typeof pageWindow.lightboxClose === 'function') {
            try {
                pageWindow.lightboxClose();
                closed = Boolean(await waitUntilClosed(1400));
            } catch (err) {}
        }

        if (transportSweepRuntime.activeWindowCreatedLayer) {
            const removable = Array.from(new Set(ownedLayers.filter(layer => layer?.isConnected)));
            removable.sort((a, b) => a.contains?.(b) ? -1 : b.contains?.(a) ? 1 : 0);
            for (const layer of removable) {
                if (!layer?.isConnected) continue;
                try {
                    layer.querySelectorAll?.('iframe, frame').forEach(frame => {
                        try { frame.src = 'about:blank'; } catch (err) {}
                    });
                    layer.remove();
                } catch (err) {}
            }
            closed = !target?.isConnected || !transportSweepElementVisible(target);
        }

        const ownedStillConnected = ownedLayers.some(layer => layer?.isConnected && transportSweepElementVisible(layer));
        if (!closed || ownedStillConnected) {
            transportSweepLog(`MissionChief did not remove the sweep-owned window before ${reason}`, 'error');
            return false;
        }

        transportSweepRuntime.activeWindowRoot = null;
        transportSweepRuntime.ownedWindowLayers = new Set();
        transportSweepRuntime.activeWindowCreatedLayer = false;
        await transportSweepSleep(80);
        return true;
    }

    async function openTransportSweepPath(path, mode) {
        if (transportSweepRuntime.stopRequested) return false;
        if (typeof pageWindow.lightboxOpen !== 'function') throw new Error('MissionChief lightboxOpen is unavailable');
        const closed = await closeTransportSweepWindows(mode === 'mission' ? 'opening a mission' : 'opening a vehicle');
        if (!closed || transportSweepRuntime.stopRequested) return false;

        const beforeRoots = transportSweepVisibleWindowRoots();
        const beforeRootText = new Map(beforeRoots.map(root => [root, String(root.textContent || '').trim()]));
        const beforeLayers = new Set(transportSweepNativeWindowLayers());

        if (mode === 'mission') {
            transportSweepRuntime.missionAnchorBaseline = new Set(transportSweepVisibleVehicleAnchors());
            transportSweepRuntime.rejectedOwn = 0;
            transportSweepRuntime.missionWindowRoot = null;
            const missionId = normaliseMissionId(String(path || '').match(/\/missions\/(\d+)/)?.[1]);
            pageWindow.lightboxOpen(path);
            await transportSweepWaitFor(() => {
                const root = transportSweepFindMissionWindowRoot(missionId);
                if (root) {
                    const anchors = transportSweepVehicleAnchorsWithin(root);
                    const afterText = String(root.textContent || '').trim();
                    const changed = !beforeRootText.has(root) || afterText !== beforeRootText.get(root);
                    if (anchors.length || (afterText && changed)) {
                        transportSweepRuntime.missionWindowRoot = root;
                        transportSweepClaimWindow(root, beforeLayers);
                        return { root, anchors };
                    }
                }
                const newAnchor = transportSweepVisibleVehicleAnchors().find(anchor => !transportSweepRuntime.missionAnchorBaseline.has(anchor));
                if (newAnchor) {
                    transportSweepRuntime.missionWindowRoot = newAnchor.closest?.('#lightbox_box, #lightbox, .lightbox_content, .modal-content, [role="dialog"], .ui-dialog-content') || newAnchor.parentElement;
                    transportSweepClaimWindow(transportSweepRuntime.missionWindowRoot, beforeLayers);
                    return { root: transportSweepRuntime.missionWindowRoot, anchors: [newAnchor] };
                }
                return null;
            }, 4200, 120);
            return !transportSweepRuntime.stopRequested && Boolean(transportSweepRuntime.activeWindowRoot);
        }

        pageWindow.lightboxOpen(path);
        const vehicleWindow = await transportSweepWaitFor(() => {
            const button = findVisibleDischargePatientButton(transportSweepRuntime.vehicleButtonBaseline);
            if (button) {
                const root = button.closest?.('#lightbox_box, #lightbox, .lightbox_content, .modal-content, [role="dialog"], .ui-dialog-content') || button.parentElement;
                return { root };
            }
            const root = transportSweepVisibleWindowRoots().find(candidate => {
                const text = String(candidate.textContent || '').trim();
                return !beforeRootText.has(candidate) || text !== beforeRootText.get(candidate);
            });
            return root ? { root } : null;
        }, 4200, 120);
        transportSweepClaimWindow(vehicleWindow?.root, beforeLayers);
        return !transportSweepRuntime.stopRequested && Boolean(transportSweepRuntime.activeWindowRoot);
    }

    async function openTransportSweepVehicle(candidate) {
        if (transportSweepRuntime.stopRequested || !candidate?.href) return null;
        transportSweepRuntime.vehicleButtonBaseline = new Set(transportSweepVisibleDischargeButtons());
        const opened = await openTransportSweepPath(candidate.href, 'vehicle');
        if (!opened || transportSweepRuntime.stopRequested) return null;

        const openedAt = Date.now();
        return await transportSweepWaitFor(() => {
            const button = findVisibleDischargePatientButton(transportSweepRuntime.vehicleButtonBaseline);
            if (button) return { opened: true, button };
            const roots = transportSweepTopLevelWindowRoots();
            if (roots.length && Date.now() - openedAt > 350) return { opened: true, button: null };
            return null;
        }, 7500, 140);
    }

    async function processTransportSweepMission(item, remainingAllowance) {
        const missionId = normaliseMissionId(item?.missionId);
        if (missionId === null || remainingAllowance <= 0) return 0;

        transportSweepRuntime.currentMissionId = missionId;
        transportSweepRuntime.currentItem = String(item?.caption || `Mission ${missionId}`);
        renderTransportSweepPanel();

        const attemptedVehicleIds = new Set();
        let clearedHere = 0;
        let initialScanLogged = false;
        let missionHadCandidates = false;

        transportSweepLog(`Opening ${item.caption}`);
        let missionOpen = await openTransportSweepPath(`/missions/${missionId}`, 'mission');
        if (!missionOpen || transportSweepRuntime.stopRequested) {
            if (!transportSweepRuntime.stopRequested) {
                transportSweepRuntime.skipped += 1;
                transportSweepLog(`Skipped ${item.caption} because its mission window did not become available`, 'warn');
            }
            return 0;
        }

        while (!transportSweepRuntime.stopRequested && clearedHere < remainingAllowance && transportSweepRuntime.cleared < state.transportSweep.maxPerRun) {
            const candidates = await collectTransportSweepVehicleCandidatesForMission(missionId);
            const candidateStats = transportSweepRuntime.lastCandidateStats || {};
            if (!initialScanLogged) {
                const source = candidateStats.source ? ` · ${candidateStats.source}` : '';
                transportSweepLog(`Vehicle scan: ${candidateStats.totalLinks || 0} vehicle links · ${candidateStats.allianceLinks || 0} alliance FMS 5 · ${candidateStats.candidates || 0} patient candidates${source}`);
                if (transportSweepRuntime.rejectedOwn > 0) {
                    transportSweepLog(`Ignored ${transportSweepRuntime.rejectedOwn} of your own FMS 5 vehicle${transportSweepRuntime.rejectedOwn === 1 ? '' : 's'} at ${item.caption}`);
                }
                initialScanLogged = true;
            }

            if (candidates.length) missionHadCandidates = true;
            const candidate = candidates.find(entry => !attemptedVehicleIds.has(String(entry.vehicleId)));
            if (!candidate) {
                if (!missionHadCandidates) transportSweepLog(`No alliance-owned FMS 5 patient vehicles were found inside ${item.caption}`, 'warn');
                else transportSweepLog(`Checked every alliance-owned FMS 5 patient vehicle at ${item.caption}; none exposed a release control`, 'warn');
                break;
            }

            attemptedVehicleIds.add(String(candidate.vehicleId));
            transportSweepRuntime.currentVehicleHref = candidate.href;
            transportSweepRuntime.currentItem = String(candidate.label || `Vehicle ${candidate.vehicleId}`);
            renderTransportSweepPanel();
            transportSweepLog(`Vehicle check: FMS 5 ${candidate.label} (${candidate.vehicleId})`);

            const vehicleResult = await openTransportSweepVehicle(candidate);
            if (transportSweepRuntime.stopRequested) break;
            const button = vehicleResult?.button || (vehicleResult?.opened ? await transportSweepWaitFor(
                () => findVisibleDischargePatientButton(transportSweepRuntime.vehicleButtonBaseline),
                3200,
                120
            ) : null);

            let confirmedThisAttempt = false;
            if (!button) {
                transportSweepLog(`${candidate.label} is carrying a patient but is not transport-ready; continuing in the same mission`);
            } else {
                try {
                    const confirmationBaseline = captureTransportSweepReleaseConfirmationBaseline();
                    button.click();
                    const cleared = await transportSweepWaitFor(() => {
                        if (transportSweepReleaseConfirmationVisible(confirmationBaseline)) return true;
                        if (!button.isConnected || !transportSweepElementVisible(button) || button.disabled) return true;
                        return normaliseTransportSweepReleaseText(button.textContent) !== 'discharge patient' ? true : null;
                    }, 5000, 140);
                    if (!cleared) throw new Error('Discharge confirmation timed out');
                    confirmedThisAttempt = recordTransportSweepConfirmedRelease(
                        transportSweepReleaseKey(missionId, candidate.vehicleId),
                        `Cleared ${candidate.label} at ${item.caption}`
                    );
                    if (confirmedThisAttempt) clearedHere += 1;
                } catch (err) {
                    transportSweepRuntime.errors += 1;
                    transportSweepLog(`Failed ${candidate.label}: ${err?.message || 'unknown error'}`, 'error');
                }
            }

            if (!transportSweepRuntime.stopRequested && clearedHere < remainingAllowance && transportSweepRuntime.cleared < state.transportSweep.maxPerRun) {
                await transportSweepSleep(state.transportSweep.delayMs);
                transportSweepLog(`Returning to ${item.caption} for remaining alliance ambulances`);
                missionOpen = await openTransportSweepPath(`/missions/${missionId}`, 'mission');
                if (!missionOpen) {
                    if (confirmedThisAttempt) transportSweepLog(`Cleared ${candidate.label}, but could not reopen ${item.caption}; continuing with the confirmed patient result`, 'warn');
                    else {
                        transportSweepRuntime.errors += 1;
                        transportSweepLog(`Could not return to ${item.caption} during fallback processing`, 'error');
                    }
                    break;
                }
            }
        }

        await closeTransportSweepWindows('finishing the mission');

        if (clearedHere === 0 && !transportSweepRuntime.stopRequested) {
            transportSweepRuntime.skipped += 1;
            renderTransportSweepPanel();
        }
        return clearedHere;
    }

    async function startTransportSweep() {
        if (transportSweepRuntime.running) return;
        const queue = buildTransportSweepQueue();
        if (!queue.length) {
            showToast('No alliance patient transports found');
            return;
        }
        showToast('Verifying your personal vehicle list…');
        const ownershipReady = await refreshPersonalVehicleData(true);
        if (!ownershipReady || !vehicleApiReady || personalVehicleApiCache.size === 0) {
            showToast('Transport Sweep cancelled — your vehicle ownership list could not be verified');
            return;
        }
        transportSweepRuntime.ownVehicleIds = new Set(Array.from(personalVehicleApiCache.keys(), id => String(id)));
        const totalRequests = queue.reduce((sum, item) => sum + Math.max(1, Number(item.count) || 1), 0);
        const planned = Math.min(totalRequests, state.transportSweep.maxPerRun);
        const confirmed = pageWindow.confirm(`Transport Sweep will attempt up to ${planned} alliance-member patient releases across ${queue.length} alliance mission${queue.length === 1 ? '' : 's'}.

The sweep opens verified alliance-owned FMS 5 patient vehicles and uses MissionChief's native Discharge patient control. Your own verified vehicle IDs are always excluded. Continue?`);
        if (!confirmed) return;
        transportSweepRuntime.running = true;
        transportSweepRuntime.stopRequested = false;
        transportSweepRuntime.currentMissionId = null;
        transportSweepRuntime.currentVehicleHref = '';
        transportSweepRuntime.cleared = 0;
        transportSweepRuntime.skipped = 0;
        transportSweepRuntime.errors = 0;
        transportSweepRuntime.processed = 0;
        transportSweepRuntime.confirmedReleaseKeys = new Set();
        transportSweepRuntime.rejectedOwn = 0;
        transportSweepRuntime.missionAnchorBaseline = new Set();
        transportSweepRuntime.vehicleButtonBaseline = new Set();
        transportSweepRuntime.missionWindowRoot = null;
        transportSweepRuntime.activeWindowRoot = null;
        transportSweepRuntime.ownedWindowLayers = new Set();
        transportSweepRuntime.activeWindowCreatedLayer = false;
        transportSweepRuntime.lastCandidateStats = null;
        runtimeClearTimeout(transportSweepRuntime.hudDismissTimer);
        transportSweepRuntime.hudDismissTimer = null;
        transportSweepRuntime.startedAt = Date.now();
        transportSweepRuntime.missionIndex = 0;
        transportSweepRuntime.missionTotal = queue.length;
        transportSweepRuntime.currentItem = 'Preparing sweep';
        transportSweepRuntime.statusMessage = 'Preparing patient transport sweep';
        transportSweepRuntime.statusLevel = 'info';
        transportSweepRuntime.hudFinal = false;
        transportSweepRuntime.log = [];
        renderTransportSweepPanel();
        transportSweepLog(`Sweep started: ${queue.length} missions, maximum ${state.transportSweep.maxPerRun} requests`);
        try {
            for (let missionOffset = 0; missionOffset < queue.length; missionOffset += 1) {
                const item = queue[missionOffset];
                if (transportSweepRuntime.stopRequested || transportSweepRuntime.cleared >= state.transportSweep.maxPerRun) break;
                transportSweepRuntime.missionIndex = missionOffset + 1;
                transportSweepRuntime.currentItem = String(item?.caption || `Mission ${item?.missionId || missionOffset + 1}`);
                renderTransportSweepPanel();
                const remaining = state.transportSweep.maxPerRun - transportSweepRuntime.cleared;
                await processTransportSweepMission(item, remaining);
                if (!transportSweepRuntime.stopRequested) await transportSweepSleep(state.transportSweep.delayMs);
            }
        } catch (err) {
            transportSweepRuntime.errors += 1;
            transportSweepLog(`Sweep stopped by error: ${err?.message || 'unknown error'}`, 'error');
        } finally {
            await closeTransportSweepWindows('finishing the sweep');
            const wasStopped = transportSweepRuntime.stopRequested;
            transportSweepRuntime.running = false;
            transportSweepRuntime.stopRequested = false;
            transportSweepRuntime.currentMissionId = null;
            transportSweepRuntime.currentVehicleHref = '';
            transportSweepRuntime.currentItem = '';
            transportSweepRuntime.missionAnchorBaseline = new Set();
            transportSweepRuntime.vehicleButtonBaseline = new Set();
            transportSweepRuntime.activeWindowRoot = null;
            transportSweepRuntime.ownedWindowLayers = new Set();
            transportSweepRuntime.activeWindowCreatedLayer = false;
            transportSweepRuntime.hudFinal = true;
            buildTransportSweepQueue();
            scheduleTransportWatcherRefresh(0);
            showToast(wasStopped ? `Transport Sweep stopped · ${transportSweepRuntime.cleared} cleared` : `Transport Sweep complete · ${transportSweepRuntime.cleared} cleared`);
            transportSweepLog(`${wasStopped ? 'Stopped' : 'Complete'}: ${transportSweepRuntime.cleared} cleared, ${transportSweepRuntime.skipped} skipped, ${transportSweepRuntime.errors} errors`, transportSweepRuntime.errors ? 'error' : 'info');
            scheduleTransportSweepHudDismiss(6500);
        }
    }

    function stopTransportSweep() {
        if (!transportSweepRuntime.running) return;
        transportSweepRuntime.stopRequested = true;
        transportSweepLog('Stop requested — finishing the current action');
        renderTransportSweepPanel();
    }

    function vehicleTargetInfo(vehicle) {
        if (!vehicle || typeof vehicle !== 'object') return { type: null, id: null };
        const containers = [vehicle, vehicle.options, vehicle.params, vehicle.vehicle, vehicle.data, vehicle.vehicleData, vehicle._vehicleData]
            .filter(item => item && typeof item === 'object');
        for (const item of containers) {
            const type = String(item.target_type ?? item.targetType ?? '').toLowerCase();
            const id = normaliseMissionId(item.target_id ?? item.targetId);
            if ((type === 'mission' || type === 'building') && id !== null && id !== '0') return { type, id };
            const missionId = normaliseMissionId(item.mission_id ?? item.missionId);
            if (missionId !== null && missionId !== '0') return { type: 'mission', id: missionId };
            const buildingId = normaliseMissionId(item.target_building_id ?? item.targetBuildingId);
            if (buildingId !== null && buildingId !== '0') return { type: 'building', id: buildingId };
        }
        return { type: null, id: null };
    }

    function vehicleSearchSignal(vehicle) {
        if (!vehicle || typeof vehicle !== 'object') return '';
        const containers = [vehicle, vehicle.options, vehicle.params, vehicle.vehicle, vehicle.data, vehicle.vehicleData, vehicle._vehicleData]
            .filter(item => item && typeof item === 'object');
        const values = [];
        for (const item of containers) {
            values.push(item.caption, item.name, item.vehicle_type_caption, item.vehicleTypeCaption, item.vehicle_type_name, item.vehicleTypeName, item.type_caption, item.typeCaption, item.title);
        }
        try { values.push(vehicle?._icon?.title, vehicle?._icon?.alt, vehicle?._icon?.getAttribute?.('aria-label')); } catch (err) {}
        return values.filter(Boolean).join(' ');
    }

    function vehicleStatusBucket(vehicle) {
        const status = vehicleStatusCode(vehicle);
        if ([1, 2].includes(status)) return 'available';
        if (status === 3) return 'travelling';
        if (status === 4) return 'scene';
        if ([7, 8].includes(status)) return 'transport';
        return 'other';
    }

    function clearResourceGapLabels() {
        if (resourceGapGroup) {
            try { resourceGapGroup.clearLayers(); resourceGapGroup.remove(); } catch (err) {}
        }
        resourceGapLabels.clear();
        resourceGapGroup = null;
    }

    function splitRequirementItems(value) {
        return String(value || '').split(/\s*(?:•|;|\n|,(?=\s*\d+\s*(?:x|×)?\b))\s*/).map(item => item.trim()).filter(Boolean);
    }

    function parseCountedRequirement(value) {
        const clean = String(value || '').replace(/^[-–—\s]+/, '').trim();
        const match = clean.match(/^(\d+)\s*(?:x|×)?\s+(.+)$/i);
        if (match) return { count: Math.max(1, Number(match[1]) || 1), name: match[2].replace(/[.!]+$/, '').trim() };
        if (clean) return { count: 1, name: clean.replace(/[.!]+$/, '').trim() };
        return null;
    }

    function resourceRequirementsFromSnapshot(snapshot) {
        const raw = normaliseMissingRequirementText(snapshot?.missingText);
        const result = { raw, vehicles: [], personnel: [], other: [] };
        if (!raw) return result;
        const labelled = /\b(?:vehicles?|personnel|other)\s*:/i.test(raw);
        if (labelled) {
        const sectionPattern = /\b(vehicles?|personnel|other)\s*:\s*([\s\S]*?)(?=\s*•?\s*\b(?:vehicles?|personnel|other)\s*:|$)/gi;
        let section;
        while ((section = sectionPattern.exec(raw))) {
            const key = /^vehicle/i.test(section[1]) ? 'vehicles' : /^personnel/i.test(section[1]) ? 'personnel' : 'other';
            for (const item of splitRequirementItems(section[2])) {
                const parsed = parseCountedRequirement(item);
                if (parsed && parsed.name) result[key].push(parsed);
            }
        }
        } else {
        const transportOnly = transportRequirementFromSnapshot(snapshot);
        if (!transportOnly && /\b(?:vehicle|engine|unit|carrier|ladder|ambulance|police|car|van|boat|helicopter|support|officer)\b/i.test(raw)) {
            for (const item of splitRequirementItems(raw)) {
                const parsed = parseCountedRequirement(item.replace(/^missing\s*:?\s*/i, ''));
                if (parsed && parsed.name) result.vehicles.push(parsed);
            }
        }
        }
        result.vehicles = result.vehicles.filter(item => item.name && !/transport is needed|required transport/i.test(item.name));
        return result;
    }

    function normaliseSearchText(value) {
        return String(value || '').toLowerCase().normalize('NFKD').replace(/[^a-z0-9]+/g, ' ').trim();
    }

    function resourceSearchToken(value) {
        let token = normaliseSearchText(value);
        if (token.length > 4 && token.endsWith('ies')) token = `${token.slice(0, -3)}y`;
        else if (token.length > 3 && token.endsWith('s') && !token.endsWith('ss')) token = token.slice(0, -1);
        return token;
    }

    function requirementSearchParts(name) {
        const original = String(name || '');
        const acronyms = Array.from(original.matchAll(/\(([A-Z0-9-]{2,12})\)/g)).map(match => normaliseSearchText(match[1]));
        const cleaned = normaliseSearchText(original.replace(/\([^)]*\)/g, ' '));
        const stop = new Set(['vehicle', 'vehicles', 'unit', 'units', 'the', 'and', 'with', 'required', 'needed', 'personnel']);
        const tokens = cleaned.split(' ').filter(token => token.length > 1 && !stop.has(token)).map(resourceSearchToken).filter(Boolean);
        return { cleaned, acronyms, tokens };
    }

    function buildResourceGapVehicleContext() {
        const key = `${vehicleDataRevision}:${markerRegistryRevision}:${vehicleApiReady}:${personalVehicleApiCache.size}`;
        const now = Date.now();
        if (resourceGapVehicleContextCache.key === key && now - resourceGapVehicleContextCache.createdAt < RESOURCE_GAP_REFRESH_MS) return resourceGapVehicleContextCache;

        const markerById = new Map(getVehicleMarkerLayers().map(marker => [vehicleRecordId(marker), marker]).filter(([id]) => id !== null));
        const available = [];
        const byToken = new Map();
        for (const vehicle of getPersonalVehicleRecords()) {
        if (vehicleStatusBucket(vehicle) !== 'available' || vehicleTargetInfo(vehicle).type !== null) continue;
        const signal = normaliseSearchText(vehicleSearchSignal(vehicle));
        if (!signal) continue;
        const tokens = new Set(signal.split(' ').map(resourceSearchToken).filter(Boolean));
        const prepared = { vehicle, signal, tokens, point: vehicleCoordinates(vehicle, markerById) };
        available.push(prepared);
        for (const token of tokens) {
            const bucket = byToken.get(token) || [];
            bucket.push(prepared);
            byToken.set(token, bucket);
        }
        }
        resourceGapVehicleContextCache = { key, createdAt: now, available, byToken };
        return resourceGapVehicleContextCache;
    }

    function preparedVehicleMatchesRequirement(prepared, parts) {
        if (!prepared?.signal) return false;
        if (parts.acronyms.some(acronym => acronym && prepared.tokens.has(resourceSearchToken(acronym)))) return true;
        if (parts.cleaned && prepared.signal.includes(parts.cleaned)) return true;
        if (!parts.tokens.length) return false;
        const matched = parts.tokens.filter(token => prepared.tokens.has(token)).length;
        return matched >= Math.max(1, Math.ceil(parts.tokens.length * 0.6));
    }

    function vehicleCoordinates(vehicle, markerById = null) {
        const id = vehicleRecordId(vehicle);
        const marker = id !== null ? markerById?.get(id) : null;
        const source = vehicle || marker || {};
        const latlng = source._latlng || source.latlng || source.position || source.options?.latlng || marker?._latlng;
        const lat = Number(source.lat ?? source.latitude ?? latlng?.lat);
        const lng = Number(source.lng ?? source.lon ?? source.longitude ?? latlng?.lng ?? latlng?.lon);
        return Number.isFinite(lat) && Number.isFinite(lng) ? { lat, lng } : null;
    }

    function haversineMiles(a, b) {
        if (!a || !b) return null;
        const toRad = value => Number(value) * Math.PI / 180;
        const lat1 = toRad(a.lat), lat2 = toRad(b.lat);
        const dLat = lat2 - lat1, dLng = toRad(b.lng) - toRad(a.lng);
        const h = Math.sin(dLat / 2) ** 2 + Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLng / 2) ** 2;
        return 3958.7613 * 2 * Math.atan2(Math.sqrt(h), Math.sqrt(Math.max(0, 1 - h)));
    }

    function analyseResourceGap(snapshot, context = buildResourceGapVehicleContext(), requirements = resourceRequirementsFromSnapshot(snapshot)) {
        const radiusMi = Number(state.resourceGap.radiusMi) || 25;
        const cacheKey = `${snapshot?.missionId}:${requirements.raw}:${radiusMi}:${context.key}`;
        const cached = resourceGapAnalysisCache.get(cacheKey);
        const now = Date.now();
        if (cached && now - cached.createdAt < RESOURCE_GAP_REFRESH_MS) return cached;

        const missionPoint = Number.isFinite(Number(snapshot?.lat)) && Number.isFinite(Number(snapshot?.lng))
        ? { lat: Number(snapshot.lat), lng: Number(snapshot.lng) }
        : null;
        const rows = requirements.vehicles.map(requirement => {
        const parts = requirementSearchParts(requirement.name);
        const candidateSet = new Set();
        for (const token of [...parts.tokens, ...parts.acronyms.map(resourceSearchToken)]) {
            for (const prepared of context.byToken?.get(token) || []) candidateSet.add(prepared);
        }
        const candidates = candidateSet.size ? candidateSet : context.available;
        let nearby = 0;
        let nearest = null;
        for (const prepared of candidates) {
            if (!preparedVehicleMatchesRequirement(prepared, parts)) continue;
            const distance = haversineMiles(missionPoint, prepared.point);
            if (distance === null || distance > radiusMi) continue;
            nearby += 1;
            if (nearest === null || distance < nearest) nearest = distance;
        }
        return { ...requirement, nearby, nearest };
        });
        const analysis = {
        createdAt: now,
        requirements,
        rows,
        radiusMi,
        missingTypes: rows.length,
        uncoveredTypes: rows.filter(row => row.nearby < row.count).length
        };
        if (resourceGapAnalysisCache.size > 180) {
        for (const [key, value] of resourceGapAnalysisCache) {
            if (now - Number(value?.createdAt || 0) > RESOURCE_GAP_REFRESH_MS * 2) resourceGapAnalysisCache.delete(key);
        }
        if (resourceGapAnalysisCache.size > 180) resourceGapAnalysisCache.clear();
        }
        resourceGapAnalysisCache.set(cacheKey, analysis);
        return analysis;
    }

    function makeResourceGapIcon(analysis) {
        const count = Math.max(1, Number(analysis?.missingTypes) || 1);
        const uncovered = Number(analysis?.uncoveredTypes) > 0;
        return pageWindow.L.divIcon({
        className: 'mcms-resource-gap-icon',
        html: `<span class="mcms-resource-gap-badge ${uncovered ? 'mcms-gap-uncovered' : ''}" title="${uncovered ? 'Resource shortfall detected' : 'Missing resource types'}">⚠ ${escapeHtml(count)}</span>`,
        iconSize: [0, 0], iconAnchor: [0, -22]
        });
    }

    function updateResourceGapLabels() {
        if (state.economyMode && economyMapMoving) return;
        runtimeClearTimeout(resourceGapTimer);
        resourceGapTimer = null;
        if (!state.resourceGap.enabled) { clearResourceGapLabels(); return; }
        const map = findLeafletMapInstance(false);
        if (!map || !pageWindow.L?.layerGroup || !pageWindow.L?.marker || !pageWindow.L?.divIcon) { clearResourceGapLabels(); return; }
        const pane = ensureMissionFloatPane(map);
        if (!pane) { clearResourceGapLabels(); return; }
        if (!resourceGapGroup || resourceGapGroup._map !== map) {
        clearResourceGapLabels();
        resourceGapGroup = pageWindow.L.layerGroup();
        resourceGapGroup.__mcmsResourceGapLayer = true;
        resourceGapGroup.addTo(map);
        }
        const now = Date.now();
        const context = buildResourceGapVehicleContext();
        const economyBounds = state.economyMode ? economyPaddedBounds(map, 0.08) : null;
        const active = new Set();
        for (const marker of getMissionMarkerIndex().markers) {
        const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
        const snapshot = missionId === null ? null : (liveMissionSnapshots.get(missionId) || missionSnapshotFromMarker(marker, now));
        if (!snapshot) continue;
        if (snapshot.source === 'personal' && !state.visibility.myMissions) continue;
        if (snapshot.source === 'alliance' && !state.visibility.allianceMissions) continue;
        const requirements = resourceRequirementsFromSnapshot(snapshot);
        if (!requirements.vehicles.length) continue;
        let latLng = null;
        try { latLng = marker.getLatLng?.(); } catch (err) {}
        if (!latLng) continue;
        if (economyBounds && !economyBounds.contains?.(latLng)) continue;
        const analysis = analyseResourceGap(snapshot, context, requirements);
        active.add(snapshot.missionId);
        const signature = `${analysis.missingTypes}:${analysis.uncoveredTypes}:${analysis.rows.map(row => `${row.count}:${row.nearby}:${row.nearest === null ? 'x' : row.nearest.toFixed(1)}`).join('|')}:${state.resourceGap.radiusMi}`;
        let label = resourceGapLabels.get(snapshot.missionId);
        if (!label) {
            label = pageWindow.L.marker(latLng, { interactive: false, keyboard: false, bubblingMouseEvents: false, pane, zIndexOffset: 0, icon: makeResourceGapIcon(analysis) });
            label.__mcmsResourceGapSignature = signature;
            label.__mcmsResourceGapLabel = true;
            label.addTo(resourceGapGroup);
            resourceGapLabels.set(snapshot.missionId, label);
        } else {
            try { label.setLatLng(latLng); } catch (err) {}
            if (label.__mcmsResourceGapSignature !== signature) {
                label.__mcmsResourceGapSignature = signature;
                try { label.setIcon(makeResourceGapIcon(analysis)); } catch (err) {}
            }
        }
        }
        for (const [missionId, label] of resourceGapLabels.entries()) {
        if (active.has(missionId)) continue;
        resourceGapLabels.delete(missionId);
        try { resourceGapGroup.removeLayer(label); } catch (err) {}
        }
    }

    function scheduleResourceGapRefresh(delay = 420) {
        runtimeClearTimeout(resourceGapTimer);
        resourceGapTimer = runtimeSetTimeout(updateResourceGapLabels, state.economyMode ? Math.max(1500, delay) : delay);
    }

    function economyPaddedBounds(map = findLeafletMapInstance(false), padding = 0.35) {
        if (!map?.getBounds) return null;
        try {
        const bounds = map.getBounds();
        return typeof bounds?.pad === 'function' ? bounds.pad(padding) : bounds;
        } catch (err) { return null; }
    }

    function economyLayerIsProtected(layer) {
        if (!layer) return true;
        try {
        if (layer.isPopupOpen?.() || layer.getPopup?.()?.isOpen?.()) return true;
        } catch (err) {}
        const icon = layer._icon;
        return Boolean(icon?.matches?.(':hover, :focus, :focus-within') || icon?.classList?.contains('leaflet-marker-draggable') || icon?.classList?.contains('mcms-mission-lock-target'));
    }

    function economyLayerInsideBounds(layer, bounds) {
        if (!bounds || !layer?.getLatLng) return true;
        try { return Boolean(bounds.contains(layer.getLatLng())); } catch (err) { return true; }
    }

    function setEconomyLayerPresence(map, layer, shouldShow, hiddenSet) {
        if (!map || !layer || !hiddenSet) return;
        const onMap = typeof map.hasLayer === 'function' ? map.hasLayer(layer) : Boolean(layer._map);
        if (shouldShow) {
        if (hiddenSet.delete(layer) && !onMap && typeof map.addLayer === 'function') map.addLayer(layer);
        return;
        }
        hiddenSet.add(layer);
        if (onMap && typeof map.removeLayer === 'function') map.removeLayer(layer);
    }

    function synchroniseEconomyLayers(map = findLeafletMapInstance(false)) {
        runtimeClearTimeout(economyLayerSyncTimer);
        economyLayerSyncTimer = null;
        if (!state.economyMode || !map || economyLayerEnforcement) return;
        const bounds = economyPaddedBounds(map, 0.12);
        if (!bounds) return;
        const vehicleLayers = getVehicleMarkerLayers().filter(Boolean);
        const buildingLayers = getBuildingMarkerLayers().filter(Boolean);
        const vehicleSet = new Set(vehicleLayers);
        const buildingSet = new Set(buildingLayers);
        const personalBuildingIds = getPersonalBuildingIds();

        economyLayerEnforcement = true;
        try {
        for (const layer of Array.from(economyHiddenVehicleLayers)) {
            if (!vehicleSet.has(layer)) economyHiddenVehicleLayers.delete(layer);
        }
        for (const layer of vehicleLayers) {
            const visible = state.visibility.vehicles && (economyLayerIsProtected(layer) || economyLayerInsideBounds(layer, bounds));
            setEconomyLayerPresence(map, layer, visible, economyHiddenVehicleLayers);
        }

        for (const layer of Array.from(economyHiddenBuildingLayers)) {
            if (!buildingSet.has(layer)) economyHiddenBuildingLayers.delete(layer);
        }
        for (const layer of buildingLayers) {
            const personal = isPersonalBuildingLayer(layer, personalBuildingIds);
            const allowedByUser = !personal || state.visibility.buildings;
            const visible = allowedByUser && (economyLayerIsProtected(layer) || economyLayerInsideBounds(layer, bounds));
            setEconomyLayerPresence(map, layer, visible, economyHiddenBuildingLayers);
        }
        } catch (err) {
        console.debug(`[${SCRIPT.name}] Economy marker culling skipped.`, err);
        } finally {
        economyLayerEnforcement = false;
        }
    }

    function scheduleEconomyLayerSync(delay = 120) {
        runtimeClearTimeout(economyLayerSyncTimer);
        economyLayerSyncTimer = runtimeSetTimeout(() => synchroniseEconomyLayers(), Math.max(0, Number(delay) || 0));
    }

    function restoreEconomyLayers(map = findLeafletMapInstance(false)) {
        runtimeClearTimeout(economyLayerSyncTimer);
        economyLayerSyncTimer = null;
        if (!map) {
        if (runtime.destroyed) { economyHiddenVehicleLayers.clear(); economyHiddenBuildingLayers.clear(); }
        else runtimeSetTimeout(() => restoreEconomyLayers(findLeafletMapInstance(false)), 220);
        return;
        }
        if (economyLayerEnforcement) return;
        const vehicleSet = new Set(getVehicleMarkerLayers().filter(Boolean));
        const buildingSet = new Set(getBuildingMarkerLayers().filter(Boolean));
        const personalBuildingIds = getPersonalBuildingIds();
        economyLayerEnforcement = true;
        try {
        for (const layer of Array.from(economyHiddenVehicleLayers)) {
            economyHiddenVehicleLayers.delete(layer);
            if (!vehicleSet.has(layer)) continue;
            const onMap = typeof map.hasLayer === 'function' ? map.hasLayer(layer) : Boolean(layer._map);
            if (!onMap && typeof map.addLayer === 'function') map.addLayer(layer);
        }
        for (const layer of Array.from(economyHiddenBuildingLayers)) {
            economyHiddenBuildingLayers.delete(layer);
            if (!buildingSet.has(layer)) continue;
            if (isPersonalBuildingLayer(layer, personalBuildingIds) && !state.visibility.buildings) continue;
            const onMap = typeof map.hasLayer === 'function' ? map.hasLayer(layer) : Boolean(layer._map);
            if (!onMap && typeof map.addLayer === 'function') map.addLayer(layer);
        }
        } catch (err) {
        console.debug(`[${SCRIPT.name}] Economy marker restoration skipped.`, err);
        } finally {
        economyLayerEnforcement = false;
        }
    }

    function applyEconomyToLeafletLayer(map, layer) {
        const snapshot = economyLeafletOptionSnapshots.get(map);
        if (!snapshot || !layer?.options || (!layer._tiles && typeof layer.getTileUrl !== 'function') || snapshot.layerOptions.has(layer)) return;
        const values = {};
        for (const key of ['updateWhenIdle', 'updateWhenZooming', 'updateInterval', 'keepBuffer']) values[key] = layer.options[key];
        snapshot.layerOptions.set(layer, values);
        layer.options.updateWhenIdle = true;
        layer.options.updateWhenZooming = false;
        layer.options.updateInterval = 850;
        layer.options.keepBuffer = 0;
    }

    function applyLeafletEconomyPolicy(map = findLeafletMapInstance(false)) {
        if (!map || economyLeafletOptionSnapshots.has(map)) return;
        const snapshot = {
        mapOptions: {},
        layerOptions: new Map()
        };
        for (const key of ['zoomAnimation', 'fadeAnimation', 'markerZoomAnimation', 'inertia', 'wheelDebounceTime', 'wheelPxPerZoomLevel']) snapshot.mapOptions[key] = map.options?.[key];
        try {
        map.options.zoomAnimation = false;
        map.options.fadeAnimation = false;
        map.options.markerZoomAnimation = false;
        map.options.inertia = false;
        map.options.wheelDebounceTime = Math.max(80, Number(map.options.wheelDebounceTime) || 0);
        map.options.wheelPxPerZoomLevel = Math.max(90, Number(map.options.wheelPxPerZoomLevel) || 0);
        map.eachLayer?.(layer => {
            if (!layer?.options || (!layer._tiles && typeof layer.getTileUrl !== 'function')) return;
            const values = {};
            for (const key of ['updateWhenIdle', 'updateWhenZooming', 'updateInterval', 'keepBuffer']) values[key] = layer.options[key];
            snapshot.layerOptions.set(layer, values);
            layer.options.updateWhenIdle = true;
            layer.options.updateWhenZooming = false;
            layer.options.updateInterval = 850;
            layer.options.keepBuffer = 0;
        });
        } catch (err) {}
        economyLeafletOptionSnapshots.set(map, snapshot);
    }

    function restoreLeafletEconomyPolicy(map = null) {
        const targets = map ? [[map, economyLeafletOptionSnapshots.get(map)]] : Array.from(economyLeafletOptionSnapshots.entries());
        for (const [target, snapshot] of targets) {
        if (!target || !snapshot) continue;
        try {
            Object.assign(target.options, snapshot.mapOptions);
            for (const [layer, values] of snapshot.layerOptions.entries()) if (layer?.options) Object.assign(layer.options, values);
        } catch (err) {}
        economyLeafletOptionSnapshots.delete(target);
        }
    }

    function setEconomyMode(enabled, announce = false) {
        const next = Boolean(enabled);
        if (state.economyMode === next) {
        const existingMap = findLeafletMapInstance(false);
        if (next) { applyLeafletEconomyPolicy(existingMap); scheduleEconomyLayerSync(0); }
        else {
            runtimeClearTimeout(economyLayerSyncTimer);
            economyLayerSyncTimer = null;
            restoreEconomyLayers(existingMap);
            restoreLeafletEconomyPolicy();
            disposeEconomyCanvasRenderer(existingMap);
            document.documentElement?.setAttribute('data-mcms-map-moving', 'false');
            economyDeferredMapRefresh = false;
            economyDeferredDomMutation = false;
        }
        updateUI();
        return;
        }
        state.economyMode = next;
        saveState();
        applyRootAttributes();
        const map = findLeafletMapInstance(false);
        if (next) {
        applyLeafletEconomyPolicy(map);
        scheduleEconomyLayerSync(0);
        } else {
        runtimeClearTimeout(economyLayerSyncTimer);
        economyLayerSyncTimer = null;
        restoreEconomyLayers(map);
        restoreLeafletEconomyPolicy();
        document.documentElement?.setAttribute('data-mcms-map-moving', 'false');
        try { map?.invalidateSize?.({ animate: false }); } catch (err) {}
        }
        runtimeRescheduleTasks(!next);
        coverageRenderSignature = '';
        majorIncidentFeedRenderSignature = '';
        economyDeferredMapRefresh = false;
        economyDeferredDomMutation = false;
        if (!next) disposeEconomyCanvasRenderer(map);
        if (state.coverage.enabled) { clearCoverageRings(); scheduleCoverageRefresh(); }
        scheduleMajorIncidentFeedRender(0);
        scheduleEnabledMapRefreshes({ includeSnapshots: true, positionPanel: true });
        updateUI();
        if (announce) showToast(next ? 'Maximum Economy Mode on · decorative effects stopped and map work minimised' : 'Economy Mode off · full rendering restored');
    }

    function getVehicleMarkerLayers() {
        return getCachedRegistry('vehicle_markers');
    }

    function getBuildingMarkerLayers() {
        return getCachedRegistry('building_markers');
    }

    function getBuildingMarkerCache() {
        return getCachedRegistry('building_markers_cache', PERSONAL_BUILDING_ID_CACHE_MS);
    }

    function getPersonalBuildingIds() {
        const currentUserId = currentUserIdCached();
        if (currentUserId === null) return new Set();
        const now = Date.now();
        if (
        personalBuildingIdsCache.revision === buildingRegistryRevision &&
        personalBuildingIdsCache.userId === currentUserId &&
        now - personalBuildingIdsCache.createdAt <= PERSONAL_BUILDING_ID_CACHE_MS
        ) return personalBuildingIdsCache.values;

        const personalBuildingIds = new Set();
        for (const building of getBuildingMarkerCache()) {
        if (!building || building.user_id === undefined || building.user_id === null) continue;
        const buildingId = building.id ?? building.building_id;
        if (buildingId === undefined || buildingId === null) continue;
        if (String(building.user_id) === currentUserId) personalBuildingIds.add(String(buildingId));
        }
        personalBuildingIdsCache = {
        revision: buildingRegistryRevision,
        userId: currentUserId,
        createdAt: now,
        values: personalBuildingIds
        };
        return personalBuildingIds;
    }

    function getBuildingLayerId(layer) {
        if (!layer) return null;
        const buildingId = layer.building_id ?? layer.buildingId ?? layer.options?.building_id ?? layer.options?.buildingId ?? layer.building?.id ?? layer.options?.building?.id;
        return buildingId === undefined || buildingId === null ? null : String(buildingId);
    }

    function isPersonalBuildingLayer(layer, personalBuildingIds = getPersonalBuildingIds()) {
        if (!layer) return false;

        const buildingId = getBuildingLayerId(layer);
        if (buildingId === null) return false;
        if (personalBuildingIds.has(buildingId)) return true;

        const currentUserId = currentUserIdCached();
        if (currentUserId === null) return false;

        const layerUserId = layer.user_id ?? layer.userId ?? layer.options?.user_id ?? layer.options?.userId ?? layer.building?.user_id ?? layer.options?.building?.user_id;
        return layerUserId !== undefined && layerUserId !== null && String(layerUserId) === currentUserId;
    }

    function getPersonalBuildingMarkerIcons() {
        const personalBuildingIds = getPersonalBuildingIds();
        const personalBuildingMarkerIcons = new Set();

        for (const marker of getBuildingMarkerLayers()) {
        if (!marker._icon || marker._icon.nodeType !== 1) continue;
        if (isPersonalBuildingLayer(marker, personalBuildingIds)) personalBuildingMarkerIcons.add(marker._icon);
        }

        return personalBuildingMarkerIcons;
    }

    function markPersonalBuildingIcon(icon) {
        applyMarkerType(icon, 'personal-building');
    }


    function markPersonalBuildingLayerIfOwned(layer, personalBuildingIds = getPersonalBuildingIds()) {
        if (!isPersonalBuildingLayer(layer, personalBuildingIds)) return false;
        if (layer._icon) markPersonalBuildingIcon(layer._icon);
        return true;
    }

    function restorePersonalBuildingLayerOpacity(layer) {
        const originalOpacity = personalBuildingLayerOpacity.get(layer);
        personalBuildingLayerOpacity.delete(layer);
        try {
        if (typeof layer?.setOpacity === 'function') layer.setOpacity(Number.isFinite(originalOpacity) ? originalOpacity : 1);
        } catch (err) {}
    }

    function hidePersonalBuildingLayer(map, layer, personalBuildingIds = getPersonalBuildingIds()) {
        if (!map || !markPersonalBuildingLayerIfOwned(layer, personalBuildingIds)) return false;

        hiddenPersonalBuildingLayers.add(layer);

        if (!personalBuildingLayerOpacity.has(layer)) {
        const currentOpacity = Number(layer.options?.opacity);
        personalBuildingLayerOpacity.set(layer, Number.isFinite(currentOpacity) ? currentOpacity : 1);
        }

        try {
        if (typeof layer.setOpacity === 'function') layer.setOpacity(0);
        } catch (err) {}

        try {
        const isOnMap = typeof map.hasLayer === 'function' ? map.hasLayer(layer) : Boolean(layer._map);
        if (isOnMap && typeof map.removeLayer === 'function') {
            const previousEnforcementState = enforcingPersonalBuildingVisibility;
            enforcingPersonalBuildingVisibility = true;
            try { map.removeLayer(layer); }
            finally { enforcingPersonalBuildingVisibility = previousEnforcementState; }
        }
        } catch (err) {}

        return true;
    }

    function synchronisePersonalBuildingVisibility(map = findLeafletMapInstance(false)) {
        if (!map || enforcingPersonalBuildingVisibility) return;

        const currentBuildingLayers = getBuildingMarkerLayers().filter(Boolean);
        const currentBuildingLayerSet = new Set(currentBuildingLayers);
        const personalBuildingIds = getPersonalBuildingIds();

        if (!state.visibility.buildings) {
        for (const layer of Array.from(hiddenPersonalBuildingLayers)) {
            if (!currentBuildingLayerSet.has(layer)) {
                hiddenPersonalBuildingLayers.delete(layer);
                restorePersonalBuildingLayerOpacity(layer);
            }
        }

        for (const layer of currentBuildingLayers) hidePersonalBuildingLayer(map, layer, personalBuildingIds);
        return;
        }

        enforcingPersonalBuildingVisibility = true;
        try {
        const layersToRestore = new Set([...hiddenPersonalBuildingLayers, ...personalBuildingLayerOpacity.keys()]);
        for (const layer of layersToRestore) {
            const wasHidden = hiddenPersonalBuildingLayers.delete(layer);
            restorePersonalBuildingLayerOpacity(layer);
            if (!wasHidden || !currentBuildingLayerSet.has(layer)) continue;
            const isOnMap = typeof map.hasLayer === 'function' ? map.hasLayer(layer) : Boolean(layer._map);
            if (!isOnMap && typeof map.addLayer === 'function') map.addLayer(layer);
        }
        } catch (err) {
        } finally {
        enforcingPersonalBuildingVisibility = false;
        }
    }

    function getVehicleMarkerIcons() {
        const vehicleMarkerIcons = new Set();

        for (const marker of getVehicleMarkerLayers()) {
        if (!marker || !marker._icon || marker._icon.nodeType !== 1) continue;
        vehicleMarkerIcons.add(marker._icon);
        }

        return vehicleMarkerIcons;
    }

    function markVehicleIcon(icon) {
        applyMarkerType(icon, 'vehicle');
    }

    function synchroniseVehicleMarkerClasses() {
        const vehicleMarkerIcons = getVehicleMarkerIcons();
        for (const icon of vehicleMarkerIcons) markVehicleIcon(icon);
        return vehicleMarkerIcons;
    }

    function getMissionIconsByOwnership() {
        const personalMissionIcons = new Set();
        const allianceMissionIcons = new Set();
        const normalisedCurrentUserId = currentUserIdCached();
        if (normalisedCurrentUserId === null) return { personalMissionIcons, allianceMissionIcons };
        for (const marker of getMissionMarkerLayers()) {
        if (!marker || marker.mission_id === undefined || marker.mission_id === null) continue;
        if (!marker._icon || marker._icon.nodeType !== 1) continue;
        if (marker.user_id === undefined || marker.user_id === null) continue;
        if (String(marker.user_id) === normalisedCurrentUserId) personalMissionIcons.add(marker._icon);
        else allianceMissionIcons.add(marker._icon);
        }

        return { personalMissionIcons, allianceMissionIcons };
    }

    const MARKER_CLASS_NAMES = [
        'mcms-marker-mission', 'mcms-marker-my-mission', 'mcms-marker-alliance-mission',
        'mcms-marker-building', 'mcms-marker-personal-building', 'mcms-marker-vehicle', 'mcms-marker-unknown'
    ];

    function markerClassesForType(type) {
        if (type === 'vehicle') return ['mcms-marker-vehicle'];
        if (type === 'personal-building') return ['mcms-marker-building', 'mcms-marker-personal-building'];
        if (type === 'building') return ['mcms-marker-building'];
        if (type === 'alliance-mission') return ['mcms-marker-mission', 'mcms-marker-alliance-mission'];
        if (type === 'my-mission') return ['mcms-marker-mission', 'mcms-marker-my-mission'];
        return ['mcms-marker-unknown'];
    }

    function markerTypeIsApplied(icon, type) {
        if (!icon?.classList || icon.dataset?.mcmsMarkerKind !== type) return false;
        const desired = new Set(markerClassesForType(type));
        for (const className of MARKER_CLASS_NAMES) {
        if (icon.classList.contains(className) !== desired.has(className)) return false;
        }
        if (type === 'vehicle' && icon.getAttribute('data-mcms-vehicle-marker') !== 'true') return false;
        if (type === 'personal-building' && icon.getAttribute('data-mcms-personal-building-marker') !== 'true') return false;
        return true;
    }

    function applyMarkerType(icon, type) {
        if (!icon || icon.nodeType !== 1 || !icon.classList) return;
        const normalisedType = ['vehicle', 'personal-building', 'building', 'alliance-mission', 'my-mission'].includes(type) ? type : 'unknown';
        if (markerTypeIsApplied(icon, normalisedType)) return;
        const desired = new Set(markerClassesForType(normalisedType));
        for (const className of MARKER_CLASS_NAMES) {
        const shouldHave = desired.has(className);
        if (icon.classList.contains(className) !== shouldHave) icon.classList.toggle(className, shouldHave);
        }
        if (normalisedType === 'vehicle') {
        if (icon.getAttribute('data-mcms-vehicle-marker') !== 'true') icon.setAttribute('data-mcms-vehicle-marker', 'true');
        if (icon.hasAttribute('data-mcms-personal-building-marker')) icon.removeAttribute('data-mcms-personal-building-marker');
        } else if (normalisedType === 'personal-building') {
        if (icon.getAttribute('data-mcms-personal-building-marker') !== 'true') icon.setAttribute('data-mcms-personal-building-marker', 'true');
        if (icon.hasAttribute('data-mcms-vehicle-marker')) icon.removeAttribute('data-mcms-vehicle-marker');
        } else {
        if (icon.hasAttribute('data-mcms-personal-building-marker')) icon.removeAttribute('data-mcms-personal-building-marker');
        if (icon.hasAttribute('data-mcms-vehicle-marker')) icon.removeAttribute('data-mcms-vehicle-marker');
        }
        if (icon.dataset) icon.dataset.mcmsMarkerKind = normalisedType;
    }

    function classifyMarkersNow() {
        const mapEl = getLargestLeafletMap();
        if (!mapEl) return;

        const { personalMissionIcons, allianceMissionIcons } = getMissionIconsByOwnership();
        const vehicleMarkerIcons = getVehicleMarkerIcons();
        const personalBuildingMarkerIcons = getPersonalBuildingMarkerIcons();

        for (const icon of mapEl.querySelectorAll('.leaflet-marker-icon')) {
        const type = personalMissionIcons.has(icon)
            ? 'my-mission'
            : allianceMissionIcons.has(icon)
                ? 'alliance-mission'
                : vehicleMarkerIcons.has(icon)
                    ? 'vehicle'
                    : personalBuildingMarkerIcons.has(icon) || icon.getAttribute('data-mcms-personal-building-marker') === 'true'
                        ? 'personal-building'
                        : classifyMarker(icon);
        applyMarkerType(icon, type);
        }
    }

    function scheduleMarkerStateSync(delay = 20, trailing = false) {
        const timerName = trailing ? 'markerStateTrailingTimer' : 'markerStateSyncTimer';
        const currentTimer = trailing ? markerStateTrailingTimer : markerStateSyncTimer;
        runtimeClearTimeout(currentTimer);
        const callback = () => {
        if (trailing) markerStateTrailingTimer = null;
        else markerStateSyncTimer = null;
        if (runtime.destroyed || document.hidden) return;
        if (!state.visibility.vehicles || state.markerFocus) synchroniseVehicleMarkerClasses();
        if (!state.visibility.buildings) synchronisePersonalBuildingVisibility();
        };
        const id = runtimeSetTimeout(callback, Math.max(0, Number(delay) || 0));
        if (timerName === 'markerStateTrailingTimer') markerStateTrailingTimer = id;
        else markerStateSyncTimer = id;
    }

    function scheduleMarkerClassification() {
        runtimeClearTimeout(classifyTimer);
        classifyTimer = runtimeSetTimeout(classifyMarkersNow, state.economyMode ? 420 : 180);
    }

    function markerClassificationNeeded() {
        return Boolean(
        state.markerFocus || state.missionPulse ||
        !state.visibility.vehicles || !state.visibility.buildings ||
        !state.visibility.myMissions || !state.visibility.allianceMissions
        );
    }

    function vehicleDataNeeded() {
        return Boolean(
        state.unitCommitment || state.allianceCredits || state.resourceGap.enabled ||
        state.stuckDetector.enabled ||
        document.getElementById(SCRIPT.vehicleStatusId)?.classList?.contains('mcms-open') ||
        transportSweepRuntime.running
        );
    }

    function missionSnapshotsNeeded() {
        return Boolean(
        state.payoutFlash.enabled || state.transportWatcher || state.stuckDetector.enabled ||
        state.missionSpawn.enabled || state.allianceCredits || state.missionAge ||
        state.unitCommitment || state.resourceGap.enabled || state.majorIncidentFeed.enabled ||
        operationalUiIsVisible()
        );
    }

    function isToolkitLeafletLayer(layer) {
        return Boolean(layer && (
        layer.__mcmsCoverageRing || layer.__mcmsCoverageLayer ||
        layer.__mcmsAllianceCreditLabel || layer.__mcmsAllianceCreditLayer ||
        layer.__mcmsMissionAgeLabel || layer.__mcmsMissionAgeLayer ||
        layer.__mcmsUnitCommitmentLabel || layer.__mcmsUnitCommitmentLayer ||
        layer.__mcmsTransportWatcherLabel || layer.__mcmsTransportWatcherLayer ||
        layer.__mcmsResourceGapLabel || layer.__mcmsResourceGapLayer ||
        layer.__mcmsStuckMissionLabel || layer.__mcmsStuckMissionLayer ||
        layer.__mcmsMissionSpawnLabel || layer.__mcmsMissionSpawnRing || layer.__mcmsMissionSpawnLayer ||
        layer.__mcmsMissionLockOnMarker || layer.__mcmsMissionLockOnLayer
        ));
    }

    let enabledMapRefreshTimer = null;
    let pendingEnabledMapRefresh = { includeSnapshots: false, positionPanel: false, refreshOperational: false, fullRefresh: false };

    function flushEnabledMapRefreshes() {
        enabledMapRefreshTimer = null;
        if (runtime.destroyed) return;
        const request = pendingEnabledMapRefresh;
        pendingEnabledMapRefresh = { includeSnapshots: false, positionPanel: false, refreshOperational: false, fullRefresh: false };

        if (request.fullRefresh && markerClassificationNeeded()) scheduleMarkerClassification();
        if (state.coverage.enabled) scheduleCoverageRefresh();
        if (request.fullRefresh && state.allianceCredits) scheduleAllianceCreditRefresh();
        if (request.fullRefresh && state.missionAge) scheduleMissionAgeRefresh();
        if (request.fullRefresh && state.unitCommitment) scheduleUnitCommitmentRefresh();
        if (request.fullRefresh && state.resourceGap.enabled) scheduleResourceGapRefresh();
        if (request.includeSnapshots && missionSnapshotsNeeded()) {
        scheduleMissionSnapshotRefresh();
        } else if (request.fullRefresh) {
        if (state.transportWatcher) scheduleTransportWatcherRefresh();
        if (state.stuckDetector.enabled) scheduleStuckMissionRefresh();
        }
        if (request.refreshOperational && operationalUiIsVisible()) scheduleOperationalPanelsRender(800);
        if (request.positionPanel && !dragState) schedulePanelPosition(true, 60);
    }

    function scheduleEnabledMapRefreshes({ includeSnapshots = true, positionPanel = false, refreshOperational = true, mapOnly = false } = {}) {
        pendingEnabledMapRefresh.includeSnapshots ||= Boolean(includeSnapshots);
        pendingEnabledMapRefresh.positionPanel ||= Boolean(positionPanel);
        pendingEnabledMapRefresh.refreshOperational ||= Boolean(refreshOperational);
        pendingEnabledMapRefresh.fullRefresh ||= !mapOnly;
        if (state.economyMode && economyMapMoving) return;
        if (enabledMapRefreshTimer !== null) return;
        enabledMapRefreshTimer = runtimeSetTimeout(flushEnabledMapRefreshes, state.economyMode ? 180 : 35);
    }

    function reconcileFeatureRefreshes({ includeSnapshots = true, positionPanel = false } = {}) {
        if (!state.coverage.enabled) clearCoverageRings();
        if (!state.allianceCredits) clearAllianceCreditLabels();
        if (!state.missionAge) clearMissionAgeLabels();
        if (!state.unitCommitment) clearUnitCommitmentLabels();
        if (!state.transportWatcher) clearTransportWatcherLabels();
        if (!state.stuckDetector.enabled) clearStuckMissionLabels();
        if (!state.resourceGap.enabled) {
        clearResourceGapLabels();
        resourceGapAnalysisCache.clear();
        resourceGapVehicleContextCache = { key: '', createdAt: 0, available: [], byToken: new Map() };
        }
        if (state.majorIncidentFeed.enabled) scheduleMajorIncidentFeedRender(80);
        else removeMajorIncidentFeed();
        scheduleEnabledMapRefreshes({ includeSnapshots, positionPanel });
    }

    function detachMapEvents(map) {
        if (!map) return;
        for (let index = runtime.mapBindings.length - 1; index >= 0; index -= 1) {
        const binding = runtime.mapBindings[index];
        if (binding.map !== map) continue;
        try { binding.map.off(binding.types, binding.handler); } catch (err) {}
        runtime.mapBindings.splice(index, 1);
        }
    }

    function findLeafletMapInstance(showStatus = true) {
        const mapEl = getLargestLeafletMap();
        if (!mapEl) {
        detachMapEvents(cachedMap);
        cachedMap = null;
        cachedMapElement = null;
        return null;
        }

        if (cachedMap && typeof cachedMap.getContainer === 'function') {
        try {
            const container = cachedMap.getContainer();
            if (container === mapEl && container?.isConnected !== false) return cachedMap;
        } catch (err) {}
        detachMapEvents(cachedMap);
        cachedMap = null;
        cachedMapElement = null;
        }

        const now = Date.now();
        if (now - mapDiscoveryLastAttempt < MAP_DISCOVERY_RETRY_MS) return null;
        mapDiscoveryLastAttempt = now;

        const candidates = [];
        const seen = new Set();
        const candidateRoots = Array.from(new Set([pageWindow, window].filter(Boolean)));
        const names = [
        'map', 'missionMap', 'mission_map', 'missionChiefMap', 'missionchiefMap',
        'leafletMap', 'leaflet_map', 'mainMap', 'gameMap', 'mapInstance',
        'osmMap', 'osm_map'
        ];

        const addCandidate = value => {
        if (!value || seen.has(value) || (typeof value !== 'object' && typeof value !== 'function')) return;
        try {
            if (typeof value.getCenter === 'function' && typeof value.setView === 'function' && typeof value.getZoom === 'function' && typeof value.addLayer === 'function') {
                seen.add(value);
                candidates.push(value);
            }
        } catch (err) {}
        };

        for (const root of candidateRoots) {
        for (const name of names) {
            try { addCandidate(root[name]); } catch (err) {}
        }
        }

        // Scan data properties without invoking arbitrary page getters. MissionChief and
        // extensions expose many globals; reading every accessor was an avoidable hot path.
        for (const root of candidateRoots) {
        let properties;
        try { properties = Object.getOwnPropertyNames(root); } catch (err) { continue; }
        const prioritised = properties.filter(name => /map|leaflet/i.test(name));
        const fallback = properties.filter(name => !/map|leaflet/i.test(name)).slice(0, 160);
        for (const prop of [...prioritised, ...fallback]) {
            if (candidates.length >= 80) break;
            try {
                const descriptor = Object.getOwnPropertyDescriptor(root, prop);
                if (descriptor && Object.prototype.hasOwnProperty.call(descriptor, 'value')) addCandidate(descriptor.value);
            } catch (err) {}
        }
        }

        for (const map of candidates) {
        try {
            if (map.getContainer?.() === mapEl) {
                cachedMap = map;
                cachedMapElement = mapEl;
                attachMapEvents(map);
                return map;
            }
        } catch (err) {}
        }

        // Only use a container-agnostic fallback when exactly one credible map exists.
        if (candidates.length === 1) {
        cachedMap = candidates[0];
        cachedMapElement = mapEl;
        attachMapEvents(cachedMap);
        return cachedMap;
        }

        if (showStatus) setStatus('Leaflet map object not detected. Map jumps/rings may be unavailable on this page.');
        return null;
    }

    function attachMapEvents(map) {
        if (runtime.destroyed || !map || runtime.mapBindings.some(binding => binding.map === map)) return;

        const inferScope = layer => {
        if (!layer) return 'all';
        if (normaliseMissionId(layer.mission_id ?? layer.missionId ?? layer.options?.mission_id ?? layer.options?.missionId) !== null) return 'mission';
        if (getBuildingLayerId(layer) !== null) return 'building';
        const vehicleId = layer.vehicle_id ?? layer.vehicleId ?? layer.options?.vehicle_id ?? layer.options?.vehicleId ?? layer.params?.vehicle_id ?? layer.params?.vehicleId;
        if (vehicleId !== undefined && vehicleId !== null && vehicleId !== '') return 'vehicle';
        return 'all';
        };

        const onLayerAdd = event => {
        const layer = event?.layer;
        if (isToolkitLeafletLayer(layer) || economyLayerEnforcement) return;
        if (state.economyMode) applyEconomyToLeafletLayer(map, layer);
        const scope = inferScope(layer);
        invalidateMarkerRegistryCaches(scope);
        if (state.economyMode && economyMapMoving) {
            economyDeferredMapRefresh = true;
            return;
        }

        const isVehicleLayer = scope === 'vehicle';
        if (isVehicleLayer && layer?._icon) markVehicleIcon(layer._icon);
        if (state.markerFocus && isVehicleLayer) scheduleMarkerStateSync(0, false);
        if (scope === 'building') {
            const isPersonalBuilding = markPersonalBuildingLayerIfOwned(layer);
            if (isPersonalBuilding && !state.visibility.buildings) hidePersonalBuildingLayer(map, layer);
        }
        scheduleEnabledMapRefreshes({ includeSnapshots: scope === 'mission' || scope === 'vehicle' || scope === 'all', positionPanel: false });
        if (state.economyMode && (scope === 'vehicle' || scope === 'building')) scheduleEconomyLayerSync(80);
        };

        const onLayerRemove = event => {
        const layer = event?.layer;
        if (isToolkitLeafletLayer(layer) || enforcingPersonalBuildingVisibility || economyLayerEnforcement) return;
        const scope = inferScope(layer);
        invalidateMarkerRegistryCaches(scope);
        if (state.economyMode && economyMapMoving) {
            economyDeferredMapRefresh = true;
            return;
        }
        scheduleEnabledMapRefreshes({ includeSnapshots: scope !== 'building', positionPanel: false });
        };

        const onMapMoveStart = () => {
        economyMapMoving = true;
        document.documentElement.setAttribute('data-mcms-map-moving', 'true');
        };

        const onMapMove = () => {
        economyMapMoving = false;
        document.documentElement.setAttribute('data-mcms-map-moving', 'false');
        const deferredRefresh = economyDeferredMapRefresh || economyDeferredDomMutation;
        economyDeferredMapRefresh = false;
        economyDeferredDomMutation = false;
        if (deferredRefresh) {
            invalidateMarkerRegistryCaches('all');
            ensureUi();
        }
        if (state.economyMode) scheduleEconomyLayerSync(80);
        if (!state.visibility.vehicles || state.markerFocus || (!enforcingPersonalBuildingVisibility && !state.visibility.buildings)) scheduleMarkerStateSync(0, false);
        scheduleEnabledMapRefreshes({ includeSnapshots: deferredRefresh, positionPanel: true, refreshOperational: false, mapOnly: !deferredRefresh });
        };

        try {
        map.on('layeradd', onLayerAdd);
        map.on('layerremove', onLayerRemove);
        map.on('movestart zoomstart', onMapMoveStart);
        map.on('moveend zoomend', onMapMove);
        runtime.mapBindings.push(
            { map, types: 'layeradd', handler: onLayerAdd },
            { map, types: 'layerremove', handler: onLayerRemove },
            { map, types: 'movestart zoomstart', handler: onMapMoveStart },
            { map, types: 'moveend zoomend', handler: onMapMove }
        );
        } catch (err) {}
    }

    function setMapView(lat, lng, zoom) {
        const map = findLeafletMapInstance(true);
        if (!map || typeof map.setView !== 'function') {
        showToast('Map jump unavailable');
        return false;
        }
        try {
        map.setView([lat, lng], zoom, state.economyMode ? { animate: false } : undefined);
        return true;
        } catch (err) {
        showToast('Map jump failed');
        return false;
        }
    }

    function economyLeafletPathRenderer(map) {
        if (!state.economyMode || !map || typeof pageWindow.L?.canvas !== 'function') return undefined;
        try {
        if (!economyCanvasRenderer || economyCanvasRenderer._map !== map) {
            const previousRenderer = economyCanvasRenderer;
            if (previousRenderer?._map && previousRenderer._map !== map) {
                try { previousRenderer._map.removeLayer?.(previousRenderer); } catch (err) {}
            }
            economyCanvasRenderer = pageWindow.L.canvas({ padding: 0.08, tolerance: 2 });
            economyCanvasRenderer.__mcmsEconomyRenderer = true;
        }
        return economyCanvasRenderer;
        } catch (err) { return undefined; }
    }

    function disposeEconomyCanvasRenderer(map = findLeafletMapInstance(false)) {
        const renderer = economyCanvasRenderer;
        economyCanvasRenderer = null;
        if (!renderer || !map) return;
        try { if (map.hasLayer?.(renderer)) map.removeLayer(renderer); } catch (err) {}
    }

    function visibleBuildingLayers(map) {
        if (!map) return [];
        const bounds = typeof map.getBounds === 'function' ? map.getBounds() : null;
        const layers = [];
        const seen = new Set();

        for (const layer of getBuildingMarkerLayers()) {
        if (!layer || seen.has(layer) || typeof layer.getLatLng !== 'function') continue;
        if (!isPersonalBuildingLayer(layer)) continue;
        try {
            if (typeof map.hasLayer === 'function' && !map.hasLayer(layer)) continue;
            const latLng = layer.getLatLng();
            if (!latLng || (bounds?.contains && !bounds.contains(latLng))) continue;
            seen.add(layer);
            layers.push(layer);
        } catch (err) {}
        }
        return layers;
    }

    function clearCoverageRings() {
        if (coverageGroup) {
        try { coverageGroup.clearLayers(); coverageGroup.remove(); } catch (err) {}
        }
        coverageGroup = null;
        coverageRenderSignature = '';
    }

    function updateCoverageRings() {
        if (state.economyMode && economyMapMoving) return;
        if (!state.coverage.enabled) { clearCoverageRings(); return; }
        const map = findLeafletMapInstance(false);

        if (!map || !pageWindow.L || typeof pageWindow.L.circle !== 'function' || typeof pageWindow.L.layerGroup !== 'function') {
        setStatus('Coverage rings need access to the active Leaflet map object.');
        return;
        }

        try {
        const layers = visibleBuildingLayers(map).slice(0, 200);
        const radiusMi = Number(state.coverage.radiusMi) || 10;
        const layerSignature = layers.map(layer => {
            const point = layer.getLatLng();
            return `${getBuildingLayerId(layer) ?? layer._leaflet_id ?? ''}:${Number(point.lat).toFixed(5)}:${Number(point.lng).toFixed(5)}`;
        }).join('|');
        const signature = `${radiusMi}:${buildingRegistryRevision}:${layerSignature}`;
        if (coverageGroup?._map === map && coverageRenderSignature === signature) return;

        if (!coverageGroup || coverageGroup._map !== map) {
            if (coverageGroup && typeof coverageGroup.remove === 'function') coverageGroup.remove();
            coverageGroup = pageWindow.L.layerGroup();
            coverageGroup.__mcmsCoverageLayer = true;
            coverageGroup.addTo(map);
        }
        coverageGroup.clearLayers();
        coverageRenderSignature = signature;

        const metres = radiusMi * 1609.344;
        const renderer = economyLeafletPathRenderer(map);
        for (const layer of layers) {
            const ring = pageWindow.L.circle(layer.getLatLng(), {
                radius: metres,
                renderer,
                interactive: false,
                color: '#56a9ff',
                weight: 1,
                opacity: 0.34,
                fillColor: '#56a9ff',
                fillOpacity: 0.035
            });
            ring.__mcmsCoverageRing = true;
            ring.addTo(coverageGroup);
        }

        setStatus(`Coverage rings: ${layers.length} visible personal building${layers.length === 1 ? '' : 's'}, ${radiusMi} mile radius.`);
        } catch (err) {
        coverageRenderSignature = '';
        setStatus('Coverage rings failed to draw on this map view.');
        }
    }

    function scheduleCoverageRefresh() {
        runtimeClearTimeout(coverageTimer);
        coverageTimer = runtimeSetTimeout(updateCoverageRings, state.economyMode ? 650 : 220);
    }


    function sanitiseBookmarkShortLabel(value) {
        return String(value || '')
        .normalize('NFKD')
        .replace(/[\u0300-\u036f]/gu, '')
        .toUpperCase()
        .replace(/[^A-Z0-9&/+ -]+/gu, ' ')
        .replace(/\s+/gu, ' ')
        .trim()
        .slice(0, SMART_BOOKMARK_LABEL_MAX);
    }

    function compactBookmarkWord(value, targetLength = SMART_BOOKMARK_SINGLE_WORD_MAX) {
        const original = String(value || '').normalize('NFKD').replace(/[\u0300-\u036f]/gu, '');
        const key = original.toLowerCase().replace(/[^a-z0-9]+/gu, '');
        if (!key) return '';
        if (SMART_BOOKMARK_WORDS[key]) return SMART_BOOKMARK_WORDS[key];

        let upper = key.toUpperCase();
        if (upper.length <= targetLength) return upper;
        upper = upper
        .replace(/BOROUGH$/u, 'BORO')
        .replace(/BURGH$/u, 'BRG')
        .replace(/FIELD$/u, 'FD')
        .replace(/SHIRE$/u, 'SHR')
        .replace(/INGTON$/u, 'NGTN')
        .replace(/CHESTER$/u, 'CHST');

        let compressed = upper.charAt(0) + upper.slice(1).replace(/[AEIOUY]/gu, '');
        compressed = compressed.replace(/(.)\1+/gu, '$1');
        if (compressed.length <= targetLength) return compressed;

        const target = Math.max(3, targetLength);
        const chars = Array.from(compressed);
        if (target <= 3) return `${chars[0]}${chars[Math.floor(chars.length / 2)]}${chars[chars.length - 1]}`;
        const result = [chars[0]];
        const interior = chars.slice(1, -1);
        const slots = target - 2;
        for (let index = 0; index < slots; index += 1) {
        const position = slots === 1 ? 0 : Math.round(index * (interior.length - 1) / (slots - 1));
        const character = interior[Math.max(0, position)];
        if (character && result[result.length - 1] !== character) result.push(character);
        }
        if (result[result.length - 1] !== chars[chars.length - 1]) result.push(chars[chars.length - 1]);
        return result.join('').slice(0, target);
    }

    function makeSmartBookmarkLabel(name, manualLabel = '') {
        const manual = sanitiseBookmarkShortLabel(manualLabel);
        if (manual) return manual;

        const rawWords = String(name || '')
        .normalize('NFKD')
        .replace(/[\u0300-\u036f]/gu, '')
        .toLowerCase()
        .match(/[a-z0-9]+/gu) || [];
        let words = rawWords.filter(word => !SMART_BOOKMARK_STOP_WORDS.has(word));
        if (words.length > 2) words = words.filter(word => !SMART_BOOKMARK_OPTIONAL_WORDS.has(word));
        if (!words.length) words = rawWords;
        if (!words.length) return 'PIN';

        const tokens = words.map((word, index) => compactBookmarkWord(word, index === 0 ? 5 : 4)).filter(Boolean);
        while (tokens.length > 1 && /^[NSEW]$/u.test(tokens[0]) && /^[NSEW]$/u.test(tokens[1])) {
        tokens.splice(0, 2, `${tokens[0]}${tokens[1]}`);
        }

        if (tokens.length === 1) return sanitiseBookmarkShortLabel(tokens[0]) || 'PIN';
        let label = tokens.join(' ');
        if (label.length <= SMART_BOOKMARK_LABEL_MAX) return label;

        const first = tokens[0].slice(0, 5);
        const remainder = tokens.slice(1).map(token => token.length <= 3 ? token : token.slice(0, 3));
        label = [first, ...remainder].join(' ');
        if (label.length <= SMART_BOOKMARK_LABEL_MAX) return label;

        const initials = tokens.slice(1).map(token => token.charAt(0)).join('');
        label = initials ? `${first} ${initials}` : first;
        return sanitiseBookmarkShortLabel(label) || 'PIN';
    }

    function bookmarkScreenLabel(bookmark) {
        return makeSmartBookmarkLabel(bookmark?.name || 'Bookmark', bookmark?.shortLabel || '');
    }

    function resolveScreenPinLabels(entries) {
        const counts = new Map();
        entries.forEach(entry => {
        const key = entry.baseLabel.toUpperCase();
        counts.set(key, (counts.get(key) || 0) + 1);
        });
        const seen = new Map();
        return entries.map(entry => {
        const key = entry.baseLabel.toUpperCase();
        const total = counts.get(key) || 1;
        if (total === 1) return { ...entry, label: entry.baseLabel };
        const number = (seen.get(key) || 0) + 1;
        seen.set(key, number);
        const suffix = ` ${number}`;
        const available = Math.max(3, SMART_BOOKMARK_LABEL_MAX - suffix.length);
        return { ...entry, label: `${entry.baseLabel.slice(0, available).trim()}${suffix}` };
        });
    }

    function editBookmarkLabel(slot) {
        const bookmark = state.bookmarks[slot];
        if (!bookmark) return;
        const name = pageWindow.prompt('Bookmark name:', bookmark.name || `Bookmark ${slot + 1}`);
        if (name === null) return;
        const cleanName = String(name || bookmark.name || `Bookmark ${slot + 1}`).trim().slice(0, 80) || `Bookmark ${slot + 1}`;
        const currentShortLabel = sanitiseBookmarkShortLabel(bookmark.shortLabel || '');
        const shortLabel = pageWindow.prompt('Short screen label (leave blank for automatic):', currentShortLabel);
        bookmark.name = cleanName;
        if (shortLabel !== null) bookmark.shortLabel = sanitiseBookmarkShortLabel(shortLabel);
        saveState();
        renderBookmarks();
        renderScreenPins();
        updateUI();
        showToast(`${bookmark.name} · ${bookmarkScreenLabel(bookmark)}`);
    }

    function saveBookmark(slot) {
        const map = findLeafletMapInstance(true);
        if (!map || typeof map.getCenter !== 'function' || typeof map.getZoom !== 'function') {
        showToast('Map object not detected');
        setStatus('Bookmark saving needs access to the active Leaflet map object.');
        return;
        }

        let center;
        let zoom;
        try {
        center = map.getCenter();
        zoom = map.getZoom();
        } catch (err) {
        showToast('Could not read map view');
        return;
        }

        const existing = state.bookmarks[slot];
        const fallback = existing?.name || `Bookmark ${slot + 1}`;
        const name = pageWindow.prompt('Bookmark name:', fallback);
        if (name === null) return;

        const cleanName = String(name || fallback).trim().slice(0, 80) || fallback;
        const currentShortLabel = sanitiseBookmarkShortLabel(existing?.shortLabel || '');
        const shortLabelPrompt = pageWindow.prompt('Short screen label (leave blank for automatic):', currentShortLabel);
        const shortLabel = shortLabelPrompt === null ? currentShortLabel : sanitiseBookmarkShortLabel(shortLabelPrompt);

        state.bookmarks[slot] = {
        name: cleanName,
        shortLabel,
        lat: Number(center.lat.toFixed(6)),
        lng: Number(center.lng.toFixed(6)),
        zoom: Number(zoom),
        pinned: existing ? Boolean(existing.pinned) : false
        };

        saveState();
        renderBookmarks();
        renderScreenPins();
        updateUI();
        showToast(`Bookmark saved · ${bookmarkScreenLabel(state.bookmarks[slot])}`);
    }

    function goBookmark(slot) {
        const bookmark = state.bookmarks[slot];
        if (!bookmark) {
        showToast('Empty bookmark');
        return;
        }
        if (setMapView(bookmark.lat, bookmark.lng, bookmark.zoom)) showToast(bookmark.name);
    }

    function deleteBookmark(slot) {
        const bookmark = state.bookmarks[slot];
        if (!bookmark) return;
        if (!pageWindow.confirm(`Delete bookmark "${bookmark.name}"?`)) return;
        state.bookmarks[slot] = null;
        saveState();
        renderBookmarks();
        renderScreenPins();
        updateUI();
        showToast('Bookmark deleted');
    }

    function toggleBookmarkPin(slot) {
        const bookmark = state.bookmarks[slot];
        if (!bookmark) {
        showToast('Save bookmark first');
        return;
        }
        bookmark.pinned = !bookmark.pinned;
        saveState();
        renderBookmarks();
        renderScreenPins();
        updateUI();
        showToast(bookmark.pinned ? 'Shortcut pinned' : 'Shortcut unpinned');
    }

    function toggleQuickPin(id) {
        if (!(id in state.quickPins)) return;
        state.quickPins[id] = !state.quickPins[id];
        saveState();
        renderQuickPlaces();
        renderScreenPins();
        updateUI();
        showToast(state.quickPins[id] ? 'Shortcut pinned' : 'Shortcut unpinned');
    }

    function loadPayoutHistory() {
        try {
        const parsed = JSON.parse(localStorage.getItem(SCRIPT.payoutHistoryState) || '[]');
        if (!Array.isArray(parsed)) return [];
        return parsed.filter(item => item && Number.isFinite(Number(item.amount)) && Number.isFinite(Number(item.timestamp)))
            .slice(0, PAYOUT_HISTORY_LIMIT)
            .map(item => ({
                id: String(item.id || `${item.timestamp}-${item.amount}`),
                timestamp: Number(item.timestamp),
                amount: Math.max(0, Math.round(Number(item.amount))),
                caption: String(item.caption || ''),
                source: ['personal', 'alliance', 'unknown'].includes(item.source) ? item.source : 'unknown',
                tier: ['standard', 'major', 'high', 'elite'].includes(item.tier) ? item.tier : 'standard'
            }));
        } catch (err) { return []; }
    }

    function savePayoutHistory() {
        try { localStorage.setItem(SCRIPT.payoutHistoryState, JSON.stringify(payoutHistory.slice(0, PAYOUT_HISTORY_LIMIT))); }
        catch (err) {}
    }

    function defaultSessionPerformance() {
        return {
        startedAt: Date.now(), creditsEarned: 0, payoutCount: 0, qualifyingCount: 0,
        largestPayout: 0, personalPayouts: 0, alliancePayouts: 0, unknownPayouts: 0
        };
    }

    function loadSessionPerformance() {
        try {
        const parsed = JSON.parse(sessionStorage.getItem(SCRIPT.sessionPerformanceState) || 'null');
        if (!parsed || typeof parsed !== 'object') return defaultSessionPerformance();
        return { ...defaultSessionPerformance(), ...parsed };
        } catch (err) { return defaultSessionPerformance(); }
    }

    function saveSessionPerformance() {
        try { sessionStorage.setItem(SCRIPT.sessionPerformanceState, JSON.stringify(sessionPerformance)); }
        catch (err) {}
    }

    function resetSessionPerformance() {
        Object.assign(sessionPerformance, defaultSessionPerformance());
        saveSessionPerformance();
        renderOperationalPanels();
        showToast('Session performance reset');
    }

    function clearPayoutHistory() {
        payoutHistory.splice(0, payoutHistory.length);
        savePayoutHistory();
        renderOperationalPanels();
        showToast('Payout history cleared');
    }


    function majorIncidentThemeLabel() {
        const labels = {
        mapCommand: 'MAJOR INCIDENTS',
        cyberpunk: 'CITY INCIDENT WIRE',
        fallout4: 'ROBCO EMERGENCY BAND',
        umbrella: 'CONTAINMENT ALERTS',
        factorio: 'FACTORY INCIDENT BUS',
        bond007: 'MI6 INCIDENT WIRE'
        };
        return labels[state.uiTheme] || labels.mapCommand;
    }

    function majorIncidentOperationalState(snapshot, now = Date.now()) {
        const units = snapshot?.units || {};
        const onScene = Math.max(0, Number(units.onScene) || 0);
        const travelling = Math.max(0, Number(units.travelling) || 0);
        const stuck = missionStuckRecord(snapshot?.missionId, now);
        const missing = summariseCriticalRequirement(snapshot?.missingText, 58);
        const clearing = criticalMissionClearingProgress(snapshot);

        if (stuck?.isStuck || missing) {
        return {
            key: 'alert',
            label: stuck?.isStuck ? `ASSISTANCE · STUCK ${formatStuckDuration(stuck.stuckForMs)}` : 'ASSISTANCE REQUIRED'
        };
        }
        if (clearing && onScene > 0) return { key: 'clearing', label: `CLEARING ${clearing.completion}%` };
        if (travelling > 0) return { key: 'responding', label: `${travelling} RESPONDING` };
        if (onScene > 0) return { key: 'active', label: `${onScene} ON SCENE` };
        return { key: 'major', label: 'AWAITING RESPONSE' };
    }

    function majorIncidentFeedEntries(now = Date.now()) {
        const minimumCredits = Math.max(0, Number(state.majorIncidentFeed?.minimumCredits) || 25000);
        const entries = [];
        for (const snapshot of liveMissionSnapshots.values()) {
        if (!snapshot || !Number.isFinite(Number(snapshot.lat)) || !Number.isFinite(Number(snapshot.lng))) continue;
        if (snapshot.source === 'personal' && !state.visibility.myMissions) continue;
        if (snapshot.source === 'alliance' && !state.visibility.allianceMissions) continue;

        const credits = Number(snapshot.averageCredits);
        const createdAt = Number(snapshot.createdAt);
        const ageMs = Number.isFinite(createdAt) && createdAt > 0 ? Math.max(0, now - createdAt) : 0;
        const stuck = missionStuckRecord(snapshot.missionId, now);
        const patients = Math.max(Number(snapshot.patientsCount) || 0, Number(snapshot.possiblePatientsCount) || 0);
        const prisoners = Math.max(Number(snapshot.prisonersCount) || 0, Number(snapshot.possiblePrisonersCount) || 0);
        const creditMajor = Number.isFinite(credits) && credits >= minimumCredits;
        const ageMajor = ageMs >= 24 * 60 * 60 * 1000;
        const massCasualty = patients >= MAJOR_INCIDENT_MASS_CASUALTY_PATIENTS || prisoners >= MAJOR_INCIDENT_MASS_CASUALTY_PRISONERS;
        if (!creditMajor && !ageMajor && !stuck?.isStuck && !massCasualty) continue;

        const operational = majorIncidentOperationalState(snapshot, now);
        const postcode = snapshot.postcode || normaliseMissionPostcode(snapshot.address) || 'POSTCODE N/A';
        const score =
            (stuck?.isStuck ? 900000000 : 0) +
            (snapshot.missingText ? 500000000 : 0) +
            (ageMajor ? Math.min(250000000, ageMs) : 0) +
            (massCasualty ? 150000000 + (patients * 1000000) + (prisoners * 750000) : 0) +
            (Number.isFinite(credits) ? credits : 0) +
            (snapshot.source === 'personal' ? 5000 : 0);

        entries.push({ snapshot, operational, postcode, credits, ageMs, patients, prisoners, score });
        }
        return entries.sort((a, b) => b.score - a.score || String(a.snapshot.caption || '').localeCompare(String(b.snapshot.caption || ''))).slice(0, MAJOR_INCIDENT_FEED_MAX_ITEMS);
    }

    function findLocationSearchInput() {
        const direct = document.querySelector('#map_search, #location_search, #location_search_input, input[name="location_search"]');
        if (direct && isVisible(direct)) return direct;
        const pattern = /(location|place|address|postcode|postal|ort|plaats|lokal|emplacement|ubicaci[oó]n|posizione)/iu;
        return Array.from(document.querySelectorAll('input[type="search"], input[type="text"], input:not([type])'))
        .filter(input => isVisible(input) && pattern.test(`${input.placeholder || ''} ${input.getAttribute('aria-label') || ''} ${input.title || ''}`))
        .sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)[0] || null;
    }

    function findTopClockElement() {
        const clockPattern = /^\d{1,2}:\d{2}:\d{2}$/u;
        const preferred = Array.from(document.querySelectorAll('[id*="timer" i], [class*="timer" i], .navbar-text, .navbar-brand'))
        .find(element => isVisible(element) && clockPattern.test(String(element.textContent || '').trim()) && element.getBoundingClientRect().top < 160);
        if (preferred) return preferred;

        const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
        let node;
        let scanned = 0;
        while ((node = walker.nextNode()) && scanned < 2500) {
        scanned += 1;
        if (node.id === SCRIPT.majorIncidentFeedId || node.closest?.(`#${SCRIPT.majorIncidentFeedId}`)) continue;
        if (node.children?.length > 2) continue;
        const text = String(node.textContent || '').trim();
        if (!clockPattern.test(text) || !isVisible(node)) continue;
        const rect = node.getBoundingClientRect();
        if (rect.top < 160 && rect.height >= 18 && rect.height <= 70) return node;
        }
        return null;
    }

    function findMissionChiefBrandElement(bar) {
        if (!bar) return null;
        const barRect = bar.getBoundingClientRect?.();
        if (!barRect) return null;

        const candidates = new Set();
        const addCandidate = element => {
        if (!element) return;
        const host = element.matches?.('a,button,[role="link"],.navbar-brand')
            ? element
            : element.closest?.('a,button,[role="link"],.navbar-brand') || element;
        if (host && host !== bar && !host.closest?.(`#${SCRIPT.majorIncidentFeedId}`)) candidates.add(host);
        };

        [
        '.navbar-brand',
        '[id*="logo" i]',
        '[class*="logo" i]',
        'a[href="/"]',
        'a[href="./"]',
        'a[href$="/dashboard"]',
            'a[href$="/missions"]'
        ].forEach(selector => {
        try { bar.querySelectorAll(selector).forEach(addCandidate); } catch (err) {}
        });
        try { bar.querySelectorAll('a,button,[role="link"],img,svg').forEach(addCandidate); } catch (err) {}

        const scored = Array.from(candidates).map(element => {
        if (!isVisible(element)) return null;
        const rect = element.getBoundingClientRect?.();
        if (!rect || rect.width < 18 || rect.height < 18 || rect.width > 180 || rect.height > 90) return null;
        if (rect.right <= barRect.left || rect.left >= barRect.right || rect.bottom <= barRect.top || rect.top >= barRect.bottom) return null;
        if (rect.left > barRect.left + Math.min(220, barRect.width * .24)) return null;

        const descriptor = `${element.id || ''} ${element.className || ''} ${element.getAttribute?.('href') || ''} ${element.getAttribute?.('aria-label') || ''} ${element.getAttribute?.('title') || ''} ${element.querySelector?.('img')?.alt || ''}`.toLowerCase();
        let score = Math.max(0, 100 - Math.abs(rect.left - barRect.left));
        if (element.matches?.('.navbar-brand')) score += 180;
        if (/missionchief|leitstellenspiel|meldkamerspel|logo|brand|home/.test(descriptor)) score += 90;
        if (/^(?:https?:\/\/[^/]+)?\/?$/u.test(String(element.getAttribute?.('href') || '').trim())) score += 80;
        if (element.querySelector?.('img,svg') || element.matches?.('img,svg')) score += 35;
        if (rect.left <= barRect.left + 80) score += 55;
        return { element, rect, score };
        }).filter(Boolean).sort((a, b) => b.score - a.score || a.rect.left - b.rect.left);

        return scored[0]?.element || null;
    }

    function commonTopBarAncestor(clockElement, searchInput) {
        if (clockElement && searchInput) {
        const clockAncestors = new Set();
        let current = clockElement;
        for (let depth = 0; current && depth < 10; depth += 1, current = current.parentElement) clockAncestors.add(current);
        current = searchInput;
        for (let depth = 0; current && depth < 10; depth += 1, current = current.parentElement) {
            if (!clockAncestors.has(current)) continue;
            const rect = current.getBoundingClientRect?.();
            if (rect && rect.top < 160 && rect.width >= 420 && rect.height >= 36 && rect.height <= 120) return current;
        }
        }
        const candidates = [
        clockElement?.closest?.('nav,header,.navbar,[role="banner"]'),
        searchInput?.closest?.('nav,header,.navbar,[role="banner"]'),
        ...Array.from(document.querySelectorAll('nav.navbar, header, .navbar, [role="banner"]'))
        ].filter(Boolean);
        return candidates.find(element => {
        if (!isVisible(element)) return false;
        const rect = element.getBoundingClientRect();
        return rect.top < 160 && rect.width >= 320 && rect.height >= 36 && rect.height <= 130;
        }) || null;
    }

    function majorIncidentFeedHeaderContext() {
        const searchInput = findLocationSearchInput();
        const clockElement = findTopClockElement();
        const bar = commonTopBarAncestor(clockElement, searchInput);
        const brandElement = findMissionChiefBrandElement(bar);
        return { bar, brandElement, clockElement, searchInput };
    }

    function removeMajorIncidentFeed() {
        runtimeClearTimeout(majorIncidentFeedRenderTimer);
        majorIncidentFeedRenderTimer = null;
        runtimeClearTimeout(majorIncidentFeedMotionTimer);
        majorIncidentFeedMotionTimer = null;
        majorIncidentFeedMotionRevision += 1;
        if (majorIncidentFeedLayoutFrame !== null) runtimeCancelAnimationFrame(majorIncidentFeedLayoutFrame);
        majorIncidentFeedLayoutFrame = null;
        runtimeClearTimeout(majorIncidentFeedLayoutTimer);
        majorIncidentFeedLayoutTimer = null;
        runtimeUntrackObserver(majorIncidentFeedResizeObserver);
        majorIncidentFeedResizeObserver = null;
        majorIncidentFeedObservedElement = null;
        document.getElementById(SCRIPT.majorIncidentFeedId)?.remove();
        majorIncidentFeedRenderSignature = '';
    }

    function majorIncidentFeedDomComplete(feed) {
        return Boolean(
        feed?.isConnected &&
        feed.querySelector?.('.mcms-incident-feed-label') &&
        feed.querySelector?.('.mcms-incident-feed-viewport') &&
        feed.querySelector?.('.mcms-incident-feed-track')
        );
    }

    function resetMajorIncidentFeedObserver() {
        runtimeUntrackObserver(majorIncidentFeedResizeObserver);
        majorIncidentFeedResizeObserver = null;
        majorIncidentFeedObservedElement = null;
    }

    function recoverMajorIncidentFeed(reason = 'lifecycle') {
        if (runtime.destroyed || document.hidden || !state.majorIncidentFeed.enabled) return false;
        if (!getLargestLeafletMap() || isAllianceBuildingsContext()) return false;

        let feed = document.getElementById(SCRIPT.majorIncidentFeedId);
        const needsRebuild = !majorIncidentFeedDomComplete(feed);
        if (needsRebuild) {
        if (feed) feed.remove();
        resetMajorIncidentFeedObserver();
        majorIncidentFeedRenderSignature = '';
        renderMajorIncidentFeed(true);
        console.debug(`[${SCRIPT.name}] Major Incident Feed recovered after ${reason}.`);
        return true;
        }

        if (majorIncidentFeedObservedElement !== feed && !state.economyMode) {
        resetMajorIncidentFeedObserver();
        majorIncidentFeedRenderSignature = '';
        renderMajorIncidentFeed(true);
        return true;
        }

        scheduleMajorIncidentFeedLayout();
        return false;
    }

    function refreshMajorIncidentFeedMotion(feed, forceRestart = false, attempt = 0, revision = majorIncidentFeedMotionRevision) {
        if (!feed || revision !== majorIncidentFeedMotionRevision || !feed.isConnected || !state.majorIncidentFeed.enabled) return false;
        const viewport = feed.querySelector('.mcms-incident-feed-viewport');
        const track = feed.querySelector('.mcms-incident-feed-track');
        const firstGroup = track?.querySelector('.mcms-incident-feed-group');
        if (!viewport || !track || !firstGroup) return false;

        if (state.economyMode) {
        feed.classList.add('mcms-feed-static');
        feed.style.removeProperty('--mcms-incident-feed-duration');
        track.style.removeProperty('animation');
        return true;
        }

        const viewportWidth = viewport.clientWidth;
        const groupWidth = Math.max(firstGroup.scrollWidth || 0, firstGroup.getBoundingClientRect?.().width || 0);
        if ((viewportWidth < 40 || groupWidth < 20) && attempt < 6) {
        runtimeClearTimeout(majorIncidentFeedMotionTimer);
        majorIncidentFeedMotionTimer = runtimeSetTimeout(() => {
            majorIncidentFeedMotionTimer = null;
            refreshMajorIncidentFeedMotion(feed, true, attempt + 1, revision);
        }, 70 + (attempt * 55));
        return false;
        }

        const entryCount = Math.max(0, Number(feed.dataset.mcmsEntryCount) || 0);
        const shouldScroll = entryCount > 1 || groupWidth > viewportWidth - 8;
        feed.classList.toggle('mcms-feed-static', !shouldScroll);
        if (!shouldScroll) {
        feed.style.removeProperty('--mcms-incident-feed-duration');
        track.style.removeProperty('animation');
        return true;
        }

        const reducedMotion = Boolean(pageWindow.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches);
        const pixelsPerSecond = reducedMotion ? 25 : 32;
        const duration = Math.round(clamp(groupWidth / pixelsPerSecond, 42, 210, 60));
        feed.style.setProperty('--mcms-incident-feed-duration', `${duration}s`);

        const animations = typeof track.getAnimations === 'function' ? track.getAnimations() : [];
        if (forceRestart || animations.length === 0) {
        track.style.setProperty('animation', 'none', 'important');
        void track.offsetWidth;
        track.style.removeProperty('animation');
        }
        return true;
    }

    function scheduleMajorIncidentFeedMotion(feed = document.getElementById(SCRIPT.majorIncidentFeedId), forceRestart = false, delay = 50) {
        if (!feed) return;
        runtimeClearTimeout(majorIncidentFeedMotionTimer);
        if (state.economyMode) {
        majorIncidentFeedMotionTimer = null;
        refreshMajorIncidentFeedMotion(feed, false, 0, ++majorIncidentFeedMotionRevision);
        return;
        }
        const revision = ++majorIncidentFeedMotionRevision;
        majorIncidentFeedMotionTimer = runtimeSetTimeout(() => {
        majorIncidentFeedMotionTimer = null;
        refreshMajorIncidentFeedMotion(feed, forceRestart, 0, revision);
        }, Math.max(0, Number(delay) || 0));
    }

    function positionMajorIncidentFeed() {
        majorIncidentFeedLayoutFrame = null;
        const feed = document.getElementById(SCRIPT.majorIncidentFeedId);
        if (!feed || !state.majorIncidentFeed.enabled || !getLargestLeafletMap() || isAllianceBuildingsContext()) {
        if (feed) feed.classList.remove('mcms-feed-visible');
        return false;
        }

        const { bar } = majorIncidentFeedHeaderContext();
        if (!bar) {
        feed.classList.remove('mcms-feed-visible');
        return false;
        }
        const barRect = bar.getBoundingClientRect();
        const viewport = getViewportMetrics();
        const mapElement = getLargestLeafletMap();
        const mapRect = mapElement?.getBoundingClientRect?.();
        const edgeGap = viewport.width <= 520 ? 1 : 2;
        const viewportLeft = viewport.offsetLeft;
        const viewportRight = viewport.offsetLeft + viewport.width;
        const mapLeft = Number.isFinite(mapRect?.left) ? Math.max(viewportLeft, mapRect.left) : viewportLeft;
        const mapRight = Number.isFinite(mapRect?.right) ? Math.min(viewportRight, mapRect.right) : viewportRight;
        const feedLeft = Math.round(mapLeft + edgeGap);
        const feedRight = Math.round(mapRight - edgeGap);
        const feedWidth = Math.max(1, feedRight - feedLeft);

        // v4.8.5: keep the permanent under-navigation feed aligned to the actual
        // Leaflet map bounds. This preserves the map's own left/right margins and
        // prevents the incident wire stretching across unrelated page controls.
        feed.dataset.mcmsPlacement = 'underbar';
        feed.style.setProperty('left', `${feedLeft}px`, 'important');
        feed.style.setProperty('top', `${Math.round(barRect.bottom + 1)}px`, 'important');
        feed.style.setProperty('width', `${Math.round(feedWidth)}px`, 'important');
        feed.classList.add('mcms-feed-visible');
        scheduleMajorIncidentFeedMotion(feed, false, 35);
        return true;
    }

    function scheduleMajorIncidentFeedLayout() {
        if (state.economyMode) {
        runtimeClearTimeout(majorIncidentFeedLayoutTimer);
        majorIncidentFeedLayoutTimer = runtimeSetTimeout(() => {
            majorIncidentFeedLayoutTimer = null;
            positionMajorIncidentFeed();
        }, 180);
        return;
        }
        if (majorIncidentFeedLayoutFrame !== null) return;
        majorIncidentFeedLayoutFrame = runtimeRequestAnimationFrame(positionMajorIncidentFeed);
    }

    function majorIncidentFeedItemHtml(entry) {
        const snapshot = entry.snapshot;
        const source = snapshot.source === 'alliance' ? 'ALLIANCE' : 'PERSONAL';
        const creditText = Number.isFinite(entry.credits) ? `≈${formatOperationalCompactCredits(entry.credits)} CR` : 'VALUE UNKNOWN';
        const ageText = entry.ageMs >= 8 * 60 * 60 * 1000 ? ` · ${formatElapsedCompact(entry.ageMs)} OLD` : '';
        const casualtyText = entry.patients >= MAJOR_INCIDENT_MASS_CASUALTY_PATIENTS ? ` · ${entry.patients} PATIENTS` : entry.prisoners >= MAJOR_INCIDENT_MASS_CASUALTY_PRISONERS ? ` · ${entry.prisoners} PRISONERS` : '';
        const caption = snapshot.caption || `Mission ${snapshot.missionId}`;
        const title = `${caption} · ${entry.postcode} · ${creditText} · Click to zoom to the mission`;
        return `<button class="mcms-incident-feed-item mcms-incident-${escapeHtml(entry.operational.key)}" type="button" data-mcms-major-mission-id="${escapeHtml(snapshot.missionId)}" title="${escapeHtml(title)}" aria-label="Zoom to ${escapeHtml(caption)} at ${escapeHtml(entry.postcode)}">
            <span class="mcms-incident-level">MAJOR</span>
            <span class="mcms-incident-name">${allianceAwareHtml(caption)}</span>
            <span class="mcms-incident-postcode">${escapeHtml(entry.postcode)}</span>
        <span class="mcms-incident-meta">${escapeHtml(`${creditText} · `)}<span class="${source === 'ALLIANCE' ? 'mcms-alliance-text' : ''}">${escapeHtml(source)}</span>${escapeHtml(`${ageText}${casualtyText}`)}</span>
            <span class="mcms-incident-state">${escapeHtml(entry.operational.label)}</span>
        </button>`;
    }

    function ensureMajorIncidentFeed() {
        if (!state.majorIncidentFeed.enabled || !getLargestLeafletMap() || isAllianceBuildingsContext()) {
        removeMajorIncidentFeed();
        return null;
        }

        let feed = document.getElementById(SCRIPT.majorIncidentFeedId);
        if (feed && !majorIncidentFeedDomComplete(feed)) {
        feed.remove();
        feed = null;
        resetMajorIncidentFeedObserver();
        majorIncidentFeedRenderSignature = '';
        }

        if (!feed) {
        resetMajorIncidentFeedObserver();
        majorIncidentFeedRenderSignature = '';
        feed = document.createElement('section');
        feed.id = SCRIPT.majorIncidentFeedId;
        feed.setAttribute('aria-label', 'Major incident news feed');
        feed.innerHTML = '<div class="mcms-incident-feed-label"></div><div class="mcms-incident-feed-viewport" aria-live="off"><div class="mcms-incident-feed-track"></div></div>';
        feed.addEventListener('click', event => {
            const item = closestEventTarget(event, '[data-mcms-major-mission-id]');
            if (!item) return;
            event.preventDefault();
            event.stopPropagation();
            focusMissionById(item.dataset.mcmsMajorMissionId, false);
        });
        feed.addEventListener('pointerdown', () => {
            feed.classList.add('mcms-feed-paused');
            runtimeSetTimeout(() => feed?.classList?.remove('mcms-feed-paused'), 1800);
        }, { passive: true });
        document.body.appendChild(feed);
        }

        if (state.economyMode) {
        resetMajorIncidentFeedObserver();
        } else if (majorIncidentFeedObservedElement !== feed && typeof pageWindow.ResizeObserver === 'function') {
        resetMajorIncidentFeedObserver();
        majorIncidentFeedObservedElement = feed;
        majorIncidentFeedResizeObserver = runtimeTrackObserver(new pageWindow.ResizeObserver(() => {
            if (feed.isConnected) scheduleMajorIncidentFeedMotion(feed, false, 70);
            else recoverMajorIncidentFeed('header replacement');
        }));
        majorIncidentFeedResizeObserver.observe(feed);
        const viewport = feed.querySelector('.mcms-incident-feed-viewport');
        if (viewport) majorIncidentFeedResizeObserver.observe(viewport);
        }

        scheduleMajorIncidentFeedLayout();
        return feed;
    }

    function renderMajorIncidentFeed(force = false) {
        const feed = ensureMajorIncidentFeed();
        if (!feed) return;
        const entries = state.economyMode ? majorIncidentFeedEntries().slice(0, 1) : majorIncidentFeedEntries();
        const signature = JSON.stringify({
        theme: state.uiTheme,
        minimum: state.majorIncidentFeed.minimumCredits,
        entries: entries.map(entry => [entry.snapshot.missionId, entry.snapshot.caption, entry.postcode, entry.operational.key, entry.operational.label, entry.credits, Math.floor(entry.ageMs / 60000)])
        });
        const existingTrack = feed.querySelector('.mcms-incident-feed-track');
        const hasRenderedContent = Boolean(existingTrack?.childElementCount);
        if (!force && signature === majorIncidentFeedRenderSignature && hasRenderedContent) {
        scheduleMajorIncidentFeedLayout();
        scheduleMajorIncidentFeedMotion(feed, false, 60);
        return;
        }
        majorIncidentFeedRenderSignature = signature;
        const label = feed.querySelector('.mcms-incident-feed-label');
        const track = feed.querySelector('.mcms-incident-feed-track');
        if (label) label.textContent = majorIncidentThemeLabel();
        if (!track) return;

        feed.classList.toggle('mcms-feed-empty', entries.length === 0);
        feed.classList.remove('mcms-feed-static');
        feed.dataset.mcmsEntryCount = String(entries.length);
        if (!entries.length) {
        track.innerHTML = '<div class="mcms-incident-feed-empty">No qualifying major incidents currently active</div>';
        feed.style.removeProperty('--mcms-incident-feed-duration');
        } else {
        const itemHtml = entries.map(majorIncidentFeedItemHtml).join('');
        const group = `<div class="mcms-incident-feed-group">${itemHtml}</div>`;
        track.innerHTML = state.economyMode ? group : `${group}${group}`;
        scheduleMajorIncidentFeedMotion(feed, true, 70);
        }
        scheduleMajorIncidentFeedLayout();
    }

    function scheduleMajorIncidentFeedRender(delay = 120) {
        runtimeClearTimeout(majorIncidentFeedRenderTimer);
        majorIncidentFeedRenderTimer = runtimeSetTimeout(() => {
        majorIncidentFeedRenderTimer = null;
        renderMajorIncidentFeed();
        }, Math.max(0, Number(delay) || 0));
    }

    function payoutTierForAmount(amount) {
        const value = Math.max(0, Number(amount) || 0);
        if (value >= 100000) return 'elite';
        if (value >= 50000) return 'high';
        if (value >= 25000) return 'major';
        return 'standard';
    }

    function getMissionCaption(marker, missionId) {
        const cached = missionOverlayData.get(missionId) || {};
        const direct = cached.caption ?? marker?.caption ?? marker?.name ?? marker?.options?.title ?? marker?.options?.caption;
        if (direct && String(direct).trim()) {
        const caption = normaliseMissionCaption(direct);
        if (cached.caption !== caption) setMissionOverlayRecord(missionId, { ...cached, caption });
        return caption;
        }
        const panel = getMissionPanelElement(missionId);
        if (panel) {
        const captionNode = panel.querySelector('.map_position_mover[id^="mission_caption_"], .mission_caption, [id^="mission_caption_"]');
        const caption = normaliseMissionCaption(captionNode?.textContent || '');
        if (caption) {
            setMissionOverlayRecord(missionId, { ...cached, caption });
            return caption;
        }
        }
        const iconText = marker?._icon?.title || marker?._icon?.alt || marker?._icon?.getAttribute?.('aria-label');
        const caption = normaliseMissionCaption(iconText || '');
        if (caption) setMissionOverlayRecord(missionId, { ...cached, caption });
        return caption;
    }


    function normaliseMissionPostcode(value) {
        const text = String(value || '').toUpperCase().replace(/\s+/g, ' ').trim();
        const match = text.match(UK_POSTCODE_PATTERN);
        if (!match?.[0]) return '';
        const compact = match[0].replace(/\s+/g, '');
        return compact.length > 3 ? `${compact.slice(0, -3)} ${compact.slice(-3)}` : compact;
    }

    function normaliseMissionCity(value, postcode = '') {
        let text = decodeMissionTextEntities(value).replace(/\s+/g, ' ').trim();
        if (!text) return '';
        const normalisedPostcode = normaliseMissionPostcode(postcode || text);
        if (normalisedPostcode) {
        const compactPattern = normalisedPostcode.replace(/\s+/g, '\\s*');
        try { text = text.replace(new RegExp(`\\b${compactPattern}\\b`, 'iu'), ' '); } catch (err) {}
        }
        text = text.replace(UK_POSTCODE_PATTERN, ' ').replace(/\s+/g, ' ').trim();

        const administrative = text.match(/\b(?:city|borough|district)\s+of\s+([^,;|]+)/iu);
        if (administrative?.[1]) return administrative[1].replace(/\s+/g, ' ').trim();

        const segments = text.split(/[,;|]/u).map(segment => segment.trim()).filter(Boolean);
        const streetPattern = /\b(?:road|rd|street|st|avenue|ave|lane|ln|drive|dr|way|close|court|place|pl|terrace|crescent|gardens?|park|square|mews|row|hill|brae|gait|walk|wynd|building|site|airport|station|hospital)\b/iu;
        const numberPattern = /^\d+[A-Z]?\b/iu;
        const candidates = segments.filter(segment => !numberPattern.test(segment) && !streetPattern.test(segment) && !/^uk$/iu.test(segment));
        if (candidates.length) return candidates[candidates.length - 1].replace(/^the\s+/iu, '').trim();
        return '';
    }

    function getMissionAddress(marker, missionId) {
        const cached = missionOverlayData.get(missionId) || {};
        const direct = cached.address ?? marker?.address ?? marker?.mission_address ?? marker?.missionAddress ?? marker?.options?.address ?? marker?.options?.mission_address ?? marker?.options?.missionAddress;
        if (direct && String(direct).trim()) {
        const address = String(direct).replace(/\s+/g, ' ').trim();
        const postcode = normaliseMissionPostcode(address);
        if (cached.address !== address || cached.postcode !== postcode) setMissionOverlayRecord(missionId, { ...cached, address, postcode });
        return address;
        }

        const panel = getMissionPanelElement(missionId);
        const addressNode = document.getElementById(`mission_address_${missionId}`)
        || panel?.querySelector?.('.mission_address, [id^="mission_address_"]')
        || null;
        const address = String(addressNode?.textContent || '').replace(/\s+/g, ' ').trim();
        if (address) {
        const postcode = normaliseMissionPostcode(address);
        setMissionOverlayRecord(missionId, { ...cached, address, postcode });
        }
        return address;
    }

    function vehicleStatusCode(vehicle) {
        if (!vehicle || typeof vehicle !== 'object') return null;
        const containers = [vehicle, vehicle.options, vehicle.params, vehicle.vehicle, vehicle.data, vehicle.vehicleData, vehicle._vehicleData]
        .filter(item => item && typeof item === 'object');
        for (const item of containers) {
        const value = Number(item.fms_real ?? item.fmsReal ?? item.fms ?? item.fms_show ?? item.fmsShow);
        if (Number.isFinite(value)) return value;
        }
        return null;
    }

    function personalUnitCommitmentForMission(missionId) {
        const normalisedId = normaliseMissionId(missionId);
        const commitment = normalisedId === null ? null : rebuildMissionCommitmentIndex().get(normalisedId);

        if (!commitment) {
        return {
            total: 0,
            active: 0,
            onScene: 0,
            onWay: 0,
            travelling: 0,
            transporting: 0,
            awaitingPickup: 0,
            requestingDispatch: 0,
            outOfService: 0,
            available: 0,
            unknownStatus: 0,
            markerPresence: false,
            known: vehicleApiReady,
            source: vehicleApiReady ? 'api' : 'unknown'
        };
        }

        return {
        ...commitment,
        markerPresence: false,
        known: true,
        source: vehicleApiReady ? 'api' : 'live'
        };
    }

    function normaliseMissionLiveCurrentValue(value) {
        const parsed = Number(value);
        return Number.isFinite(parsed) && parsed >= 0 && parsed <= 100 ? parsed : null;
    }

    function missionLiveCurrentValueFromMarker(marker) {
        const containers = [marker, marker?.options, marker?.params, marker?.mission, marker?.data, marker?._missionData]
        .filter(item => item && typeof item === 'object');
        for (const item of containers) {
        const value = normaliseMissionLiveCurrentValue(item.live_current_value ?? item.liveCurrentValue ?? item.current_value ?? item.currentValue);
        if (value !== null) return value;
        }
        return null;
    }

    function missionLiveCurrentValueFromDom(missionId) {
        const panel = getMissionPanelElement(missionId);
        if (!panel) return null;
        const candidates = [
        panel,
        ...Array.from(panel.querySelectorAll('[data-live-current-value], [data-live_current_value], [data-current-value], [data-current_value]'))
        ];
        for (const element of candidates) {
        const value = normaliseMissionLiveCurrentValue(
            element.getAttribute?.('data-live-current-value') ??
            element.getAttribute?.('data-live_current_value') ??
            element.getAttribute?.('data-current-value') ??
            element.getAttribute?.('data-current_value')
        );
        if (value !== null) return value;
        }
        return null;
    }

    function resolveMissionLiveCurrentValue(marker, missionId, overlay, now = Date.now()) {
        const overlayValue = normaliseMissionLiveCurrentValue(overlay?.liveCurrentValue);
        const overlayUpdatedAt = Number(overlay?.liveCurrentValueUpdatedAt) || 0;

        // A freshly captured mission payload is authoritative. Prefer it before touching
        // the mission-list DOM, which avoids a subtree query for every active mission.
        if (overlayValue !== null && now - overlayUpdatedAt <= MISSION_PROGRESS_PAGE_REFRESH_MS + 5000) return overlayValue;

        const domValue = missionLiveCurrentValueFromDom(missionId);
        if (domValue !== null) return domValue;
        const markerValue = missionLiveCurrentValueFromMarker(marker);
        if (markerValue !== null) return markerValue;
        return overlayValue;
    }

    function missionSnapshotFromMarker(marker, now = Date.now()) {
        const missionId = missionIdFromMarker(marker);
        if (missionId === null) return null;
        const overlayVersion = missionOverlayVersion(missionId);
        const progressBucket = Math.floor(now / MISSION_SNAPSHOT_REUSE_MS);
        const cachedSnapshot = missionSnapshotCache.get(missionId);
        if (
        cachedSnapshot?.marker === marker &&
        cachedSnapshot.missionRevision === missionRegistryRevision &&
        cachedSnapshot.vehicleRevision === vehicleDataRevision &&
        cachedSnapshot.overlayVersion === overlayVersion &&
        cachedSnapshot.progressBucket === progressBucket
        ) {
        cachedSnapshot.lastUsed = now;
        cachedSnapshot.snapshot.lastSeen = now;
        return cachedSnapshot.snapshot;
        }
        let latLng = null;
        try { latLng = marker.getLatLng?.() || null; } catch (err) {}
        const ownership = missionWatchOwnership(marker, missionId);
        const specialEvent = missionDeveloperEventInfo(marker, missionId);
        const category = missionWatchCategory(marker, missionId, null, specialEvent);
        const unitState = missionPersonalUnitState(marker, missionId);
        const units = {
        ...unitState.commitment,
        markerPresence: Boolean(unitState.hasUnit && Number(unitState.commitment?.total || 0) <= 0)
        };
        const overlay = missionOverlayData.get(missionId) || {};
        const overlayMissingTextKnown = overlay.missingTextKnown === true || Object.prototype.hasOwnProperty.call(overlay, 'missingText');
        const rawMissingText = overlayMissingTextKnown
        ? String(overlay.missingText || '')
        : marker?.missing_text || marker?.missingText || marker?.options?.missing_text || marker?.options?.missingText || '';
        const address = getMissionAddress(marker, missionId);
        const postcode = normaliseMissionPostcode(overlay.postcode || address);
        const area = normaliseMissionCity(overlay.city || address, postcode);
        const liveCurrentValue = resolveMissionLiveCurrentValue(marker, missionId, overlay, now);
        const snapshot = {
        missionId,
        marker,
        caption: getMissionCaption(marker, missionId),
        address,
        postcode,
        city: area,
        area,
        source: ownership,
        ownership,
        category,
        specialEvent,
        missionType: ownership,
        averageCredits: getMissionAverageCredits(marker, missionId),
        qualified: ownership === 'personal' || unitState.hasUnit,
        units,
        createdAt: getMissionCreatedAt(marker, missionId),
        missingText: normaliseMissingRequirementText(rawMissingText),
        patientsCount: Number.isFinite(Number(overlay.patientsCount ?? marker?.patients_count ?? marker?.patientsCount ?? marker?.options?.patients_count)) ? Number(overlay.patientsCount ?? marker?.patients_count ?? marker?.patientsCount ?? marker?.options?.patients_count) : null,
        possiblePatientsCount: Number.isFinite(Number(overlay.possiblePatientsCount ?? marker?.possible_patients_count ?? marker?.possiblePatientsCount ?? marker?.options?.possible_patients_count)) ? Number(overlay.possiblePatientsCount ?? marker?.possible_patients_count ?? marker?.possiblePatientsCount ?? marker?.options?.possible_patients_count) : null,
        prisonersCount: Number.isFinite(Number(overlay.prisonersCount ?? marker?.prisoners_count ?? marker?.prisonersCount ?? marker?.options?.prisoners_count)) ? Number(overlay.prisonersCount ?? marker?.prisoners_count ?? marker?.prisonersCount ?? marker?.options?.prisoners_count) : null,
        possiblePrisonersCount: Number.isFinite(Number(overlay.possiblePrisonersCount ?? marker?.possible_prisoners_count ?? marker?.possiblePrisonersCount ?? marker?.options?.possible_prisoners_count)) ? Number(overlay.possiblePrisonersCount ?? marker?.possible_prisoners_count ?? marker?.possiblePrisonersCount ?? marker?.options?.possible_prisoners_count) : null,
        liveCurrentValue,
        dateEndCalc: Number.isFinite(Number(overlay.dateEndCalc)) ? Number(overlay.dateEndCalc) : null,
        dateEnd: Number.isFinite(Number(overlay.dateEnd)) ? Number(overlay.dateEnd) : null,
        dateNow: Number.isFinite(Number(overlay.dateNow)) ? Number(overlay.dateNow) : null,
        dateNowUpdatedAt: Number.isFinite(Number(overlay.dateNowUpdatedAt)) ? Number(overlay.dateNowUpdatedAt) : null,
        vehicleState: Number.isFinite(Number(overlay.vehicleState ?? marker?.vehicle_state ?? marker?.vehicleState ?? marker?.options?.vehicle_state)) ? Number(overlay.vehicleState ?? marker?.vehicle_state ?? marker?.vehicleState ?? marker?.options?.vehicle_state) : null,
        lat: Number(latLng?.lat),
        lng: Number(latLng?.lng),
        lastSeen: now
        };
        missionSnapshotCache.set(missionId, {
        marker,
        missionRevision: missionRegistryRevision,
        vehicleRevision: vehicleDataRevision,
        overlayVersion: missionOverlayVersion(missionId),
        progressBucket,
        lastUsed: now,
        snapshot
        });
        return snapshot;
    }

    function refreshMissionSnapshots() {
        runtimeClearTimeout(missionSnapshotTimer);
        missionSnapshotTimer = null;
        const now = Date.now();
        const current = new Map();
        const previousSnapshots = liveMissionSnapshots;
        const missionMarkers = getMissionMarkerIndex().markers;
        for (const marker of missionMarkers) {
        const snapshot = missionSnapshotFromMarker(marker, now);
        if (!snapshot) continue;
        updateMissionProgressState(snapshot, now);
        current.set(snapshot.missionId, snapshot);
        missionLifecycleLastSeen.set(snapshot.missionId, now);
        const newlySeen = !knownMissionIds.has(snapshot.missionId);
        knownMissionIds.add(snapshot.missionId);
        if (newlySeen && missionSpawnArmed && state.missionSpawn.enabled) runtimeSetTimeout(() => animateMissionSpawn(snapshot.missionId), 60);
        }

        if (missionSnapshotReady) {
        for (const [missionId, previous] of previousSnapshots.entries()) {
            if (current.has(missionId)) continue;
            if (now - Number(previous.lastSeen || now) > 15000) continue;
            if (!recentCompletedMissions.some(item => item.missionId === missionId && now - item.removedAt < PAYOUT_MATCH_WINDOW_MS)) {
                recentCompletedMissions.unshift({ ...previous, removedAt: now, matched: false });
            }
        }
        }

        liveMissionSnapshots = current;
        missionSnapshotReady = missionSnapshotReady || current.size > 0;

        for (let index = recentCompletedMissions.length - 1; index >= 0; index -= 1) {
        const item = recentCompletedMissions[index];
        if (current.has(item.missionId) || now - item.removedAt > PAYOUT_MATCH_WINDOW_MS) recentCompletedMissions.splice(index, 1);
        }
        if (recentCompletedMissions.length > 30) recentCompletedMissions.length = 30;

        let progressEntriesRemoved = false;
        for (const [missionId, progress] of missionProgressState.entries()) {
        if (current.has(missionId)) continue;
        if (now - Number(progress.lastSeen || now) > MISSION_CACHE_RETENTION_MS) {
            missionProgressState.delete(missionId);
            progressEntriesRemoved = true;
        }
        }

        for (const [missionId, lastSeen] of missionLifecycleLastSeen.entries()) {
        if (current.has(missionId) || now - lastSeen <= MISSION_CACHE_RETENTION_MS) continue;
        missionLifecycleLastSeen.delete(missionId);
        deleteMissionOverlayRecord(missionId);
        knownMissionIds.delete(missionId);
        resourceGapLabels.delete(missionId);
        stuckMissionLabels.delete(missionId);
        }
        if (progressEntriesRemoved) saveMissionProgressState();
        if (state.stuckDetector.enabled) scheduleStuckMissionRefresh(80);
        if (state.transportWatcher) scheduleTransportWatcherRefresh(100);
        scheduleMajorIncidentFeedRender(0);
    }

    function scheduleMissionSnapshotRefresh(delay = 600) {
        runtimeClearTimeout(missionSnapshotTimer);
        missionSnapshotTimer = null;
        if (runtime.destroyed || document.hidden || !missionSnapshotsNeeded()) return;
        const wait = state.economyMode ? Math.max(1400, Number(delay) || 0) : Math.max(0, Number(delay) || 0);
        missionSnapshotTimer = runtimeSetTimeout(refreshMissionSnapshots, wait);
    }

    function resolvePayoutContext(amount) {
        refreshMissionSnapshots();
        const now = Date.now();
        const value = Math.max(0, Number(amount) || 0);
        const candidates = recentCompletedMissions.filter(item => !item.matched && now - item.removedAt <= PAYOUT_MATCH_WINDOW_MS)
        .filter(item => item.source === 'personal' || item.qualified);
        if (!candidates.length) return { source: 'unknown', caption: '', missionId: null, confidence: 0 };

        let best = null;
        let bestScore = -Infinity;
        for (const item of candidates) {
        const recencyScore = Math.max(0, 35 - ((now - item.removedAt) / 500));
        const sourceScore = item.source === 'personal' || item.qualified ? 18 : -30;
        let creditScore = 5;
        if (Number.isFinite(Number(item.averageCredits)) && Number(item.averageCredits) > 0) {
            const ratio = Math.abs(value - Number(item.averageCredits)) / Math.max(value, Number(item.averageCredits), 1);
            creditScore = Math.max(-20, 70 - (ratio * 100));
        }
        const score = recencyScore + sourceScore + creditScore + (item.caption ? 6 : 0);
        if (score > bestScore) { bestScore = score; best = item; }
        }
        if (!best || bestScore < 20) return { source: 'unknown', caption: '', missionId: null, confidence: 0 };
        best.matched = true;
        return {
        source: best.source,
        caption: best.caption || '',
        missionId: best.missionId,
        confidence: Math.min(1, Math.max(0, bestScore / 120)),
        units: best.units || { total: 0, onScene: 0, travelling: 0 }
        };
    }

    function recordCreditGain(amount, context) {
        const value = Math.max(0, Math.round(Number(amount) || 0));
        if (!value) return;
        const tier = payoutTierForAmount(value);
        const entry = {
        id: `${Date.now()}-${value}-${Math.random().toString(36).slice(2, 7)}`,
        timestamp: Date.now(), amount: value, caption: String(context?.caption || ''),
        source: ['personal', 'alliance'].includes(context?.source) ? context.source : 'unknown', tier
        };
        payoutHistory.unshift(entry);
        if (payoutHistory.length > PAYOUT_HISTORY_LIMIT) payoutHistory.length = PAYOUT_HISTORY_LIMIT;
        savePayoutHistory();

        sessionPerformance.creditsEarned = Math.max(0, Number(sessionPerformance.creditsEarned) || 0) + value;
        sessionPerformance.payoutCount = Math.max(0, Number(sessionPerformance.payoutCount) || 0) + 1;
        if (value >= 10000) sessionPerformance.qualifyingCount = Math.max(0, Number(sessionPerformance.qualifyingCount) || 0) + 1;
        sessionPerformance.largestPayout = Math.max(Number(sessionPerformance.largestPayout) || 0, value);
        if (entry.source === 'personal') sessionPerformance.personalPayouts = Math.max(0, Number(sessionPerformance.personalPayouts) || 0) + 1;
        else if (entry.source === 'alliance') sessionPerformance.alliancePayouts = Math.max(0, Number(sessionPerformance.alliancePayouts) || 0) + 1;
        else sessionPerformance.unknownPayouts = Math.max(0, Number(sessionPerformance.unknownPayouts) || 0) + 1;
        saveSessionPerformance();
        renderOperationalPanels();
    }

    function formatOperationalCompactCredits(value) {
        const amount = Math.max(0, Number(value) || 0);
        if (amount >= 1000000) return `${(amount / 1000000).toFixed(amount >= 10000000 ? 0 : 1)}M`;
        if (amount >= 1000) return `${(amount / 1000).toFixed(amount >= 100000 ? 0 : 1)}K`;
        return Math.round(amount).toLocaleString();
    }

    function formatClockTime(timestamp) {
        try { return new Date(timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); }
        catch (err) { return ''; }
    }

    function formatRefreshClockTime(timestamp) {
        try { return new Date(timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); }
        catch (err) { return ''; }
    }

    function formatElapsedCompact(ms) {
        const totalHours = Math.max(0, Math.floor(Number(ms) / 3600000));
        const days = Math.floor(totalHours / 24);
        const hours = totalHours % 24;
        return days > 0 ? `${days}D ${hours}H` : `${totalHours}H`;
    }

    function summariseCriticalRequirement(value, maxLength = 82) {
        const text = normaliseMissingRequirementText(value).replace(/\s+/g, ' ').trim();
        if (!text) return '';
        const limit = Math.max(36, Number(maxLength) || 82);
        return text.length > limit ? `${text.slice(0, limit - 1).trimEnd()}…` : text;
    }

    function criticalMissionClearingProgress(snapshot) {
        const remaining = Number(snapshot?.liveCurrentValue);
        if (!Number.isFinite(remaining) || remaining < 0 || remaining >= 100) return null;
        const completion = Math.max(1, Math.min(100, Math.round(100 - remaining)));
        return { remaining, completion };
    }


    function qualifiedAllianceMissionCount() {
        let count = 0;
        if (missionSnapshotReady) {
        for (const snapshot of liveMissionSnapshots.values()) {
            if (snapshot?.ownership === 'alliance' && snapshot.qualified) count += 1;
        }
        return count;
        }
        for (const marker of getMissionMarkerIndex().markers) {
        const missionId = missionIdFromMarker(marker);
        if (missionId !== null && isAllianceMissionLayer(marker, missionId) && missionHasPersonalUnit(marker, missionId)) count += 1;
        }
        return count;
    }

    function operationalUiIsVisible() {
        const panel = document.getElementById(SCRIPT.panelId);
        const opsPanelVisible = Boolean(panel?.classList?.contains('mcms-open') && state.activeTab === 'ops');
        const vehicleStatusVisible = Boolean(document.getElementById(SCRIPT.vehicleStatusId)?.classList?.contains('mcms-open'));
        return opsPanelVisible || vehicleStatusVisible;
    }

    function scheduleOperationalPanelsRender(delay = 500, force = false) {
        runtimeClearTimeout(opsRefreshTimer);
        if (!force && !operationalUiIsVisible()) return;
        const elapsed = Date.now() - operationalPanelsLastRender;
        const minimumGap = state.economyMode ? 1200 : 750;
        const wait = Math.max(Number(delay) || 0, elapsed < minimumGap ? minimumGap - elapsed : 0);
        opsRefreshTimer = runtimeSetTimeout(() => renderOperationalPanels(force), wait);
    }

    function renderOperationalPanels(force = false) {
        runtimeClearTimeout(opsRefreshTimer);
        opsRefreshTimer = null;
        const panel = document.getElementById(SCRIPT.panelId);
        const opsPanelVisible = Boolean(panel?.classList?.contains('mcms-open') && state.activeTab === 'ops');
        const vehicleStatusVisible = Boolean(document.getElementById(SCRIPT.vehicleStatusId)?.classList?.contains('mcms-open'));
        if (!force && !opsPanelVisible && !vehicleStatusVisible) return;
        operationalPanelsLastRender = Date.now();

        if (vehicleStatusVisible) renderVehicleCodeStatus();
        if (!opsPanelVisible || !panel) return;

        const qualifiedAlliance = qualifiedAllianceMissionCount();
        const summarySignature = JSON.stringify({
            credits: sessionPerformance.creditsEarned,
            qualifying: sessionPerformance.qualifyingCount,
            largest: sessionPerformance.largestPayout,
            payouts: sessionPerformance.payoutCount,
            qualifiedAlliance,
            history: payoutHistory.map(entry => [entry.id, entry.amount, entry.timestamp])
        });

        const session = panel.querySelector('[data-ops-session]');
        if (session) {
            const html = `
                <div class="mcms-ops-session-grid">
                    <div class="mcms-ops-stat"><span class="mcms-ops-stat-label">Credits earned</span><strong class="mcms-ops-stat-value">${escapeHtml(formatOperationalCompactCredits(sessionPerformance.creditsEarned))}</strong></div>
                    <div class="mcms-ops-stat"><span class="mcms-ops-stat-label">10K+ completions</span><strong class="mcms-ops-stat-value">${Number(sessionPerformance.qualifyingCount) || 0}</strong></div>
                    <div class="mcms-ops-stat"><span class="mcms-ops-stat-label">Largest payout</span><strong class="mcms-ops-stat-value">${escapeHtml(formatOperationalCompactCredits(sessionPerformance.largestPayout))}</strong></div>
                    <div class="mcms-ops-stat"><span class="mcms-ops-stat-label"><span class="mcms-alliance-text">Alliance</span> qualified</span><strong class="mcms-ops-stat-value">${qualifiedAlliance}</strong></div>
                    <div class="mcms-ops-stat"><span class="mcms-ops-stat-label">Payout events</span><strong class="mcms-ops-stat-value">${Number(sessionPerformance.payoutCount) || 0}</strong></div>
                </div>`;
            setInnerHtmlIfChanged(session, html, `session:${summarySignature}`);
        }

        const history = panel.querySelector('[data-ops-history]');
        if (history) {
            const historyEntryHtml = entry => `
                <div class="mcms-ops-entry">
                    <div class="mcms-ops-entry-main"><span class="mcms-ops-entry-title">${allianceAwareHtml(entry.caption || (entry.source === 'alliance' ? 'Alliance mission payout' : entry.source === 'personal' ? 'Personal mission payout' : 'Credit award'))}</span><span class="mcms-ops-entry-meta">${escapeHtml(formatClockTime(entry.timestamp))} · <span class="${entry.source === 'alliance' ? 'mcms-alliance-text' : ''}">${escapeHtml(entry.source.toUpperCase())}</span> · ${escapeHtml(entry.tier.toUpperCase())}</span></div>
                    <strong class="mcms-ops-entry-value">+${escapeHtml(formatOperationalCompactCredits(entry.amount))}</strong>
                </div>`;
            let html = '<div class="mcms-empty-state">No payout events recorded in this browser yet.</div>';
            if (payoutHistory.length) {
                const latest = payoutHistory.slice(0, 3);
                const older = payoutHistory.slice(3, PAYOUT_HISTORY_LIMIT);
                html = `
                    <div class="mcms-history-latest">${latest.map(historyEntryHtml).join('')}</div>
                    ${older.length ? `<details class="mcms-history-older" data-ops-history-older><summary>Earlier payouts (${older.length})</summary><div class="mcms-history-scroll">${older.map(historyEntryHtml).join('')}</div></details>` : ''}`;
            }
            setInnerHtmlIfChanged(history, html, `history:${payoutHistory.map(entry => entry.id).join('|')}`);
        }
    }

    function vehicleCodeStatusSnapshot() {
        const counts = new Map();
        const seen = new Set();
        let total = 0;

        for (const vehicle of getPersonalVehicleRecords()) {
            const vehicleId = vehicleRecordId(vehicle) || `anonymous:${seen.size}`;
            if (seen.has(vehicleId)) continue;
            seen.add(vehicleId);

            const code = vehicleStatusCode(vehicle);
            if (!Number.isInteger(code)) continue;
            counts.set(code, (counts.get(code) || 0) + 1);
            total += 1;
        }

        const rows = VEHICLE_CODE_STATUS_DEFINITIONS.map(definition => ({
            ...definition,
            count: counts.get(definition.code) || 0,
            recognised: true
        }));

        const unknownCodes = Array.from(counts.keys())
            .filter(code => !VEHICLE_CODE_STATUS_BY_CODE.has(code))
            .sort((a, b) => a - b);

        for (const code of unknownCodes) {
            rows.push({ code, label: 'Unrecognised Game Status', count: counts.get(code) || 0, recognised: false });
        }

        return {
            rows,
            total,
            complete: vehicleApiReady,
            updatedAt: vehicleStatusLastUpdate || vehicleApiLastFetch || 0
        };
    }

    function createVehicleCodeStatus() {
        let drawer = document.getElementById(SCRIPT.vehicleStatusId);
        if (drawer) return drawer;

        drawer = document.createElement('aside');
        drawer.id = SCRIPT.vehicleStatusId;
        drawer.setAttribute('aria-label', 'Vehicle Code Status');
        drawer.setAttribute('aria-hidden', 'true');
        drawer.innerHTML = `
            <div class="mcms-vcs-head">
                <div class="mcms-vcs-heading">
                <strong class="mcms-vcs-title">VEHICLE CODE STATUS</strong>
                <span class="mcms-vcs-subtitle">Live overview of your personal fleet</span>
            </div>
            <div class="mcms-vcs-head-actions">
                <button class="mcms-vcs-refresh" type="button" title="Refresh vehicle data" aria-label="Refresh vehicle data">↻</button>
                <button class="mcms-vcs-close" type="button" title="Close Vehicle Code Status" aria-label="Close Vehicle Code Status">×</button>
            </div>
        </div>
        <div class="mcms-vcs-meta">
            <span data-vcs-source>Loading fleet…</span>
            <span data-vcs-updated>Updated —</span>
        </div>
            <div class="mcms-vcs-table" role="table" aria-label="Vehicle status-code counts">
                <div class="mcms-vcs-table-row mcms-vcs-table-head" role="row">
                <span role="columnheader">Code</span>
                <span role="columnheader">Status</span>
                <span role="columnheader">Vehicles</span>
            </div>
            <div class="mcms-vcs-table-body" data-vcs-body></div>
            <div class="mcms-vcs-table-row mcms-vcs-total-row" role="row">
                <strong role="cell">Total</strong>
                <span role="cell">Personal fleet</span>
                <strong role="cell" data-vcs-total>0</strong>
            </div>
        </div>
        <div class="mcms-vcs-footnote">Codes are read from MissionChief's live <code>fms_real</code> vehicle status. Zero-count codes remain visible so out-of-service units are never hidden.</div>`;

        drawer.addEventListener('click', event => {
            event.stopPropagation();
            if (closestEventTarget(event, '.mcms-vcs-close')) {
                closeVehicleCodeStatus();
                return;
            }
            if (closestEventTarget(event, '.mcms-vcs-refresh')) refreshVehicleCodeStatus(true);
        });
        ['dblclick', 'mousedown', 'mouseup', 'mousemove', 'wheel', 'contextmenu', 'touchstart', 'touchmove', 'touchend'].forEach(eventName => {
            drawer.addEventListener(eventName, event => event.stopPropagation(), { passive: false });
        });
        document.body.appendChild(drawer);
        return drawer;
    }

    function renderVehicleCodeStatus() {
        const drawer = document.getElementById(SCRIPT.vehicleStatusId);
        if (!drawer || !drawer.classList.contains('mcms-open')) return;

        const snapshot = vehicleCodeStatusSnapshot();
        const body = drawer.querySelector('[data-vcs-body]');
        const total = drawer.querySelector('[data-vcs-total]');
        const source = drawer.querySelector('[data-vcs-source]');
        const updated = drawer.querySelector('[data-vcs-updated]');
        if (!body || !total || !source || !updated) return;

        const html = snapshot.rows.map(row => `
            <div class="mcms-vcs-table-row mcms-vcs-status-row${row.recognised ? '' : ' mcms-vcs-unknown'}" role="row" data-code="${escapeHtml(row.code)}">
            <span class="mcms-vcs-code" role="cell" data-code="${escapeHtml(row.code)}">${escapeHtml(row.code)}</span>
            <span class="mcms-vcs-status" role="cell">${escapeHtml(row.label)}</span>
            <strong class="mcms-vcs-count" role="cell">${Number(row.count).toLocaleString()}</strong>
        </div>`).join('');
        const signature = `vehicle-status:${snapshot.complete}:${snapshot.updatedAt}:${snapshot.rows.map(row => `${row.code}:${row.count}`).join('|')}`;
        setInnerHtmlIfChanged(body, html, signature);
        total.textContent = snapshot.total.toLocaleString();
        source.textContent = snapshot.complete ? 'Complete personal fleet' : 'Loading complete fleet · visible vehicles shown';
        updated.textContent = snapshot.updatedAt ? `Updated ${formatClockTime(snapshot.updatedAt)}` : 'Updated —';
        drawer.classList.toggle('mcms-vcs-loading', !snapshot.complete);
    }

    function refreshVehicleCodeStatus(force = false) {
        const drawer = createVehicleCodeStatus();
        drawer.classList.add('mcms-vcs-loading');
        const refreshButton = drawer.querySelector('.mcms-vcs-refresh');
        if (refreshButton) refreshButton.disabled = true;
        return refreshPersonalVehicleData(force)
            .then(success => {
                renderVehicleCodeStatus();
                if (force) showToast(success ? 'Vehicle Code Status refreshed' : 'Vehicle status refresh failed');
                return success;
            })
            .finally(() => {
                drawer.classList.remove('mcms-vcs-loading');
                if (refreshButton) refreshButton.disabled = false;
            });
    }

    function closeVehicleCodeStatus() {
        const drawer = document.getElementById(SCRIPT.vehicleStatusId);
        if (!drawer) return;
        drawer.classList.remove('mcms-open');
        drawer.setAttribute('aria-hidden', 'true');
        updateUI();
    }

    function toggleVehicleCodeStatus() {
        const drawer = createVehicleCodeStatus();
        const opening = !drawer.classList.contains('mcms-open');
        if (!opening) {
            closeVehicleCodeStatus();
            return;
        }

        drawer.classList.add('mcms-open');
        drawer.setAttribute('aria-hidden', 'false');
        updateUI();
        renderVehicleCodeStatus();
        refreshVehicleCodeStatus(false);
        runtimeSetTimeout(() => drawer.querySelector('.mcms-vcs-close')?.focus?.(), 0);
    }


    function missionWindowValueDetails(entry) {
        const missionId = normaliseMissionId(entry?.missionId);
        const marker = entry?.marker || entry?.snapshot?.marker || null;
        const liveMarkerValue = exactCreditFromObject(marker);
        if (liveMarkerValue !== null) return { value: liveMarkerValue, source: 'live marker' };
        const snapshotValue = parseCreditValue(entry?.snapshot?.averageCredits);
        if (snapshotValue !== null) return { value: snapshotValue, source: 'mission snapshot' };
        const overlayValue = missionId === null ? null : parseCreditValue(missionOverlayData.get(missionId)?.averageCredits);
        if (overlayValue !== null) return { value: overlayValue, source: 'captured mission data' };
        const panelValue = missionId === null ? null : creditsFromMissionPanel(missionId);
        if (panelValue !== null) return { value: panelValue, source: 'mission list' };
        return { value: null, source: 'unavailable' };
    }

    function missionValueCurrencyMeta(hostname = location.hostname) {
        const host = String(hostname || '').trim().toLowerCase();
        if (/(?:^|\.)missionchief\.com$/u.test(host)) return { locale: 'en-US', symbol: '$' };
        if (/(?:^|\.)leitstellenspiel\.de$/u.test(host)) return { locale: 'de-DE', symbol: '€' };
        if (/(?:^|\.)meldkamerspel\.com$/u.test(host)) return { locale: 'nl-NL', symbol: '€' };
        return { locale: 'en-GB', symbol: '£' };
    }

    function formatMissionWindowValue(value, hostname = location.hostname) {
        const amount = Number(value);
        if (!Number.isFinite(amount) || amount < 0) return '';
        const { locale, symbol } = missionValueCurrencyMeta(hostname);
        return `${symbol}${Math.round(amount).toLocaleString(locale)}`;
    }

    function missionValueIdFromUrl(value, baseUrl = location.href) {
        let pathname = String(value || '').trim();
        if (!pathname) return null;
        try { pathname = new URL(pathname, baseUrl).pathname; } catch (err) {}
        const match = pathname.match(/\/missions\/(\d+)(?:\/|$)/u);
        return match ? normaliseMissionId(match[1]) : null;
    }

    function missionValueIdFromElement(root) {
        if (!root) return null;
        const doc = root.ownerDocument || document;
        const directNodes = [root];
        try {
        directNodes.push(...root.querySelectorAll('[data-mission-id], [data-mission_id], input[name="mission_id"], input[name="mission[id]"]'));
        } catch (err) {}
        for (const node of directNodes) {
        const candidates = [
            node?.dataset?.missionId,
            node?.dataset?.mission_id,
            node?.getAttribute?.('data-mission-id'),
            node?.getAttribute?.('data-mission_id'),
            node?.value
        ];
        for (const candidate of candidates) {
            const id = normaliseMissionId(candidate);
            if (id !== null) return id;
        }
        const idMatch = String(node?.id || '').match(/(?:^|_)(?:mission|mission_content|mission_panel)_(\d+)(?:$|_)/u);
        if (idMatch) return normaliseMissionId(idMatch[1]);
        }

        let routeNodes = [];
        try {
        routeNodes = Array.from(root.querySelectorAll('a[href*="/missions/"], form[action*="/missions/"], [data-url*="/missions/"], [data-href*="/missions/"]'));
        } catch (err) {}
        for (const node of routeNodes) {
        for (const attribute of ['href', 'action', 'data-url', 'data-href']) {
            const id = missionValueIdFromUrl(node.getAttribute?.(attribute), doc.location?.href || location.href);
            if (id !== null) return id;
        }
        }

        if (doc !== document) {
        try {
            const id = missionValueIdFromUrl(doc.location?.href, location.href);
            if (id !== null) return id;
        } catch (err) {}
        }
        return null;
    }

    function missionValueMountForRoot(root) {
        if (!root) return null;
        const selector = '.lightbox_content, .modal-body, #mission_content, .mission_content, [data-mission-content]';
        try {
        if (root.matches?.(selector)) return root;
        return root.querySelector?.(selector) || root;
        } catch (err) {
        return root;
        }
    }

        function missionValueWindowCandidates() {
        const discovered = [];
        const add = root => {
        if (!root?.isConnected) return;
        const missionId = missionValueIdFromElement(root);
        if (missionId === null) return;
        const mount = missionValueMountForRoot(root);
        if (!mount?.isConnected || mount.closest?.(`#${SCRIPT.panelId}, #${SCRIPT.helpCenterId}`)) return;
        const toolbarSpacer = missionValueToolbarSpacer(root, mount);
        const toolbar = missionValueToolbarBar(toolbarSpacer, root, mount);
        discovered.push({ root, mount, missionId, toolbarSpacer, toolbar });
        };

        transportSweepVisibleWindowRoots().forEach(add);
        for (const context of transportSweepDocumentContexts()) {
        observeMissionValueDocument(context.doc);
        if (context.doc !== document) {
            try {
                if (missionValueIdFromUrl(context.doc.location?.href, location.href) !== null) add(context.doc.body);
            } catch (err) {}
        }
        }
        return missionValuePreferredCandidates(discovered);
    }

    function removeMissionValueRows(scope = document) {
        try { scope.querySelectorAll?.('.mcms-mission-value-row').forEach(row => row.remove()); } catch (err) {}
    }

    function clearMissionValueIndicators() {
        for (const context of transportSweepDocumentContexts()) removeMissionValueRows(context.doc);
    }


        function missionValueToolbarSpacer(root, mount) {
        const scopes = [root, mount].filter(Boolean);
        for (const scope of scopes) {
        try {
            if (scope.matches?.('#navbar-alarm-spacer')) return scope;
            const spacer = scope.querySelector?.('#navbar-alarm-spacer');
            if (spacer) return spacer;
        } catch (err) {}
        }
        const doc = root?.ownerDocument || mount?.ownerDocument || null;
        if (!doc || (root !== doc.body && mount !== doc.body)) return null;
        try {
        return missionValueIdFromUrl(doc.location?.href, location.href) !== null
            ? doc.getElementById?.('navbar-alarm-spacer') || null
            : null;
        } catch (err) {
        return null;
        }
    }

    function missionValueToolbarBar(spacer, root, mount) {
        if (spacer?.isConnected) {
        try {
            return spacer.closest?.('.navbar-header.flex-row.flex-nowrap.align-items-center, .navbar-header') || spacer.parentElement || null;
        } catch (err) {}
        }
        for (const scope of [root, mount]) {
        try {
            const bars = Array.from(scope?.querySelectorAll?.('.navbar-header.flex-row.flex-nowrap.align-items-center, .navbar-header') || []);
            const bar = bars.find(candidate => candidate.querySelector?.('#navbar-alarm-spacer'));
            if (bar) return bar;
        } catch (err) {}
        }
        return null;
    }

    function missionValueSpacerVisibleWidth(spacer) {
        if (!spacer?.isConnected) return 0;
        try {
        const view = spacer.ownerDocument?.defaultView || pageWindow;
        const style = view?.getComputedStyle?.(spacer);
        if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse' || Number(style?.opacity) === 0) return 0;
        } catch (err) {}
        try {
        const rect = spacer.getBoundingClientRect?.();
        return rect && rect.width > 0 ? Math.max(0, Math.floor(rect.width)) : 0;
        } catch (err) {
        return 0;
        }
    }

    function missionValuePresentation(availableWidth, formatted) {
        const width = Math.max(0, Number(availableWidth) || 0);
        const value = String(formatted || '');
        if (width >= 176) return { mode: 'full', text: `Mission Value · ${value}` };
        if (width >= 110) return { mode: 'short', text: `Value · ${value}` };
        if (width >= 58) return { mode: 'value', text: value };
        return { mode: 'fallback', text: `Mission Value · ${value}` };
    }

    function missionValuePreferredCandidates(candidateList) {
        const groups = new Map();
        for (const candidate of Array.from(candidateList || [])) {
        const missionId = normaliseMissionId(candidate?.missionId);
        if (missionId === null || !candidate?.mount?.isConnected) continue;
        if (!groups.has(missionId)) groups.set(missionId, []);
        groups.get(missionId).push(candidate);
        }
        const selected = [];
        for (const group of groups.values()) {
        const toolbarCandidates = group.filter(candidate => candidate.toolbarSpacer?.isConnected && candidate.toolbar?.isConnected);
        const pool = toolbarCandidates.length ? toolbarCandidates : group;
        const seenHosts = new Set();
        for (const candidate of pool) {
            const host = candidate.toolbarSpacer?.isConnected ? candidate.toolbarSpacer : candidate.mount;
            if (!host || seenHosts.has(host)) continue;
            seenHosts.add(host);
            selected.push(candidate);
        }
        }
        return selected;
    }

    function missionValueCandidateScopes(candidate) {
        const scopes = new Set([candidate?.root, candidate?.mount, candidate?.toolbarSpacer, candidate?.toolbar].filter(Boolean));
        const doc = candidate?.root?.ownerDocument || candidate?.mount?.ownerDocument || null;
        try {
        const frame = doc?.defaultView?.frameElement || null;
        if (frame) {
            scopes.add(frame);
            const frameWindow = frame.closest?.('#lightbox_box, #lightbox, .modal, [role="dialog"], .ui-dialog, .lightbox_content');
            if (frameWindow) scopes.add(frameWindow);
        }
        } catch (err) {}
        return Array.from(scopes);
    }

    function missionValueRowsForCandidate(candidate) {
        const rows = new Set();
        for (const scope of missionValueCandidateScopes(candidate)) {
        try {
            if (scope.matches?.('.mcms-mission-value-row')) rows.add(scope);
            scope.querySelectorAll?.('.mcms-mission-value-row').forEach(row => rows.add(row));
        } catch (err) {}
        }
        return Array.from(rows);
    }

    function pruneMissionValueHostObservers(activeSpacers = null) {
        for (const [spacer, record] of missionValueHostObservers) {
        const keep = Boolean(spacer?.isConnected && record?.toolbar?.isConnected && (!activeSpacers || activeSpacers.has(spacer)));
        if (keep) continue;
        try { record?.resizeObserver?.disconnect?.(); } catch (err) {}
        try { record?.mutationObserver?.disconnect?.(); } catch (err) {}
        missionValueHostObservers.delete(spacer);
        }
    }

    function observeMissionValueHost(candidate) {
        const spacer = candidate?.toolbarSpacer;
        const toolbar = candidate?.toolbar;
        if (!spacer?.isConnected || !toolbar?.isConnected) return;
        const existing = missionValueHostObservers.get(spacer);
        if (existing?.toolbar === toolbar) return;
        if (existing) {
        try { existing.resizeObserver?.disconnect?.(); } catch (err) {}
        try { existing.mutationObserver?.disconnect?.(); } catch (err) {}
        }
        const view = spacer.ownerDocument?.defaultView || pageWindow;
        const ResizeObserverCtor = view?.ResizeObserver || pageWindow.ResizeObserver;
        const MutationObserverCtor = view?.MutationObserver || pageWindow.MutationObserver || MutationObserver;
        const record = { toolbar, resizeObserver: null, mutationObserver: null };
        if (typeof ResizeObserverCtor === 'function') {
        record.resizeObserver = runtimeTrackObserver(new ResizeObserverCtor(() => scheduleMissionValueScan(24)));
        record.resizeObserver.observe(spacer);
        }
        if (typeof MutationObserverCtor === 'function') {
        record.mutationObserver = runtimeTrackObserver(new MutationObserverCtor(() => scheduleMissionValueScan(24)));
        record.mutationObserver.observe(toolbar, { childList: true, subtree: false });
        }
        missionValueHostObservers.set(spacer, record);
    }

    

    

        function syncMissionValueCandidate(candidate) {
        const { mount, missionId, toolbarSpacer, toolbar } = candidate || {};
        if (!mount?.isConnected || missionId === null) return null;
        const marker = getMissionMarkerIndex().byId.get(missionId) || getMissionMarkerIndex().byId.get(String(missionId)) || null;
        const snapshot = liveMissionSnapshots.get(missionId) || liveMissionSnapshots.get(String(missionId)) || missionSnapshotCache.get(missionId) || missionSnapshotCache.get(String(missionId)) || null;
        const details = missionWindowValueDetails({ missionId, marker, snapshot });
        const formatted = formatMissionWindowValue(details.value);
        const existingRows = missionValueRowsForCandidate(candidate);
        if (!formatted) {
        existingRows.forEach(row => row.remove());
        return null;
        }

        observeMissionValueHost(candidate);
        const availableWidth = missionValueSpacerVisibleWidth(toolbarSpacer);
        const presentation = missionValuePresentation(availableWidth, formatted);
        const useToolbar = Boolean(toolbarSpacer?.isConnected && toolbar?.isConnected && presentation.mode !== 'fallback');
        const targetDocument = (useToolbar ? toolbarSpacer.ownerDocument : mount.ownerDocument) || document;
        let row = null;
        if (useToolbar) {
        row = existingRows.find(candidateRow => candidateRow.parentNode === toolbarSpacer) || null;
        } else if (toolbar?.parentNode) {
        row = existingRows.find(candidateRow => candidateRow.parentNode === toolbar.parentNode && candidateRow.previousElementSibling === toolbar) || null;
        }
        row ||= existingRows.find(candidateRow => candidateRow.ownerDocument === targetDocument) || null;
        existingRows.forEach(candidateRow => {
        if (candidateRow !== row) candidateRow.remove();
        });
        if (!row) row = targetDocument.createElement('div');
        row.className = 'mcms-mission-value-row';
        row.setAttribute('data-mcms-mission-value', 'true');
        row.dataset.mcmsMissionId = String(missionId);
        row.dataset.mcmsHost = useToolbar ? 'toolbar' : 'fallback';
        row.dataset.mcmsMode = useToolbar ? presentation.mode : 'fallback';

        let badges = [];
        try { badges = Array.from(row.querySelectorAll('.mcms-mission-value-badge')); } catch (err) {}
        const badge = badges.shift() || targetDocument.createElement('span');
        badges.forEach(extra => extra.remove());
        badge.className = 'mcms-mission-value-badge';
        if (badge.parentNode !== row) row.appendChild(badge);

        if (useToolbar) {
        if (row.parentNode !== toolbarSpacer) toolbarSpacer.appendChild(row);
        } else if (toolbar?.parentNode) {
        if (row.parentNode !== toolbar.parentNode || row.previousElementSibling !== toolbar) {
            toolbar.parentNode.insertBefore(row, toolbar.nextSibling);
        }
        } else if (row.parentNode !== mount || row !== mount.firstElementChild) {
        mount.insertBefore(row, mount.firstChild || null);
        }

        const fullLabel = `Mission Value · ${formatted}`;
        const text = useToolbar ? presentation.text : fullLabel;
        if (badge.textContent !== text) badge.textContent = text;
        badge.title = `${fullLabel} · ${details.source}`;
        badge.setAttribute('aria-label', fullLabel);
        row.setAttribute('aria-label', fullLabel);
        return row;
    }

    function scheduleMissionValueScan(delay = 80) {
        runtimeClearTimeout(missionValueScanTimer);
        missionValueScanTimer = runtimeSetTimeout(() => {
        missionValueScanTimer = null;
        scanMissionValueWindows();
        }, Math.max(0, Number(delay) || 0));
    }

        function scanMissionValueWindows() {
        if (!state.missionValue) {
        clearMissionValueIndicators();
        pruneMissionValueHostObservers(new Set());
        return;
        }
        let needsRetry = false;
        const activeRows = new Set();
        const activeSpacers = new Set();
        for (const candidate of missionValueWindowCandidates()) {
        if (candidate.toolbarSpacer?.isConnected) activeSpacers.add(candidate.toolbarSpacer);
        const renderedRow = syncMissionValueCandidate(candidate);
        if (renderedRow) {
            activeRows.add(renderedRow);
            missionValueRetryState.delete(candidate.mount);
            continue;
        }
        const previous = missionValueRetryState.get(candidate.mount);
        const attempts = previous?.missionId === candidate.missionId ? previous.attempts : 0;
        if (attempts < 3) {
            missionValueRetryState.set(candidate.mount, { missionId: candidate.missionId, attempts: attempts + 1 });
            needsRetry = true;
        }
        }
        for (const context of transportSweepDocumentContexts()) {
        try {
            context.doc.querySelectorAll?.('.mcms-mission-value-row').forEach(row => {
                if (!activeRows.has(row)) row.remove();
            });
        } catch (err) {}
        }
        pruneMissionValueHostObservers(activeSpacers);
        if (needsRetry) runtimeSetTimeout(() => scheduleMissionValueScan(0), 650);
    }

        function ensureMissionValueDocumentStyle(doc) {
        if (!doc || doc === document) return;
        const styleId = 'mcms-mission-value-document-style';
        if (doc.getElementById?.(styleId)) return;
        const style = doc.createElement?.('style');
        if (!style) return;
        style.id = styleId;
        style.textContent = `
            .mcms-mission-value-row{display:flex!important;align-items:center!important;justify-content:flex-end!important;min-width:0!important;box-sizing:border-box!important;position:relative!important;z-index:2!important;pointer-events:none!important}
            #navbar-alarm-spacer>.mcms-mission-value-row,.mcms-mission-value-row[data-mcms-host="toolbar"]{flex:1 1 auto!important;width:100%!important;min-height:32px!important;margin:0!important;padding:0 3px 0 6px!important;clear:none!important;overflow:hidden!important}
            .mcms-mission-value-row[data-mcms-host="fallback"]{width:100%!important;min-height:30px!important;margin:0 0 6px 0!important;padding:4px 8px!important;clear:both!important;overflow:hidden!important}
            .mcms-mission-value-badge{display:inline-flex!important;align-items:center!important;justify-content:center!important;max-width:100%!important;min-width:0!important;min-height:24px!important;box-sizing:border-box!important;padding:4px 9px!important;border:1px solid rgba(235,190,64,.72)!important;border-radius:8px!important;background:linear-gradient(145deg,rgba(48,39,13,.96),rgba(19,21,24,.96))!important;color:#ffe59a!important;box-shadow:0 2px 8px rgba(0,0,0,.34)!important;font:900 11px/1.2 Arial,Helvetica,sans-serif!important;letter-spacing:.15px!important;text-align:right!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;pointer-events:none!important}
            .mcms-mission-value-row[data-mcms-mode="value"] .mcms-mission-value-badge{padding-left:7px!important;padding-right:7px!important}
            @media(max-width:767px){.mcms-mission-value-row[data-mcms-host="fallback"]{padding:4px 6px!important}.mcms-mission-value-badge{font-size:10px!important}}
        `;
        (doc.head || doc.documentElement)?.appendChild(style);
    }

    function clearMissionValueDocumentStyles() {
        for (const context of transportSweepDocumentContexts()) {
        if (context.doc === document) continue;
        try { context.doc.getElementById?.('mcms-mission-value-document-style')?.remove(); } catch (err) {}
        }
    }

    function observeMissionValueFrame(frame) {
        if (!frame || missionValueObservedFrames.has(frame)) return;
        missionValueObservedFrames.add(frame);
        const onLoad = () => scheduleMissionValueScan(40);
        frame.addEventListener('load', onLoad);
        runtimeOnCleanup(() => frame.removeEventListener('load', onLoad));
    }

        function observeMissionValueDocument(doc) {
        if (!doc) return;
        ensureMissionValueDocumentStyle(doc);
        if (missionValueObservedDocuments.has(doc)) return;
        missionValueObservedDocuments.add(doc);
        let frames = [];
        try { frames = Array.from(doc.querySelectorAll('iframe, frame')); } catch (err) {}
        frames.forEach(observeMissionValueFrame);
        const root = doc.documentElement || doc.body;
        if (!root) return;
        const activitySelector = '#lightbox_box, #lightbox, .lightbox_content, .modal, [role="dialog"], .ui-dialog, iframe, frame, a[href*="/missions/"], form[action*="/missions/"], #navbar-alarm-spacer, #navbar-right-help-button, .navbar-header';
        const observer = runtimeTrackObserver(new MutationObserver(mutations => {
        const relevant = mutations.some(mutation => Array.from(mutation.addedNodes || []).concat(Array.from(mutation.removedNodes || [])).some(node => {
            if (node?.nodeType !== 1) return false;
            if (node.matches?.(activitySelector)) return true;
            return Boolean(node.querySelector?.(activitySelector));
        }));
        if (!relevant) return;
        try { doc.querySelectorAll('iframe, frame').forEach(observeMissionValueFrame); } catch (err) {}
        scheduleMissionValueScan(50);
        }));
        observer.observe(root, { childList: true, subtree: true });
    }

    function installMissionValueWindows() {
        if (!missionValueFeatureInstalled) {
        missionValueFeatureInstalled = true;
        runtimeOnCleanup(() => {
            runtimeClearTimeout(missionValueScanTimer);
            missionValueScanTimer = null;
            clearMissionValueIndicators();
            clearMissionValueDocumentStyles();
        });
        }
        for (const context of transportSweepDocumentContexts()) observeMissionValueDocument(context.doc);
        scheduleMissionValueScan(0);
        runtimeSetTimeout(() => scheduleMissionValueScan(0), 180);
        runtimeSetTimeout(() => scheduleMissionValueScan(0), 800);
    }


    function normaliseMissionTimestampMs(value) {
        const number = Number(value);
        if (!Number.isFinite(number) || number <= 0) return null;
        return number < 100000000000 ? number * 1000 : number;
    }


    function missionLockOnReducedMotion() {
        try { return Boolean(pageWindow.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches); }
        catch (err) { return false; }
    }

    function missionLockOnThemeLabel() {
        const labels = {
            mapCommand: 'MISSION LOCKED',
            cyberpunk: 'SIGNAL ACQUIRED',
            fallout4: 'TARGET ACQUIRED',
            umbrella: 'INCIDENT LOCKED',
            factorio: 'COORDINATES LOCKED'
        };
        return labels[state.uiTheme] || labels.mapCommand;
    }

    function playMissionLockTrackingSound() {
        if (!state.missionLockAudio) return false;
        const context = unlockPayoutAudio(true);
        if (!context) return false;
        try {
            const now = context.currentTime + 0.012;
            const master = context.createGain();
            master.gain.setValueAtTime(0.0001, now);
            master.gain.exponentialRampToValueAtTime(0.075, now + 0.025);
            master.gain.exponentialRampToValueAtTime(0.0001, now + 1.08);
            master.connect(context.destination);

            connectAudioNoise(context, master, { start: now, duration: 0.075, gain: 0.11, filterFrequency: 1800 });
            const tracking = [
                [0.04, 620, 0.055, 'square', 0.09, 810],
                [0.20, 760, 0.050, 'square', 0.08, 980],
                [0.36, 920, 0.050, 'square', 0.075, 1180],
                [0.52, 1120, 0.048, 'square', 0.07, 1420]
            ];
            for (const [delay, frequency, duration, type, gain, endFrequency] of tracking) {
                connectAudioTone(context, master, {
                    start: now + delay,
                    duration,
                    frequency,
                    endFrequency,
                    type,
                    gain
                });
            }
            connectAudioTone(context, master, {
                start: now + 0.70,
                duration: 0.22,
                frequency: 1480,
                endFrequency: 1960,
                type: 'sine',
                gain: 0.10
            });
            connectAudioTone(context, master, {
                start: now + 0.90,
                duration: 0.16,
                frequency: 980,
                endFrequency: 980,
                type: 'triangle',
                gain: 0.13
            });
            return true;
        } catch (err) {
            return false;
        }
    }

    function clearMissionLockOnEffect() {
        missionLockOnToken += 1;
        runtimeClearTimeout(missionLockOnTimer);
        missionLockOnTimer = null;
        if (missionLockOnMoveEndMap && missionLockOnMoveEndHandler) {
            try { missionLockOnMoveEndMap.off?.('moveend', missionLockOnMoveEndHandler); } catch (err) {}
        }
        missionLockOnMoveEndMap = null;
        missionLockOnMoveEndHandler = null;
        if (missionLockOnTravelOverlay) {
            try { missionLockOnTravelOverlay.remove(); } catch (err) {}
            missionLockOnTravelOverlay = null;
        }
        if (missionLockOnMarker) {
            try { missionLockOnMarker.remove?.(); } catch (err) {
                try { missionLockOnMarker._map?.removeLayer?.(missionLockOnMarker); } catch (nestedError) {}
            }
            missionLockOnMarker = null;
        }
        if (missionLockOnTargetIcon?.classList) {
            missionLockOnTargetIcon.classList.remove('mcms-mission-lock-target', 'mcms-mission-focus');
        }
        missionLockOnTargetIcon = null;
    }

    function createMissionLockOnTravelOverlay(map) {
        const container = map?.getContainer?.();
        if (!container) return null;
        const overlay = document.createElement('div');
        overlay.className = 'mcms-mission-lock-travel-overlay';
        overlay.setAttribute('aria-hidden', 'true');
        container.appendChild(overlay);
        missionLockOnTravelOverlay = overlay;
        return overlay;
    }

    function resolveMissionLockOnMarker(marker, missionId) {
        const id = normaliseMissionId(missionId);
        if (id !== null) {
            const current = getMissionMarkerIndex().byId.get(id) || null;
            if (current && !isToolkitLeafletLayer(current)) return current;
        }
        return marker;
    }

    function missionLockOnContainerPoint(map, marker, fallbackLatLng) {
        const mapContainer = map?.getContainer?.();
        if (!mapContainer) return null;
        const activeMarker = resolveMissionLockOnMarker(marker, normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId));
        const icon = activeMarker?._icon;
        try {
            const mapRect = mapContainer.getBoundingClientRect();
            if (icon?.isConnected) {
                const iconRect = icon.getBoundingClientRect();
                if (mapRect.width > 0 && mapRect.height > 0 && iconRect.width > 1 && iconRect.height > 1) {
                    const x = iconRect.left - mapRect.left + iconRect.width / 2;
                    const y = iconRect.top - mapRect.top + iconRect.height / 2;
                    if (x >= -80 && y >= -80 && x <= mapRect.width + 80 && y <= mapRect.height + 80) return { x, y, marker: activeMarker };
                }
            }
            const markerLatLng = activeMarker?.getLatLng?.() || fallbackLatLng;
            if (markerLatLng && typeof map.latLngToContainerPoint === 'function') {
                const point = map.latLngToContainerPoint(markerLatLng);
                if (Number.isFinite(Number(point?.x)) && Number.isFinite(Number(point?.y))) return { x: Number(point.x), y: Number(point.y), marker: activeMarker };
            }
        } catch (err) {}
        return null;
    }

    function positionMissionLockOnDom(map, marker, fallbackLatLng, element) {
        if (!element?.isConnected) return null;
        const point = missionLockOnContainerPoint(map, marker, fallbackLatLng);
        if (!point) return null;
        element.style.setProperty('--mcms-lock-x', `${point.x}px`, 'important');
        element.style.setProperty('--mcms-lock-y', `${point.y}px`, 'important');
        return point.marker;
    }

    function createMissionLockOnReticle(map, marker, missionId, latLng, token) {
        if (token !== missionLockOnToken || !map || !latLng) return false;
        if (missionLockOnTravelOverlay) {
            try { missionLockOnTravelOverlay.remove(); } catch (err) {}
            missionLockOnTravelOverlay = null;
        }

        const activeMarker = resolveMissionLockOnMarker(marker, missionId);
        const caption = getMissionCaption(activeMarker, missionId) || getMissionCaption(marker, missionId) || 'Mission incident';
        const shortCaption = caption.length > 38 ? `${caption.slice(0, 35).trim()}…` : caption;
        const label = missionLockOnThemeLabel();
        const mapContainer = map?.getContainer?.();
        if (!mapContainer) return false;

        if (activeMarker?._icon?.classList) {
            missionLockOnTargetIcon = activeMarker._icon;
            activeMarker._icon.classList.add('mcms-mission-lock-target', 'mcms-mission-focus');
        }

        const lockElement = document.createElement('div');
        lockElement.className = 'mcms-mission-lock-dom';
        lockElement.setAttribute('aria-hidden', 'true');
        lockElement.innerHTML = `<div class="mcms-mission-lock-intel">
            <span class="mcms-mission-lock-beam mcms-mission-lock-beam-left"></span>
            <span class="mcms-mission-lock-beam mcms-mission-lock-beam-right"></span>
            <span class="mcms-mission-lock-beam mcms-mission-lock-beam-top"></span>
            <span class="mcms-mission-lock-beam mcms-mission-lock-beam-bottom"></span>
            <div class="mcms-mission-lock-reticle">
                <span class="mcms-mission-lock-radar"></span>
                <span class="mcms-mission-lock-bracket mcms-mission-lock-bracket-a"></span>
                <span class="mcms-mission-lock-bracket mcms-mission-lock-bracket-b"></span>
                <span class="mcms-mission-lock-bracket mcms-mission-lock-bracket-c"></span>
                <span class="mcms-mission-lock-bracket mcms-mission-lock-bracket-d"></span>
                <span class="mcms-mission-lock-crosshair"></span>
                <span class="mcms-mission-lock-dot"></span>
                <span class="mcms-mission-lock-scan"></span>
                <span class="mcms-mission-lock-label"><strong>${escapeHtml(label)}</strong><small>${escapeHtml(shortCaption)}</small></span>
            </div>
        </div>`;
        mapContainer.appendChild(lockElement);
        missionLockOnMarker = lockElement;

        const updatePosition = () => {
            if (token !== missionLockOnToken || missionLockOnMarker !== lockElement || !lockElement.isConnected) return;
            const latestMarker = positionMissionLockOnDom(map, resolveMissionLockOnMarker(activeMarker, missionId), latLng, lockElement);
            if (latestMarker?._icon?.classList && latestMarker._icon !== missionLockOnTargetIcon) {
                missionLockOnTargetIcon?.classList?.remove('mcms-mission-lock-target', 'mcms-mission-focus');
                missionLockOnTargetIcon = latestMarker._icon;
                latestMarker._icon.classList.add('mcms-mission-lock-target', 'mcms-mission-focus');
            }
        };
        updatePosition();
        runtimeRequestAnimationFrame(() => runtimeRequestAnimationFrame(updatePosition));
        runtimeSetTimeout(updatePosition, 80);
        runtimeSetTimeout(updatePosition, 180);
        runtimeSetTimeout(updatePosition, 360);

        missionLockOnTimer = runtimeSetTimeout(() => {
            if (token !== missionLockOnToken) return;
            if (missionLockOnMarker) {
                try { missionLockOnMarker.remove?.(); } catch (err) {}
                missionLockOnMarker = null;
            }
            if (missionLockOnTargetIcon?.classList) {
                missionLockOnTargetIcon.classList.remove('mcms-mission-lock-target', 'mcms-mission-focus');
            }
            missionLockOnTargetIcon = null;
            missionLockOnTimer = null;
        }, missionLockOnReducedMotion() ? 1500 : 3300);
        return true;
    }

    function animateMissionFocus(marker, missionId, latLng, map) {
        clearMissionLockOnEffect();
        playMissionLockTrackingSound();
        const token = missionLockOnToken;
        const reducedMotion = missionLockOnReducedMotion();
        const currentZoom = Math.max(0, Number(map?.getZoom?.()) || 0);
        const targetZoom = Math.min(17, Math.max(currentZoom, 14));
        const travelDuration = reducedMotion ? 0 : 900;

        if (!reducedMotion) createMissionLockOnTravelOverlay(map);
        try {
            if (!reducedMotion && typeof map.flyTo === 'function') {
                map.flyTo(latLng, targetZoom, { duration: travelDuration / 1000, easeLinearity: 0.18 });
            } else {
                map.setView(latLng, targetZoom, { animate: false });
            }
        } catch (err) {
            try { map.setView(latLng, targetZoom); } catch (nestedError) {}
        }

        let completed = false;
        const finishLockOn = () => {
            if (completed) return;
            completed = true;
            if (missionLockOnMoveEndMap === map && missionLockOnMoveEndHandler === finishLockOn) {
                try { map.off?.('moveend', finishLockOn); } catch (err) {}
                missionLockOnMoveEndMap = null;
                missionLockOnMoveEndHandler = null;
            }
            runtimeClearTimeout(missionLockOnTimer);
            missionLockOnTimer = null;
            if (token !== missionLockOnToken) return;
            runtimeRequestAnimationFrame(() => runtimeRequestAnimationFrame(() => runtimeRequestAnimationFrame(() => {
                if (token === missionLockOnToken) createMissionLockOnReticle(map, resolveMissionLockOnMarker(marker, missionId), missionId, latLng, token);
            })));
        };

        if (!reducedMotion && typeof map.once === 'function') {
            missionLockOnMoveEndMap = map;
            missionLockOnMoveEndHandler = finishLockOn;
            try { map.once('moveend', finishLockOn); } catch (err) {}
        }
        missionLockOnTimer = runtimeSetTimeout(finishLockOn, reducedMotion ? 20 : travelDuration + 420);
        return true;
    }

    function focusMissionById(missionId, openMission = false) {
        const id = normaliseMissionId(missionId);
        const marker = getMissionMarkerIndex().byId.get(id) || null;
        if (!marker) { showToast('Mission is no longer available'); return false; }
        let latLng = null;
        try { latLng = marker.getLatLng?.() || null; } catch (err) {}
        const map = findLeafletMapInstance(false);
        if (map && latLng) animateMissionFocus(marker, id, latLng, map);
        else if (marker._icon?.classList) {
            marker._icon.classList.add('mcms-mission-focus');
            runtimeSetTimeout(() => marker._icon?.classList?.remove('mcms-mission-focus'), 1800);
        }
        if (openMission) {
            try {
                if (typeof pageWindow.lightboxOpen === 'function') pageWindow.lightboxOpen(`/missions/${id}`);
                else pageWindow.location.href = `/missions/${id}`;
            } catch (err) {}
        }
        return true;
    }


    function loadMissionProgressState() {
        try {
            const parsed = JSON.parse(localStorage.getItem(SCRIPT.missionProgressState) || '{}');
            if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return new Map();
            const now = Date.now();
            return new Map(Object.entries(parsed)
                .filter(([, record]) => record && typeof record === 'object' && now - Number(record.lastSeen || record.lastChanged || now) < 7 * 24 * 60 * 60 * 1000)
                .map(([missionId, record]) => [String(missionId), {
                    signature: String(record.signature || ''),
                    lastChanged: Number(record.lastChanged) || now,
                    lastSeen: Number(record.lastSeen) || now,
                    tracked: Boolean(record.tracked)
                }]));
        } catch (err) {
            return new Map();
        }
    }

    function saveMissionProgressState(delay = 1200) {
        runtimeClearTimeout(missionProgressSaveTimer);
        missionProgressSaveTimer = runtimeSetTimeout(() => {
            try {
                const now = Date.now();
                const entries = Array.from(missionProgressState.entries())
                    .filter(([, record]) => now - Number(record.lastSeen || record.lastChanged || now) < 7 * 24 * 60 * 60 * 1000)
                    .sort((a, b) => Number(b[1].lastSeen || 0) - Number(a[1].lastSeen || 0))
                    .slice(0, 500);
                localStorage.setItem(SCRIPT.missionProgressState, JSON.stringify(Object.fromEntries(entries)));
            } catch (err) {}
        }, Math.max(0, Number(delay) || 0));
    }

    function missionProgressSignature(snapshot) {
        const units = snapshot?.units || {};
        return [
            String(snapshot?.missingText || '').replace(/\s+/g, ' ').trim().toLowerCase(),
            Number.isFinite(Number(snapshot?.patientsCount)) ? Number(snapshot.patientsCount) : '',
            Number.isFinite(Number(snapshot?.prisonersCount)) ? Number(snapshot.prisonersCount) : '',
            Number.isFinite(Number(snapshot?.liveCurrentValue)) ? Number(snapshot.liveCurrentValue) : '',
            Number.isFinite(Number(snapshot?.vehicleState)) ? Number(snapshot.vehicleState) : '',
            Number(units.total) || 0,
            Number(units.onScene) || 0,
            Number(units.travelling) || 0
        ].join('|');
    }

    function updateMissionProgressState(snapshot, now = Date.now()) {
        if (!snapshot?.missionId) return null;
        const tracked = snapshot.source === 'personal' || Number(snapshot.units?.total) > 0;
        const signature = missionProgressSignature(snapshot);
        let record = missionProgressState.get(snapshot.missionId);

        let changed = false;
        if (!record) {
            record = { signature, lastChanged: now, lastSeen: now, tracked };
            missionProgressState.set(snapshot.missionId, record);
            changed = true;
        } else {
            if (record.signature !== signature || record.tracked !== tracked) {
                record.signature = signature;
                record.lastChanged = now;
                changed = true;
            }
            record.lastSeen = now;
            record.tracked = tracked;
        }
        if (changed) saveMissionProgressState();

        snapshot.lastProgressAt = record.lastChanged;
        snapshot.stuckForMs = tracked ? Math.max(0, now - record.lastChanged) : 0;
        return record;
    }

    function missionStuckRecord(missionId, now = Date.now()) {
        const id = normaliseMissionId(missionId);
        const record = id === null ? null : missionProgressState.get(id);
        if (!record?.tracked) return null;
        const stuckForMs = Math.max(0, now - Number(record.lastChanged || now));
        return {
            ...record,
            stuckForMs,
            thresholdMs: state.stuckDetector.thresholdMin * 60 * 1000,
            isStuck: stuckForMs >= state.stuckDetector.thresholdMin * 60 * 1000
        };
    }

    function formatStuckDuration(ms) {
        const minutes = Math.max(0, Math.floor(Number(ms) / 60000));
        if (minutes >= 120) return `${Math.floor(minutes / 60)}H ${minutes % 60}M`;
        return `${minutes}M`;
    }

    function clearStuckMissionLabels() {
        if (stuckMissionGroup) {
            try { stuckMissionGroup.clearLayers(); stuckMissionGroup.remove(); } catch (err) {}
        }
        stuckMissionLabels.clear();
        stuckMissionGroup = null;
    }

    function stuckMissionAnchor(marker, missionId) {
        const personal = isPersonalMissionLayer(marker, missionId);
        let rowsAbove = 0;
        if (personal && state.missionAge) rowsAbove += 1;
        if (!personal && state.allianceCredits) rowsAbove += 1;
        if (state.unitCommitment) rowsAbove += 1;
        return 18 + (rowsAbove * 20);
    }

    function makeStuckMissionIcon(stuckForMs, anchor) {
        const severe = stuckForMs >= Math.max(60 * 60 * 1000, state.stuckDetector.thresholdMin * 2 * 60 * 1000);
        return pageWindow.L.divIcon({
            className: 'mcms-stuck-mission-icon',
            html: `<span class="mcms-stuck-mission-badge ${severe ? 'mcms-stuck-severe' : ''}">STUCK ${escapeHtml(formatStuckDuration(stuckForMs))}</span>`,
            iconSize: [0, 0],
            iconAnchor: [0, anchor]
        });
    }

    function updateStuckMissionLabels() {
        if (state.economyMode && economyMapMoving) return;
        runtimeClearTimeout(stuckMissionTimer);
        stuckMissionTimer = null;
        if (!state.stuckDetector.enabled) {
            clearStuckMissionLabels();
            return;
        }

        const map = findLeafletMapInstance(false);
        if (!map || !pageWindow.L || typeof pageWindow.L.layerGroup !== 'function' || typeof pageWindow.L.marker !== 'function' || typeof pageWindow.L.divIcon !== 'function') {
            clearStuckMissionLabels();
            return;
        }
        const pane = ensureMissionFloatPane(map);
        if (!pane) {
            clearStuckMissionLabels();
            return;
        }
        const economyBounds = state.economyMode ? economyPaddedBounds(map, 0.08) : null;

        try {
            if (!stuckMissionGroup || stuckMissionGroup._map !== map) {
                clearStuckMissionLabels();
                stuckMissionGroup = pageWindow.L.layerGroup();
                stuckMissionGroup.__mcmsStuckMissionLayer = true;
                stuckMissionGroup.addTo(map);
            }

            const activeIds = new Set();
            const now = Date.now();
            for (const marker of getMissionMarkerIndex().markers) {
                const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
                if (missionId === null) continue;
                const personal = isPersonalMissionLayer(marker, missionId);
                if (personal && !state.visibility.myMissions) continue;
                if (!personal && !state.visibility.allianceMissions) continue;

                let snapshot = liveMissionSnapshots.get(missionId);
                if (!snapshot) {
                    snapshot = missionSnapshotFromMarker(marker, now);
                    if (snapshot) updateMissionProgressState(snapshot, now);
                }
                const stuck = missionStuckRecord(missionId, now);
                if (!snapshot || !stuck?.isStuck) continue;

                let latLng = null;
                try { latLng = marker.getLatLng?.() || null; } catch (err) {}
                if (!latLng || (economyBounds && !economyBounds.contains?.(latLng))) continue;
                try {
                    const onMap = typeof map.hasLayer === 'function' ? map.hasLayer(marker) : Boolean(marker._map);
                    if (!onMap) continue;
                } catch (err) {}

                const anchor = stuckMissionAnchor(marker, missionId);
                const signature = `${Math.floor(stuck.stuckForMs / 60000)}:${anchor}`;
                activeIds.add(missionId);
                let label = stuckMissionLabels.get(missionId);
                if (!label) {
                    label = pageWindow.L.marker(latLng, {
                        interactive: false, keyboard: false, bubblingMouseEvents: false,
                        pane, zIndexOffset: 0, icon: makeStuckMissionIcon(stuck.stuckForMs, anchor)
                    });
                    label.__mcmsStuckSignature = signature;
                    label.__mcmsStuckMissionLabel = true;
                    label.addTo(stuckMissionGroup);
                    stuckMissionLabels.set(missionId, label);
                } else {
                    try { label.setLatLng(latLng); } catch (err) {}
                    if (label.__mcmsStuckSignature !== signature) {
                        label.__mcmsStuckSignature = signature;
                        try { label.setIcon(makeStuckMissionIcon(stuck.stuckForMs, anchor)); } catch (err) {}
                    }
                }
            }

            for (const [missionId, label] of stuckMissionLabels.entries()) {
                if (activeIds.has(missionId)) continue;
                stuckMissionLabels.delete(missionId);
                try { stuckMissionGroup.removeLayer(label); } catch (err) {}
            }
        } catch (err) {
            clearStuckMissionLabels();
        }
    }

    function scheduleStuckMissionRefresh(delay = 300) {
        runtimeClearTimeout(stuckMissionTimer);
        stuckMissionTimer = runtimeSetTimeout(updateStuckMissionLabels, state.economyMode ? Math.max(900, delay) : delay);
    }


    function extractMissionIdsFromPayload(payload, target = new Set(), seen = new WeakSet()) {
        if (!payload || typeof payload !== 'object') return target;
        if (seen.has(payload)) return target;
        seen.add(payload);
        if (Array.isArray(payload)) {
            payload.forEach(item => extractMissionIdsFromPayload(item, target, seen));
            return target;
        }
        const id = normaliseMissionId(payload.id ?? payload.mission_id ?? payload.missionId);
        if (id !== null) target.add(id);
        for (const key of ['params', 'mission', 'data']) {
            const nested = payload[key];
            if (nested && typeof nested === 'object') extractMissionIdsFromPayload(nested, target, seen);
        }
        return target;
    }

    function animateMissionSpawn(missionId, attempt = 0) {
        const marker = getMissionMarkerIndex().byId.get(missionId) || null;
        if (!marker) {
            if (attempt < 4) runtimeSetTimeout(() => animateMissionSpawn(missionId, attempt + 1), 120 + attempt * 120);
            return;
        }
        const map = findLeafletMapInstance(false);
        if (!map || !pageWindow.L) return;
        let latLng = null;
        try { latLng = marker.getLatLng?.() || null; } catch (err) {}
        if (!latLng) return;

        marker._icon?.classList?.add('mcms-mission-spawn-focus');
        const personal = isPersonalMissionLayer(marker, missionId);
        const group = pageWindow.L.layerGroup();
        group.__mcmsMissionSpawnLayer = true;
        try {
            const ring = state.economyMode ? null : pageWindow.L.circleMarker(latLng, {
                radius: 10, interactive: false, bubblingMouseEvents: false,
                className: 'mcms-mission-spawn-ring', pane: 'overlayPane'
            });
            const pane = ensureMissionFloatPane(map) || 'markerPane';
            const label = pageWindow.L.marker(latLng, {
                interactive: false, keyboard: false, bubblingMouseEvents: false, pane,
                icon: pageWindow.L.divIcon({
                    className: 'mcms-mission-spawn-label-icon',
                    html: `<span class="mcms-mission-spawn-label${personal ? '' : ' mcms-alliance-text'}">${personal ? 'NEW INCIDENT' : 'NEW ALLIANCE INCIDENT'}</span>`,
                    iconSize: [0, 0], iconAnchor: [0, 34]
                })
            });
            if (ring) {
                ring.__mcmsMissionSpawnRing = true;
                ring.addTo(group);
            }
            label.__mcmsMissionSpawnLabel = true;
            label.addTo(group);
            group.addTo(map);
        } catch (err) {}
        runtimeSetTimeout(() => {
            marker._icon?.classList?.remove('mcms-mission-spawn-focus');
            try { group.clearLayers(); group.remove(); } catch (err) {}
        }, state.economyMode ? Math.min(1600, MISSION_SPAWN_DURATION_MS) : MISSION_SPAWN_DURATION_MS);
    }

    function handleMissionSpawnArguments(args) {
        if (!state.missionSpawn.enabled) return;
        const ids = new Set();
        args.forEach(arg => extractMissionIdsFromPayload(arg, ids));
        ids.forEach(missionId => {
            if (knownMissionIds.has(missionId)) return;
            knownMissionIds.add(missionId);
            if (!missionSpawnArmed || !state.missionSpawn.enabled) return;
            runtimeSetTimeout(() => animateMissionSpawn(missionId), 80);
        });
    }

    function primeMissionSpawnDetector() {
        missionSpawnArmed = false;
        knownMissionIds.clear();
        for (const marker of getMissionMarkerIndex().markers) {
            const missionId = normaliseMissionId(marker?.mission_id ?? marker?.missionId ?? marker?.options?.mission_id ?? marker?.options?.missionId);
            if (missionId !== null) knownMissionIds.add(missionId);
        }
        runtimeClearTimeout(missionSpawnPrimeTimer);
        missionSpawnPrimeTimer = runtimeSetTimeout(() => { missionSpawnArmed = true; }, 5000);
    }

    function clonePlainData(value) {
        return JSON.parse(JSON.stringify(value));
    }

    function currentMapViewSnapshot() {
        const map = findLeafletMapInstance(false);
        try {
            const centre = map?.getCenter?.();
            const zoom = map?.getZoom?.();
            if (centre && Number.isFinite(Number(zoom))) return { lat: Number(centre.lat), lng: Number(centre.lng), zoom: Number(zoom) };
        } catch (err) {}
        return null;
    }

    function buildMapProfile(name) {
        return {
            name: String(name || 'Map Profile').slice(0, 40),
            savedAt: Date.now(),
            mapView: currentMapViewSnapshot(),
            settings: clonePlainData({
                theme: state.theme,
                markerFocus: state.markerFocus,
                missionPulse: state.missionPulse,
                roadPriority: state.roadPriority,
                visibility: state.visibility,
                allianceCredits: state.allianceCredits,
                missionAge: state.missionAge,
                unitCommitment: state.unitCommitment,
                transportWatcher: state.transportWatcher,
                stuckDetector: state.stuckDetector,
                missionSpawn: state.missionSpawn,
                resourceGap: state.resourceGap,
                coverage: state.coverage,
            })
        };
    }

    function renderProfiles() {
        const list = document.querySelector(`#${SCRIPT.panelId} [data-profile-list]`);
        if (!list) return;
        list.innerHTML = state.profiles.map((profile, index) => {
            if (!profile) {
                return `<div class="mcms-profile-row"><div class="mcms-profile-main"><strong>Slot ${index + 1}</strong><span>Empty profile</span></div><span></span><button class="mcms-small-btn" type="button" data-action="profile-save" data-slot="${index}">Save</button><span></span></div>`;
            }
            const detail = `${THEMES[profile.settings?.theme]?.label || 'Map'} · ${profile.mapView ? `Z${profile.mapView.zoom}` : 'No view'}`;
            return `<div class="mcms-profile-row">
                <div class="mcms-profile-main"><strong>${escapeHtml(profile.name || `Profile ${index + 1}`)}</strong><span>${escapeHtml(detail)}</span></div>
                <button class="mcms-small-btn" type="button" data-action="profile-load" data-slot="${index}">Go</button>
                <button class="mcms-small-btn" type="button" data-action="profile-save" data-slot="${index}">Save</button>
                <button class="mcms-small-btn" type="button" data-action="profile-delete" data-slot="${index}">×</button>
            </div>`;
        }).join('');
    }

    function saveMapProfile(slot) {
        if (!Number.isInteger(slot) || slot < 0 || slot >= MAP_PROFILE_LIMIT) return;
        const existing = state.profiles[slot];
        const name = pageWindow.prompt('Profile name:', existing?.name || `Profile ${slot + 1}`);
        if (name === null) return;
        state.profiles[slot] = buildMapProfile(name.trim() || `Profile ${slot + 1}`);
        saveState();
        renderProfiles();
        showToast(`Saved ${state.profiles[slot].name}`);
    }

    function applyLoadedConfiguration() {
        const vehicleStatus = document.getElementById(SCRIPT.vehicleStatusId);
        vehicleStatus?.classList.remove('mcms-open');
        vehicleStatus?.setAttribute('aria-hidden', 'true');
        missionSpawnArmed = false;
        runtimeClearTimeout(missionSpawnPrimeTimer);
        knownMissionIds.clear();
        if (state.missionSpawn.enabled) primeMissionSpawnDetector();
        if (state.autoLoadAllVehicles) installAutoLoadAllVehicles();
        else stopAutoLoadAllVehicles();
        applyRootAttributes();
        renderQuickPlaces();
        renderBookmarks();
        renderProfiles();
        renderScreenPins();
        updateUI();
        synchroniseVehicleMarkerClasses();
        synchronisePersonalBuildingVisibility();
        reconcileFeatureRefreshes({ includeSnapshots: missionSnapshotsNeeded(), positionPanel: true });
    }

    function loadMapProfile(slot) {
        const profile = state.profiles[slot];
        if (!profile?.settings) return;
        const settings = profile.settings;
        state.theme = normaliseTheme(settings.theme);
        state.markerFocus = Boolean(settings.markerFocus);
        state.missionPulse = Boolean(settings.missionPulse);
        state.roadPriority = Boolean(settings.roadPriority);
        state.visibility = { ...state.visibility, ...(settings.visibility || {}) };
        state.allianceCredits = Boolean(settings.allianceCredits);
        state.allianceCreditMinimum = [0, 5000, 10000, 15000, 20000].includes(Number(settings.allianceCreditMinimum)) ? Number(settings.allianceCreditMinimum) : state.allianceCreditMinimum;
        state.missionAge = Boolean(settings.missionAge);
        state.unitCommitment = Boolean(settings.unitCommitment);
        state.transportWatcher = settings.transportWatcher !== false;
        state.stuckDetector = { ...state.stuckDetector, ...(settings.stuckDetector || {}) };
        state.stuckDetector.thresholdMin = Math.round(clamp(state.stuckDetector.thresholdMin, STUCK_MIN_MINUTES, STUCK_MAX_MINUTES, 20));
        state.missionSpawn = { ...state.missionSpawn, ...(settings.missionSpawn || {}) };
        state.resourceGap = { ...state.resourceGap, ...(settings.resourceGap || {}) };
        state.resourceGap.radiusMi = RESOURCE_GAP_RADIUS_OPTIONS.includes(Number(state.resourceGap.radiusMi)) ? Number(state.resourceGap.radiusMi) : 25;
        state.coverage = { ...state.coverage, ...(settings.coverage || {}) };
        saveState();
        applyLoadedConfiguration();
        if (profile.mapView) runtimeSetTimeout(() => setMapView(profile.mapView.lat, profile.mapView.lng, profile.mapView.zoom), 180);
        showToast(`Loaded ${profile.name || `Profile ${slot + 1}`}`);
    }

    function deleteMapProfile(slot) {
        if (!state.profiles[slot]) return;
        if (!pageWindow.confirm(`Delete "${state.profiles[slot].name || `Profile ${slot + 1}`}"?`)) return;
        state.profiles[slot] = null;
        saveState();
        renderProfiles();
        showToast('Profile deleted');
    }

    function settingsBackupFilename(date = new Date()) {
        const pad = value => String(value).padStart(2, '0');
        return `MC Map Command PRIVATE Backup ${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}-${pad(date.getMinutes())}-${pad(date.getSeconds())}.json`;
    }

    function buildToolkitSettingsBackup(exportedAt = new Date()) {
        const discordWebhook = getDiscordWebhookUrl();
        const financeIdentity = financeVaultCredential();
        const financialArchiveStore = loadFinanceVaultStore();
        return {
            format: 'MissionChief Map Command Toolkit Private Settings Backup',
            schema: 4,
            version: SCRIPT.version,
            exportedAt: exportedAt.toISOString(),
            state: clonePlainData(state),
            integrations: {
                discordWebhook,
                financialArchiveIdentity: clonePlainData(financeIdentity)
            },
            financialArchiveStore: clonePlainData(financialArchiveStore),
            containsPrivateCredentials: Boolean(discordWebhook),
            containsFinancialHistory: Boolean(financialArchiveStore?.profiles && Object.keys(financialArchiveStore.profiles).length),
            privateCredentialNotice: 'This private backup may contain your Discord webhook token and locally stored MissionChief financial history. Anyone holding it may be able to post through the webhook and inspect the exported game ledger.'
        };
    }

    function downloadToolkitSettingsBlob(blob, filename) {
        const urlApi = pageWindow.URL || globalThis.URL;
        const url = urlApi.createObjectURL(blob);
        const link = document.createElement('a');
        link.href = url;
        link.download = filename;
        link.style.display = 'none';
        document.body.appendChild(link);
        link.click();
        link.remove();
        runtimeSetTimeout(() => urlApi.revokeObjectURL(url), 2500);
    }

    async function exportToolkitConfig() {
        try {
            const privateItems = [];
            if (getDiscordWebhookUrl()) privateItems.push('your Discord webhook URL and token');
            if (loadFinanceVaultStore()?.profiles && Object.keys(loadFinanceVaultStore().profiles).length) privateItems.push('your locally stored MissionChief financial history');
            if (privateItems.length) {
                const accepted = pageWindow.confirm(`PRIVATE BACKUP WARNING

This export contains ${privateItems.join(', ')}. Anyone with the file may be able to post to your Discord channel or inspect the exported game ledger.

Store it privately and never upload it to a public website or support ticket.

Create the private backup now?`);
                if (!accepted) {
                    showToast('Private settings export cancelled');
                    return;
                }
            }
            const exportedAt = new Date();
            const filename = settingsBackupFilename(exportedAt);
            const json = JSON.stringify(buildToolkitSettingsBackup(exportedAt), null, 2);
            const BlobConstructor = pageWindow.Blob || globalThis.Blob;
            const FileConstructor = pageWindow.File || globalThis.File;
            const blob = new BlobConstructor([json], { type: 'application/json' });
            const shareNavigator = pageWindow.navigator || globalThis.navigator;

            if (activeDeviceLayout === 'mobile' && typeof FileConstructor === 'function' && typeof shareNavigator?.share === 'function') {
                const file = new FileConstructor([json], filename, { type: 'application/json' });
                let canShareFile = false;
                try {
                    canShareFile = typeof shareNavigator.canShare !== 'function' || shareNavigator.canShare({ files: [file] });
                } catch (err) {}
                if (canShareFile) {
                    try {
                        await shareNavigator.share({
                            files: [file],
                            title: 'MC Map Command private settings backup'
                        });
                        showToast('All toolkit settings exported');
                        return;
                    } catch (err) {
                        if (err?.name === 'AbortError') {
                            showToast('Settings export cancelled');
                            return;
                        }
                    }
                }
            }

            downloadToolkitSettingsBlob(blob, filename);
            showToast('All toolkit settings exported');
        } catch (err) {
            showToast('Export failed: settings file could not be created');
        }
    }

    function looksLikeToolkitState(value) {
        if (!value || typeof value !== 'object' || Array.isArray(value)) return false;
        return ['theme', 'position', 'visibility', 'bookmarks', 'profiles', 'payoutFlash', 'tabletMode', 'mobileMode']
            .some(key => Object.prototype.hasOwnProperty.call(value, key));
    }

    function extractImportedToolkitState(parsed) {
        const candidates = [
            parsed?.state,
            parsed?.settings?.state,
            parsed?.configuration?.state,
            parsed?.configuration,
            parsed
        ];
        return candidates.find(looksLikeToolkitState) || null;
    }

    function extractImportedDiscordWebhook(parsed) {
        const containers = [
            parsed?.integrations,
            parsed?.settings?.integrations,
            parsed?.configuration?.integrations
        ];
        for (const container of containers) {
            if (!container || typeof container !== 'object') continue;
            if (Object.prototype.hasOwnProperty.call(container, 'discordWebhook')) {
                return { present: true, value: String(container.discordWebhook || '') };
            }
            if (Object.prototype.hasOwnProperty.call(container, 'discordWebhookUrl')) {
                return { present: true, value: String(container.discordWebhookUrl || '') };
            }
        }
        return { present: false, value: '' };
    }

    function extractImportedFinancialVaultCredential(parsed) {
        const candidates = [
            parsed?.integrations?.financialArchiveIdentity,
            parsed?.settings?.integrations?.financialArchiveIdentity,
            parsed?.configuration?.integrations?.financialArchiveIdentity,
            parsed?.financialArchiveIdentity,
            parsed?.integrations?.financialVaultCredential,
            parsed?.settings?.integrations?.financialVaultCredential,
            parsed?.configuration?.integrations?.financialVaultCredential,
            parsed?.financialVaultCredential
        ];
        const value = candidates.find(candidate => candidate && typeof candidate === 'object' && !Array.isArray(candidate));
        return { present: Boolean(value), value: value || null };
    }

    function extractImportedFinancialVaultStore(parsed) {
        const candidates = [
            parsed?.financialArchiveStore,
            parsed?.integrations?.financialArchiveStore,
            parsed?.settings?.financialArchiveStore,
            parsed?.configuration?.financialArchiveStore,
            parsed?.financialVaultStore,
            parsed?.integrations?.financialVaultStore,
            parsed?.settings?.financialVaultStore,
            parsed?.configuration?.financialVaultStore
        ];
        const value = candidates.find(candidate => candidate && typeof candidate === 'object' && !Array.isArray(candidate));
        return { present: Boolean(value), value: value || null };
    }

    function normaliseImportedFinanceVaultCredential(value) {
        if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('The Financial Archive identity is invalid.');
        const current = financeVaultCredential();
        return {
            deviceId: current.deviceId || String(value.deviceId || '') || financeRandomToken(16),
            playerId: value.playerId === undefined || value.playerId === null || value.playerId === '' ? null : String(value.playerId).slice(0, 64),
            playerName: financeNormaliseText(value.playerName).slice(0, 120),
            createdAt: Number(value.createdAt) || Date.now()
        };
    }

    function normaliseImportedFinanceVaultStore(value) {
        if (!value || typeof value !== 'object' || Array.isArray(value) || !value.profiles || typeof value.profiles !== 'object') {
            throw new Error('The Financial Archive history is invalid.');
        }
        const credential = financeVaultCredential();
        const profiles = {};
        for (const [rawKey, rawVault] of Object.entries(value.profiles).slice(0, 50)) {
            if (!rawVault || typeof rawVault !== 'object') continue;
            const player = {
                id: rawVault?.player?.id === undefined || rawVault?.player?.id === null || rawVault?.player?.id === '' ? null : String(rawVault.player.id).slice(0, 64),
                name: financeNormaliseText(rawVault?.player?.name).slice(0, 120)
            };
            const key = player.id || player.name ? financePlayerProfileKey(player) : String(rawKey || '').slice(0, 180);
            if (!key) continue;
            profiles[key] = normaliseFinanceVault(rawVault, player, credential.deviceId);
        }
        return { schema: FINANCE_VAULT_SCHEMA, profiles };
    }

    function describePrivateImport(parsed) {
        const importedWebhook = extractImportedDiscordWebhook(parsed);
        const importedCredential = extractImportedFinancialVaultCredential(parsed);
        const importedStore = extractImportedFinancialVaultStore(parsed);
        const privateItems = [];
        if (importedWebhook.present && String(importedWebhook.value || '').trim()) privateItems.push('a Discord webhook URL and token');
        if (importedStore.present && Object.keys(importedStore.value?.profiles || {}).length) privateItems.push('stored MissionChief financial ledger history');
        return { importedWebhook, importedCredential, importedStore, privateItems };
    }

    function applyImportedToolkitSettings(parsed) {
        const importedState = extractImportedToolkitState(parsed);
        if (!importedState) throw new Error('The file does not contain MissionChief Map Command settings.');

        const { importedWebhook, importedCredential, importedStore } = describePrivateImport(parsed);
        const normalisedWebhook = importedWebhook.present ? normaliseDiscordWebhookUrl(importedWebhook.value) : '';
        const normalisedCredential = importedCredential.present ? normaliseImportedFinanceVaultCredential(importedCredential.value) : null;
        const normalisedVaultStore = importedStore.present ? normaliseImportedFinanceVaultStore(importedStore.value) : null;
        const previousStateRaw = localStorage.getItem(SCRIPT.storageState);
        const previousWebhook = getDiscordWebhookUrl();
        const previousCredentialRaw = gmGetValueSafe(SCRIPT.financeVaultCredentialState, null);
        const previousVaultRaw = gmGetValueSafe(SCRIPT.financeVaultState, null);

        try {
            localStorage.setItem(SCRIPT.storageState, JSON.stringify(importedState));
            state = loadState();
            saveState();
            if (importedWebhook.present) saveDiscordWebhookUrl(normalisedWebhook);
            if (normalisedCredential) saveFinanceVaultCredential(normalisedCredential);
            if (normalisedVaultStore) saveFinanceVaultStore(normalisedVaultStore);
            invalidateFinanceVaultMemory();
            loadCachedFinancialRules();
            loadCachedFinancialPolicy();
            applyLoadedConfiguration();
        } catch (err) {
            try {
                if (previousStateRaw === null) localStorage.removeItem(SCRIPT.storageState);
                else localStorage.setItem(SCRIPT.storageState, previousStateRaw);
                state = loadState();
                saveDiscordWebhookUrl(previousWebhook);
                if (previousCredentialRaw === null) gmDeleteValueSafe(SCRIPT.financeVaultCredentialState);
                else gmSetValueSafe(SCRIPT.financeVaultCredentialState, previousCredentialRaw);
                if (previousVaultRaw === null) gmDeleteValueSafe(SCRIPT.financeVaultState);
                else gmSetValueSafe(SCRIPT.financeVaultState, previousVaultRaw);
                invalidateFinanceVaultMemory();
                applyLoadedConfiguration();
            } catch (rollbackError) {}
            throw err;
        }

        return {
            webhook: importedWebhook.present,
            credential: importedCredential.present,
            vaultHistory: importedStore.present
        };
    }

    function importToolkitConfigFile(file) {
        if (!file) return;
        if (Number(file.size) > 150 * 1024 * 1024) {
            showToast('Import failed: settings file is too large');
            return;
        }
        const reader = new FileReader();
        reader.onload = () => {
            try {
                const parsed = JSON.parse(String(reader.result || ''));
                const privateImport = describePrivateImport(parsed);
                if (privateImport.privateItems.length) {
                    const accepted = pageWindow.confirm(`PRIVATE BACKUP IMPORT WARNING\n\nThis file contains ${privateImport.privateItems.join(', ')}. Importing it can replace your saved Discord connection, Financial Archive identity or local financial history.\n\nOnly continue if you trust where this backup came from.\n\nImport this private backup now?`);
                    if (!accepted) {
                        showToast('Private settings import cancelled');
                        return;
                    }
                }
                const imported = applyImportedToolkitSettings(parsed);
                const additions = [imported.webhook && 'webhook', imported.credential && 'archive identity', imported.vaultHistory && 'financial history'].filter(Boolean);
                showToast(additions.length ? `All toolkit settings imported · ${additions.join(', ')}` : 'Toolkit settings imported · existing private integrations kept');
            } catch (err) {
                showToast(`Import failed: ${err?.message || 'invalid settings file'}`);
            }
        };
        reader.onerror = () => showToast('Import failed: file could not be read');
        reader.readAsText(file);
    }

    function resetToolkitConfiguration() {
        if (!pageWindow.confirm('Reset all toolkit settings and saved map profiles? Payout history will be kept.')) return;
        state = defaultState();
        saveState();
        applyLoadedConfiguration();
        showToast('Toolkit settings reset');
    }

    function payoutPresentation(amount, context = {}) {
        const tier = payoutTierForAmount(amount);
        const source = ['personal', 'alliance'].includes(context.source) ? context.source : 'unknown';
        const wording = {
            standard: ['MISSION COMPLETE', 'INCIDENT RESOLVED', 'RESPONSE SUCCESSFUL'],
            major: ['MAJOR PAYOUT', 'OPERATION COMPLETE', 'RESPONSE SUCCESSFUL'],
            high: ['HIGH VALUE MISSION', 'MAJOR INCIDENT CLEARED', 'OPERATION COMPLETE'],
            elite: ['ELITE RESPONSE', 'COMMAND SUCCESS', 'MAJOR INCIDENT CLEARED']
        };
        payoutEventCounter += 1;
        const titles = wording[tier];
        const title = titles[(Math.abs(Math.round(Number(amount) || 0)) + payoutEventCounter) % titles.length];
        const accents = {
            personal: { colour: '#f4c84f', soft: 'rgba(244,200,79,.55)', glow: 'rgba(244,200,79,.24)', label: 'PERSONAL MISSION' },
            alliance: { colour: '#70ef9b', soft: 'rgba(112,239,155,.55)', glow: 'rgba(112,239,155,.24)', label: 'ALLIANCE MISSION' },
            unknown: { colour: '#a8ddff', soft: 'rgba(168,221,255,.52)', glow: 'rgba(168,221,255,.22)', label: 'CREDIT AWARD' }
        };
        const tierLabels = { standard: 'STANDARD PAYOUT', major: 'MAJOR PAYOUT', high: 'HIGH VALUE', elite: 'ELITE RESPONSE' };
        return { tier, source, title, tierLabel: tierLabels[tier], ...accents[source], caption: String(context.caption || '') };
    }

    function stopPayoutMediaAudio(resetPosition = true) {
        payoutMediaGeneration += 1;
        if (!payoutMediaAudio) return;
        try {
            payoutMediaAudio.pause();
            if (resetPosition) payoutMediaAudio.currentTime = 0;
        } catch (err) {}
    }

    function disposePayoutMediaAudio() {
        payoutMediaGeneration += 1;
        if (payoutMediaAudio) {
            try {
                payoutMediaAudio.pause();
                payoutMediaAudio.removeAttribute('src');
                payoutMediaAudio.load();
            } catch (err) {}
        }
        payoutMediaAudio = null;
        payoutMediaTemplate = '';
    }

    function getPayoutMediaAudio(template) {
        const media = PAYOUT_MEDIA_SOUNDS[template];
        if (!media?.url) return null;
        if (!payoutMediaAudio || payoutMediaTemplate !== template) {
            disposePayoutMediaAudio();
            const audio = document.createElement('audio');
            // Do not download/decode hosted MP3s during normal gameplay. The file is
            // requested only when a matching payout popup actually needs to play it.
            audio.preload = 'none';
            audio.addEventListener('error', () => {
                console.warn(`[${SCRIPT.name}] Hosted payout audio failed to load: ${media.label}`);
            });
            audio.src = media.url;
            payoutMediaAudio = audio;
            payoutMediaTemplate = template;
            }
        return payoutMediaAudio;
    }

    async function playPayoutMediaSound(template) {
        if (!state.payoutFlash.soundEnabled || state.payoutFlash.soundVolume <= 0) return false;
        const audio = getPayoutMediaAudio(template);
        if (!audio) return false;
        try {
            const generation = ++payoutMediaGeneration;
            audio.pause();
            audio.currentTime = 0;
            audio.muted = false;
            audio.preload = 'auto';
            audio.volume = clamp(state.payoutFlash.soundVolume, 0, 1, 0.35);
            await audio.play();
            if (generation !== payoutMediaGeneration) {
                audio.pause();
                return false;
            }
            return true;
        } catch (err) {
            console.warn(`[${SCRIPT.name}] Hosted payout audio was blocked or unavailable; using synthesized fallback.`, err);
            return false;
        }
    }

    function unlockPayoutAudio(force = false) {
        if (!force && !state.payoutFlash.soundEnabled) return null;
        try {
            const AudioContextClass = pageWindow.AudioContext || pageWindow.webkitAudioContext;
            if (!AudioContextClass) return null;
            if (!payoutAudioContext) payoutAudioContext = new AudioContextClass();
            if (payoutAudioContext.state === 'suspended') payoutAudioContext.resume().catch(() => {});
            return payoutAudioContext;
        } catch (err) { return null; }
    }

    function connectAudioTone(context, destination, {
        start, duration, frequency, endFrequency = frequency, type = 'sine', gain = 0.3
    }) {
        const osc = context.createOscillator();
        const amp = context.createGain();
        osc.type = type;
        osc.frequency.setValueAtTime(Math.max(1, frequency), start);
        if (endFrequency !== frequency) osc.frequency.exponentialRampToValueAtTime(Math.max(1, endFrequency), start + duration);
        amp.gain.setValueAtTime(0.0001, start);
        amp.gain.exponentialRampToValueAtTime(Math.max(0.0001, gain), start + Math.min(.035, duration * .18));
        amp.gain.exponentialRampToValueAtTime(0.0001, start + duration);
        osc.connect(amp);
        amp.connect(destination);
        osc.start(start);
        osc.stop(start + duration + .02);
    }

    function connectAudioNoise(context, destination, { start, duration, gain = 0.18, filterFrequency = 900 }) {
        const length = Math.max(1, Math.floor(context.sampleRate * duration));
        const buffer = context.createBuffer(1, length, context.sampleRate);
        const data = buffer.getChannelData(0);
        for (let index = 0; index < length; index += 1) {
            const envelope = 1 - (index / length);
            data[index] = (Math.random() * 2 - 1) * envelope;
        }
        const source = context.createBufferSource();
        const filter = context.createBiquadFilter();
        const amp = context.createGain();
        source.buffer = buffer;
        filter.type = 'lowpass';
        filter.frequency.setValueAtTime(filterFrequency, start);
        amp.gain.setValueAtTime(0.0001, start);
        amp.gain.exponentialRampToValueAtTime(Math.max(0.0001, gain), start + .012);
        amp.gain.exponentialRampToValueAtTime(0.0001, start + duration);
        source.connect(filter);
        filter.connect(amp);
        amp.connect(destination);
        source.start(start);
        source.stop(start + duration + .02);
    }

    function playSynthPayoutSound(tier, template = state.payoutFlash.template) {
        if (!state.payoutFlash.soundEnabled || state.payoutFlash.soundVolume <= 0) return;
        const context = unlockPayoutAudio();
        if (!context) return;

        const now = context.currentTime + 0.015;
        const tierScale = tier === 'elite' ? 1.16 : tier === 'high' ? 1.10 : tier === 'major' ? 1.05 : 1;
        const master = context.createGain();
        const volume = Math.max(0.0001, Math.min(.34, .24 * state.payoutFlash.soundVolume));
        master.gain.setValueAtTime(volume, now);
        master.connect(context.destination);

        const tone = (delay, frequency, duration, type = 'sine', gain = .28, endFrequency = frequency) =>
            connectAudioTone(context, master, {
                start: now + delay,
                duration,
                frequency: frequency * tierScale,
                endFrequency: endFrequency * tierScale,
                type,
                gain
            });
        const noise = (delay, duration, gain = .16, filterFrequency = 900) =>
            connectAudioNoise(context, master, { start: now + delay, duration, gain, filterFrequency });

        switch (template) {
            case 'viceCity':
                tone(0, 220, .34, 'sawtooth', .20, 330);
                tone(.15, 330, .28, 'triangle', .22, 440);
                tone(.32, 440, .45, 'sine', .24, 660);
                tone(.48, 660, .48, 'sine', .17, 880);
                break;
            case 'badCompany':
                noise(0, .52, .26, 520);
                tone(0, 62, .55, 'sine', .30, 34);
                tone(.36, 1180, .12, 'square', .11, 820);
                tone(.53, 960, .13, 'square', .09, 700);
                break;
            case 'cyberpunk':
                tone(0, 96, .42, 'square', .20, 48);
                tone(.08, 740, .08, 'square', .10, 1320);
                tone(.22, 1180, .06, 'square', .08, 520);
                tone(.36, 185, .55, 'sawtooth', .18, 370);
                break;
            case 'hellfire':
                noise(0, .62, .24, 650);
                tone(0, 72, .70, 'sawtooth', .22, 36);
                tone(.28, 220, .70, 'triangle', .17, 110);
                tone(.50, 440, .42, 'sine', .12, 220);
                break;
            case 'wasteland':
                noise(0, .18, .08, 2200);
                tone(.02, 390, .16, 'square', .11, 510);
                tone(.25, 520, .18, 'square', .10, 690);
                tone(.48, 780, .44, 'sine', .15, 1040);
                break;
            case 'factorio':
                noise(0, .10, .13, 1750);
                tone(0, 118, .22, 'square', .22, 78);
                tone(.11, 246, .12, 'square', .13, 184);
                noise(.24, .14, .15, 920);
                tone(.30, 330, .34, 'triangle', .17, 495);
                tone(.52, 660, .22, 'square', .10, 440);
                break;
            case 'galactic':
                tone(0, 220, .72, 'sine', .18, 1100);
                tone(.18, 440, .58, 'triangle', .13, 880);
                tone(.42, 880, .48, 'sine', .15, 1320);
                break;
            case 'darkFantasy':
                tone(0, 110, 1.05, 'sine', .26, 82);
                tone(.08, 164.81, 1.15, 'triangle', .15, 123.47);
                tone(.35, 220, .90, 'sine', .14, 165);
                break;
            case 'biohazard':
                tone(0, 740, .14, 'square', .12, 740);
                tone(.24, 740, .14, 'square', .12, 740);
                tone(.50, 980, .44, 'sine', .17, 1240);
                break;
            case 'underworld':
                tone(0, 98, .55, 'sine', .22, 73);
                tone(.16, 196, .42, 'triangle', .18, 246.94);
                tone(.34, 293.66, .42, 'triangle', .16, 392);
                tone(.54, 392, .55, 'sine', .15, 523.25);
                break;
            case 'pixelArcade':
                tone(0, 659.25, .11, 'square', .13);
                tone(.12, 783.99, .11, 'square', .13);
                tone(.24, 987.77, .12, 'square', .14);
                tone(.38, 1318.51, .36, 'square', .12);
                break;
            case 'jamesBond':
                tone(0, 196, .24, 'sine', .17, 246.94);
                tone(.12, 293.66, .24, 'triangle', .15, 369.99);
                tone(.27, 440, .32, 'sine', .17, 659.25);
                tone(.48, 987.77, .48, 'sine', .13, 1318.51);
                break;
            case 'gta5':
            default:
                tone(0, 110, .48, 'sine', .28, 58);
                tone(.18, 440, .42, 'triangle', .14, 440);
                tone(.30, 660, .42, 'sine', .13, 660);
                tone(.42, 880, .50, 'sine', .12, 880);
                break;
        }

        runtimeSetTimeout(() => {
            try { master.disconnect(); } catch (err) {}
        }, 1700);
    }

    function playPayoutSound(tier, template = state.payoutFlash.template) {
        if (!state.payoutFlash.soundEnabled || state.payoutFlash.soundVolume <= 0) return;
        if (PAYOUT_MEDIA_SOUNDS[template]) {
            playPayoutMediaSound(template).then(played => {
                if (!played) playSynthPayoutSound(tier, template);
            });
            return;
        }
        playSynthPayoutSound(tier, template);
    }

    function animatePayoutAmount(element, amount, duration, reducedMotion) {
        if (!element) return;
        if (payoutAmountAnimationFrame) runtimeCancelAnimationFrame(payoutAmountAnimationFrame);
        const target = Math.max(0, Math.round(Number(amount) || 0));
        if (reducedMotion) { element.textContent = `+${target.toLocaleString()} CREDITS`; return; }
        const animationDuration = Math.min(1250, Math.max(550, duration * 0.22));
        const started = performance.now();
        const tick = time => {
            const progress = Math.min(1, (time - started) / animationDuration);
            const eased = 1 - Math.pow(1 - progress, 3);
            element.textContent = `+${Math.round(target * eased).toLocaleString()} CREDITS`;
            if (progress < 1) payoutAmountAnimationFrame = runtimeRequestAnimationFrame(tick);
            else payoutAmountAnimationFrame = null;
        };
        payoutAmountAnimationFrame = runtimeRequestAnimationFrame(tick);
    }

    function readCurrentCreditTotal() {
        const valueElement = document.querySelector('.credits-value');
        if (!valueElement) return null;
        return parseCreditValue(valueElement.textContent);
    }

    function positionPayoutFlashOverlay(overlay, mapEl = getLargestLeafletMap()) {
        if (!overlay || !mapEl || !mapEl.isConnected) {
            if (overlay) {
                overlay.style.setProperty('opacity', '0', 'important');
                overlay.style.setProperty('display', 'none', 'important');
            }
            return false;
        }

        // v4.8.4: payout presentation is a map layer, never a browser top-layer
        // element. Reparenting it into the active Leaflet container ensures every
        // MissionChief menu, modal and Toolkit drawer naturally remains above it.
        try {
            if (typeof overlay.hidePopover === 'function' && overlay.matches(':popover-open')) overlay.hidePopover();
        } catch (err) {}
        overlay.removeAttribute('popover');
        if (overlay.parentElement !== mapEl) mapEl.appendChild(overlay);

        try {
            const mapStyle = pageWindow.getComputedStyle(mapEl);
            if (mapStyle.position === 'static') mapEl.style.setProperty('position', 'relative');
            // Keep the payout z-index inside the map's own stacking context so it
            // cannot escape above MissionChief sidebars, dropdowns or dialogs.
            mapEl.style.setProperty('isolation', 'isolate');
            mapEl.dataset.mcmsPayoutHost = 'true';
        } catch (err) {}

        let radius = '0px';
        try { radius = pageWindow.getComputedStyle(mapEl).borderRadius || '0px'; }
        catch (err) {}

        overlay.style.setProperty('position', 'absolute', 'important');
        overlay.style.setProperty('inset', '0', 'important');
        overlay.style.setProperty('left', '0', 'important');
        overlay.style.setProperty('top', '0', 'important');
        overlay.style.setProperty('right', '0', 'important');
        overlay.style.setProperty('bottom', '0', 'important');
        overlay.style.setProperty('width', '100%', 'important');
        overlay.style.setProperty('height', '100%', 'important');
        overlay.style.setProperty('border-radius', radius, 'important');
        overlay.style.setProperty('z-index', '625', 'important');
        overlay.style.setProperty('pointer-events', 'none', 'important');
        overlay.style.setProperty('display', 'block', 'important');
        overlay.style.setProperty('visibility', 'visible', 'important');
        return true;
    }

    function ensurePayoutFlashOverlay() {
        const preferredParent = getLargestLeafletMap();
        if (!preferredParent || !preferredParent.isConnected) return null;

        let overlay = document.getElementById(SCRIPT.payoutFlashId);
        if (overlay) {
            try {
                if (typeof overlay.hidePopover === 'function' && overlay.matches(':popover-open')) overlay.hidePopover();
            } catch (err) {}
            overlay.removeAttribute('popover');
            if (overlay.parentElement !== preferredParent) preferredParent.appendChild(overlay);
        }

        if (!overlay) {
            overlay = document.createElement('div');
            overlay.id = SCRIPT.payoutFlashId;
            overlay.setAttribute('aria-hidden', 'true');
            overlay.setAttribute('role', 'presentation');
            overlay.innerHTML = `
                <div class="mcms-payout-light mcms-payout-red"></div>
                <div class="mcms-payout-light mcms-payout-blue"></div>
                <div class="mcms-payout-cinematic"></div>
                <div class="mcms-payout-vc-sunset"></div>
                <div class="mcms-payout-vc-grid"></div>
                <div class="mcms-payout-bc-dust"></div>
                <div class="mcms-payout-bc-hud"></div>
                <div class="mcms-payout-bc-embers">
                    <i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i>
                    <i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i>
                    <i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i>
                    <i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i>
                    <i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i>
                    <i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i><i class="mcms-payout-bc-ember"></i>
                </div>
                <div class="mcms-payout-theme-fx mcms-payout-theme-fx-a"></div>
                <div class="mcms-payout-theme-fx mcms-payout-theme-fx-b"></div>
                <div class="mcms-payout-theme-fx mcms-payout-theme-fx-c"></div>
                <div class="mcms-payout-theme-particles">
                    <i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i>
                    <i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i>
                    <i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i><i class="mcms-payout-theme-particle"></i>
                </div>
                <div class="mcms-payout-particles"></div>
                <div class="mcms-payout-banner">
                    <span class="mcms-payout-tier">STANDARD PAYOUT</span>
                    <span class="mcms-payout-title">Mission Complete</span>
                    <span class="mcms-payout-mission"></span>
                    <span class="mcms-payout-divider"></span>
                    <span class="mcms-payout-source">CREDIT AWARD</span>
                    <span class="mcms-payout-kicker">Payout received</span>
                    <strong class="mcms-payout-amount">+0 CREDITS</strong>
                </div>
            `;
            preferredParent.appendChild(overlay);
        }

        // Inline fallback styling makes the effect independent of external/game CSS.
        overlay.style.setProperty('opacity', '0', 'important');
        overlay.style.setProperty('overflow', 'hidden', 'important');
        overlay.style.setProperty('background', 'transparent', 'important');

        const red = overlay.querySelector('.mcms-payout-red');
        const blue = overlay.querySelector('.mcms-payout-blue');
        const cinematic = overlay.querySelector('.mcms-payout-cinematic');
        const viceSunset = overlay.querySelector('.mcms-payout-vc-sunset');
        const viceGrid = overlay.querySelector('.mcms-payout-vc-grid');
        const badDust = overlay.querySelector('.mcms-payout-bc-dust');
        const badHud = overlay.querySelector('.mcms-payout-bc-hud');
        const badEmbers = overlay.querySelector('.mcms-payout-bc-embers');
        const themeFxA = overlay.querySelector('.mcms-payout-theme-fx-a');
        const themeFxB = overlay.querySelector('.mcms-payout-theme-fx-b');
        const themeFxC = overlay.querySelector('.mcms-payout-theme-fx-c');
        const themeParticles = overlay.querySelector('.mcms-payout-theme-particles');
        const banner = overlay.querySelector('.mcms-payout-banner');

        for (const light of [red, blue]) {
            if (!light) continue;
            light.style.setProperty('position', 'absolute', 'important');
            light.style.setProperty('inset', '-12%', 'important');
            light.style.setProperty('opacity', '0');
            light.style.setProperty('pointer-events', 'none', 'important');
        }
        if (cinematic) {
            cinematic.style.setProperty('position', 'absolute', 'important');
            cinematic.style.setProperty('inset', '0', 'important');
            cinematic.style.setProperty('opacity', '0');
            cinematic.style.setProperty('pointer-events', 'none', 'important');
        }
        for (const layer of [viceSunset, viceGrid, badDust, badHud, badEmbers, themeFxA, themeFxB, themeFxC, themeParticles]) {
            if (!layer) continue;
            layer.style.setProperty('position', 'absolute', 'important');
            layer.style.setProperty('opacity', '0');
            layer.style.setProperty('pointer-events', 'none', 'important');
        }
        if (red) red.style.setProperty('background', 'radial-gradient(ellipse at 0% 45%, rgba(255,22,22,.72) 0%, rgba(255,22,22,.36) 27%, rgba(255,22,22,0) 64%), linear-gradient(90deg, rgba(255,18,18,.42) 0%, rgba(255,18,18,0) 52%)', 'important');
        if (blue) blue.style.setProperty('background', 'radial-gradient(ellipse at 100% 55%, rgba(25,113,255,.76) 0%, rgba(25,113,255,.38) 27%, rgba(25,113,255,0) 64%), linear-gradient(270deg, rgba(20,103,255,.44) 0%, rgba(20,103,255,0) 52%)', 'important');

        if (banner) {
            banner.style.setProperty('position', 'absolute', 'important');
            banner.style.setProperty('left', '50%', 'important');
            banner.style.setProperty('top', '50%', 'important');
            banner.style.setProperty('transform', 'translate(-50%, -44%) scale(1.08)');
            banner.style.setProperty('filter', 'blur(7px)');
            banner.style.setProperty('opacity', '0');
            banner.style.setProperty('display', 'block', 'important');
            banner.style.setProperty('visibility', 'visible', 'important');
            banner.style.setProperty('pointer-events', 'none', 'important');
        }

        return positionPayoutFlashOverlay(overlay) ? overlay : null;
    }

    function stopPayoutFlashAnimation(overlay = document.getElementById(SCRIPT.payoutFlashId)) {
        runtimeClearTimeout(payoutFlashTimer);
        stopPayoutMediaAudio(true);
        runtimeClearInterval(payoutFlashFallbackInterval);
        payoutFlashFallbackInterval = null;
        if (payoutAmountAnimationFrame) runtimeCancelAnimationFrame(payoutAmountAnimationFrame);
        payoutAmountAnimationFrame = null;
        for (const animation of payoutFlashAnimations) {
            try { animation.cancel(); } catch (err) {}
        }
        payoutFlashAnimations = [];

        if (!overlay) return;
        overlay.classList.remove('mcms-payout-active', 'mcms-payout-fit-compact', 'mcms-payout-fit-tight', 'mcms-payout-controls-safe');
        overlay.style.removeProperty('--mcms-payout-banner-top');
        overlay.style.removeProperty('--mcms-payout-safe-height');
        overlay.style.removeProperty('--mcms-payout-safe-bottom-offset');
        overlay.style.setProperty('opacity', '0', 'important');
        const red = overlay.querySelector('.mcms-payout-red');
        const blue = overlay.querySelector('.mcms-payout-blue');
        const cinematic = overlay.querySelector('.mcms-payout-cinematic');
        const viceSunset = overlay.querySelector('.mcms-payout-vc-sunset');
        const viceGrid = overlay.querySelector('.mcms-payout-vc-grid');
        const badDust = overlay.querySelector('.mcms-payout-bc-dust');
        const badHud = overlay.querySelector('.mcms-payout-bc-hud');
        const badEmbers = overlay.querySelector('.mcms-payout-bc-embers');
        const themeFxA = overlay.querySelector('.mcms-payout-theme-fx-a');
        const themeFxB = overlay.querySelector('.mcms-payout-theme-fx-b');
        const themeFxC = overlay.querySelector('.mcms-payout-theme-fx-c');
        const themeParticles = overlay.querySelector('.mcms-payout-theme-particles');
        const banner = overlay.querySelector('.mcms-payout-banner');
        if (red) {
            red.style.removeProperty('animation');
            red.style.setProperty('opacity', '0');
        }
        if (blue) {
            blue.style.removeProperty('animation');
            blue.style.setProperty('opacity', '0');
        }
        if (cinematic) cinematic.style.setProperty('opacity', '0');
        if (viceSunset) viceSunset.style.setProperty('opacity', '0');
        if (viceGrid) viceGrid.style.setProperty('opacity', '0');
        if (badDust) badDust.style.setProperty('opacity', '0');
        if (badHud) badHud.style.setProperty('opacity', '0');
        if (badEmbers) badEmbers.style.setProperty('opacity', '0');
        for (const layer of [themeFxA, themeFxB, themeFxC, themeParticles]) {
            if (!layer) continue;
            layer.style.setProperty('opacity', '0');
            layer.style.removeProperty('transform');
            layer.style.removeProperty('background-position');
            layer.style.removeProperty('filter');
        }
        for (const particle of overlay.querySelectorAll('.mcms-payout-theme-particle')) {
            particle.style.setProperty('opacity', '0');
            particle.style.removeProperty('left');
            particle.style.removeProperty('top');
            particle.style.removeProperty('bottom');
            particle.style.removeProperty('width');
            particle.style.removeProperty('height');
            particle.style.removeProperty('transform');
        }
        for (const ember of overlay.querySelectorAll('.mcms-payout-bc-ember')) {
            ember.style.setProperty('opacity', '0');
            ember.style.removeProperty('transform');
        }
        if (banner) {
            banner.style.removeProperty('animation');
            banner.style.setProperty('opacity', '0');
            banner.style.setProperty('transform', 'translate(-50%, -44%) scale(1.08)');
            banner.style.setProperty('filter', 'blur(7px)');
        }
        try {
            if (typeof overlay.hidePopover === 'function' && overlay.matches(':popover-open')) overlay.hidePopover();
        } catch (err) {}
    }

    function animateAdditionalPayoutTemplate(template, elements, duration, reducedMotion) {
        const animations = [];
        const meta = payoutTemplateMeta(template);
        const { fxA, fxB, fxC, particles, particleElements } = elements;
        if (['gta5', 'viceCity', 'badCompany'].includes(template)) return animations;

        const layerOptions = { duration, easing: 'ease-out', fill: 'both' };
        if (fxA) animations.push(fxA.animate([
            { opacity: 0, transform: 'scale(1.06)' },
            { opacity: reducedMotion ? .34 : .72, transform: 'scale(1)', offset: .08 },
            { opacity: reducedMotion ? .30 : .58, transform: 'scale(1.025)', offset: .92 },
            { opacity: 0, transform: 'scale(1.05)' }
        ], layerOptions));
        if (fxB) animations.push(fxB.animate([
            { opacity: 0, backgroundPosition: '0 0, 0 0' },
            { opacity: reducedMotion ? .24 : .54, backgroundPosition: '0 0, 0 0', offset: .08 },
            { opacity: reducedMotion ? .22 : .42, backgroundPosition: '0 30px, 80px 0', offset: .92 },
            { opacity: 0, backgroundPosition: '0 45px, 120px 0' }
        ], { ...layerOptions, easing: 'linear' }));
        if (fxC) {
            const fxCFrames = template === 'galactic'
                ? [
                    { opacity: 0, transform: 'rotate(-8deg) scale(1.06)' },
                    { opacity: reducedMotion ? .22 : .50, transform: 'rotate(0deg) scale(1)', offset: .10 },
                    { opacity: reducedMotion ? .20 : .38, transform: 'rotate(14deg) scale(1.03)', offset: .90 },
                    { opacity: 0, transform: 'rotate(20deg) scale(1.06)' }
                ]
                : template === 'factorio'
                    ? [
                        { opacity: 0, transform: 'rotate(-12deg) scale(.94)' },
                        { opacity: reducedMotion ? .24 : .58, transform: 'rotate(0deg) scale(1)', offset: .10 },
                        { opacity: reducedMotion ? .22 : .46, transform: 'rotate(28deg) scale(1.025)', offset: .90 },
                        { opacity: 0, transform: 'rotate(36deg) scale(1.06)' }
                    ]
                : template === 'scarface'
                    ? [
                        { opacity: 0, transform: 'translate3d(-18%,0,0) skewX(-9deg) scaleX(.72)' },
                        { opacity: reducedMotion ? .20 : .66, transform: 'translate3d(108%,0,0) skewX(-9deg) scaleX(1)', offset: .14 },
                        { opacity: reducedMotion ? .18 : .42, transform: 'translate3d(205%,0,0) skewX(-9deg) scaleX(.82)', offset: .86 },
                        { opacity: 0, transform: 'translate3d(250%,0,0) skewX(-9deg) scaleX(.58)' }
                    ]
                    : [
                        { opacity: 0, transform: 'scale(1.05)' },
                        { opacity: reducedMotion ? .22 : .50, transform: 'scale(1)', offset: .10 },
                        { opacity: reducedMotion ? .20 : .38, transform: 'scale(1.03)', offset: .90 },
                        { opacity: 0, transform: 'scale(1.06)' }
                    ];
            animations.push(fxC.animate(fxCFrames, layerOptions));
        }

        if (!particles || meta.particleMode === 'none' || reducedMotion) return animations;
        animations.push(particles.animate([{ opacity: 0 }, { opacity: .92, offset: .06 }, { opacity: .78, offset: .92 }, { opacity: 0 }], layerOptions));

        particleElements.forEach((particle, index) => {
            const seedA = (index * 37) % 97;
            const seedB = (index * 61) % 89;
            let frames;
            let options;
            particle.style.removeProperty('border-radius');

            if (meta.particleMode === 'glitch') {
                const top = 8 + seedA * .84;
                const width = 8 + (index % 6) * 5;
                particle.style.setProperty('top', `${top}%`);
                particle.style.setProperty('left', '-12%');
                particle.style.setProperty('width', `${width}px`);
                particle.style.setProperty('height', `${2 + (index % 2)}px`);
                frames = [
                    { opacity: 0, transform: 'translate3d(0,0,0) skewX(-18deg)' },
                    { opacity: .92, transform: `translate3d(${18 + seedB}vw,0,0) skewX(-18deg)`, offset: .14 },
                    { opacity: .58, transform: `translate3d(${78 + seedA * .35}vw,${(index % 3 - 1) * 8}px,0) skewX(-18deg)`, offset: .76 },
                    { opacity: 0, transform: 'translate3d(118vw,0,0) skewX(-18deg)' }
                ];
                const cycle = 950 + (index % 5) * 160;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 131) % cycle), easing: 'steps(7,end)', fill: 'both' };
            } else if (meta.particleMode === 'embers') {
                particle.style.setProperty('left', `${3 + seedA}%`);
                particle.style.setProperty('bottom', '-16px');
                particle.style.setProperty('width', `${2 + (index % 3)}px`);
                particle.style.setProperty('height', `${7 + (index % 5) * 2}px`);
                const drift = -38 + seedB;
                const rise = 55 + (seedA % 38);
                frames = [
                    { opacity: 0, transform: 'translate3d(0,10px,0) scale(.5)' },
                    { opacity: .96, transform: `translate3d(${drift * .15}px,-${rise * .16}vh,0) scale(1)`, offset: .14 },
                    { opacity: .70, transform: `translate3d(${drift * .72}px,-${rise * .74}vh,0) rotate(${index % 2 ? 22 : -22}deg) scale(.78)`, offset: .78 },
                    { opacity: 0, transform: `translate3d(${drift}px,-${rise}vh,0) rotate(${index % 2 ? 38 : -38}deg) scale(.25)` }
                ];
                const cycle = 1400 + (index % 7) * 170;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 173) % cycle), easing: 'cubic-bezier(.18,.62,.30,1)', fill: 'both' };
            } else if (meta.particleMode === 'ash') {
                particle.style.setProperty('left', `${2 + seedA}%`);
                particle.style.setProperty('top', '-10px');
                particle.style.setProperty('width', `${2 + (index % 3)}px`);
                particle.style.setProperty('height', `${2 + (index % 3)}px`);
                const fall = 65 + (seedB % 35);
                const drift = -45 + seedA;
                frames = [
                    { opacity: 0, transform: 'translate3d(0,-8px,0) rotate(0deg)' },
                    { opacity: .72, transform: `translate3d(${drift * .18}px,${fall * .12}vh,0) rotate(80deg)`, offset: .16 },
                    { opacity: .48, transform: `translate3d(${drift * .72}px,${fall * .76}vh,0) rotate(250deg)`, offset: .78 },
                    { opacity: 0, transform: `translate3d(${drift}px,${fall}vh,0) rotate(360deg)` }
                ];
                const cycle = 2200 + (index % 6) * 250;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 197) % cycle), easing: 'linear', fill: 'both' };
            } else if (meta.particleMode === 'dust') {
                particle.style.setProperty('left', `${4 + seedA * .92}%`);
                particle.style.setProperty('top', `${8 + seedB * .88}%`);
                particle.style.setProperty('width', `${1 + (index % 2)}px`);
                particle.style.setProperty('height', `${1 + (index % 2)}px`);
                frames = [
                    { opacity: 0, transform: 'translate3d(-8px,8px,0)' },
                    { opacity: .62, transform: 'translate3d(0,0,0)', offset: .18 },
                    { opacity: .32, transform: `translate3d(${18 + seedA * .30}px,-${12 + seedB * .18}px,0)`, offset: .82 },
                    { opacity: 0, transform: `translate3d(${32 + seedA * .36}px,-${22 + seedB * .22}px,0)` }
                ];
                const cycle = 1800 + (index % 5) * 260;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 149) % cycle), easing: 'ease-in-out', fill: 'both' };
            } else if (meta.particleMode === 'rupees') {
                particle.style.setProperty('left', `${4 + seedA * .92}%`);
                particle.style.setProperty('bottom', '-24px');
                const size = 7 + (index % 4) * 3;
                particle.style.setProperty('width', `${size}px`);
                particle.style.setProperty('height', `${Math.round(size * 1.65)}px`);
                particle.style.setProperty('border-radius', '2px');
                const drift = -72 + seedB * 1.55;
                const rise = 58 + (seedA % 34);
                frames = [
                    { opacity: 0, transform: 'translate3d(0,12px,0) rotate(45deg) scale(.2)' },
                    { opacity: .98, transform: `translate3d(${drift * .10}px,-${rise * .12}vh,0) rotate(135deg) scale(1)`, offset: .12 },
                    { opacity: .82, transform: `translate3d(${drift * .72}px,-${rise * .74}vh,0) rotate(${index % 2 ? 315 : -135}deg) scale(.82)`, offset: .78 },
                    { opacity: 0, transform: `translate3d(${drift}px,-${rise}vh,0) rotate(${index % 2 ? 495 : -315}deg) scale(.28)` }
                ];
                const cycle = 1500 + (index % 6) * 210;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 181) % cycle), easing: 'cubic-bezier(.16,.72,.26,1)', fill: 'both' };
            } else if (meta.particleMode === 'stars') {
                particle.style.setProperty('left', `${4 + seedA * .92}%`);
                particle.style.setProperty('top', `${5 + seedB}%`);
                const size = 1 + (index % 3);
                const starRotation = template === 'scarface' ? ' rotate(45deg)' : '';
                particle.style.setProperty('width', `${size}px`);
                particle.style.setProperty('height', `${size}px`);
                frames = [
                    { opacity: .08, transform: `scale(.6)${starRotation}` },
                    { opacity: .95, transform: `scale(1.45)${starRotation}`, offset: .30 },
                    { opacity: .18, transform: `translate3d(${(index % 2 ? 1 : -1) * (8 + seedA * .12)}px,${-8 - seedB * .08}px,0) scale(.7)${starRotation}`, offset: .72 },
                    { opacity: .80, transform: `scale(1.1)${starRotation}` }
                ];
                const cycle = 1200 + (index % 7) * 190;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 167) % cycle), easing: 'ease-in-out', fill: 'both' };
            } else {
                particle.style.setProperty('left', `${4 + seedA * .92}%`);
                particle.style.setProperty('top', `${8 + seedB * .88}%`);
                const size = 4 + (index % 4) * 2;
                particle.style.setProperty('width', `${size}px`);
                particle.style.setProperty('height', `${size}px`);
                frames = [
                    { opacity: 0, transform: 'translate3d(0,12px,0) scale(.3) rotate(0deg)' },
                    { opacity: .94, transform: 'translate3d(0,0,0) scale(1) rotate(0deg)', offset: .16 },
                    { opacity: .62, transform: `translate3d(${(index % 2 ? 1 : -1) * (18 + seedA * .25)}px,-${22 + seedB * .25}px,0) scale(.8) rotate(90deg)`, offset: .72 },
                    { opacity: 0, transform: `translate3d(${(index % 2 ? 1 : -1) * (28 + seedA * .35)}px,-${38 + seedB * .32}px,0) scale(.35) rotate(180deg)` }
                ];
                const cycle = 1250 + (index % 6) * 180;
                options = { duration: cycle, iterations: Math.ceil(duration / cycle) + 1, delay: -((index * 157) % cycle), easing: 'steps(8,end)', fill: 'both' };
            }
            animations.push(particle.animate(frames, options));
        });
        return animations;
    }

    function fitPayoutFlashContent(overlay) {
        if (!overlay || runtime.destroyed) return;
        const banner = overlay.querySelector('.mcms-payout-banner');
        if (!banner) return;

        overlay.classList.remove('mcms-payout-fit-compact', 'mcms-payout-fit-tight');

        const isOverflowing = () => {
            const overlayRect = overlay.getBoundingClientRect();
            const bannerRect = banner.getBoundingClientRect();
            const widthLimit = Math.max(1, overlayRect.width - 12);
            const heightLimit = Math.max(1, overlayRect.height - 12);
            const horizontal = bannerRect.width > widthLimit + 1 || banner.scrollWidth > banner.clientWidth + 1;
            const vertical = bannerRect.height > heightLimit + 1 || banner.scrollHeight > banner.clientHeight + 1;
            return horizontal || vertical;
        };

        const run = () => {
            if (!overlay.isConnected || !overlay.classList.contains('mcms-payout-active')) return;
            if (isOverflowing()) overlay.classList.add('mcms-payout-fit-compact');
            // Force one synchronous layout read after the compact class is applied.
            void banner.offsetHeight;
            if (isOverflowing()) overlay.classList.add('mcms-payout-fit-tight');
            fitPayoutFlashAroundToolkitControls(overlay);
        };

        runtimeRequestAnimationFrame(() => runtimeRequestAnimationFrame(run));
    }

    function fitPayoutFlashAroundToolkitControls(overlay) {
        if (!overlay || runtime.destroyed) return;
        const banner = overlay.querySelector('.mcms-payout-banner');
        if (!banner) return;

        overlay.classList.remove('mcms-payout-controls-safe');
        overlay.style.removeProperty('--mcms-payout-banner-top');
        overlay.style.removeProperty('--mcms-payout-safe-height');
        overlay.style.removeProperty('--mcms-payout-safe-bottom-offset');

        if (overlay.dataset.template !== 'jamesBond') return;

        const controls = document.getElementById(SCRIPT.controlId);
        if (!controls || !isVisible(controls)) return;
        const overlayRect = overlay.getBoundingClientRect();
        const controlRect = controls.getBoundingClientRect();
        if (overlayRect.width <= 0 || overlayRect.height <= 0 || controlRect.width <= 0 || controlRect.height <= 0) return;
        const horizontallyIntersects = controlRect.right > overlayRect.left + 4 && controlRect.left < overlayRect.right - 4;
        const controlTop = controlRect.top - overlayRect.top;
        const isLowerMapControl = controlTop > overlayRect.height * .42 && controlTop < overlayRect.height - 12;
        if (!horizontallyIntersects || !isLowerMapControl) return;
        const gap = 10;
        const safeBottom = Math.max(190, Math.min(overlayRect.height - 8, controlTop - gap));
        const defaultBottom = overlayRect.height * .5 + banner.offsetHeight * .5;
        if (defaultBottom <= safeBottom) return;
        const safeHeight = Math.max(210, safeBottom - 16);
        const safeBottomOffset = Math.max(0, overlayRect.height - safeBottom);
        overlay.style.setProperty('--mcms-payout-safe-height', `${safeHeight}px`);
        overlay.style.setProperty('--mcms-payout-safe-bottom-offset', `${safeBottomOffset}px`);
        overlay.classList.add('mcms-payout-controls-safe');
        // Re-read after the compact 007 layout applies, then centre the dossier in
        // the unobstructed map area above the expanded command toolbar.
        void banner.offsetHeight;
        const fittedHeight = Math.min(banner.offsetHeight, safeHeight);
        const upperMargin = 8;
        const preferredCentre = overlayRect.height * .5;
        const maximumCentre = safeBottom - fittedHeight * .5;
        const minimumCentre = upperMargin + fittedHeight * .5;
        const fittedCentre = Math.max(minimumCentre, Math.min(preferredCentre, maximumCentre));
        overlay.style.setProperty('--mcms-payout-banner-top', `${Math.round(fittedCentre)}px`);
    }

    function triggerPayoutFlash(amount, force = false, context = null, options = {}) {
        const credits = Math.max(0, Math.round(Number(amount) || 0));
        if (!force && (!state.payoutFlash.enabled || credits < state.payoutFlash.threshold)) return false;
        const overlay = ensurePayoutFlashOverlay();
        if (!overlay) return false;
        stopPayoutFlashAnimation(overlay);
        positionPayoutFlashOverlay(overlay);
        const duration = normalisePayoutFlashDuration(options.durationMs ?? state.payoutFlash.durationMs);
        const templateKey = PAYOUT_TEMPLATES[options.template] ? options.template : state.payoutFlash.template;
        const resolvedContext = context || (force ? { source: 'personal', caption: 'Emergency Response Test' } : { source: 'unknown', caption: '' });
        const presentation = payoutPresentation(credits, resolvedContext);
        overlay.dataset.tier = presentation.tier;
        overlay.dataset.source = presentation.source;
        overlay.dataset.template = templateKey;
        overlay.style.setProperty('--mcms-payout-accent', presentation.colour);
        overlay.style.setProperty('--mcms-payout-accent-soft', presentation.soft);
        overlay.style.setProperty('--mcms-payout-glow', presentation.glow);
        const amountElement = overlay.querySelector('.mcms-payout-amount');
        const titleElement = overlay.querySelector('.mcms-payout-title');
        const missionElement = overlay.querySelector('.mcms-payout-mission');
        const sourceElement = overlay.querySelector('.mcms-payout-source');
        const tierElement = overlay.querySelector('.mcms-payout-tier');
        const red = overlay.querySelector('.mcms-payout-red');
        const blue = overlay.querySelector('.mcms-payout-blue');
        const cinematic = overlay.querySelector('.mcms-payout-cinematic');
        const viceSunset = overlay.querySelector('.mcms-payout-vc-sunset');
        const viceGrid = overlay.querySelector('.mcms-payout-vc-grid');
        const badDust = overlay.querySelector('.mcms-payout-bc-dust');
        const badHud = overlay.querySelector('.mcms-payout-bc-hud');
        const badEmbers = overlay.querySelector('.mcms-payout-bc-embers');
        const emberElements = Array.from(overlay.querySelectorAll('.mcms-payout-bc-ember'));
        const themeFxA = overlay.querySelector('.mcms-payout-theme-fx-a');
        const themeFxB = overlay.querySelector('.mcms-payout-theme-fx-b');
        const themeFxC = overlay.querySelector('.mcms-payout-theme-fx-c');
        const themeParticles = overlay.querySelector('.mcms-payout-theme-particles');
        const themeParticleElements = Array.from(overlay.querySelectorAll('.mcms-payout-theme-particle'));
        const particles = overlay.querySelector('.mcms-payout-particles');
        const kickerElement = overlay.querySelector('.mcms-payout-kicker');
        const banner = overlay.querySelector('.mcms-payout-banner');
        if (titleElement) {
            const formattedTitle = formatPayoutTitleForTemplate(payoutTitleForTemplate(presentation, templateKey), templateKey);
            titleElement.textContent = formattedTitle;
            titleElement.classList.remove('mcms-payout-title-long', 'mcms-payout-title-very-long');
            const titleLength = formattedTitle.replace(/\s+/g, ' ').trim().length;
            if (titleLength >= 23) titleElement.classList.add('mcms-payout-title-very-long');
            else if (titleLength >= 17) titleElement.classList.add('mcms-payout-title-long');
        }
        if (missionElement) missionElement.textContent = presentation.caption;
        if (sourceElement) sourceElement.textContent = presentation.label;
        if (tierElement) tierElement.textContent = presentation.tierLabel;
        if (kickerElement) kickerElement.textContent = payoutTemplateMeta(templateKey).kicker;
        overlay.style.setProperty('opacity', '1', 'important');
        overlay.classList.add('mcms-payout-active');
        fitPayoutFlashContent(overlay);
        const reducedMotion = Boolean(state.economyMode || pageWindow.matchMedia?.('(prefers-reduced-motion: reduce)').matches);
        animatePayoutAmount(amountElement, credits, duration, reducedMotion);
        playPayoutSound(presentation.tier, templateKey);
        if (state.economyMode) {
            if (red) red.style.setProperty('opacity', '.12');
            if (blue) blue.style.setProperty('opacity', '.12');
            if (cinematic) cinematic.style.setProperty('opacity', '.34');
            for (const layer of [viceSunset, viceGrid, badDust, badHud, badEmbers, themeFxA, themeFxB, themeFxC, themeParticles, particles]) {
                if (layer) layer.style.setProperty('opacity', '0', 'important');
            }
            if (banner) {
                banner.style.setProperty('opacity', '1');
                banner.style.setProperty('transform', 'translate(-50%, -50%) scale(1)');
                banner.style.setProperty('filter', 'none');
            }
            payoutFlashTimer = runtimeSetTimeout(() => stopPayoutFlashAnimation(overlay), duration + 120);
            return true;
        }
        if (typeof overlay.animate === 'function' && red && blue && banner) {
            red.style.setProperty('animation', 'none', 'important');
            blue.style.setProperty('animation', 'none', 'important');
            banner.style.setProperty('animation', 'none', 'important');
            const pulseCycleMs = reducedMotion ? 1200 : 720;
            const pulseIterations = Math.max(1, Math.ceil(duration / pulseCycleMs));
            const pulseOptions = { duration: pulseCycleMs, iterations: pulseIterations, easing: 'ease-in-out', fill: 'both' };
            const redFrames = reducedMotion
                ? [{ opacity: .20 }, { opacity: .28 }, { opacity: .20 }]
                : [{ opacity: 0, offset: 0 }, { opacity: .88, offset: .10 }, { opacity: .88, offset: .28 }, { opacity: 0, offset: .42 }, { opacity: 0, offset: 1 }];
            const blueFrames = reducedMotion
                ? [{ opacity: .18 }, { opacity: .26 }, { opacity: .18 }]
                : [{ opacity: 0, offset: 0 }, { opacity: 0, offset: .42 }, { opacity: .90, offset: .54 }, { opacity: .90, offset: .72 }, { opacity: 0, offset: .86 }, { opacity: 0, offset: 1 }];
            const activeAnimations = [
                red.animate(redFrames, pulseOptions),
                blue.animate(blueFrames, pulseOptions),
                banner.animate([
                    { opacity: 0, transform: 'translate(-50%, -44%) scale(1.08)', filter: 'blur(8px)' },
                    { opacity: 1, transform: 'translate(-50%, -50%) scale(1)', filter: 'blur(0)', offset: .05 },
                    { opacity: 1, transform: 'translate(-50%, -50%) scale(1)', filter: 'blur(0)', offset: .94 },
                    { opacity: 0, transform: 'translate(-50%, -56%) scale(.985)', filter: 'blur(2px)' }
                ], { duration, easing: 'cubic-bezier(.16,.78,.24,1)', fill: 'both' })
            ];
            if (cinematic) activeAnimations.push(cinematic.animate([{ opacity: 0 }, { opacity: .72, offset: .06 }, { opacity: .72, offset: .94 }, { opacity: 0 }], { duration, easing: 'ease-out', fill: 'both' }));
            if (templateKey === 'viceCity') {
                if (viceSunset) activeAnimations.push(viceSunset.animate([
                    { opacity: 0, transform: 'scale(1.08)' },
                    { opacity: .72, transform: 'scale(1)', offset: .08 },
                    { opacity: .62, transform: 'scale(1.025)', offset: .92 },
                    { opacity: 0, transform: 'scale(1.05)' }
                ], { duration, easing: 'ease-out', fill: 'both' }));
                if (viceGrid) activeAnimations.push(viceGrid.animate([
                    { opacity: 0, transform: 'perspective(380px) rotateX(62deg) scale(1.42) translateY(14px)' },
                    { opacity: .54, transform: 'perspective(380px) rotateX(62deg) scale(1.35) translateY(0)', offset: .10 },
                    { opacity: .38, transform: 'perspective(380px) rotateX(62deg) scale(1.31) translateY(-12px)', offset: .90 },
                    { opacity: 0, transform: 'perspective(380px) rotateX(62deg) scale(1.28) translateY(-18px)' }
                ], { duration, easing: 'linear', fill: 'both' }));
            }
            if (templateKey === 'badCompany') {
                if (badDust) activeAnimations.push(badDust.animate([
                    { opacity: 0, transform: 'scale(1.10) translate3d(-1.5%, 1%, 0)' },
                    { opacity: .62, transform: 'scale(1.02) translate3d(0, 0, 0)', offset: .09 },
                    { opacity: .48, transform: 'scale(1.06) translate3d(1.2%, -1%, 0)', offset: .90 },
                    { opacity: 0, transform: 'scale(1.09) translate3d(2%, -1.5%, 0)' }
                ], { duration, easing: 'ease-out', fill: 'both' }));
                if (badHud) activeAnimations.push(badHud.animate([
                    { opacity: 0, backgroundPosition: '0 0, 0 0, 0 0, 0 0' },
                    { opacity: .52, backgroundPosition: '0 0, 0 0, 0 0, 0 0', offset: .08 },
                    { opacity: .35, backgroundPosition: '0 0, 0 0, 0 24px, 95px 0', offset: .92 },
                    { opacity: 0, backgroundPosition: '0 0, 0 0, 0 30px, 130px 0' }
                ], { duration, easing: 'linear', fill: 'both' }));
                if (badEmbers) activeAnimations.push(badEmbers.animate([
                    { opacity: 0 },
                    { opacity: .92, offset: .06 },
                    { opacity: .82, offset: .92 },
                    { opacity: 0 }
                ], { duration, easing: 'ease-out', fill: 'both' }));
                emberElements.forEach((ember, index) => {
                    const cycle = 1450 + (index % 7) * 185;
                    const iterations = Math.max(2, Math.ceil(duration / cycle) + 1);
                    const left = 3 + ((index * 37) % 94);
                    const drift = -42 + ((index * 29) % 85);
                    const rise = 58 + ((index * 19) % 34);
                    const size = 2 + (index % 3);
                    ember.style.setProperty('left', `${left}%`);
                    ember.style.setProperty('width', `${size}px`);
                    ember.style.setProperty('height', `${7 + (index % 5) * 2}px`);
                    activeAnimations.push(ember.animate([
                        { opacity: 0, transform: `translate3d(0, 10px, 0) rotate(${index % 2 ? -12 : 12}deg) scale(.55)`, offset: 0 },
                        { opacity: .96, transform: `translate3d(${drift * .18}px, -${rise * .18}px, 0) rotate(${index % 2 ? -4 : 4}deg) scale(1)`, offset: .14 },
                        { opacity: .72, transform: `translate3d(${drift * .72}px, -${rise * .72}vh, 0) rotate(${index % 2 ? 18 : -18}deg) scale(.82)`, offset: .76 },
                        { opacity: 0, transform: `translate3d(${drift}px, -${rise}vh, 0) rotate(${index % 2 ? 32 : -32}deg) scale(.30)`, offset: 1 }
                    ], {
                        duration: cycle,
                        iterations,
                        delay: -((index * 173) % cycle),
                        easing: 'cubic-bezier(.18,.62,.30,1)',
                        fill: 'both'
                    }));
                });
            }
            activeAnimations.push(...animateAdditionalPayoutTemplate(templateKey, {
                fxA: themeFxA,
                fxB: themeFxB,
                fxC: themeFxC,
                particles: themeParticles,
                particleElements: themeParticleElements
            }, duration, reducedMotion));
            if (particles && ['high', 'elite'].includes(presentation.tier)) activeAnimations.push(particles.animate([{ opacity: 0, transform:'scale(1.08) translateY(10px)' }, { opacity: presentation.tier === 'elite' ? .58 : .38, transform:'scale(1) translateY(0)', offset:.12 }, { opacity: .22, transform:'scale(1.02) translateY(-8px)', offset:.88 }, { opacity:0, transform:'scale(1.05) translateY(-14px)' }], { duration, easing:'ease-out', fill:'both' }));
            payoutFlashAnimations.push(...activeAnimations);
        } else {
            let bluePhase = false;
            if (cinematic) cinematic.style.setProperty('opacity', '.72');
            if (templateKey === 'viceCity') {
                if (viceSunset) viceSunset.style.setProperty('opacity', '.68');
                if (viceGrid) viceGrid.style.setProperty('opacity', '.48');
            }
            if (templateKey === 'badCompany') {
                if (badDust) badDust.style.setProperty('opacity', '.62');
                if (badHud) badHud.style.setProperty('opacity', '.46');
                if (badEmbers) badEmbers.style.setProperty('opacity', '.82');
                emberElements.forEach((ember, index) => {
                    ember.style.setProperty('left', `${4 + ((index * 37) % 92)}%`);
                    ember.style.setProperty('opacity', index % 3 === 0 ? '.9' : '.45');
                    ember.style.setProperty('transform', `translateY(-${14 + (index % 8) * 7}vh)`);
                });
            }
            if (!['gta5', 'viceCity', 'badCompany'].includes(templateKey)) {
                if (themeFxA) themeFxA.style.setProperty('opacity', '.64');
                if (themeFxB) themeFxB.style.setProperty('opacity', '.42');
                if (themeFxC) themeFxC.style.setProperty('opacity', '.36');
                if (themeParticles && payoutTemplateMeta(templateKey).particleMode !== 'none') {
                    themeParticles.style.setProperty('opacity', '.72');
                    themeParticleElements.slice(0, 10).forEach((particle, index) => {
                        particle.style.setProperty('left', `${8 + ((index * 37) % 84)}%`);
                        particle.style.setProperty('top', `${10 + ((index * 29) % 76)}%`);
                        particle.style.setProperty('width', `${2 + (index % 3) * 2}px`);
                        particle.style.setProperty('height', `${2 + (index % 3) * 2}px`);
                        particle.style.setProperty('opacity', index % 2 ? '.45' : '.85');
                    });
                }
            }
            if (banner) {
                banner.style.setProperty('opacity', '1');
                banner.style.setProperty('transform', 'translate(-50%, -50%) scale(1)');
                banner.style.setProperty('filter', 'blur(0)');
            }
            payoutFlashFallbackInterval = runtimeSetInterval(() => {
                bluePhase = !bluePhase;
                if (red) red.style.setProperty('opacity', bluePhase ? '0' : '.84');
                if (blue) blue.style.setProperty('opacity', bluePhase ? '.88' : '0');
            }, reducedMotion ? 500 : 180);
        }
        payoutFlashTimer = runtimeSetTimeout(() => stopPayoutFlashAnimation(overlay), duration + 120);
        return true;
    }

    function processCreditTotal(value) {
        const total = parseCreditValue(value);
        if (total === null) return;
        if (lastObservedCredits === null) {
            lastObservedCredits = total;
            return;
        }
        if (total === lastObservedCredits) return;
        const previous = lastObservedCredits;
        lastObservedCredits = total;
        const gain = total - previous;
        if (gain <= 0) return;
        const context = resolvePayoutContext(gain);
        recordCreditGain(gain, context);
        if (gain >= state.payoutFlash.threshold) triggerPayoutFlash(gain, false, context);
    }

    function installCreditsUpdateHook() {
        let current;
        try { current = pageWindow.creditsUpdate; } catch (err) { return false; }
        if (typeof current !== 'function') return false;
        if (current.__mcmsPayoutFlashWrappedV313) return true;
        const original = current.__mcmsOriginal || current;
        const wrapped = function (...args) {
            const result = original.apply(this, args);
            if (args.length) processCreditTotal(args[0]);
            else processCreditTotal(readCurrentCreditTotal());
            return result;
        };
        try {
            Object.defineProperty(wrapped, '__mcmsPayoutFlashWrappedV313', { value: true });
            Object.defineProperty(wrapped, '__mcmsOriginal', { value: original });
            pageWindow.creditsUpdate = wrapped;
            if (pageWindow.creditsUpdate !== wrapped) return false;
            runtime.hookRestorers.push(() => {
                try {
                    if (pageWindow.creditsUpdate === wrapped) pageWindow.creditsUpdate = original;
                } catch (err) {}
            });
            return true;
        } catch (err) {
            return false;
        }
    }

    function observeCreditValue() {
        const element = document.querySelector('.credits-value');
        if (!element) return false;
        if (observedCreditsElement === element && creditsValueObserver) return true;
        if (creditsValueObserver) {
            try { creditsValueObserver.disconnect(); } catch (err) {}
            runtime.observers.delete(creditsValueObserver);
        }
        observedCreditsElement = element;
        processCreditTotal(element.textContent);
        creditsValueObserver = runtimeTrackObserver(new MutationObserver(() => processCreditTotal(element.textContent)));
        creditsValueObserver.observe(element, { childList: true, subtree: true, characterData: true });
        return true;
    }


    // --- Discord Financial Command + local archive --------------------------------------------
    const DISCORD_WEBHOOK_HOSTS = new Set(['discord.com', 'ptb.discord.com', 'canary.discord.com', 'discordapp.com', 'ptb.discordapp.com', 'canary.discordapp.com']);
    const DISCORD_REQUEST_TIMEOUT_MS = 30000;
    const DISCORD_MAX_FIELD_LENGTH = 1024;
    const FINANCE_MAX_LEDGER_PAGES = 5000;
    const FINANCE_FETCH_YIELD_EVERY = 5;
    const FINANCE_SESSION_STARTED_AT = Date.now();
    const FINANCE_PERIOD_IDS = new Set(['today', 'yesterday', 'last24', 'last7', 'last30', 'last90', 'last180', 'last365', 'allAvailable', 'session', 'sinceLast', 'custom']);
    const FINANCE_CHART_FILENAME = 'missionchief-financial-report.png';
    let discordFinanceChartUrl = '';

    const FINANCE_RULE_FEED_URL = 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/financial-intelligence/v1/classification-rules.json';
    const FINANCE_POLICY_FEED_URL = 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/financial-intelligence/v2/audit-policy.json';
    const FINANCE_RULE_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
    const FINANCE_POLICY_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
    const FINANCE_OVERVIEW_CACHE_TTL_MS = 5 * 60 * 1000;
    const FINANCE_OVERVIEW_MAX_PAGES = 500;
    const FINANCE_VAULT_SCHEMA = 2;
    const FINANCE_VAULT_MAX_TRANSACTIONS = 250000;
    const FINANCE_VAULT_MAX_CHECKPOINTS = 1000;
    const FINANCE_INCREMENTAL_MAX_PAGES = 60;
    const FINANCE_DEEP_SCAN_HARD_PAGE_CAP = 5000;
    const FINANCE_DEEP_SCAN_HARD_BATCH_CAP = 4;
    const FINANCE_SCAN_CHECKPOINT_PAGES = 100;
    const FINANCE_FEED_TIMEOUT_MS = 30000;
    const FINANCE_ACCOUNTING_GROUPS = new Set(['operatingIncome', 'otherIncome', 'operatingExpense', 'capitalInvestment']);
    const BUILTIN_FINANCIAL_RULES = Object.freeze([
        { id: 'income-refund', direction: 'income', match: 'regex', pattern: 'refund|reimburse|cancel(?:ed|led)?', key: 'refunds', label: 'Refunds & Reimbursements', accountingGroup: 'otherIncome', missionType: '', confidence: 0.98 },
        { id: 'income-alliance-mission', direction: 'income', match: 'regex', pattern: '^\\[alliance\\]', key: 'allianceMissions', label: 'Alliance Missions', accountingGroup: 'operatingIncome', missionType: 'alliance', confidence: 0.99 },
        { id: 'income-patient', direction: 'income', match: 'regex', pattern: 'patient (?:transport|treatment)|hospital\\s*-\\s*alliance', key: 'patientIncome', label: 'Patient Transport & Treatment', accountingGroup: 'operatingIncome', missionType: 'transport', confidence: 0.98 },
        { id: 'income-prisoner', direction: 'income', match: 'regex', pattern: 'prisoner.*transport|police\\s*-\\s*alliance', key: 'prisonerIncome', label: 'Prisoner Transport', accountingGroup: 'operatingIncome', missionType: 'transport', confidence: 0.98 },
        { id: 'income-login', direction: 'income', match: 'contains', pattern: 'daily login reward', key: 'dailyLogin', label: 'Daily Login Rewards', accountingGroup: 'otherIncome', missionType: '', confidence: 0.99 },
        { id: 'income-task', direction: 'income', match: 'contains', pattern: 'completed task', key: 'taskRewards', label: 'Task Rewards', accountingGroup: 'otherIncome', missionType: 'task', confidence: 0.97 },
        { id: 'income-event', direction: 'income', match: 'regex', pattern: 'event|bonus|reward', key: 'eventBonus', label: 'Event & Bonus Income', accountingGroup: 'otherIncome', missionType: '', confidence: 0.78 },
        { id: 'spend-vehicle', direction: 'spending', match: 'regex', pattern: 'vehicle bought|vehicle purchase|bought vehicle', key: 'vehicles', label: 'Vehicle Purchases', accountingGroup: 'capitalInvestment', missionType: '', confidence: 0.99 },
        { id: 'spend-vehicle-upgrade', direction: 'spending', match: 'regex', pattern: 'vehicle.*upgrad|upgrade.*vehicle|vehicle equipment|equipment for .*vehicle', key: 'vehicleUpgrades', label: 'Vehicle Upgrades & Equipment', accountingGroup: 'capitalInvestment', missionType: '', confidence: 0.94 },
        { id: 'spend-building', direction: 'spending', match: 'regex', pattern: 'building constructed|station constructed|new building', excludePattern: 'building complex.*upgrad|upgraded to building complex', key: 'buildings', label: 'Buildings & Stations', accountingGroup: 'capitalInvestment', missionType: '', confidence: 0.98 },
        { id: 'spend-extension', direction: 'spending', match: 'regex', pattern: 'upgrad|extended guard|extension|speciali[sz]ation built|attached building|building complex', key: 'extensions', label: 'Extensions & Building Upgrades', accountingGroup: 'capitalInvestment', missionType: '', confidence: 0.90 },
        { id: 'spend-training', direction: 'spending', match: 'regex', pattern: 'education|training|school|course|applicant', key: 'training', label: 'Training & Education', accountingGroup: 'operatingExpense', missionType: '', confidence: 0.93 },
        { id: 'spend-recruitment', direction: 'spending', match: 'regex', pattern: 'recruit|personnel|staff|hire', key: 'recruitment', label: 'Recruitment & Staffing', accountingGroup: 'operatingExpense', missionType: '', confidence: 0.90 },
        { id: 'spend-alliance', direction: 'spending', match: 'regex', pattern: 'alliance|association|verband|fund|donation|contribution', key: 'allianceSpending', label: 'Alliance Contributions', accountingGroup: 'operatingExpense', missionType: '', confidence: 0.92 }
    ]);
    const BUILTIN_FINANCIAL_FALLBACKS = Object.freeze({
        income: { id: 'fallback-income', key: 'unclassifiedIncome', label: 'Unclassified Positive Income', accountingGroup: 'otherIncome', missionType: '', confidence: 0.35 },
        spending: { id: 'fallback-spending', key: 'unclassifiedSpending', label: 'Unclassified Spending', accountingGroup: 'operatingExpense', missionType: '', confidence: 0.25 }
    });
    const BUILTIN_FINANCIAL_POLICY = Object.freeze({
        schema: 2,
        version: 'built-in',
        risk: {
            classificationCritical: 80,
            classificationWarning: 92,
            capitalIncomeRatio: 150,
            allianceConcentration: 75,
            categoryConcentration: 80,
            volatilityWarning: 120,
            revenueContraction: -20,
            drawdownWarning: 30,
            runwayCriticalDays: 3
        },
        scan: { pageCap: 5000, batchSize: 3, retryAttempts: 3, checkpointPages: 100 }
    });
    let activeFinancialRules = BUILTIN_FINANCIAL_RULES.map(rule => compileFinancialRule({ ...rule, source: 'built-in' }));
    let activeFinancialFallbacks = { income: { ...BUILTIN_FINANCIAL_FALLBACKS.income }, spending: { ...BUILTIN_FINANCIAL_FALLBACKS.spending } };
    let activeFinancialRuleVersion = 'built-in';
    let activeFinancialPolicy = clonePlainData(BUILTIN_FINANCIAL_POLICY);
    let activeFinancialPolicyVersion = 'built-in';
    let financeVaultStoreMemory = null;
    const financeVaultProfileMemory = new Map();
    let financialOverviewCache = { fetchedAt: 0, rows: [], pageCount: 0, lastPage: 0, coverageStartMs: null, coverageEndMs: null, complete: false, malformedRowCount: 0, duplicateDateCount: 0 };

    function financeNormaliseText(value) {
        return String(value || '').normalize('NFKC').replace(/\s+/gu, ' ').trim();
    }

    function financeHashString(value) {
        const text = String(value || '');
        let first = 0x811c9dc5;
        let second = 0x9e3779b9;
        for (let index = 0; index < text.length; index++) {
            const code = text.charCodeAt(index);
            first ^= code;
            first = Math.imul(first, 0x01000193) >>> 0;
            second ^= code + index;
            second = Math.imul(second, 0x85ebca6b) >>> 0;
        }
        return `${first.toString(36).padStart(7, '0')}${second.toString(36).padStart(7, '0')}`;
    }

    function compileFinancialRule(rule) {
        const compiled = { ...rule };
        compiled.patternRegex = null;
        compiled.excludeRegex = null;
        if (compiled.match === 'regex') {
            try { compiled.patternRegex = new RegExp(compiled.pattern, 'iu'); } catch (err) {}
        }
        if (compiled.excludePattern) {
            try { compiled.excludeRegex = new RegExp(compiled.excludePattern, 'iu'); } catch (err) {}
        }
        return compiled;
    }

    function financeRandomToken(byteLength = 24) {
        const bytes = new Uint8Array(Math.max(16, Number(byteLength) || 24));
        const cryptoObject = pageWindow.crypto || globalThis.crypto;
        if (cryptoObject?.getRandomValues) cryptoObject.getRandomValues(bytes);
        else for (let index = 0; index < bytes.length; index++) bytes[index] = Math.floor(Math.random() * 256);
        let binary = '';
        for (const byte of bytes) binary += String.fromCharCode(byte);
        return btoa(binary).replace(/\+/gu, '-').replace(/\//gu, '_').replace(/=+$/gu, '');
    }

    function financePlayerIdentity(account = null) {
        const id = account?.userId ?? currentUserIdCached();
        const name = financeNormaliseText(account?.userName || document.querySelector?.('#navbar_profile_link, a[href*="/profile/"]')?.textContent || '');
        return { id: id === undefined || id === null || id === '' ? null : String(id), name: name.slice(0, 120) };
    }

    function financePlayerProfileKey(player) {
        if (player?.id) return `id:${String(player.id)}`;
        return `name:${financeHashString(String(player?.name || 'unknown').toLowerCase())}`;
    }

    function financeVaultCredential() {
        const fallback = { deviceId: financeRandomToken(16), playerId: null, playerName: '', createdAt: Date.now() };
        const raw = gmGetValueSafe(SCRIPT.financeVaultCredentialState, '');
        let identity = null;
        try { identity = typeof raw === 'string' ? JSON.parse(raw) : raw; } catch (err) {}
        if (!identity || typeof identity !== 'object') identity = fallback;
        identity.deviceId = String(identity.deviceId || fallback.deviceId).slice(0, 80);
        identity.playerId = identity.playerId === undefined || identity.playerId === null || identity.playerId === '' ? null : String(identity.playerId).slice(0, 64);
        identity.playerName = financeNormaliseText(identity.playerName).slice(0, 120);
        identity.createdAt = Number(identity.createdAt) || Date.now();
        delete identity.syncKey;
        if (!raw || String(raw).includes('syncKey')) saveFinanceVaultCredential(identity);
        return identity;
    }

    function saveFinanceVaultCredential(identity) {
        const safe = {
            deviceId: String(identity?.deviceId || financeRandomToken(16)).slice(0, 80),
            playerId: identity?.playerId === undefined || identity?.playerId === null || identity?.playerId === '' ? null : String(identity.playerId).slice(0, 64),
            playerName: financeNormaliseText(identity?.playerName).slice(0, 120),
            createdAt: Number(identity?.createdAt) || Date.now()
        };
        return gmSetValueSafe(SCRIPT.financeVaultCredentialState, JSON.stringify(safe));
    }

    function ensureFinanceVaultCredential(player = null) {
        const identity = financeVaultCredential();
        const current = player || financePlayerIdentity();
        if (current?.id) identity.playerId = String(current.id);
        if (current?.name) identity.playerName = current.name;
        if (!identity.deviceId) identity.deviceId = financeRandomToken(16);
        saveFinanceVaultCredential(identity);
        return identity;
    }

    function invalidateFinanceVaultMemory() {
        financeVaultStoreMemory = null;
        financeVaultProfileMemory.clear();
    }

    function loadFinanceVaultStore() {
        if (financeVaultStoreMemory) return financeVaultStoreMemory;
        const raw = gmGetValueSafe(SCRIPT.financeVaultState, '');
        let store = null;
        try { store = typeof raw === 'string' ? JSON.parse(raw) : raw; } catch (err) {}
        if (!store || typeof store !== 'object' || !store.profiles || typeof store.profiles !== 'object') {
            store = { schema: FINANCE_VAULT_SCHEMA, profiles: {} };
        }
        store.schema = FINANCE_VAULT_SCHEMA;
        financeVaultStoreMemory = store;
        return store;
    }

    function saveFinanceVaultStore(store, { preserveProfileCache = false } = {}) {
        financeVaultStoreMemory = store;
        if (!preserveProfileCache) financeVaultProfileMemory.clear();
        return gmSetValueSafe(SCRIPT.financeVaultState, JSON.stringify(store));
    }

    function defaultFinanceVault(player, deviceId) {
        return {
            schema: FINANCE_VAULT_SCHEMA,
            player: { id: player?.id || null, name: financeNormaliseText(player?.name).slice(0, 120) },
            deviceId: String(deviceId || '').slice(0, 80),
            syncRevision: 0,
            coverageStartMs: null,
            coverageEndMs: null,
            lastFullScanAt: 0,
            lastIncrementalScanAt: 0,
            lastDeepScanAt: 0,
            sourceLastPage: 0,
            deepScanCursorPage: 0,
            deepScanTotalPages: 0,
            deepScanAnchor: '',
            deepScanInProgress: false,
            archiveComplete: false,
            archiveTruncated: false,
            droppedTransactions: 0,
            updatedAt: Date.now(),
            balanceCheckpoints: [],
            transactions: []
        };
    }

    function normaliseFinanceVaultEntry(entry) {
        const timestamp = Number(entry?.timestamp);
        const amount = Math.round(Number(entry?.amount) || 0);
        const description = financeNormaliseText(entry?.description).slice(0, 500);
        if (!Number.isFinite(timestamp) || !amount || !description) return null;
        const dateLabel = financeNormaliseText(entry?.dateLabel).slice(0, 120);
        const rawTimestamp = financeNormaliseText(entry?.rawTimestamp).slice(0, 80);
        const sourceKey = String(entry?.sourceKey || `${timestamp}|${amount}|${description.toLowerCase()}|${rawTimestamp || dateLabel}`).slice(0, 700);
        const occurrence = Math.max(1, Math.round(Number(entry?.occurrence) || 1));
        const fingerprint = String(entry?.fingerprint || `${timestamp.toString(36)}-${financeHashString(sourceKey)}-${occurrence.toString(36)}`).slice(0, 120);
        return { fingerprint, sourceKey, occurrence, timestamp, amount, description, dateLabel, rawTimestamp };
    }

    function normaliseFinanceVault(vault, player, deviceId) {
        const next = vault && typeof vault === 'object' ? { ...vault } : defaultFinanceVault(player, deviceId);
        next.schema = FINANCE_VAULT_SCHEMA;
        next.player = { id: player?.id || next.player?.id || null, name: financeNormaliseText(player?.name || next.player?.name).slice(0, 120) };
        next.deviceId = String(deviceId || next.deviceId || '').slice(0, 80);
        next.syncRevision = Math.max(0, Math.round(Number(next.syncRevision) || 0));
        next.coverageStartMs = Number.isFinite(Number(next.coverageStartMs)) ? Number(next.coverageStartMs) : null;
        next.coverageEndMs = Number.isFinite(Number(next.coverageEndMs)) ? Number(next.coverageEndMs) : null;
        next.lastFullScanAt = Number(next.lastFullScanAt) || 0;
        next.lastIncrementalScanAt = Number(next.lastIncrementalScanAt) || 0;
        next.lastDeepScanAt = Number(next.lastDeepScanAt) || 0;
        next.sourceLastPage = Math.max(0, Math.round(Number(next.sourceLastPage) || 0));
        next.deepScanCursorPage = Math.max(0, Math.round(Number(next.deepScanCursorPage) || 0));
        next.deepScanTotalPages = Math.max(0, Math.round(Number(next.deepScanTotalPages) || 0));
        next.deepScanAnchor = String(next.deepScanAnchor || '').slice(0, 1200);
        next.deepScanInProgress = Boolean(next.deepScanInProgress);
        next.archiveComplete = Boolean(next.archiveComplete);
        next.archiveTruncated = Boolean(next.archiveTruncated);
        if (next.archiveComplete) next.deepScanInProgress = false;
        next.droppedTransactions = Math.max(0, Math.round(Number(next.droppedTransactions) || 0));
        next.updatedAt = Number(next.updatedAt) || Date.now();
        next.balanceCheckpoints = Array.isArray(next.balanceCheckpoints) ? next.balanceCheckpoints.map(item => ({ timestamp: Number(item?.timestamp), balance: Math.round(Number(item?.balance) || 0) })).filter(item => Number.isFinite(item.timestamp) && Number.isFinite(item.balance)).slice(-FINANCE_VAULT_MAX_CHECKPOINTS) : [];
        const seen = new Set();
        next.transactions = Array.isArray(next.transactions) ? next.transactions.map(normaliseFinanceVaultEntry).filter(entry => entry && !seen.has(entry.fingerprint) && seen.add(entry.fingerprint)).sort((a, b) => a.timestamp - b.timestamp || a.fingerprint.localeCompare(b.fingerprint)) : [];
        if (next.transactions.length > FINANCE_VAULT_MAX_TRANSACTIONS) {
            const dropped = next.transactions.length - FINANCE_VAULT_MAX_TRANSACTIONS;
            next.transactions = next.transactions.slice(-FINANCE_VAULT_MAX_TRANSACTIONS);
            next.droppedTransactions += dropped;
            next.archiveTruncated = true;
            next.archiveComplete = false;
            next.deepScanInProgress = false;
            next.coverageStartMs = next.transactions[0]?.timestamp || next.coverageStartMs;
        }
        return next;
    }

    function loadFinanceVault(player, deviceId = financeVaultCredential().deviceId) {
        const key = financePlayerProfileKey(player);
        if (financeVaultProfileMemory.has(key)) return financeVaultProfileMemory.get(key);
        const store = loadFinanceVaultStore();
        const vault = normaliseFinanceVault(store.profiles[key], player, deviceId);
        store.profiles[key] = vault;
        financeVaultProfileMemory.set(key, vault);
        return vault;
    }

    function saveFinanceVault(vault) {
        const player = vault?.player || financePlayerIdentity();
        const identity = ensureFinanceVaultCredential(player);
        const normalised = normaliseFinanceVault(vault, player, identity.deviceId);
        normalised.updatedAt = Date.now();
        const retentionSetting = state.financialVault.retentionDays;
        if (String(retentionSetting) !== 'all') {
            const retentionMs = Math.max(1, Number(retentionSetting) || 365) * 86400000;
            const threshold = Date.now() - retentionMs;
            normalised.transactions = normalised.transactions.filter(entry => entry.timestamp >= threshold);
            normalised.balanceCheckpoints = normalised.balanceCheckpoints.filter(item => item.timestamp >= threshold);
            if (normalised.coverageStartMs !== null && normalised.coverageStartMs < threshold) normalised.coverageStartMs = threshold;
            normalised.archiveComplete = false;
        }
        if (normalised.transactions.length > FINANCE_VAULT_MAX_TRANSACTIONS) {
            const dropped = normalised.transactions.length - FINANCE_VAULT_MAX_TRANSACTIONS;
            normalised.transactions = normalised.transactions.slice(-FINANCE_VAULT_MAX_TRANSACTIONS);
            normalised.droppedTransactions += dropped;
            normalised.archiveTruncated = true;
            normalised.archiveComplete = false;
            normalised.coverageStartMs = normalised.transactions[0]?.timestamp || normalised.coverageStartMs;
        }
        normalised.balanceCheckpoints = normalised.balanceCheckpoints.slice(-FINANCE_VAULT_MAX_CHECKPOINTS);
        const store = loadFinanceVaultStore();
        const profileKey = financePlayerProfileKey(player);
        store.profiles[profileKey] = normalised;
        financeVaultProfileMemory.set(profileKey, normalised);
        saveFinanceVaultStore(store, { preserveProfileCache: true });
        return normalised;
    }

    function decorateFinancialEntries(entries) {
        const counts = new Map();
        return entries.slice().sort((a, b) => a.timestamp - b.timestamp || a.page - b.page || a.row - b.row).map(entry => {
            const timestamp = Number(entry.timestamp);
            const amount = Math.round(Number(entry.amount) || 0);
            const description = financeNormaliseText(entry.description);
            const dateLabel = financeNormaliseText(entry.dateLabel);
            const rawTimestamp = financeNormaliseText(entry.rawTimestamp);
            const sourceKey = String(entry?.sourceKey || `${timestamp}|${amount}|${description.toLowerCase()}|${rawTimestamp || dateLabel}`).slice(0, 700);
            const previous = counts.get(sourceKey) || 0;
            const suppliedOccurrence = Math.max(0, Math.round(Number(entry?.occurrence) || 0));
            const occurrence = suppliedOccurrence || previous + 1;
            counts.set(sourceKey, Math.max(previous, occurrence));
            return normaliseFinanceVaultEntry({ ...entry, sourceKey, occurrence, fingerprint: entry?.fingerprint || '' });
        }).filter(Boolean);
    }

    function mergeFinanceVaultEntries(vault, entries, { coverageStartMs = null, coverageEndMs = null, fullScan = false, deepScan = false, sourceLastPage = 0, deepScanCursorPage = null, deepScanTotalPages = null, deepScanAnchor = null, deepScanInProgress = null, archiveComplete = null, currentBalance = null } = {}) {
        const merged = new Map(vault.transactions.map(entry => [entry.fingerprint, entry]));
        for (const entry of decorateFinancialEntries(entries)) merged.set(entry.fingerprint, entry);
        vault.transactions = Array.from(merged.values()).sort((a, b) => a.timestamp - b.timestamp || a.fingerprint.localeCompare(b.fingerprint));
        if (Number.isFinite(Number(coverageStartMs))) vault.coverageStartMs = vault.coverageStartMs === null ? Number(coverageStartMs) : Math.min(vault.coverageStartMs, Number(coverageStartMs));
        if (Number.isFinite(Number(coverageEndMs))) vault.coverageEndMs = vault.coverageEndMs === null ? Number(coverageEndMs) : Math.max(vault.coverageEndMs, Number(coverageEndMs));
        if (fullScan) vault.lastFullScanAt = Date.now();
        else vault.lastIncrementalScanAt = Date.now();
        if (deepScan) vault.lastDeepScanAt = Date.now();
        if (Number(sourceLastPage) > 0) vault.sourceLastPage = Math.max(vault.sourceLastPage || 0, Math.round(Number(sourceLastPage)));
        if (deepScanCursorPage !== null) vault.deepScanCursorPage = Math.max(0, Math.round(Number(deepScanCursorPage) || 0));
        if (deepScanTotalPages !== null) vault.deepScanTotalPages = Math.max(0, Math.round(Number(deepScanTotalPages) || 0));
        if (deepScanAnchor !== null) vault.deepScanAnchor = String(deepScanAnchor || '').slice(0, 1200);
        if (deepScanInProgress !== null) vault.deepScanInProgress = Boolean(deepScanInProgress);
        if (archiveComplete !== null) vault.archiveComplete = Boolean(archiveComplete) && !vault.archiveTruncated;
        if (Number.isFinite(Number(currentBalance))) {
            const timestamp = Date.now();
            const last = vault.balanceCheckpoints[vault.balanceCheckpoints.length - 1];
            if (!last || Math.abs(timestamp - last.timestamp) > 5 * 60 * 1000 || last.balance !== Math.round(currentBalance)) {
                vault.balanceCheckpoints.push({ timestamp, balance: Math.round(currentBalance) });
            }
        }
        vault.syncRevision += 1;
        return saveFinanceVault(vault);
    }

    function financeFormatTimeAgo(timestamp) {
        const elapsed = Math.max(0, Date.now() - Number(timestamp || 0));
        if (elapsed < 60000) return 'just now';
        if (elapsed < 3600000) return `${Math.floor(elapsed / 60000)}m ago`;
        if (elapsed < 86400000) return `${Math.floor(elapsed / 3600000)}h ago`;
        return `${Math.floor(elapsed / 86400000)}d ago`;
    }

    function financeVaultStats(vault) {
        const transactions = Array.isArray(vault?.transactions) ? vault.transactions : [];
        return {
            count: transactions.length,
            firstTimestamp: transactions.length ? transactions[0].timestamp : null,
            lastTimestamp: transactions.length ? transactions[transactions.length - 1].timestamp : null,
            checkpoints: Array.isArray(vault?.balanceCheckpoints) ? vault.balanceCheckpoints.length : 0,
            lastDeepScanAt: Number(vault?.lastDeepScanAt) || 0,
            lastIncrementalScanAt: Number(vault?.lastIncrementalScanAt) || 0,
            sourceLastPage: Math.max(0, Math.round(Number(vault?.sourceLastPage) || 0)),
            deepScanCursorPage: Math.max(0, Math.round(Number(vault?.deepScanCursorPage) || 0)),
            deepScanTotalPages: Math.max(0, Math.round(Number(vault?.deepScanTotalPages) || 0)),
            deepScanInProgress: Boolean(vault?.deepScanInProgress),
            archiveComplete: Boolean(vault?.archiveComplete),
            archiveTruncated: Boolean(vault?.archiveTruncated),
            droppedTransactions: Math.max(0, Math.round(Number(vault?.droppedTransactions) || 0))
        };
    }

    function setFinanceVaultStatus(message, tone = 'neutral') {
        financeVaultStatus = String(message || '');
        financeVaultStatusTone = ['neutral', 'good', 'bad', 'busy'].includes(tone) ? tone : 'neutral';
        const status = document.querySelector(`#${SCRIPT.panelId} [data-finance-vault-status]`);
        if (status) {
            status.textContent = financeVaultStatus;
            status.dataset.tone = financeVaultStatusTone;
        }
    }

    function setFinanceRuleFeedStatus(message, tone = 'neutral') {
        financeRuleFeedStatus = String(message || '');
        financeRuleFeedStatusTone = ['neutral', 'good', 'bad', 'busy'].includes(tone) ? tone : 'neutral';
        const status = document.querySelector(`#${SCRIPT.panelId} [data-finance-rule-status]`);
        if (status) {
            status.textContent = financeRuleFeedStatus;
            status.dataset.tone = financeRuleFeedStatusTone;
        }
    }

    function financeExternalRequest({ method = 'GET', url, body = null, headers = {}, timeoutMs = FINANCE_FEED_TIMEOUT_MS }) {
        return new Promise((resolve, reject) => {
            if (runtime.destroyed) {
                reject(new Error('Toolkit runtime stopped.'));
                return;
            }
            if (typeof GM_xmlhttpRequest !== 'function') {
                reject(new Error('Tampermonkey cross-origin requests are unavailable.'));
                return;
            }
            let request = null;
            let settled = false;
            const finish = (error, response = null) => {
                if (settled) return;
                settled = true;
                if (request) runtime.requests.delete(request);
                if (error) reject(error); else resolve(response);
            };
            try {
                request = GM_xmlhttpRequest({
                    method,
                    url,
                    data: body,
                    headers,
                    timeout: timeoutMs,
                    responseType: 'text',
                    onload: response => finish(null, response),
                    onerror: () => finish(new Error('The GitHub financial-intelligence feed could not be reached.')),
                    ontimeout: () => finish(new Error('The GitHub financial-intelligence request timed out.')),
                    onabort: () => finish(new Error('The GitHub financial-intelligence request was cancelled.'))
                });
                if (!settled && request?.abort) runtime.requests.add(request);
            } catch (err) {
                finish(err instanceof Error ? err : new Error('The GitHub financial-intelligence request could not be created.'));
            }
        });
    }

    function validateFinancialRule(rawRule) {
        if (!rawRule || typeof rawRule !== 'object') return null;
        const direction = rawRule.direction === 'income' ? 'income' : rawRule.direction === 'spending' ? 'spending' : '';
        const match = ['regex', 'contains', 'startsWith', 'equals'].includes(rawRule.match) ? rawRule.match : '';
        const pattern = String(rawRule.pattern || '').slice(0, 180);
        const accountingGroup = FINANCE_ACCOUNTING_GROUPS.has(rawRule.accountingGroup) ? rawRule.accountingGroup : '';
        if (!direction || !match || !pattern || !accountingGroup) return null;
        if (match === 'regex') {
            try { new RegExp(pattern, 'iu'); } catch (err) { return null; }
        }
        const excludePattern = String(rawRule.excludePattern || '').slice(0, 180);
        if (excludePattern) {
            try { new RegExp(excludePattern, 'iu'); } catch (err) { return null; }
        }
        return compileFinancialRule({
            id: String(rawRule.id || financeHashString(`${direction}|${pattern}`)).slice(0, 80),
            direction,
            match,
            pattern,
            excludePattern,
            key: String(rawRule.key || 'unclassified').slice(0, 80),
            label: String(rawRule.label || 'Unclassified').slice(0, 120),
            accountingGroup,
            missionType: String(rawRule.missionType || '').slice(0, 40),
            confidence: clamp(rawRule.confidence, 0.05, 1, 0.5),
            source: 'remote'
        });
    }

    function applyFinancialRulePayload(payload, { cache = false } = {}) {
        if (!payload || Number(payload.schema) !== 1 || !Array.isArray(payload.rules)) return false;
        const rules = payload.rules.map(validateFinancialRule).filter(Boolean).slice(0, 250);
        if (!rules.length) return false;
        const fallbacks = { income: { ...BUILTIN_FINANCIAL_FALLBACKS.income }, spending: { ...BUILTIN_FINANCIAL_FALLBACKS.spending } };
        for (const direction of ['income', 'spending']) {
            const raw = payload.fallbacks?.[direction];
            if (!raw || typeof raw !== 'object') continue;
            const group = FINANCE_ACCOUNTING_GROUPS.has(raw.accountingGroup) ? raw.accountingGroup : fallbacks[direction].accountingGroup;
            fallbacks[direction] = {
                id: `remote-fallback-${direction}`,
                key: String(raw.key || fallbacks[direction].key).slice(0, 80),
                label: String(raw.label || fallbacks[direction].label).slice(0, 120),
                accountingGroup: group,
                missionType: String(raw.missionType || '').slice(0, 40),
                confidence: clamp(raw.confidence, 0.05, 1, fallbacks[direction].confidence)
            };
        }
        activeFinancialRules = rules;
        activeFinancialFallbacks = fallbacks;
        activeFinancialRuleVersion = String(payload.version || 'remote').slice(0, 80);
        if (cache) gmSetValueSafe(SCRIPT.financeRulesCacheState, JSON.stringify({ fetchedAt: Date.now(), payload }));
        return true;
    }

    function loadCachedFinancialRules() {
        const raw = gmGetValueSafe(SCRIPT.financeRulesCacheState, '');
        let cache = null;
        try { cache = typeof raw === 'string' ? JSON.parse(raw) : raw; } catch (err) {}
        if (!cache?.payload || !applyFinancialRulePayload(cache.payload)) return 0;
        return Number(cache.fetchedAt) || 0;
    }

    async function refreshFinancialRuleFeed(force = false) {
        if (!state.financialVault.ruleFeedEnabled) {
            activeFinancialRules = BUILTIN_FINANCIAL_RULES.map(rule => compileFinancialRule({ ...rule, source: 'built-in' }));
            activeFinancialFallbacks = { income: { ...BUILTIN_FINANCIAL_FALLBACKS.income }, spending: { ...BUILTIN_FINANCIAL_FALLBACKS.spending } };
            activeFinancialRuleVersion = 'built-in';
            setFinanceRuleFeedStatus('Built-in classification rules active.', 'neutral');
            return false;
        }
        if (financeRuleRefreshPromise) return financeRuleRefreshPromise;
        financeRuleRefreshPromise = (async () => {
            const cachedAt = loadCachedFinancialRules();
            if (!force && cachedAt && Date.now() - cachedAt < FINANCE_RULE_CACHE_TTL_MS) {
                setFinanceRuleFeedStatus(`Classification feed ${activeFinancialRuleVersion} · cached`, 'good');
                return true;
            }
            setFinanceRuleFeedStatus('Checking the central classification rule feed…', 'busy');
            try {
                const response = await financeExternalRequest({ url: `${FINANCE_RULE_FEED_URL}?v=${Date.now()}` });
                if (response.status < 200 || response.status >= 300) throw new Error(`Rule feed returned HTTP ${response.status}.`);
                const payload = JSON.parse(response.responseText || '{}');
                if (!applyFinancialRulePayload(payload, { cache: true })) throw new Error('Rule feed failed schema validation.');
                setFinanceRuleFeedStatus(`Classification feed ${activeFinancialRuleVersion} active.`, 'good');
                return true;
            } catch (err) {
                const cached = loadCachedFinancialRules();
                if (!cached) {
                    activeFinancialRules = BUILTIN_FINANCIAL_RULES.map(rule => compileFinancialRule({ ...rule, source: 'built-in' }));
                    activeFinancialRuleVersion = 'built-in';
                }
                setFinanceRuleFeedStatus(`${err?.message || 'Rule feed unavailable'} Using ${activeFinancialRuleVersion}.`, cached ? 'neutral' : 'bad');
                return false;
            }
        })().finally(() => { financeRuleRefreshPromise = null; });
        return financeRuleRefreshPromise;
    }

    function validateFinancialPolicy(payload) {
        if (!payload || Number(payload.schema) !== 2 || typeof payload.risk !== 'object' || typeof payload.scan !== 'object') return null;
        const number = (value, minimum, maximum, fallback) => clamp(Number(value), minimum, maximum, fallback);
        return {
            schema: 2,
            version: String(payload.version || 'remote').slice(0, 80),
            risk: {
                classificationCritical: number(payload.risk.classificationCritical, 40, 95, BUILTIN_FINANCIAL_POLICY.risk.classificationCritical),
                classificationWarning: number(payload.risk.classificationWarning, 50, 100, BUILTIN_FINANCIAL_POLICY.risk.classificationWarning),
                capitalIncomeRatio: number(payload.risk.capitalIncomeRatio, 50, 500, BUILTIN_FINANCIAL_POLICY.risk.capitalIncomeRatio),
                allianceConcentration: number(payload.risk.allianceConcentration, 40, 100, BUILTIN_FINANCIAL_POLICY.risk.allianceConcentration),
                categoryConcentration: number(payload.risk.categoryConcentration, 40, 100, BUILTIN_FINANCIAL_POLICY.risk.categoryConcentration),
                volatilityWarning: number(payload.risk.volatilityWarning, 50, 500, BUILTIN_FINANCIAL_POLICY.risk.volatilityWarning),
                revenueContraction: number(payload.risk.revenueContraction, -90, -5, BUILTIN_FINANCIAL_POLICY.risk.revenueContraction),
                drawdownWarning: number(payload.risk.drawdownWarning, 5, 90, BUILTIN_FINANCIAL_POLICY.risk.drawdownWarning),
                runwayCriticalDays: number(payload.risk.runwayCriticalDays, 0.5, 30, BUILTIN_FINANCIAL_POLICY.risk.runwayCriticalDays)
            },
            scan: {
                pageCap: Math.round(number(payload.scan.pageCap, 100, FINANCE_DEEP_SCAN_HARD_PAGE_CAP, BUILTIN_FINANCIAL_POLICY.scan.pageCap)),
                batchSize: Math.round(number(payload.scan.batchSize, 1, FINANCE_DEEP_SCAN_HARD_BATCH_CAP, BUILTIN_FINANCIAL_POLICY.scan.batchSize)),
                retryAttempts: Math.round(number(payload.scan.retryAttempts, 1, 5, BUILTIN_FINANCIAL_POLICY.scan.retryAttempts)),
                checkpointPages: Math.round(number(payload.scan.checkpointPages, 20, 500, BUILTIN_FINANCIAL_POLICY.scan.checkpointPages))
            }
        };
    }

    function applyFinancialPolicyPayload(payload, { cache = false } = {}) {
        const policy = validateFinancialPolicy(payload);
        if (!policy) return false;
        activeFinancialPolicy = policy;
        activeFinancialPolicyVersion = policy.version;
        if (cache) gmSetValueSafe(SCRIPT.financePolicyCacheState, JSON.stringify({ fetchedAt: Date.now(), payload }));
        return true;
    }

    function loadCachedFinancialPolicy() {
        const raw = gmGetValueSafe(SCRIPT.financePolicyCacheState, '');
        let cache = null;
        try { cache = typeof raw === 'string' ? JSON.parse(raw) : raw; } catch (err) {}
        if (!cache?.payload || !applyFinancialPolicyPayload(cache.payload)) return 0;
        return Number(cache.fetchedAt) || 0;
    }

    async function refreshFinancialPolicyFeed(force = false) {
        if (!state.financialVault.ruleFeedEnabled) {
            activeFinancialPolicy = clonePlainData(BUILTIN_FINANCIAL_POLICY);
            activeFinancialPolicyVersion = 'built-in';
            return false;
        }
        if (financePolicyRefreshPromise) return financePolicyRefreshPromise;
        financePolicyRefreshPromise = (async () => {
            const cachedAt = loadCachedFinancialPolicy();
            if (!force && cachedAt && Date.now() - cachedAt < FINANCE_POLICY_CACHE_TTL_MS) return true;
            try {
                const response = await financeExternalRequest({ url: `${FINANCE_POLICY_FEED_URL}?v=${Date.now()}` });
                if (response.status < 200 || response.status >= 300) throw new Error(`Audit policy returned HTTP ${response.status}.`);
                const payload = JSON.parse(response.responseText || '{}');
                if (!applyFinancialPolicyPayload(payload, { cache: true })) throw new Error('Audit policy failed schema validation.');
                return true;
            } catch (err) {
                const cached = loadCachedFinancialPolicy();
                if (!cached) {
                    activeFinancialPolicy = clonePlainData(BUILTIN_FINANCIAL_POLICY);
                    activeFinancialPolicyVersion = 'built-in';
                }
                return false;
            }
        })().finally(() => { financePolicyRefreshPromise = null; });
        return financePolicyRefreshPromise;
    }

    async function refreshFinancialIntelligenceFeeds(force = false) {
        if (!state.financialVault.ruleFeedEnabled) {
            await Promise.all([refreshFinancialRuleFeed(force), refreshFinancialPolicyFeed(force)]);
            setFinanceRuleFeedStatus('Built-in financial intelligence active. No player data is uploaded.', 'neutral');
            return false;
        }
        setFinanceRuleFeedStatus('Checking GitHub financial intelligence feeds…', 'busy');
        const [rulesOk, policyOk] = await Promise.all([refreshFinancialRuleFeed(force), refreshFinancialPolicyFeed(force)]);
        const tone = rulesOk || policyOk ? 'good' : 'neutral';
        setFinanceRuleFeedStatus(`GitHub intelligence ${activeFinancialRuleVersion} · policy ${activeFinancialPolicyVersion}. No player data is uploaded.`, tone);
        return rulesOk || policyOk;
    }

    function ruleMatchesFinancialDescription(rule, description) {
        const text = String(description || '');
        const lower = text.toLowerCase();
        let matched;
        if (rule.match === 'contains') matched = lower.includes(String(rule.pattern).toLowerCase());
        else if (rule.match === 'startsWith') matched = lower.startsWith(String(rule.pattern).toLowerCase());
        else if (rule.match === 'equals') matched = lower === String(rule.pattern).toLowerCase();
        else {
            try { matched = (rule.patternRegex || new RegExp(rule.pattern, 'iu')).test(text); } catch (err) { matched = false; }
        }
        if (!matched || !rule.excludePattern) return matched;
        try { return !(rule.excludeRegex || new RegExp(rule.excludePattern, 'iu')).test(text); } catch (err) { return matched; }
    }

    function financialArchiveFilename(date = new Date()) {
        const pad = value => String(value).padStart(2, '0');
        return `MC Financial Archive ${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}-${pad(date.getMinutes())}.json`;
    }

    function buildFinancialArchiveExport(exportedAt = new Date()) {
        return {
            format: 'MissionChief Map Command Financial Archive',
            schema: 2,
            toolkitVersion: SCRIPT.version,
            exportedAt: exportedAt.toISOString(),
            identity: clonePlainData(financeVaultCredential()),
            store: clonePlainData(loadFinanceVaultStore()),
            notice: 'Contains locally stored MissionChief game-financial history. It does not contain the Discord webhook.'
        };
    }

    async function exportFinancialArchive() {
        const store = loadFinanceVaultStore();
        if (!Object.keys(store.profiles || {}).length) {
            showToast('No local financial history to export');
            return;
        }
        const accepted = pageWindow.confirm('FINANCIAL ARCHIVE EXPORT\n\nThis file contains your locally stored MissionChief game-financial history. It does not contain your Discord webhook.\n\nCreate the archive file now?');
        if (!accepted) return;
        const exportedAt = new Date();
        const json = JSON.stringify(buildFinancialArchiveExport(exportedAt), null, 2);
        const BlobConstructor = pageWindow.Blob || globalThis.Blob;
        downloadToolkitSettingsBlob(new BlobConstructor([json], { type: 'application/json' }), financialArchiveFilename(exportedAt));
        showToast('Financial archive exported');
    }

    function mergeFinanceVaultStores(existingStore, importedStore) {
        const result = { schema: FINANCE_VAULT_SCHEMA, profiles: { ...(existingStore?.profiles || {}) } };
        for (const [rawKey, rawVault] of Object.entries(importedStore?.profiles || {}).slice(0, 100)) {
            if (!rawVault || typeof rawVault !== 'object') continue;
            const player = {
                id: rawVault?.player?.id === undefined || rawVault?.player?.id === null || rawVault?.player?.id === '' ? null : String(rawVault.player.id).slice(0, 64),
                name: financeNormaliseText(rawVault?.player?.name).slice(0, 120)
            };
            const key = player.id || player.name ? financePlayerProfileKey(player) : String(rawKey || '').slice(0, 180);
            if (!key) continue;
            const imported = normaliseFinanceVault(rawVault, player, financeVaultCredential().deviceId);
            const current = normaliseFinanceVault(result.profiles[key], player, financeVaultCredential().deviceId);
            const transactions = new Map(current.transactions.map(entry => [entry.fingerprint, entry]));
            for (const entry of imported.transactions) transactions.set(entry.fingerprint, entry);
            const checkpoints = new Map(current.balanceCheckpoints.map(item => [`${item.timestamp}|${item.balance}`, item]));
            for (const item of imported.balanceCheckpoints) checkpoints.set(`${item.timestamp}|${item.balance}`, item);
            current.transactions = Array.from(transactions.values()).sort((a, b) => a.timestamp - b.timestamp || a.fingerprint.localeCompare(b.fingerprint));
            current.balanceCheckpoints = Array.from(checkpoints.values()).sort((a, b) => a.timestamp - b.timestamp).slice(-FINANCE_VAULT_MAX_CHECKPOINTS);
            const starts = [current.coverageStartMs, imported.coverageStartMs].filter(Number.isFinite);
            const ends = [current.coverageEndMs, imported.coverageEndMs].filter(Number.isFinite);
            current.coverageStartMs = starts.length ? Math.min(...starts) : null;
            current.coverageEndMs = ends.length ? Math.max(...ends) : null;
            current.lastFullScanAt = Math.max(current.lastFullScanAt, imported.lastFullScanAt);
            current.lastIncrementalScanAt = Math.max(current.lastIncrementalScanAt, imported.lastIncrementalScanAt);
            current.lastDeepScanAt = Math.max(current.lastDeepScanAt, imported.lastDeepScanAt);
            current.sourceLastPage = Math.max(current.sourceLastPage, imported.sourceLastPage);
            current.deepScanCursorPage = Math.max(current.deepScanCursorPage, imported.deepScanCursorPage);
            current.deepScanTotalPages = Math.max(current.deepScanTotalPages, imported.deepScanTotalPages);
            if (imported.deepScanInProgress && imported.deepScanCursorPage >= current.deepScanCursorPage) current.deepScanAnchor = imported.deepScanAnchor;
            current.deepScanInProgress = Boolean(current.deepScanInProgress || imported.deepScanInProgress);
            current.archiveComplete = Boolean(current.archiveComplete || imported.archiveComplete);
            current.archiveTruncated = Boolean(current.archiveTruncated || imported.archiveTruncated);
            if (current.archiveComplete) current.deepScanInProgress = false;
            current.droppedTransactions += imported.droppedTransactions;
            result.profiles[key] = current;
        }
        return result;
    }

    function importFinancialArchiveFile(file) {
        if (!file) return;
        if (Number(file.size) > 100 * 1024 * 1024) {
            showToast('Import failed: financial archive is too large');
            return;
        }
        const reader = new FileReader();
        reader.onload = () => {
            try {
                const parsed = JSON.parse(String(reader.result || ''));
                const importedStore = parsed?.store || parsed?.financialArchiveStore || parsed?.financialVaultStore;
                if (!importedStore?.profiles || typeof importedStore.profiles !== 'object') throw new Error('No Financial Archive history was found.');
                if (!pageWindow.confirm('FINANCIAL ARCHIVE IMPORT\n\nThe imported ledger will be merged with the local archive by player ID/name and transaction fingerprint. Existing entries will not be discarded.\n\nContinue?')) return;
                const merged = mergeFinanceVaultStores(loadFinanceVaultStore(), importedStore);
                saveFinanceVaultStore(merged);
                const importedIdentity = parsed?.identity || parsed?.integrations?.financialArchiveIdentity;
                if (importedIdentity && typeof importedIdentity === 'object') saveFinanceVaultCredential(normaliseImportedFinanceVaultCredential(importedIdentity));
                renderFinanceVaultStatus();
                invalidateDiscordFinancialPreview();
                showToast('Financial archive imported and merged');
            } catch (err) {
                showToast(`Archive import failed: ${err?.message || 'invalid file'}`);
            }
        };
        reader.onerror = () => showToast('Archive import failed: file could not be read');
        reader.readAsText(file);
    }

    function clearFinancialArchive() {
        const player = financePlayerIdentity({ userId: currentUserIdCached(), userName: financeVaultCredential().playerName });
        const key = financePlayerProfileKey(player);
        const store = loadFinanceVaultStore();
        if (!store.profiles[key]) {
            showToast('No local archive exists for this player');
            return;
        }
        if (!pageWindow.confirm(`Clear the locally stored Financial Archive for ${player.name || `player ${player.id || ''}`}?\n\nThis does not clear MissionChief's own ledger and cannot be undone unless you have an exported backup.`)) return;
        delete store.profiles[key];
        saveFinanceVaultStore(store);
        invalidateDiscordFinancialPreview();
        renderFinanceVaultStatus();
        showToast('Local financial archive cleared');
    }

    function cancelFinancialArchiveScan() {
        if (!financeArchiveScanBusy) {
            showToast('No deep financial scan is running');
            return;
        }
        financeArchiveScanCancelled = true;
        setFinanceVaultStatus('Stopping after the current ledger batch…', 'busy');
    }

    function renderFinanceVaultStatus() {
        const account = { userId: currentUserIdCached(), userName: financeVaultCredential().playerName };
        const player = financePlayerIdentity(account);
        const identity = financeVaultCredential();
        const vault = loadFinanceVault(player, identity.deviceId);
        const stats = financeVaultStats(vault);
        const node = document.querySelector(`#${SCRIPT.panelId} [data-finance-vault-summary]`);
        if (node) {
            const history = stats.firstTimestamp ? `${new Date(stats.firstTimestamp).toLocaleDateString('en-GB')} → ${new Date(stats.lastTimestamp).toLocaleDateString('en-GB')}` : 'No ledger history stored';
            const deepScan = stats.deepScanInProgress && stats.deepScanCursorPage
                ? `Deep scan resumable from page ${Math.min(stats.deepScanCursorPage + 1, stats.deepScanTotalPages || stats.sourceLastPage || stats.deepScanCursorPage + 1).toLocaleString('en-GB')}`
                : stats.lastDeepScanAt ? `Deep scan ${financeFormatTimeAgo(stats.lastDeepScanAt)}` : 'Deep scan not completed';
            const completeness = stats.archiveComplete ? 'FULL RANGE' : stats.archiveTruncated ? 'CAPPED' : stats.deepScanInProgress ? 'RESUMABLE' : 'PARTIAL';
            node.innerHTML = `<span><b>${stats.count.toLocaleString('en-GB')}</b> transactions</span><span><b>${stats.checkpoints.toLocaleString('en-GB')}</b> balance checks</span><span><b>${escapeHtml(activeFinancialRuleVersion)}</b> rules</span><span><b>${completeness}</b> archive</span><small>${escapeHtml(history)} · ${escapeHtml(deepScan)}${stats.sourceLastPage ? ` · ${stats.sourceLastPage.toLocaleString('en-GB')} source pages` : ''}</small>`;
        }
        setFinanceVaultStatus(financeVaultStatus, financeVaultStatusTone);
        setFinanceRuleFeedStatus(financeRuleFeedStatus, financeRuleFeedStatusTone);
    }


    /**
     * @template T
     * @param {string} key
     * @param {T} fallback
     * @returns {T}
     */
    function gmGetValueSafe(key, fallback) {
        try {
            if (typeof GM_getValue === 'function') return GM_getValue(key, fallback);
        } catch (err) {}
        return fallback;
    }

    function gmSetValueSafe(key, value) {
        try {
            if (typeof GM_setValue === 'function') {
                GM_setValue(key, value);
                return true;
            }
        } catch (err) {}
        return false;
    }

    function gmDeleteValueSafe(key) {
        try {
            if (typeof GM_deleteValue === 'function') {
                GM_deleteValue(key);
                return true;
            }
        } catch (err) {}
        return false;
    }

    function getDiscordWebhookUrl() {
        return String(gmGetValueSafe(SCRIPT.discordWebhookState, '') || '').trim();
    }

    function getLastDiscordReportAt() {
        const value = Number(gmGetValueSafe(SCRIPT.discordLastReportState, 0));
        return Number.isFinite(value) && value > 0 ? value : 0;
    }

    function normaliseDiscordWebhookUrl(rawValue) {
        const raw = String(rawValue || '').trim();
        if (!raw) return '';
        let parsed;
        try { parsed = new URL(raw); } catch (err) { throw new Error('The Discord webhook URL is not valid.'); }
        if (parsed.protocol !== 'https:' || !DISCORD_WEBHOOK_HOSTS.has(parsed.hostname.toLowerCase())) {
            throw new Error('Use a genuine HTTPS Discord webhook URL.');
        }
        if (!/^\/api(?:\/v\d+)?\/webhooks\/\d+\/[A-Za-z0-9._-]+\/?$/u.test(parsed.pathname)) {
            throw new Error('The URL does not contain a valid Discord webhook ID and token.');
        }
        parsed.hash = '';
        parsed.username = '';
        parsed.password = '';
        return parsed.toString();
    }

    function saveDiscordWebhookUrl(rawValue) {
        const normalised = normaliseDiscordWebhookUrl(rawValue);
        if (!normalised) {
            gmDeleteValueSafe(SCRIPT.discordWebhookState);
            return '';
        }
        if (!gmSetValueSafe(SCRIPT.discordWebhookState, normalised)) {
            throw new Error('Tampermonkey storage is unavailable.');
        }
        return normalised;
    }

    function readDiscordWebhookInput({ save = true } = {}) {
        const input = document.querySelector(`#${SCRIPT.panelId} [data-setting="discord-webhook"]`);
        const raw = String(input?.value || getDiscordWebhookUrl()).trim();
        return save ? saveDiscordWebhookUrl(raw) : normaliseDiscordWebhookUrl(raw);
    }

    function setDiscordStatus(message, tone = 'neutral') {
        discordFinanceStatus = String(message || '');
        discordFinanceStatusTone = ['neutral', 'good', 'bad', 'busy'].includes(tone) ? tone : 'neutral';
        const status = document.querySelector(`#${SCRIPT.panelId} [data-discord-status]`);
        if (status) {
            status.textContent = discordFinanceStatus;
            status.dataset.tone = discordFinanceStatusTone;
        }
    }

    function discordHttpRequest({ method = 'GET', url, data = null, headers = {} }) {
        return new Promise((resolve, reject) => {
            if (runtime.destroyed) {
                reject(new Error('Toolkit runtime stopped.'));
                return;
            }
            if (typeof GM_xmlhttpRequest !== 'function') {
                reject(new Error('Tampermonkey cross-origin requests are unavailable.'));
                return;
            }
            let request = null;
            let settled = false;
            const finish = (error, response = null) => {
                if (settled) return;
                settled = true;
                if (request) runtime.requests.delete(request);
                if (error) reject(error);
                else resolve(response);
            };
            try {
                request = GM_xmlhttpRequest({
                    method,
                    url,
                    data,
                    headers,
                    timeout: DISCORD_REQUEST_TIMEOUT_MS,
                    responseType: 'text',
                    onload: response => finish(null, response),
                    onerror: () => finish(new Error('Discord could not be reached.')),
                    ontimeout: () => finish(new Error('Discord request timed out.')),
                    onabort: () => finish(new Error('Discord request was cancelled.'))
                });
                if (!settled && request?.abort) runtime.requests.add(request);
            } catch (err) {
                finish(err instanceof Error ? err : new Error('Discord request could not be created.'));
            }
        });
    }

    function discordWebhookEndpoint(rawUrl, { wait = false, stripQuery = false } = {}) {
        const parsed = new URL(normaliseDiscordWebhookUrl(rawUrl));
        if (stripQuery) parsed.search = '';
        if (wait) parsed.searchParams.set('wait', 'true');
        return parsed.toString();
    }

    function parseDiscordError(response) {
        let detail = '';
        try {
            const body = JSON.parse(response?.responseText || '{}');
            detail = String(body?.message || body?.error || '').trim();
            if (body?.retry_after) detail = `Rate limited. Retry after ${Math.ceil(Number(body.retry_after) / 1000)} seconds.`;
        } catch (err) {}
        return detail || `Discord returned HTTP ${response?.status || 'error'}.`;
    }

    async function testDiscordWebhook() {
        if (discordFinanceBusy) return;
        discordFinanceBusy = true;
        setDiscordStatus('Checking the Discord webhook…', 'busy');
        try {
            const webhookUrl = readDiscordWebhookInput({ save: true });
            const response = await discordHttpRequest({
                method: 'GET',
                url: discordWebhookEndpoint(webhookUrl, { stripQuery: true })
            });
            if (response.status < 200 || response.status >= 300) throw new Error(parseDiscordError(response));
            let webhook = {};
            try { webhook = JSON.parse(response.responseText || '{}'); } catch (err) {}
            const label = String(webhook?.name || state.discordReport.webhookName || 'Discord webhook');
            setDiscordStatus(`Connected successfully: ${label}.`, 'good');
            showToast('Discord webhook connected');
        } catch (err) {
            setDiscordStatus(err?.message || 'Discord webhook test failed.', 'bad');
            showToast('Discord connection failed');
        } finally {
            discordFinanceBusy = false;
        }
    }

    function parseCreditInteger(value) {
        const text = String(value ?? '').replace(/\u2212/gu, '-').trim();
        if (!text) return 0;
        const negative = /(^|[^\d])-/u.test(text) || /^\s*\(/u.test(text);
        const digits = text.replace(/[^\d]/gu, '');
        if (!digits) return 0;
        const amount = Number(digits);
        return Number.isFinite(amount) ? (negative ? -amount : amount) : 0;
    }

    function parseCreditTimestamp(rawValue, fallbackText = '') {
        const raw = String(rawValue || '').trim();
        if (raw) {
            if (/^\d{10,13}$/u.test(raw)) {
                const numeric = Number(raw);
                const timestamp = raw.length === 10 ? numeric * 1000 : numeric;
                if (Number.isFinite(timestamp)) return timestamp;
            }
            const direct = Date.parse(raw);
            if (Number.isFinite(direct)) return direct;
        }
        const text = String(fallbackText || '').replace(/\s+/gu, ' ').trim();
        const match = text.match(/(\d{1,2})[./-](\d{1,2})[./-](\d{4})(?:\D+(\d{1,2}):(\d{2})(?::(\d{2}))?)?/u);
        if (!match) return NaN;
        const [, day, month, year, hour = '0', minute = '0', second = '0'] = match;
        const parsed = new Date(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second), 0).getTime();
        return Number.isFinite(parsed) ? parsed : NaN;
    }

    function parseCreditsListDocument(doc, pageNumber = 1) {
        const entries = [];
        let invalidTimestampCount = 0;
        const rows = Array.from(doc?.querySelectorAll?.('table tbody tr') || []);
        for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
            const row = rows[rowIndex];
            const cells = Array.from(row.children || []);
            if (cells.length < 3) continue;
            const amount = parseCreditInteger(cells[0]?.textContent);
            const description = String(cells[1]?.textContent || '').replace(/\s+/gu, ' ').trim();
            const dateLabel = String(cells[2]?.textContent || '').replace(/\s+/gu, ' ').trim();
            const rawTimestamp = String(cells[2]?.getAttribute?.('data-logged-at') || '').trim();
            if (!description || !amount) continue;
            const timestamp = parseCreditTimestamp(rawTimestamp, dateLabel);
            if (!Number.isFinite(timestamp)) invalidTimestampCount++;
            entries.push({ amount, description, dateLabel, rawTimestamp, timestamp, page: pageNumber, row: rowIndex });
        }
        let lastPage = 1;
        const paginationItems = Array.from(doc?.querySelectorAll?.('.pagination li') || []);
        for (const item of paginationItems) {
            const textPage = Number(String(item.textContent || '').replace(/[^\d]/gu, ''));
            if (Number.isFinite(textPage) && textPage > lastPage) lastPage = textPage;
            const href = item.querySelector?.('a[href]')?.getAttribute?.('href') || '';
            if (href) {
                try {
                    const url = new URL(href, document.baseURI || pageWindow.location.href);
                    const hrefPage = Number(url.searchParams.get('page'));
                    if (Number.isFinite(hrefPage) && hrefPage > lastPage) lastPage = hrefPage;
                } catch (err) {}
            }
        }
        return { entries, invalidTimestampCount, lastPage };
    }

    function normaliseFinancialOverviewHeader(value) {
        return financeNormaliseText(value).toLowerCase().replace(/[^a-z]/gu, '');
    }

    function parseFinancialOverviewDate(value) {
        const text = financeNormaliseText(value);
        const match = text.match(/^(\d{1,2})[./-](\d{1,2})[./-](\d{4})/u);
        if (!match) return null;
        const [, day, month, year] = match;
        const date = new Date(Number(year), Number(month) - 1, Number(day), 0, 0, 0, 0);
        if (date.getFullYear() !== Number(year) || date.getMonth() !== Number(month) - 1 || date.getDate() !== Number(day)) return null;
        const dayStartMs = date.getTime();
        return { dateKey: localIsoDate(date), dayStartMs, dayEndMs: addLocalDays(dayStartMs, 1), label: text };
    }

    function financialPaginationLastPage(doc) {
        let lastPage = 1;
        for (const item of Array.from(doc?.querySelectorAll?.('.pagination li') || [])) {
            const textPage = Number(String(item.textContent || '').replace(/[^\d]/gu, ''));
            if (Number.isFinite(textPage) && textPage > lastPage) lastPage = textPage;
            const href = item.querySelector?.('a[href]')?.getAttribute?.('href') || '';
            if (!href) continue;
            try {
                const url = new URL(href, document.baseURI || pageWindow.location.href);
                const hrefPage = Number(url.searchParams.get('page'));
                if (Number.isFinite(hrefPage) && hrefPage > lastPage) lastPage = hrefPage;
            } catch (err) {}
        }
        return lastPage;
    }

    function parseCreditOverviewDocument(doc, pageNumber = 1) {
        const rowsByDate = new Map();
        let malformedRowCount = 0;
        let duplicateDateCount = 0;
        const tables = Array.from(doc?.querySelectorAll?.('table') || []);
        const candidates = tables.length ? tables : [{
            querySelectorAll(selector) {
                if (selector === 'tbody tr') return doc?.querySelectorAll?.('table tbody tr') || [];
                return [];
            }
        }];
        for (const table of candidates) {
            let headers = Array.from(table?.querySelectorAll?.('thead th') || []);
            if (!headers.length) headers = Array.from(table?.querySelectorAll?.('tr th') || []);
            const normalisedHeaders = headers.map(header => normaliseFinancialOverviewHeader(header?.textContent));
            const findIndex = values => normalisedHeaders.findIndex(header => values.includes(header));
            let dateIndex = findIndex(['date', 'datum']);
            let revenueIndex = findIndex(['revenue', 'income', 'earnings']);
            let spendingIndex = findIndex(['spendings', 'spending', 'expenses', 'expenditure']);
            let sumIndex = findIndex(['sum', 'net', 'total', 'result']);
            const bodyRows = Array.from(table?.querySelectorAll?.('tbody tr') || []);
            if (!bodyRows.length) continue;
            if (dateIndex < 0 || revenueIndex < 0 || spendingIndex < 0) {
                const widest = Math.max(0, ...bodyRows.map(row => Array.from(row?.children || []).length));
                if (widest < 4) continue;
                [dateIndex, revenueIndex, spendingIndex, sumIndex] = [0, 1, 2, 3];
            }
            for (let rowIndex = 0; rowIndex < bodyRows.length; rowIndex++) {
                const cells = Array.from(bodyRows[rowIndex]?.children || []);
                if (cells.length <= Math.max(dateIndex, revenueIndex, spendingIndex, Math.max(0, sumIndex))) {
                    malformedRowCount++;
                    continue;
                }
                const date = parseFinancialOverviewDate(cells[dateIndex]?.textContent);
                const revenueText = financeNormaliseText(cells[revenueIndex]?.textContent);
                const spendingText = financeNormaliseText(cells[spendingIndex]?.textContent);
                const sumText = sumIndex >= 0 ? financeNormaliseText(cells[sumIndex]?.textContent) : '';
                if (!date || !revenueText || !spendingText) {
                    malformedRowCount++;
                    continue;
                }
                const revenue = Math.max(0, parseCreditInteger(revenueText));
                const parsedSpending = parseCreditInteger(spendingText);
                const spending = parsedSpending > 0 ? -parsedSpending : parsedSpending;
                const calculatedNet = revenue + spending;
                const net = sumText ? parseCreditInteger(sumText) : calculatedNet;
                if (Math.abs(net - calculatedNet) > 1) {
                    malformedRowCount++;
                    continue;
                }
                const row = {
                    ...date,
                    revenue,
                    spending,
                    net,
                    calculatedNet,
                    netMismatch: false,
                    page: Math.max(1, Number(pageNumber) || 1),
                    row: rowIndex
                };
                if (rowsByDate.has(date.dateKey)) {
                    duplicateDateCount++;
                    const existing = rowsByDate.get(date.dateKey);
                    if (existing.revenue !== row.revenue || existing.spending !== row.spending || existing.net !== row.net) malformedRowCount++;
                    continue;
                }
                rowsByDate.set(date.dateKey, row);
            }
            if (rowsByDate.size) break;
        }
        return {
            rows: Array.from(rowsByDate.values()).sort((a, b) => b.dayStartMs - a.dayStartMs),
            malformedRowCount,
            duplicateDateCount,
            lastPage: financialPaginationLastPage(doc)
        };
    }

    async function fetchCreditOverviewPage(pageNumber) {
        const page = Math.max(1, Math.round(Number(pageNumber) || 1));
        const attempts = Math.max(1, Math.min(5, Number(activeFinancialPolicy?.scan?.retryAttempts) || 3));
        let lastError = null;
        for (let attempt = 0; attempt < attempts; attempt++) {
            try {
                const path = page === 1 ? '/credits/overview' : `/credits/overview?page=${page}`;
                const result = await fetchSameOriginDocument(path);
                return parseCreditOverviewDocument(result.doc, page);
            } catch (err) {
                lastError = err;
                if (attempt >= attempts - 1) break;
                const delay = Math.min(4000, 350 * Math.pow(2, attempt) + Math.floor(Math.random() * 180));
                setDiscordStatus(`MissionChief credits overview page ${page.toLocaleString('en-GB')} needs another attempt…`, 'busy');
                if (!await runtimeDelay(delay)) throw new Error('Toolkit runtime stopped while retrying the credits overview.');
            }
        }
        throw lastError || new Error(`MissionChief credits overview page ${page} could not be read.`);
    }

    function financialOverviewCacheCovers(startMs, endMs, cache = financialOverviewCache) {
        if (!cache?.rows?.length || !Number.isFinite(Number(cache.coverageStartMs)) || !Number.isFinite(Number(cache.coverageEndMs))) return false;
        const requestedStart = localDayStart(Math.max(0, Number(startMs) || 0));
        const requestedEnd = localDayStart(Math.max(requestedStart, Number(endMs || Date.now()) - 1));
        return cache.coverageStartMs <= requestedStart && cache.coverageEndMs > requestedEnd;
    }

    async function fetchCreditOverview(requiredStartMs, requiredEndMs, options) {
        const force = Boolean(options?.force);
        const now = Date.now();
        const startMs = Math.max(0, Number(requiredStartMs) || 0);
        const endMs = Math.max(startMs + 1, Number(requiredEndMs) || now);
        if (!force && now - Number(financialOverviewCache.fetchedAt || 0) < FINANCE_OVERVIEW_CACHE_TTL_MS && financialOverviewCacheCovers(startMs, endMs)) {
            return { ...financialOverviewCache, rows: financialOverviewCache.rows.slice(), available: true, fromCache: true, coverageReached: true, error: '' };
        }
        const rowsByDate = new Map();
        let malformedRowCount = 0;
        let duplicateDateCount = 0;
        let pageCount = 0;
        let lastPage = 1;
        let failure = null;
        const targetStart = localDayStart(startMs);
        try {
            for (let page = 1; page <= Math.min(lastPage, FINANCE_OVERVIEW_MAX_PAGES); page++) {
                const parsed = await fetchCreditOverviewPage(page);
                pageCount++;
                lastPage = Math.max(lastPage, Number(parsed.lastPage) || 1);
                malformedRowCount += Number(parsed.malformedRowCount) || 0;
                duplicateDateCount += Number(parsed.duplicateDateCount) || 0;
                for (const row of parsed.rows) {
                    if (rowsByDate.has(row.dateKey)) {
                        duplicateDateCount++;
                        continue;
                    }
                    rowsByDate.set(row.dateKey, row);
                }
                const oldest = parsed.rows.length ? Math.min(...parsed.rows.map(row => row.dayStartMs)) : Infinity;
                if (startMs > 0 && oldest <= targetStart) break;
                if (page >= lastPage) break;
                if (page % FINANCE_FETCH_YIELD_EVERY === 0 && !await runtimeDelay(25)) throw new Error('Toolkit runtime stopped while reading the credits overview.');
            }
        } catch (err) {
            failure = err;
        }
        const rows = Array.from(rowsByDate.values()).sort((a, b) => b.dayStartMs - a.dayStartMs);
        if (!rows.length) {
            const cached = financialOverviewCache.rows?.length ? financialOverviewCache : null;
            if (cached) return { ...cached, rows: cached.rows.slice(), available: true, fromCache: true, stale: true, coverageReached: financialOverviewCacheCovers(startMs, endMs, cached), error: failure?.message || 'MissionChief credits overview was unavailable.' };
            return { available: false, rows: [], pageCount, lastPage, complete: false, coverageReached: false, malformedRowCount, duplicateDateCount, fromCache: false, stale: false, error: failure?.message || 'MissionChief credits overview was unavailable.' };
        }
        const coverageStartMs = Math.min(...rows.map(row => row.dayStartMs));
        const coverageEndMs = Math.max(...rows.map(row => row.dayEndMs));
        const complete = !failure && pageCount >= Math.min(lastPage, FINANCE_OVERVIEW_MAX_PAGES);
        const cache = {
            fetchedAt: now,
            rows,
            pageCount,
            lastPage,
            coverageStartMs,
            coverageEndMs,
            complete,
            malformedRowCount,
            duplicateDateCount
        };
        financialOverviewCache = cache;
        return { ...cache, rows: rows.slice(), available: true, fromCache: false, stale: false, coverageReached: financialOverviewCacheCovers(startMs, endMs, cache), error: failure?.message || '' };
    }

    function financialLedgerAnchor(entries, count = 3) {
        return entries.slice(0, Math.max(1, count)).map(entry =>
            `${entry.timestamp}|${entry.amount}|${entry.description}|${entry.rawTimestamp || entry.dateLabel}`
        ).join('||');
    }

    async function fetchSameOriginDocument(pathOrUrl) {
        const url = new URL(pathOrUrl, document.baseURI || pageWindow.location.href);
        if (url.origin !== pageWindow.location.origin) throw new Error('Blocked an unexpected external financial-data URL.');
        const response = await runtimeFetch(url.href, {
            method: 'GET',
            credentials: 'same-origin',
            cache: 'no-store',
            headers: { Accept: 'text/html,application/xhtml+xml' }
        });
        if (!response.ok) throw new Error(`MissionChief returned HTTP ${response.status} for ${url.pathname}.`);
        const html = await response.text();
        return { doc: new DOMParser().parseFromString(html, 'text/html'), url: url.href };
    }

    async function fetchCreditLedgerPage(pageNumber) {
        const page = Math.max(1, Math.round(Number(pageNumber) || 1));
        const attempts = Math.max(1, Math.min(5, Number(activeFinancialPolicy?.scan?.retryAttempts) || 3));
        let lastError = null;
        for (let attempt = 0; attempt < attempts; attempt++) {
            try {
                const path = page === 1 ? '/credits' : `/credits?page=${page}`;
                const result = await fetchSameOriginDocument(path);
                return parseCreditsListDocument(result.doc, page);
            } catch (err) {
                lastError = err;
                if (attempt >= attempts - 1) break;
                const delay = Math.min(4000, 350 * Math.pow(2, attempt) + Math.floor(Math.random() * 180));
                setDiscordStatus(`MissionChief ledger page ${page.toLocaleString('en-GB')} needs another attempt…`, 'busy');
                if (!await runtimeDelay(delay)) throw new Error('Toolkit runtime stopped while retrying the financial ledger.');
            }
        }
        throw lastError || new Error(`MissionChief ledger page ${page} could not be read.`);
    }

    async function fetchCreditAccount() {
        try {
            const response = await runtimeFetch(new URL('/api/credits', document.baseURI || pageWindow.location.href).href, {
                method: 'GET',
                credentials: 'same-origin',
                cache: 'no-store',
                headers: { Accept: 'application/json' }
            });
            if (!response.ok) return null;
            const data = await response.json();
            const balance = Number(data?.credits_user_current);
            return {
                currentBalance: Number.isFinite(balance) ? Math.round(balance) : null,
                userName: String(data?.user_name || '').trim(),
                userId: Number(data?.user_id) || null
            };
        } catch (err) {
            return null;
        }
    }

    function localIsoDate(date = new Date()) {
        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0');
        const day = String(date.getDate()).padStart(2, '0');
        return `${year}-${month}-${day}`;
    }

    function localDayStart(value = Date.now()) {
        const date = new Date(value);
        date.setHours(0, 0, 0, 0);
        return date.getTime();
    }

    function addLocalDays(timestamp, days) {
        const date = new Date(timestamp);
        date.setDate(date.getDate() + Number(days || 0));
        return date.getTime();
    }

    function parseLocalDateInput(value) {
        const match = String(value || '').match(/^(\d{4})-(\d{2})-(\d{2})$/u);
        if (!match) return NaN;
        const [, year, month, day] = match;
        return new Date(Number(year), Number(month) - 1, Number(day), 0, 0, 0, 0).getTime();
    }

    function formatReportDate(date = new Date()) {
        try { return date.toLocaleDateString('en-GB', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }); }
        catch (err) { return localIsoDate(date); }
    }

    function formatReportDateTime(timestamp) {
        try { return new Date(timestamp).toLocaleString('en-GB', { day: 'numeric', month: 'short', year: 'numeric', hour: '2-digit', minute: '2-digit' }); }
        catch (err) { return new Date(timestamp).toISOString(); }
    }

    function formatPeriodRange(startMs, endMs) {
        const inclusiveEnd = Math.max(startMs, endMs - 1);
        const sameDay = localIsoDate(new Date(startMs)) === localIsoDate(new Date(inclusiveEnd));
        if (sameDay) return `${formatReportDate(new Date(startMs))} · ${new Date(startMs).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}–${new Date(inclusiveEnd).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}`;
        return `${formatReportDateTime(startMs)} → ${formatReportDateTime(inclusiveEnd)}`;
    }

    function formatSignedCredits(value) {
        const amount = Math.round(Number(value) || 0);
        const sign = amount > 0 ? '+' : amount < 0 ? '-' : '';
        return `${sign}${Math.abs(amount).toLocaleString('en-GB')} Credits`;
    }

    function formatPlainCredits(value) {
        return `${Math.max(0, Math.round(Number(value) || 0)).toLocaleString('en-GB')} Credits`;
    }

    function formatSignedCompactCredits(value) {
        const amount = Math.abs(Math.round(Number(value) || 0));
        const sign = Number(value) < 0 ? '-' : Number(value) > 0 ? '+' : '';
        if (amount >= 1_000_000_000) return `${sign}${(amount / 1_000_000_000).toFixed(amount >= 10_000_000_000 ? 1 : 2).replace(/\.0+$/u, '')}B`;
        if (amount >= 1_000_000) return `${sign}${(amount / 1_000_000).toFixed(amount >= 10_000_000 ? 1 : 2).replace(/\.0+$/u, '')}M`;
        if (amount >= 1_000) return `${sign}${(amount / 1_000).toFixed(amount >= 100_000 ? 0 : amount >= 10_000 ? 1 : 2).replace(/\.0+$/u, '')}K`;
        return `${sign}${amount.toLocaleString('en-GB')}`;
    }

    function reportTone(net) {
        return net > 0 ? 'positive' : net < 0 ? 'negative' : 'neutral';
    }

    function resolveFinancialPeriod() {
        const now = Date.now();
        const todayStart = localDayStart(now);
        const periodId = FINANCE_PERIOD_IDS.has(state.discordReport.period) ? state.discordReport.period : 'today';
        let startMs = todayStart;
        let endMs = now;
        let label = 'Today';
        let note = '';
        if (periodId === 'yesterday') {
            startMs = addLocalDays(todayStart, -1);
            endMs = todayStart;
            label = 'Yesterday';
        } else if (periodId === 'last24') {
            startMs = now - 24 * 60 * 60 * 1000;
            endMs = now;
            label = 'Last 24 Hours';
        } else if (periodId === 'last7') {
            startMs = now - 7 * 24 * 60 * 60 * 1000;
            endMs = now;
            label = 'Last 7 Days';
        } else if (periodId === 'last30') {
            startMs = now - 30 * 24 * 60 * 60 * 1000;
            endMs = now;
            label = 'Last 30 Days';
        } else if (periodId === 'last90') {
            startMs = now - 90 * 24 * 60 * 60 * 1000;
            endMs = now;
            label = 'Last 90 Days';
        } else if (periodId === 'last180') {
            startMs = now - 180 * 24 * 60 * 60 * 1000;
            endMs = now;
            label = 'Last 180 Days';
        } else if (periodId === 'last365') {
            startMs = now - 365 * 24 * 60 * 60 * 1000;
            endMs = now;
            label = 'Last 365 Days';
        } else if (periodId === 'allAvailable') {
            startMs = 0;
            endMs = now;
            label = 'All Available MissionChief History';
            note = 'The Toolkit uses the complete local archive when available and otherwise performs a deep scan across every MissionChief credit-ledger page accessible to the account.';
        } else if (periodId === 'session') {
            startMs = FINANCE_SESSION_STARTED_AT;
            endMs = now;
            label = 'Current Toolkit Session';
        } else if (periodId === 'sinceLast') {
            const lastReportAt = getLastDiscordReportAt();
            startMs = lastReportAt || FINANCE_SESSION_STARTED_AT;
            endMs = now;
            label = lastReportAt ? 'Since Last Discord Report' : 'Since Toolkit Session Start';
            if (!lastReportAt) note = 'No previous successful Discord report timestamp was stored, so the current toolkit session was used.';
        } else if (periodId === 'custom') {
            const start = parseLocalDateInput(state.discordReport.customStart);
            const end = parseLocalDateInput(state.discordReport.customEnd);
            if (!Number.isFinite(start) || !Number.isFinite(end)) throw new Error('Select valid custom start and end dates.');
            if (end < start) throw new Error('The custom end date cannot be earlier than the start date.');
            startMs = start;
            endMs = Math.min(now, addLocalDays(end, 1));
            if (endMs <= startMs) throw new Error('The selected custom date range contains no elapsed time.');
            if (endMs - startMs > 90 * 24 * 60 * 60 * 1000) throw new Error('Custom financial reports are limited to 90 days per run.');
            label = 'Custom Financial Period';
        }
        const durationMs = Math.max(1, endMs - startMs);
        let comparisonEndMs = startMs;
        let comparisonStartMs = startMs - durationMs;
        if (periodId === 'allAvailable') {
            comparisonStartMs = 0;
            comparisonEndMs = 0;
        }
        if (periodId === 'today') {
            comparisonStartMs = addLocalDays(todayStart, -1);
            comparisonEndMs = Math.min(todayStart, comparisonStartMs + durationMs);
        } else if (periodId === 'yesterday') {
            comparisonEndMs = startMs;
            comparisonStartMs = addLocalDays(startMs, -1);
        }
        return {
            id: periodId,
            startMs,
            endMs,
            durationMs,
            comparisonStartMs,
            comparisonEndMs,
            label,
            rangeLabel: formatPeriodRange(startMs, endMs),
            comparisonRangeLabel: formatPeriodRange(comparisonStartMs, comparisonEndMs),
            note
        };
    }

    function normaliseFinancialLedgerEntry(entry) {
        if (!Number.isFinite(entry?.timestamp)) return null;
        const amount = Math.round(Number(entry.amount) || 0);
        const description = financeNormaliseText(entry.description);
        const dateLabel = financeNormaliseText(entry.dateLabel);
        const rawTimestamp = financeNormaliseText(entry.rawTimestamp);
        const sourceKey = `${entry.timestamp}|${amount}|${description.toLowerCase()}|${rawTimestamp || dateLabel}`;
        return { ...entry, amount, description, dateLabel, rawTimestamp, sourceKey };
    }

    async function fetchFinancialLedger(requiredStartMs, attempt = 0, forceFull = false, exhaustive = false) {
        const account = await fetchCreditAccount();
        const player = financePlayerIdentity(account);
        const identity = ensureFinanceVaultCredential(player);
        let vault = loadFinanceVault(player, identity.deviceId);
        const vaultStats = financeVaultStats(vault);
        const wantsAllAvailable = Number(requiredStartMs) <= 0;
        const deepMode = Boolean(exhaustive || (wantsAllAvailable && !vault.archiveComplete));
        const effectiveRequiredStart = wantsAllAvailable && Number.isFinite(Number(vault.coverageStartMs)) ? Number(vault.coverageStartMs) : Number(requiredStartMs);
        const canUseIncremental = Boolean(
            state.financialVault.enabled &&
            !forceFull &&
            !deepMode &&
            vaultStats.count &&
            Number.isFinite(Number(vault.coverageStartMs)) &&
            Number(vault.coverageStartMs) <= effectiveRequiredStart &&
            Number.isFinite(Number(vault.coverageEndMs))
        );
        const knownSourceKeys = canUseIncremental ? new Set(vault.transactions.map(entry => entry.sourceKey)) : new Set();
        const vaultLatestTimestamp = canUseIncremental ? Number(vault.coverageEndMs) || vaultStats.lastTimestamp || 0 : 0;
        let pendingEntries = [];
        let invalidTimestampCount = 0;
        let lastPage = 1;
        let fetchedPages = 0;
        let oldestTimestamp = Infinity;
        let reachedStart = false;
        let firstPageAnchor = '';
        let overlapFound = false;
        let scanCancelled = false;
        let scanLimitReached;
        let lastProcessedPage = 0;
        const scanOccurrenceCounts = new Map();
        const absorbPage = (parsed, page) => {
            fetchedPages++;
            lastProcessedPage = Math.max(lastProcessedPage, page);
            invalidTimestampCount += parsed.invalidTimestampCount;
            let pageOverlap = 0;
            let pageOldest = Infinity;
            for (const entry of parsed.entries) {
                const normalisedEntry = normaliseFinancialLedgerEntry(entry);
                if (!normalisedEntry) continue;
                const occurrence = (scanOccurrenceCounts.get(normalisedEntry.sourceKey) || 0) + 1;
                scanOccurrenceCounts.set(normalisedEntry.sourceKey, occurrence);
                pendingEntries.push({ ...normalisedEntry, occurrence });
                if (normalisedEntry.timestamp < oldestTimestamp) oldestTimestamp = normalisedEntry.timestamp;
                if (normalisedEntry.timestamp < pageOldest) pageOldest = normalisedEntry.timestamp;
                if (canUseIncremental && knownSourceKeys.has(normalisedEntry.sourceKey)) pageOverlap++;
            }
            reachedStart = Number.isFinite(oldestTimestamp) && oldestTimestamp <= effectiveRequiredStart;
            if (canUseIncremental && pageOverlap >= 3 && Number.isFinite(pageOldest) && pageOldest <= vaultLatestTimestamp) overlapFound = true;
        };
        const persistCheckpoint = ({ final = false, completeRange = false } = {}) => {
            if (!state.financialVault.enabled || (!pendingEntries.length && !final)) return;
            vault = mergeFinanceVaultEntries(vault, pendingEntries, {
                coverageStartMs: Number.isFinite(oldestTimestamp) ? oldestTimestamp : null,
                coverageEndMs: Date.now(),
                fullScan: forceFull || deepMode,
                deepScan: deepMode && final && completeRange,
                sourceLastPage: lastPage,
                deepScanCursorPage: deepMode ? lastProcessedPage : null,
                deepScanTotalPages: deepMode ? lastPage : null,
                deepScanAnchor: deepMode ? firstPageAnchor : null,
                deepScanInProgress: deepMode ? !completeRange : null,
                archiveComplete: final ? completeRange : null,
                currentBalance: final ? account?.currentBalance : null
            });
            pendingEntries = [];
        };
        const firstPage = await fetchCreditLedgerPage(1);
        lastPage = Math.max(1, firstPage.lastPage || 1);
        firstPageAnchor = financialLedgerAnchor(firstPage.entries);
        let deepScanStartPage = 2;
        const resumableDeepScan = Boolean(
            deepMode &&
            vault.deepScanInProgress &&
            vault.deepScanAnchor &&
            vault.deepScanAnchor === firstPageAnchor &&
            Number(vault.deepScanTotalPages) === lastPage &&
            Number(vault.deepScanCursorPage) >= 1 &&
            Number(vault.deepScanCursorPage) < lastPage
        );
        if (resumableDeepScan) {
            deepScanStartPage = Math.max(2, Number(vault.deepScanCursorPage) + 1);
            lastProcessedPage = Number(vault.deepScanCursorPage);
            oldestTimestamp = Number.isFinite(Number(vault.coverageStartMs)) ? Number(vault.coverageStartMs) : Infinity;
            for (const existing of vault.transactions) {
                const sourceKey = String(existing.sourceKey || '');
                if (!sourceKey) continue;
                scanOccurrenceCounts.set(sourceKey, Math.max(scanOccurrenceCounts.get(sourceKey) || 0, Number(existing.occurrence) || 1));
            }
            setFinanceVaultStatus(`Resuming deep scan from MissionChief ledger page ${deepScanStartPage.toLocaleString('en-GB')}…`, 'busy');
        } else {
            absorbPage(firstPage, 1);
        }
        if (deepMode) {
            const configuredCap = Math.max(100, Math.min(FINANCE_DEEP_SCAN_HARD_PAGE_CAP, Number(activeFinancialPolicy?.scan?.pageCap) || FINANCE_DEEP_SCAN_HARD_PAGE_CAP));
            const targetLastPage = Math.min(lastPage, configuredCap);
            const batchSize = Math.max(1, Math.min(FINANCE_DEEP_SCAN_HARD_BATCH_CAP, Number(activeFinancialPolicy?.scan?.batchSize) || 3));
            const checkpointPages = Math.max(20, Math.min(500, Number(activeFinancialPolicy?.scan?.checkpointPages) || FINANCE_SCAN_CHECKPOINT_PAGES));
            scanLimitReached = targetLastPage < lastPage;
            for (let cursor = deepScanStartPage; cursor <= targetLastPage; cursor += batchSize) {
                if (financeArchiveScanCancelled) {
                    scanCancelled = true;
                    break;
                }
                const pages = Array.from({ length: Math.min(batchSize, targetLastPage - cursor + 1) }, (_, index) => cursor + index);
                const results = await Promise.all(pages.map(page => fetchCreditLedgerPage(page)));
                for (let index = 0; index < pages.length; index++) absorbPage(results[index], pages[index]);
                if (state.financialVault.enabled && lastProcessedPage % checkpointPages < batchSize) persistCheckpoint();
                setDiscordStatus(`Deep MissionChief ledger scan · page ${lastProcessedPage.toLocaleString('en-GB')} of ${lastPage.toLocaleString('en-GB')} · ${Math.round(lastProcessedPage / Math.max(1, targetLastPage) * 100)}%`, 'busy');
                setFinanceVaultStatus(`Deep scan reading page ${lastProcessedPage.toLocaleString('en-GB')} of ${lastPage.toLocaleString('en-GB')}…`, 'busy');
                if (lastProcessedPage % 15 === 0 && !await runtimeDelay(45)) throw new Error('Toolkit runtime stopped while deep-scanning the financial ledger.');
            }
            reachedStart = !scanCancelled && !scanLimitReached && lastProcessedPage >= lastPage;
        } else {
            let page = 2;
            while (page <= Math.min(lastPage, FINANCE_MAX_LEDGER_PAGES)) {
                if (reachedStart || overlapFound) break;
                if (canUseIncremental && page > FINANCE_INCREMENTAL_MAX_PAGES) break;
                const parsed = await fetchCreditLedgerPage(page);
                absorbPage(parsed, page);
                if (page % FINANCE_FETCH_YIELD_EVERY === 0) {
                    setDiscordStatus(`${canUseIncremental ? 'Synchronising new ledger activity' : 'Reading MissionChief ledger'} · page ${page.toLocaleString('en-GB')} of ${lastPage.toLocaleString('en-GB')}…`, 'busy');
                    if (!await runtimeDelay(35)) throw new Error('Toolkit runtime stopped while reading the financial ledger.');
                }
                page++;
            }
            scanLimitReached = lastProcessedPage >= FINANCE_MAX_LEDGER_PAGES && lastProcessedPage < lastPage;
        }
        if (canUseIncremental && !overlapFound && !reachedStart && lastProcessedPage < lastPage) {
            setDiscordStatus('Local archive overlap was not found. Performing one complete requested-range scan…', 'busy');
            return fetchFinancialLedger(requiredStartMs, attempt, true, false);
        }
        let ledgerStable = true;
        if (fetchedPages > 1 && firstPageAnchor) {
            const verificationPage = await fetchCreditLedgerPage(1);
            ledgerStable = financialLedgerAnchor(verificationPage.entries) === firstPageAnchor;
            if (!ledgerStable && !deepMode && attempt < 1) {
                setDiscordStatus('New credit activity appeared during the scan. Restarting once for an accurate report…', 'busy');
                if (!await runtimeDelay(80)) throw new Error('Toolkit runtime stopped while stabilising the financial ledger.');
                return fetchFinancialLedger(requiredStartMs, attempt + 1, forceFull, false);
            }
            if (!ledgerStable && deepMode) {
                setFinanceVaultStatus('MissionChief added ledger activity during the deep scan. Progress was retained and the next run will safely rescan from the changed first page.', 'neutral');
            }
        }
        if (!pendingEntries.length && !vault.transactions.length) throw new Error('MissionChief’s timestamped credit ledger could not be read.');
        const coverageReachedThisScan = deepMode
            ? (!scanCancelled && !scanLimitReached && ledgerStable && lastProcessedPage >= lastPage)
            : (ledgerStable && (reachedStart || overlapFound || lastProcessedPage >= lastPage));
        persistCheckpoint({ final: true, completeRange: coverageReachedThisScan });
        if (!state.financialVault.enabled) {
            pendingEntries = decorateFinancialEntries(pendingEntries);
        }
        const combinedEntries = state.financialVault.enabled
            ? vault.transactions.filter(entry => wantsAllAvailable || entry.timestamp >= Math.min(effectiveRequiredStart, Number(vault.coverageStartMs) || effectiveRequiredStart))
            : pendingEntries;
        const coverageReached = wantsAllAvailable
            ? (state.financialVault.enabled ? Boolean(vault.archiveComplete) : coverageReachedThisScan)
            : (state.financialVault.enabled
                ? Number.isFinite(Number(vault.coverageStartMs)) && Number(vault.coverageStartMs) <= effectiveRequiredStart
                : coverageReachedThisScan);
        const complete = coverageReached && ledgerStable && invalidTimestampCount === 0 && !scanCancelled && !scanLimitReached;
        const stats = financeVaultStats(vault);
        if (state.financialVault.enabled) {
            const mode = deepMode ? 'Deep' : canUseIncremental ? 'Incremental' : 'Requested-range';
            const suffix = scanCancelled
                ? ' Scan stopped; collected pages were retained.'
                : scanLimitReached
                    ? ' Page safety cap reached.'
                    : !ledgerStable
                        ? ' New ledger activity appeared during the scan; progress remains resumable.'
                        : '';
            setFinanceVaultStatus(`${mode} archive scan stored ${stats.count.toLocaleString('en-GB')} transactions.${suffix}`, scanCancelled || scanLimitReached ? 'neutral' : 'good');
            renderFinanceVaultStatus();
        }
        return {
            entries: combinedEntries,
            pageCount: fetchedPages,
            lastPage,
            invalidTimestampCount,
            oldestTimestamp: combinedEntries.length ? combinedEntries[0].timestamp : null,
            coverageReached,
            ledgerStable,
            scanRetries: attempt,
            scanCancelled,
            scanLimitReached,
            archiveComplete: Boolean(vault.archiveComplete),
            archiveTruncated: Boolean(vault.archiveTruncated),
            droppedTransactions: Number(vault.droppedTransactions) || 0,
            complete,
            account,
            vault,
            vaultTransactionCount: stats.count,
            ledgerSource: state.financialVault.enabled
                ? (deepMode ? 'Local archive + deep MissionChief scan' : canUseIncremental ? 'Local archive + incremental MissionChief scan' : 'Local archive + requested-range scan')
                : (deepMode ? 'Direct deep MissionChief ledger scan' : 'Direct MissionChief ledger scan')
        };
    }

    async function scanFinancialArchive() {
        if (financeArchiveScanBusy) {
            showToast('A financial archive scan is already running');
            return false;
        }
        financeArchiveScanBusy = true;
        financeArchiveScanCancelled = false;
        setFinanceVaultStatus('Starting deep scan of every available MissionChief ledger page…', 'busy');
        try {
            const ledger = await fetchFinancialLedger(0, 0, false, true);
            const stats = financeVaultStats(ledger.vault);
            const result = ledger.scanCancelled
                ? `Deep scan stopped safely at ${stats.count.toLocaleString('en-GB')} archived transactions.`
                : ledger.scanLimitReached
                    ? `Deep scan reached the configured safety cap with ${stats.count.toLocaleString('en-GB')} transactions archived.`
                    : `Deep scan complete: ${stats.count.toLocaleString('en-GB')} transactions across ${ledger.lastPage.toLocaleString('en-GB')} MissionChief ledger pages.`;
            setFinanceVaultStatus(result, ledger.scanCancelled || ledger.scanLimitReached ? 'neutral' : 'good');
            showToast(ledger.scanCancelled ? 'Financial deep scan stopped' : 'Financial deep scan complete');
            invalidateDiscordFinancialPreview();
            renderFinanceVaultStatus();
            return !ledger.scanCancelled;
        } catch (err) {
            setFinanceVaultStatus(err?.message || 'Deep financial scan failed.', 'bad');
            showToast('Financial deep scan failed');
            return false;
        } finally {
            financeArchiveScanBusy = false;
            financeArchiveScanCancelled = false;
        }
    }

    function classifyFinancialTransaction(transaction) {
        const description = financeNormaliseText(transaction?.description);
        const amount = Number(transaction?.amount) || 0;
        const direction = amount > 0 ? 'income' : 'spending';
        for (const rule of activeFinancialRules) {
            if (rule.direction !== direction) continue;
            if (!ruleMatchesFinancialDescription(rule, description)) continue;
            return {
                key: rule.key,
                label: rule.label,
                kind: direction,
                missionType: rule.missionType || '',
                accountingGroup: rule.accountingGroup,
                confidence: clamp(rule.confidence, 0, 1, 0.5),
                ruleId: rule.id,
                source: rule.source || 'built-in'
            };
        }
        const fallback = activeFinancialFallbacks[direction] || BUILTIN_FINANCIAL_FALLBACKS[direction];
        return {
            key: fallback.key,
            label: fallback.label,
            kind: direction,
            missionType: fallback.missionType || '',
            accountingGroup: fallback.accountingGroup,
            confidence: clamp(fallback.confidence, 0, 1, 0.25),
            ruleId: fallback.id || `fallback-${direction}`,
            source: 'fallback'
        };
    }

    function buildFinancialBuckets(transactions, startMs, endMs) {
        const duration = Math.max(1, endMs - startMs);
        const useHourly = duration <= 48 * 60 * 60 * 1000;
        const targetBuckets = useHourly ? 12 : duration <= 31 * 86400000 ? 31 : 24;
        const unitMs = useHourly ? 60 * 60 * 1000 : 24 * 60 * 60 * 1000;
        const bucketMs = Math.max(unitMs, Math.ceil(duration / targetBuckets / unitMs) * unitMs);
        const count = Math.max(1, Math.min(targetBuckets, Math.ceil(duration / bucketMs)));
        const buckets = Array.from({ length: count }, (_, index) => ({
            start: startMs + index * bucketMs,
            end: Math.min(endMs, startMs + (index + 1) * bucketMs),
            income: 0,
            operatingIncome: 0,
            otherIncome: 0,
            operatingExpense: 0,
            capitalInvestment: 0,
            spending: 0,
            operatingResult: 0,
            net: 0,
            label: ''
        }));
        for (const transaction of transactions) {
            const index = Math.min(count - 1, Math.max(0, Math.floor((transaction.timestamp - startMs) / bucketMs)));
            if (!buckets[index] || transaction.timestamp < startMs || transaction.timestamp >= endMs) continue;
            const category = transaction.classification || classifyFinancialTransaction(transaction);
            const amount = Number(transaction.amount) || 0;
            if (amount > 0) {
                buckets[index].income += amount;
                if (category.accountingGroup === 'operatingIncome') buckets[index].operatingIncome += amount;
                else buckets[index].otherIncome += amount;
            } else {
                const absolute = Math.abs(amount);
                buckets[index].spending += absolute;
                if (category.accountingGroup === 'capitalInvestment') buckets[index].capitalInvestment += absolute;
                else buckets[index].operatingExpense += absolute;
            }
            buckets[index].operatingResult = buckets[index].operatingIncome + buckets[index].otherIncome - buckets[index].operatingExpense;
            buckets[index].net += amount;
        }
        for (const bucket of buckets) {
            const date = new Date(bucket.start);
            bucket.label = useHourly
                ? date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })
                : date.toLocaleDateString('en-GB', duration > 180 * 86400000 ? { month: 'short', year: '2-digit' } : { day: 'numeric', month: 'short' });
        }
        return buckets;
    }

    function calculateActiveHours(transactions) {
        const activeQuarterHours = new Set();
        for (const entry of transactions) {
            if (!Number.isFinite(Number(entry.timestamp))) continue;
            activeQuarterHours.add(Math.floor(Number(entry.timestamp) / (15 * 60 * 1000)));
        }
        return Math.max(0.25, activeQuarterHours.size * 0.25);
    }

    function medianNumber(values) {
        const sorted = values.filter(Number.isFinite).sort((a, b) => a - b);
        if (!sorted.length) return 0;
        const middle = Math.floor(sorted.length / 2);
        return sorted.length % 2 ? sorted[middle] : Math.round((sorted[middle - 1] + sorted[middle]) / 2);
    }

    function standardDeviation(values) {
        const finite = values.filter(Number.isFinite);
        if (finite.length < 2) return 0;
        const average = finite.reduce((sum, value) => sum + value, 0) / finite.length;
        return Math.sqrt(finite.reduce((sum, value) => sum + Math.pow(value - average, 2), 0) / finite.length);
    }

    function summariseFinancialTransactions(transactions, period) {
        const incomeCategoryMap = new Map();
        const spendingCategoryMap = new Map();
        const operatingExpenseCategoryMap = new Map();
        const capitalCategoryMap = new Map();
        const topPayouts = [];
        const missionPayoutValues = [];
        const unclassifiedEntries = [];
        let income = 0;
        let spending = 0;
        let operatingIncome = 0;
        let otherIncome = 0;
        let operatingExpense = 0;
        let capitalInvestment = 0;
        let incomeCount = 0;
        let spendingCount = 0;
        let missionCount = 0;
        let missionIncome = 0;
        let allianceIncome = 0;
        let personalIncome = 0;
        let transportIncome = 0;
        let largestReward = 0;
        let smallestReward = Infinity;
        let largestSpend = 0;
        let classificationWeight = 0;
        let classificationWeightedScore = 0;
        let unclassifiedAmount = 0;
        let unclassifiedCount = 0;
        let hasMissionPayout = false;
        const addCategory = (map, category, amount) => {
            const existing = map.get(category.key) || { key: category.key, label: category.label, accountingGroup: category.accountingGroup, total: 0, count: 0 };
            existing.total += Math.abs(amount);
            existing.count += 1;
            map.set(category.key, existing);
        };
        const addTopPayout = entry => {
            topPayouts.push(entry);
            topPayouts.sort((a, b) => b.amount - a.amount);
            if (topPayouts.length > 8) topPayouts.length = 8;
        };
        const classifiedTransactions = [];
        for (const sourceEntry of transactions) {
            const amount = Number(sourceEntry.amount) || 0;
            if (!amount) continue;
            const category = classifyFinancialTransaction(sourceEntry);
            const entry = { ...sourceEntry, classification: category };
            classifiedTransactions.push(entry);
            const weight = Math.max(1, Math.abs(amount));
            classificationWeight += weight;
            classificationWeightedScore += weight * category.confidence;
            const isUnclassified = category.ruleId.startsWith('fallback') || category.key.startsWith('unclassified');
            if (isUnclassified) {
                unclassifiedAmount += Math.abs(amount);
                unclassifiedCount += 1;
                if (unclassifiedEntries.length < 20) unclassifiedEntries.push(entry);
            }
            if (amount > 0) {
                income += amount;
                incomeCount += 1;
                addCategory(incomeCategoryMap, category, amount);
                if (category.accountingGroup === 'operatingIncome') operatingIncome += amount;
                else otherIncome += amount;
                if (category.missionType) {
                    missionCount += 1;
                    missionIncome += amount;
                    hasMissionPayout = true;
                    missionPayoutValues.push(amount);
                    largestReward = Math.max(largestReward, amount);
                    smallestReward = Math.min(smallestReward, amount);
                    addTopPayout(entry);
                }
                if (category.missionType === 'alliance') allianceIncome += amount;
                if (category.missionType === 'personal') personalIncome += amount;
                if (category.missionType === 'transport') transportIncome += amount;
            } else {
                const absolute = Math.abs(amount);
                spending += absolute;
                spendingCount += 1;
                largestSpend = Math.max(largestSpend, absolute);
                addCategory(spendingCategoryMap, category, amount);
                if (category.accountingGroup === 'capitalInvestment') {
                    capitalInvestment += absolute;
                    addCategory(capitalCategoryMap, category, amount);
                } else {
                    operatingExpense += absolute;
                    addCategory(operatingExpenseCategoryMap, category, amount);
                }
            }
        }
        if (!hasMissionPayout) {
            topPayouts.length = 0;
            largestReward = 0;
            smallestReward = Infinity;
            for (const entry of classifiedTransactions) {
                if (entry.amount <= 0) continue;
                largestReward = Math.max(largestReward, entry.amount);
                smallestReward = Math.min(smallestReward, entry.amount);
                addTopPayout(entry);
            }
        }
        const net = income - spending;
        const operatingResult = operatingIncome + otherIncome - operatingExpense;
        const calendarHours = Math.max(1 / 60, period.durationMs / (60 * 60 * 1000));
        const calendarDays = Math.max(1 / 24, calendarHours / 24);
        const activeHours = calculateActiveHours(classifiedTransactions);
        const buckets = buildFinancialBuckets(classifiedTransactions, period.startMs, period.endMs);
        const classificationConfidence = classificationWeight ? Math.round((classificationWeightedScore / classificationWeight) * 1000) / 10 : 100;
        const operatingMarginPercent = income ? Math.round((operatingResult / income) * 1000) / 10 : operatingExpense ? -100 : 0;
        const capitalInvestmentRatioPercent = income ? Math.round((capitalInvestment / income) * 1000) / 10 : capitalInvestment ? 100 : 0;
        const topIncomeCategory = Array.from(incomeCategoryMap.values()).sort((a, b) => b.total - a.total)[0] || null;
        const incomeConcentrationPercent = income && topIncomeCategory ? Math.round((topIncomeCategory.total / income) * 1000) / 10 : 0;
        const bucketIncomeValues = buckets.map(bucket => bucket.income);
        const incomeVolatilityPercent = bucketIncomeValues.length && income
            ? Math.round((standardDeviation(bucketIncomeValues) / Math.max(1, bucketIncomeValues.reduce((sum, value) => sum + value, 0) / bucketIncomeValues.length)) * 1000) / 10
            : 0;
        return {
            transactions: classifiedTransactions,
            incomeCategories: Array.from(incomeCategoryMap.values()).sort((a, b) => b.total - a.total || b.count - a.count),
            spendingCategories: Array.from(spendingCategoryMap.values()).sort((a, b) => b.total - a.total || b.count - a.count),
            operatingExpenseCategories: Array.from(operatingExpenseCategoryMap.values()).sort((a, b) => b.total - a.total || b.count - a.count),
            capitalCategories: Array.from(capitalCategoryMap.values()).sort((a, b) => b.total - a.total || b.count - a.count),
            income,
            spending,
            operatingIncome,
            otherIncome,
            operatingExpense,
            capitalInvestment,
            operatingResult,
            net,
            incomeCount,
            spendingCount,
            activityCount: incomeCount + spendingCount,
            missionCount,
            missionIncome,
            averageIncome: incomeCount ? Math.round(income / incomeCount) : 0,
            averageSpend: spendingCount ? Math.round(spending / spendingCount) : 0,
            averageMissionReward: missionCount ? Math.round(missionIncome / missionCount) : 0,
            medianMissionReward: medianNumber(missionPayoutValues),
            largestReward,
            smallestReward: Number.isFinite(smallestReward) ? smallestReward : 0,
            largestSpend,
            allianceIncome,
            personalIncome,
            transportIncome,
            allianceIncomePercent: income ? Math.round((allianceIncome / income) * 1000) / 10 : 0,
            personalIncomePercent: income ? Math.round((personalIncome / income) * 1000) / 10 : 0,
            incomePerHour: Math.round(income / calendarHours),
            activeIncomePerHour: Math.round(income / activeHours),
            activeHours: Math.round(activeHours * 100) / 100,
            calendarHours: Math.round(calendarHours * 100) / 100,
            calendarDays: Math.round(calendarDays * 1000) / 1000,
            classificationConfidence,
            unclassifiedAmount,
            unclassifiedCount,
            unclassifiedEntries,
            operatingMarginPercent,
            capitalInvestmentRatioPercent,
            incomeConcentrationPercent,
            incomeVolatilityPercent,
            topIncomeCategory,
            topPayouts,
            buckets
        };
    }

    function financialOverviewDayIsAuthoritative(dayStartMs, period) {
        const dayStart = Number(dayStartMs);
        const dayEnd = addLocalDays(dayStart, 1);
        if (!Number.isFinite(dayStart) || period.startMs > dayStart) return false;
        const todayStart = localDayStart();
        if (dayStart === todayStart) return period.endMs >= Date.now() - 10 * 60 * 1000;
        return period.endMs >= dayEnd;
    }

    function reconcileFinancialOverview(summary, transactions, period, overview) {
        if (summary?.overviewAudit) return summary;
        const base = { ...summary, buckets: summary.buckets.map(bucket => ({ ...bucket })) };
        const unavailable = !overview?.available || !Array.isArray(overview.rows) || !overview.rows.length;
        const emptyAudit = {
            available: !unavailable,
            status: unavailable ? 'unavailable' : 'not-applicable',
            label: unavailable ? 'Credits overview unavailable; detailed ledger totals retained' : 'No complete overview day falls inside this period',
            rowsUsed: 0,
            rowsCompared: 0,
            pageCount: Number(overview?.pageCount) || 0,
            lastPage: Number(overview?.lastPage) || 0,
            coverageReached: Boolean(overview?.coverageReached),
            malformedRowCount: Number(overview?.malformedRowCount) || 0,
            duplicateDateCount: Number(overview?.duplicateDateCount) || 0,
            ledgerIncome: summary.income,
            ledgerSpending: summary.spending,
            ledgerNet: summary.net,
            overviewIncome: 0,
            overviewSpending: 0,
            overviewNet: 0,
            incomeVariance: 0,
            spendingVariance: 0,
            netVariance: 0,
            unresolvedVariance: 0,
            days: [],
            error: String(overview?.error || '')
        };
        if (unavailable) return { ...base, overviewAudit: emptyAudit };
        const ledgerDays = new Map();
        for (const entry of transactions) {
            const timestamp = Number(entry?.timestamp);
            if (!Number.isFinite(timestamp) || timestamp < period.startMs || timestamp >= period.endMs) continue;
            const dateKey = localIsoDate(new Date(timestamp));
            const day = ledgerDays.get(dateKey) || { income: 0, spending: 0, net: 0 };
            const amount = Number(entry.amount) || 0;
            if (amount > 0) day.income += amount;
            else day.spending += amount;
            day.net += amount;
            ledgerDays.set(dateKey, day);
        }
        const auditDays = [];
        let coveredLedgerIncome = 0;
        let coveredLedgerSpending = 0;
        let coveredLedgerNet = 0;
        let overviewIncome = 0;
        let overviewSpending = 0;
        let overviewNet = 0;
        for (const row of overview.rows) {
            if (row.dayEndMs <= period.startMs || row.dayStartMs >= period.endMs) continue;
            if (!financialOverviewDayIsAuthoritative(row.dayStartMs, period)) continue;
            const ledgerDay = ledgerDays.get(row.dateKey) || { income: 0, spending: 0, net: 0 };
            const incomeVariance = row.revenue - ledgerDay.income;
            const spendingVariance = row.spending - ledgerDay.spending;
            const netVariance = row.net - ledgerDay.net;
            auditDays.push({
                dateKey: row.dateKey,
                dayStartMs: row.dayStartMs,
                ledgerIncome: ledgerDay.income,
                ledgerSpending: ledgerDay.spending,
                ledgerNet: ledgerDay.net,
                overviewIncome: row.revenue,
                overviewSpending: row.spending,
                overviewNet: row.net,
                incomeVariance,
                spendingVariance,
                netVariance,
                exact: Math.abs(incomeVariance) <= 1 && Math.abs(spendingVariance) <= 1 && Math.abs(netVariance) <= 1
            });
            coveredLedgerIncome += ledgerDay.income;
            coveredLedgerSpending += ledgerDay.spending;
            coveredLedgerNet += ledgerDay.net;
            overviewIncome += row.revenue;
            overviewSpending += row.spending;
            overviewNet += row.net;
            const midpoint = row.dayStartMs + 12 * 60 * 60 * 1000;
            const bucket = base.buckets.find(candidate => midpoint >= candidate.start && midpoint < candidate.end);
            if (bucket) {
                bucket.income += incomeVariance;
                bucket.spending += Math.abs(row.spending) - Math.abs(ledgerDay.spending);
                bucket.net += netVariance;
            }
        }
        if (!auditDays.length) return { ...base, overviewAudit: emptyAudit };
        const incomeVariance = overviewIncome - coveredLedgerIncome;
        const spendingVariance = overviewSpending - coveredLedgerSpending;
        const netVariance = overviewNet - coveredLedgerNet;
        const income = summary.income + incomeVariance;
        const spending = Math.max(0, summary.spending + Math.abs(overviewSpending) - Math.abs(coveredLedgerSpending));
        const net = income - spending;
        const status = Math.abs(netVariance) <= 1 && auditDays.every(day => day.exact)
            ? (overview.coverageReached ? 'reconciled' : 'partial')
            : 'variance';
        const label = status === 'reconciled'
            ? `${auditDays.length.toLocaleString('en-GB')} overview day${auditDays.length === 1 ? '' : 's'} fully reconciled`
            : status === 'partial'
                ? `${auditDays.length.toLocaleString('en-GB')} overview day${auditDays.length === 1 ? '' : 's'} reconciled; requested range exceeds fetched overview coverage`
                : `Overview checkpoint variance ${formatSignedCredits(netVariance)}`;
        const calendarHours = Math.max(1 / 60, Number(summary.calendarHours) || period.durationMs / 3600000);
        const activeHours = Math.max(0.25, Number(summary.activeHours) || 0.25);
        const bucketIncomeValues = base.buckets.map(bucket => bucket.income);
        return {
            ...base,
            income,
            spending,
            net,
            incomePerHour: Math.round(income / calendarHours),
            activeIncomePerHour: Math.round(income / activeHours),
            operatingMarginPercent: income ? Math.round((summary.operatingResult / income) * 1000) / 10 : summary.operatingExpense ? -100 : 0,
            capitalInvestmentRatioPercent: income ? Math.round((summary.capitalInvestment / income) * 1000) / 10 : summary.capitalInvestment ? 100 : 0,
            allianceIncomePercent: income ? Math.round((summary.allianceIncome / income) * 1000) / 10 : 0,
            personalIncomePercent: income ? Math.round((summary.personalIncome / income) * 1000) / 10 : 0,
            incomeConcentrationPercent: income && summary.topIncomeCategory ? Math.round((summary.topIncomeCategory.total / income) * 1000) / 10 : 0,
            incomeVolatilityPercent: bucketIncomeValues.length && income
                ? Math.round((standardDeviation(bucketIncomeValues) / Math.max(1, bucketIncomeValues.reduce((sum, value) => sum + value, 0) / bucketIncomeValues.length)) * 1000) / 10
                : 0,
            overviewAudit: {
                available: true,
                status,
                label,
                rowsUsed: auditDays.length,
                rowsCompared: auditDays.length,
                pageCount: Number(overview.pageCount) || 0,
                lastPage: Number(overview.lastPage) || 0,
                coverageReached: Boolean(overview.coverageReached),
                malformedRowCount: Number(overview.malformedRowCount) || 0,
                duplicateDateCount: Number(overview.duplicateDateCount) || 0,
                ledgerIncome: coveredLedgerIncome,
                ledgerSpending: Math.abs(coveredLedgerSpending),
                ledgerNet: coveredLedgerNet,
                overviewIncome,
                overviewSpending: Math.abs(overviewSpending),
                overviewNet,
                incomeVariance,
                spendingVariance,
                netVariance,
                unresolvedVariance: Math.abs(netVariance) <= 1 ? 0 : netVariance,
                days: auditDays,
                error: String(overview.error || '')
            }
        };
    }

    function percentageChange(current, previous) {
        const currentValue = Number(current) || 0;
        const previousValue = Number(previous) || 0;
        if (!previousValue) return currentValue ? null : 0;
        return ((currentValue - previousValue) / Math.abs(previousValue)) * 100;
    }

    function formatPercentageChange(value) {
        if (value === null || !Number.isFinite(value)) return 'New activity';
        const rounded = Math.round(value * 10) / 10;
        return `${rounded > 0 ? '+' : ''}${rounded.toLocaleString('en-GB')}%`;
    }

    function buildFinancialComparison(current, previous) {
        return {
            incomeChange: percentageChange(current.income, previous.income),
            operatingResultChange: percentageChange(current.operatingResult, previous.operatingResult),
            capitalInvestmentChange: percentageChange(current.capitalInvestment, previous.capitalInvestment),
            spendingChange: percentageChange(current.spending, previous.spending),
            netChange: percentageChange(current.net, previous.net),
            missionChange: current.missionCount - previous.missionCount,
            averageRewardChange: percentageChange(current.averageMissionReward, previous.averageMissionReward),
            activeVelocityChange: percentageChange(current.activeIncomePerHour, previous.activeIncomePerHour),
            currentNet: current.net,
            previousNet: previous.net
        };
    }

    function calculateVaultReconciliation(vault, period, currentTransactions, currentBalance) {
        const checkpoints = Array.isArray(vault?.balanceCheckpoints) ? vault.balanceCheckpoints.slice().sort((a, b) => a.timestamp - b.timestamp) : [];
        let startCheckpoint = null;
        let endCheckpoint = null;
        for (const checkpoint of checkpoints) {
            if (checkpoint.timestamp <= period.startMs) startCheckpoint = checkpoint;
            if (checkpoint.timestamp >= period.endMs && !endCheckpoint) endCheckpoint = checkpoint;
        }
        if (!endCheckpoint && Number.isFinite(Number(currentBalance)) && Math.abs(Date.now() - period.endMs) < 10 * 60 * 1000) {
            endCheckpoint = { timestamp: Date.now(), balance: Math.round(currentBalance) };
        }
        if (!startCheckpoint || !endCheckpoint || endCheckpoint.timestamp <= startCheckpoint.timestamp) {
            return { reconciled: false, difference: null, label: 'Reconstructed from current balance and ledger', startCheckpoint, endCheckpoint };
        }
        const movement = currentTransactions
            .filter(entry => entry.timestamp > startCheckpoint.timestamp && entry.timestamp <= endCheckpoint.timestamp)
            .reduce((sum, entry) => sum + Number(entry.amount || 0), 0);
        const difference = Math.round((endCheckpoint.balance - startCheckpoint.balance) - movement);
        return {
            reconciled: Math.abs(difference) <= 1,
            difference,
            label: Math.abs(difference) <= 1 ? 'Reconciled against saved balance checkpoints' : `Checkpoint variance ${formatSignedCredits(difference)}`,
            startCheckpoint,
            endCheckpoint
        };
    }

    function financialScoreLabel(score) {
        if (score >= 90) return { grade: 'A+', label: 'Exceptional command' };
        if (score >= 82) return { grade: 'A', label: 'Strong command' };
        if (score >= 74) return { grade: 'B+', label: 'Healthy expansion' };
        if (score >= 66) return { grade: 'B', label: 'Stable position' };
        if (score >= 56) return { grade: 'C+', label: 'Mixed position' };
        if (score >= 45) return { grade: 'C', label: 'Watch position' };
        if (score >= 32) return { grade: 'D', label: 'Financial pressure' };
        return { grade: 'F', label: 'Critical pressure' };
    }

    function calculateFinancialScorecard(summary, comparison, { complete = true, balanceAvailable = true, reconciled = false, closingBalance = null } = {}) {
        const incomeTrend = comparison?.incomeChange;
        let revenue = 65;
        if (Number.isFinite(incomeTrend)) revenue += Math.max(-25, Math.min(25, incomeTrend / 2));
        if (summary.activeIncomePerHour > summary.incomePerHour * 1.5) revenue += 4;
        revenue = Math.round(clamp(revenue, 0, 100, 65));
        let efficiency = 55 + summary.operatingMarginPercent * 0.45;
        if (summary.operatingExpense === 0 && summary.income > 0) efficiency += 8;
        efficiency = Math.round(clamp(efficiency, 0, 100, 55));
        const dailyOperatingExpense = summary.operatingExpense / Math.max(1 / 24, Number(summary.calendarDays) || 1 / 24);
        const runwayDays = balanceAvailable && dailyOperatingExpense > 0 ? Math.max(0, Number(closingBalance) || 0) / dailyOperatingExpense : null;
        let liquidity = balanceAvailable ? 65 : 40;
        if (runwayDays !== null) liquidity += Math.max(-30, Math.min(30, (runwayDays - 7) * 2));
        liquidity = Math.round(clamp(liquidity, 0, 100, 60));
        const capexRatio = summary.capitalInvestmentRatioPercent;
        let growth = summary.capitalInvestment > 0 ? 72 : 58;
        if (capexRatio > 200) growth -= 18;
        else if (capexRatio > 120) growth -= 8;
        else if (capexRatio >= 20 && capexRatio <= 100) growth += 10;
        growth = Math.round(clamp(growth, 0, 100, 60));
        let confidence = summary.classificationConfidence;
        if (!complete) confidence -= 18;
        if (!balanceAvailable) confidence -= 8;
        if (reconciled) confidence += 5;
        confidence = Math.round(clamp(confidence, 0, 100, 75));
        const overall = Math.round(revenue * 0.25 + efficiency * 0.25 + liquidity * 0.20 + growth * 0.15 + confidence * 0.15);
        const assessment = financialScoreLabel(overall);
        return {
            overall,
            grade: assessment.grade,
            label: assessment.label,
            revenue,
            efficiency,
            liquidity,
            growth,
            confidence,
            runwayDays: runwayDays === null ? null : Math.round(runwayDays * 10) / 10,
            operatingMarginPercent: summary.operatingMarginPercent
        };
    }

    function calculateFinancialDrawdown(openingBalance, transactions) {
        if (!Number.isFinite(Number(openingBalance))) return { peakBalance: null, lowBalance: null, largestDrawdown: null, largestDrawdownPercent: null };
        let balance = Number(openingBalance);
        let peak = balance;
        let low = balance;
        let largestDrawdown = 0;
        let largestDrawdownPercent = 0;
        for (const entry of transactions.slice().sort((a, b) => a.timestamp - b.timestamp)) {
            balance += Number(entry.amount) || 0;
            peak = Math.max(peak, balance);
            low = Math.min(low, balance);
            const drawdown = Math.max(0, peak - balance);
            if (drawdown > largestDrawdown) {
                largestDrawdown = drawdown;
                largestDrawdownPercent = peak ? drawdown / peak * 100 : 0;
            }
        }
        return { peakBalance: Math.round(peak), lowBalance: Math.round(low), largestDrawdown: Math.round(largestDrawdown), largestDrawdownPercent: Math.round(largestDrawdownPercent * 10) / 10 };
    }

    function buildFinancialRiskAlerts(summary, comparison, context = {}) {
        const alerts = [];
        const add = (severity, title, detail) => alerts.push({ severity, title, detail });
        const risk = activeFinancialPolicy?.risk || BUILTIN_FINANCIAL_POLICY.risk;
        if (!context.ledgerComplete) add('high', 'Partial ledger coverage', 'The requested period was not fully verified from the MissionChief ledger or local archive.');
        if (context.overviewStatus === 'variance') add('high', 'Credits overview variance', `MissionChief daily aggregates differ from the detailed ledger by ${formatSignedCredits(context.overviewVariance)}. Aggregate totals use the overview checkpoint while categories remain ledger-derived.`);
        else if (context.overviewStatus === 'partial') add('medium', 'Partial overview coverage', 'Only the complete daily rows available from MissionChief were reconciled; the remaining period retains detailed-ledger totals.');
        else if (context.overviewStatus === 'unavailable') add('low', 'Credits overview unavailable', 'The report remains operational using the detailed ledger, but daily aggregate verification could not be completed.');
        if (context.archiveTruncated) add('high', 'Local archive capacity reached', `${Number(context.droppedTransactions || 0).toLocaleString('en-GB')} older transactions were not retained locally. Run the report directly against MissionChief for the widest currently accessible range.`);
        if (context.scanLimitReached) add('high', 'Ledger page safety cap reached', 'MissionChief exposed more ledger pages than the configured deep-scan safety cap. The report is extensive but not complete.');
        if (context.scanCancelled) add('medium', 'Deep scan stopped', 'The report uses all pages collected before the scan was stopped. Those pages remain stored in the local archive.');
        if (summary.classificationConfidence < risk.classificationCritical) add('high', 'Low classification confidence', `${summary.unclassifiedCount.toLocaleString('en-GB')} transactions remain uncertain; review the original descriptions.`);
        else if (summary.classificationConfidence < risk.classificationWarning) add('medium', 'Classification review advised', `${summary.classificationConfidence.toLocaleString('en-GB')}% weighted classification confidence.`);
        if (summary.operatingResult < 0) add('high', 'Negative operating result', `Operating activity is ${formatSignedCredits(summary.operatingResult)} before capital investment.`);
        if (summary.capitalInvestmentRatioPercent >= risk.capitalIncomeRatio && summary.capitalInvestment > 0) add('medium', 'Aggressive capital deployment', `Capital investment is ${summary.capitalInvestmentRatioPercent.toLocaleString('en-GB')}% of period income.`);
        if (summary.allianceIncomePercent >= risk.allianceConcentration) add('medium', 'Alliance income concentration', `${summary.allianceIncomePercent.toLocaleString('en-GB')}% of income is alliance-derived.`);
        if (summary.incomeConcentrationPercent >= risk.categoryConcentration) add('medium', 'Revenue concentration', `${summary.incomeConcentrationPercent.toLocaleString('en-GB')}% of income came from ${summary.topIncomeCategory?.label || 'one category'}.`);
        if (summary.incomeVolatilityPercent >= risk.volatilityWarning) add('low', 'High income volatility', `Bucket-to-bucket income volatility is ${summary.incomeVolatilityPercent.toLocaleString('en-GB')}%.`);
        if (comparison && Number.isFinite(comparison.incomeChange) && comparison.incomeChange <= risk.revenueContraction) add('high', 'Revenue contraction', `Income fell ${Math.abs(Math.round(comparison.incomeChange * 10) / 10).toLocaleString('en-GB')}% versus the previous equivalent period.`);
        if (Number.isFinite(context.drawdown?.largestDrawdownPercent) && context.drawdown.largestDrawdownPercent >= risk.drawdownWarning) add('medium', 'Material reserve drawdown', `Largest reconstructed drawdown was ${context.drawdown.largestDrawdownPercent.toLocaleString('en-GB')}%.`);
        if (context.scorecard?.runwayDays !== null && context.scorecard?.runwayDays < risk.runwayCriticalDays) add('high', 'Low operating runway', `Current reserve covers approximately ${context.scorecard.runwayDays.toLocaleString('en-GB')} days at the observed operating-expense pace.`);
        if (!alerts.length) add('good', 'No material alerts', 'No configured financial risk threshold was triggered for this period.');
        return alerts.slice(0, 8);
    }

    function buildFinancialForecast(summary, period, closingBalance) {
        const durationDays = Math.max(1 / 24, period.durationMs / 86400000);
        const dailyIncome = summary.income / durationDays;
        const dailyOperatingResult = summary.operatingResult / durationDays;
        const sevenDayIncome = Math.round(dailyIncome * 7);
        const thirtyDayIncome = Math.round(dailyIncome * 30);
        const recoveryDays = summary.capitalInvestment > 0 && dailyOperatingResult > 0 ? summary.capitalInvestment / dailyOperatingResult : null;
        let endOfDayIncome = null;
        if (period.id === 'today') {
            const elapsedHours = Math.max(0.25, (Date.now() - localDayStart()) / 3600000);
            endOfDayIncome = Math.round(summary.income / elapsedHours * 24);
        }
        const confidence = summary.activityCount >= 100 && durationDays >= 7 ? 'HIGH' : summary.activityCount >= 25 && durationDays >= 1 ? 'MEDIUM' : 'LOW';
        return {
            dailyIncome: Math.round(dailyIncome),
            dailyOperatingResult: Math.round(dailyOperatingResult),
            sevenDayIncome,
            thirtyDayIncome,
            endOfDayIncome,
            recoveryDays: recoveryDays === null ? null : Math.round(recoveryDays * 10) / 10,
            projectedSevenDayBalance: Number.isFinite(Number(closingBalance)) ? Math.round(Number(closingBalance) + dailyOperatingResult * 7) : null,
            confidence
        };
    }


    function currentFinancialReportSignature() {
        return JSON.stringify({
            period: state.discordReport.period,
            customStart: state.discordReport.customStart,
            customEnd: state.discordReport.customEnd,
            includeChart: state.discordReport.includeChart,
            includeComparison: state.discordReport.includeComparison,
            reportMode: state.discordReport.reportMode,
            includeForecast: state.discordReport.includeForecast,
            includeRisk: state.discordReport.includeRisk,
            topCategories: state.discordReport.topCategories,
            ruleVersion: activeFinancialRuleVersion,
            policyVersion: activeFinancialPolicyVersion,
            sinceLastAnchor: state.discordReport.period === 'sinceLast' ? getLastDiscordReportAt() : 0
        });
    }

    async function buildFinancialReport() {
        let period = resolveFinancialPeriod();
        const comparisonEnabled = state.discordReport.includeComparison && period.id !== 'allAvailable';
        const requiredStartMs = comparisonEnabled ? period.comparisonStartMs : period.startMs;
        setDiscordStatus('Updating GitHub intelligence and reading the MissionChief Financial Archive…', 'busy');
        await refreshFinancialIntelligenceFeeds(false);
        const allAvailable = period.id === 'allAvailable';
        if (allAvailable) {
            financeArchiveScanBusy = true;
            financeArchiveScanCancelled = false;
        }
        let ledger;
        try {
            ledger = await fetchFinancialLedger(requiredStartMs, 0, false, false);
        } finally {
            if (allAvailable) {
                financeArchiveScanBusy = false;
                financeArchiveScanCancelled = false;
            }
        }
        if (allAvailable) {
            const oldest = ledger.oldestTimestamp || ledger.entries[0]?.timestamp || Date.now();
            period = {
                ...period,
                startMs: oldest,
                durationMs: Math.max(1, period.endMs - oldest),
                comparisonStartMs: 0,
                comparisonEndMs: 0,
                rangeLabel: formatPeriodRange(oldest, period.endMs),
                comparisonRangeLabel: 'Not applicable'
            };
        }
        const currentTransactions = [];
        const previousTransactions = [];
        let afterPeriodNet = 0;
        const now = Date.now();
        for (const entry of ledger.entries) {
            if (entry.timestamp >= period.startMs && entry.timestamp < period.endMs) currentTransactions.push(entry);
            else if (comparisonEnabled && entry.timestamp >= period.comparisonStartMs && entry.timestamp < period.comparisonEndMs) previousTransactions.push(entry);
            if (entry.timestamp >= period.endMs && entry.timestamp <= now) afterPeriodNet += entry.amount;
        }
        const overview = await fetchCreditOverview(comparisonEnabled ? period.comparisonStartMs : period.startMs, period.endMs);
        const currentLedgerSummary = summariseFinancialTransactions(currentTransactions, period);
        const current = reconcileFinancialOverview(currentLedgerSummary, currentTransactions, period, overview);
        const previousPeriod = { ...period, startMs: period.comparisonStartMs, endMs: period.comparisonEndMs, durationMs: period.durationMs };
        const previousLedgerSummary = comparisonEnabled ? summariseFinancialTransactions(previousTransactions, previousPeriod) : null;
        const previous = previousLedgerSummary ? reconcileFinancialOverview(previousLedgerSummary, previousTransactions, previousPeriod, overview) : null;
        const comparison = previous ? buildFinancialComparison(current, previous) : null;
        const account = ledger.account;
        const currentBalance = Number.isFinite(account?.currentBalance) ? account.currentBalance : null;
        const closingBalance = currentBalance === null ? null : currentBalance - afterPeriodNet;
        const openingBalance = closingBalance === null ? null : closingBalance - current.net;
        const balanceAvailable = openingBalance !== null && closingBalance !== null;
        const reconciliation = calculateVaultReconciliation(ledger.vault, period, ledger.entries, currentBalance);
        const overviewAudit = current.overviewAudit || { status: 'unavailable', label: 'Credits overview unavailable', unresolvedVariance: 0 };
        const reconciliationLabel = `${balanceAvailable ? reconciliation.label : 'Balance unavailable'} · ${overviewAudit.label}`;
        const drawdown = calculateFinancialDrawdown(openingBalance, current.transactions);
        const aggregateVerified = ['reconciled', 'not-applicable'].includes(overviewAudit.status);
        const scorecard = calculateFinancialScorecard(current, comparison, { complete: ledger.complete && overviewAudit.status !== 'partial', balanceAvailable, reconciled: reconciliation.reconciled && aggregateVerified, closingBalance });
        let forecastSummary = current;
        let forecastPeriod = period;
        if (state.discordReport.includeForecast && period.durationMs > 30 * 86400000) {
            const recentStart = Math.max(period.startMs, period.endMs - 30 * 86400000);
            const recentTransactions = currentTransactions.filter(entry => entry.timestamp >= recentStart);
            forecastPeriod = { ...period, startMs: recentStart, durationMs: Math.max(1, period.endMs - recentStart), id: 'recent30' };
            forecastSummary = summariseFinancialTransactions(recentTransactions, forecastPeriod);
        }
        const forecast = state.discordReport.includeForecast ? { ...buildFinancialForecast(forecastSummary, forecastPeriod, closingBalance), basisDays: Math.max(1, Math.round(forecastPeriod.durationMs / 86400000)) } : null;
        const report = {
            generatedAt: Date.now(),
            signature: currentFinancialReportSignature(),
            period,
            reportDate: localIsoDate(),
            reportDateLabel: `${period.label} · ${period.rangeLabel}`,
            userName: account?.userName || ledger.vault?.player?.name || '',
            userId: account?.userId || ledger.vault?.player?.id || null,
            currentBalance,
            openingBalance,
            closingBalance,
            reconciliationDifference: reconciliation.difference,
            reconciled: reconciliation.reconciled,
            balanceCalculated: balanceAvailable,
            reconciliationLabel,
            ledgerComplete: ledger.complete,
            ledgerCoverageReached: ledger.coverageReached,
            ledgerPages: ledger.pageCount,
            ledgerLastPage: ledger.lastPage,
            ledgerStable: ledger.ledgerStable,
            ledgerScanRetries: ledger.scanRetries,
            ledgerScanCancelled: ledger.scanCancelled,
            ledgerScanLimitReached: ledger.scanLimitReached,
            ledgerSource: ledger.ledgerSource,
            archiveComplete: ledger.archiveComplete,
            archiveTruncated: ledger.archiveTruncated,
            droppedTransactions: ledger.droppedTransactions,
            vaultTransactionCount: ledger.vaultTransactionCount,
            invalidTimestampCount: ledger.invalidTimestampCount,
            overviewAvailable: Boolean(overviewAudit.available),
            overviewStatus: overviewAudit.status,
            overviewLabel: overviewAudit.label,
            overviewRowsUsed: overviewAudit.rowsUsed,
            overviewPages: overviewAudit.pageCount,
            overviewLastPage: overviewAudit.lastPage,
            overviewCoverageReached: overviewAudit.coverageReached,
            overviewMalformedRows: overviewAudit.malformedRowCount,
            overviewDuplicateDates: overviewAudit.duplicateDateCount,
            overviewIncome: overviewAudit.overviewIncome,
            overviewSpending: overviewAudit.overviewSpending,
            overviewNet: overviewAudit.overviewNet,
            ledgerCheckpointIncome: overviewAudit.ledgerIncome,
            ledgerCheckpointSpending: overviewAudit.ledgerSpending,
            ledgerCheckpointNet: overviewAudit.ledgerNet,
            overviewIncomeVariance: overviewAudit.incomeVariance,
            overviewSpendingVariance: overviewAudit.spendingVariance,
            overviewNetVariance: overviewAudit.netVariance,
            overviewUnresolvedVariance: overviewAudit.unresolvedVariance,
            overviewAudit,
            aggregateReconciled: aggregateVerified,
            comparison,
            previous,
            scorecard,
            grade: { score: scorecard.overall, grade: scorecard.grade, label: scorecard.label, marginPercent: scorecard.operatingMarginPercent },
            forecast,
            drawdown,
            chartBlob: null,
            ...current
        };
        report.riskAlerts = state.discordReport.includeRisk ? buildFinancialRiskAlerts(current, comparison, {
            ledgerComplete: ledger.complete,
            drawdown,
            scorecard,
            archiveTruncated: ledger.archiveTruncated,
            droppedTransactions: ledger.droppedTransactions,
            scanLimitReached: ledger.scanLimitReached,
            scanCancelled: ledger.scanCancelled,
            overviewStatus: overviewAudit.status,
            overviewVariance: overviewAudit.unresolvedVariance
        }) : [];
        report.chartBlob = state.discordReport.includeChart ? await buildFinancialChartBlob(report) : null;
        return report;
    }

    function escapeDiscordMarkdown(value) {
        return String(value || '')
            .replace(/\\/gu, '\\\\')
            .replace(/([`*_~>|])/gu, '\\$1')
            .replace(/@/gu, '@\u200b');
    }

    function truncateDiscord(value, maximum = DISCORD_MAX_FIELD_LENGTH) {
        const text = String(value || '');
        return text.length <= maximum ? text : `${text.slice(0, Math.max(0, maximum - 1))}…`;
    }

    function buildDiscordCategoryBreakdown(entries, prefix, limit) {
        const rows = entries.slice(0, limit);
        if (!rows.length) return 'No entries recorded.';
        return truncateDiscord(rows.map(entry => `• **${escapeDiscordMarkdown(entry.label)}** — ${prefix}${entry.total.toLocaleString('en-GB')} Credits · ${entry.count.toLocaleString('en-GB')} entr${entry.count === 1 ? 'y' : 'ies'}`).join('\n'));
    }

    function buildDiscordTopPayouts(report, limit = 5) {
        if (!report.topPayouts.length) return 'No positive payouts recorded.';
        return truncateDiscord(report.topPayouts.slice(0, limit).map((entry, index) => `${index + 1}. **${escapeDiscordMarkdown(entry.description)}** — +${entry.amount.toLocaleString('en-GB')} Credits`).join('\n'));
    }

    function buildDiscordComparisonField(report) {
        if (!report.comparison || !report.previous) return 'Comparison disabled.';
        return [
            `Income: **${formatPercentageChange(report.comparison.incomeChange)}**`,
            `Operating result: **${formatPercentageChange(report.comparison.operatingResultChange)}**`,
            `Capital deployed: **${formatPercentageChange(report.comparison.capitalInvestmentChange)}**`,
            `Active-hour velocity: **${formatPercentageChange(report.comparison.activeVelocityChange)}**`,
            `Mission count: **${report.comparison.missionChange > 0 ? '+' : ''}${report.comparison.missionChange.toLocaleString('en-GB')}**`,
            `Average mission reward: **${formatPercentageChange(report.comparison.averageRewardChange)}**`
        ].join('\n');
    }

    function buildDiscordScorecardField(report) {
        const score = report.scorecard;
        return [
            `Overall: **${score.grade} · ${score.overall}/100** — ${score.label}`,
            `Revenue **${score.revenue}** · Efficiency **${score.efficiency}**`,
            `Liquidity **${score.liquidity}** · Growth **${score.growth}**`,
            `Audit confidence **${score.confidence}**${score.runwayDays === null ? '' : ` · Runway **${score.runwayDays.toLocaleString('en-GB')}d**`}`
        ].join('\n');
    }

    function buildDiscordRiskField(report) {
        if (!report.riskAlerts?.length) return 'Risk analysis disabled.';
        return truncateDiscord(report.riskAlerts.map(alert => {
            const symbol = alert.severity === 'high' ? '🔴' : alert.severity === 'medium' ? '🟠' : alert.severity === 'low' ? '🟡' : '🟢';
            return `${symbol} **${escapeDiscordMarkdown(alert.title)}** — ${escapeDiscordMarkdown(alert.detail)}`;
        }).join('\n'), 1000);
    }

    function buildDiscordForecastField(report) {
        const forecast = report.forecast;
        if (!forecast) return 'Forecasting disabled.';
        return [
            forecast.endOfDayIncome === null ? '' : `Projected end-of-day income: **${formatPlainCredits(forecast.endOfDayIncome)}**`,
            `7-day income pace: **${formatPlainCredits(forecast.sevenDayIncome)}**`,
            `30-day income pace: **${formatPlainCredits(forecast.thirtyDayIncome)}**`,
            forecast.recoveryDays === null ? 'Capital recovery: **No positive operating pace available**' : `Capital recovery: **${forecast.recoveryDays.toLocaleString('en-GB')} days**`,
            forecast.projectedSevenDayBalance === null ? '' : `Projected 7-day reserve: **${formatPlainCredits(forecast.projectedSevenDayBalance)}**`,
            `Confidence: **${forecast.confidence}** · basis **${Number(forecast.basisDays || 1).toLocaleString('en-GB')} day${Number(forecast.basisDays || 1) === 1 ? '' : 's'}**`
        ].filter(Boolean).join('\n');
    }


    function buildDiscordDataQualityField(report) {
        const coverage = report.archiveComplete ? 'Complete accessible archive' : report.archiveTruncated ? 'Local archive capped' : report.ledgerComplete ? 'Full requested-period coverage' : 'Partial requested-period coverage';
        return [
            `Ledger source: **${escapeDiscordMarkdown(report.ledgerSource || 'MissionChief ledger')}**`,
            `Archive history: **${Number(report.vaultTransactionCount || 0).toLocaleString('en-GB')} transactions** · **${coverage}**`,
            `MissionChief pages: **${Number(report.ledgerPages || 0).toLocaleString('en-GB')} read / ${Number(report.ledgerLastPage || 0).toLocaleString('en-GB')} available**`,
            `Classification confidence: **${report.classificationConfidence.toLocaleString('en-GB')}%** · rules **${escapeDiscordMarkdown(activeFinancialRuleVersion)}** · policy **${escapeDiscordMarkdown(activeFinancialPolicyVersion)}**`,
            `Unclassified: **${report.unclassifiedCount.toLocaleString('en-GB')}** · ${formatPlainCredits(report.unclassifiedAmount)}`,
            `Overview checkpoint: **${escapeDiscordMarkdown(report.overviewLabel || 'Unavailable')}**`,
            report.overviewRowsUsed ? `Overview vs ledger: income **${formatSignedCredits(report.overviewIncomeVariance)}** · spending **${formatSignedCredits(report.overviewSpendingVariance)}** · net **${formatSignedCredits(report.overviewNetVariance)}**` : 'Overview vs ledger: **No complete daily checkpoint used**',
            `Balance audit: **${escapeDiscordMarkdown(report.reconciliationLabel)}**`,
            `${report.ledgerStable ? 'Ledger head remained stable' : 'New activity arrived during scanning; the local archive was left safely resumable'}${report.ledgerScanRetries ? ` · ${report.ledgerScanRetries} restart` : ''}${report.invalidTimestampCount ? ` · ${report.invalidTimestampCount} invalid timestamp rows` : ''}${report.overviewMalformedRows ? ` · ${report.overviewMalformedRows} malformed overview row${report.overviewMalformedRows === 1 ? '' : 's'}` : ''}${report.overviewDuplicateDates ? ` · ${report.overviewDuplicateDates} duplicate overview date${report.overviewDuplicateDates === 1 ? '' : 's'}` : ''}${report.ledgerScanLimitReached ? ' · page safety cap reached' : ''}${report.ledgerScanCancelled ? ' · scan stopped by user' : ''}`
        ].join('\n');
    }

    function discordEmbedCharacterCount(embed) {
        let total = String(embed?.title || '').length + String(embed?.description || '').length + String(embed?.footer?.text || '').length + String(embed?.author?.name || '').length;
        for (const field of embed?.fields || []) total += String(field.name || '').length + String(field.value || '').length;
        return total;
    }

    function fitDiscordEmbedsToBudget(embeds, maximum = 5900) {
        const result = embeds.map(embed => ({ ...embed, fields: (embed.fields || []).map(field => ({ ...field })) }));
        const count = () => result.reduce((sum, embed) => sum + discordEmbedCharacterCount(embed), 0);
        const optionalNames = ['🏆 Highest Payouts', '📊 Previous Period', '🔭 Forecast', '🗄️ Archive Coverage'];
        while (count() > maximum && optionalNames.length) {
            const name = optionalNames.shift();
            for (const embed of result) {
                const index = embed.fields.findIndex(field => field.name === name);
                if (index >= 0) { embed.fields.splice(index, 1); break; }
            }
        }
        for (const embed of result) {
            embed.description = truncateDiscord(embed.description || '', 3800);
            embed.fields = embed.fields.slice(0, 25).map(field => ({ ...field, name: truncateDiscord(field.name, 256), value: truncateDiscord(field.value, 1000) }));
        }
        return result;
    }

    function buildDiscordFinancialPayload(report, { withAttachment = false } = {}) {
        const operatingTone = reportTone(report.operatingResult);
        const colour = operatingTone === 'positive' ? 0x2ecc71 : operatingTone === 'negative' ? 0xe74c3c : 0xf1c40f;
        const topLimit = state.discordReport.topCategories;
        const condition = report.operatingResult > 0 ? 'POSITIVE OPERATING RESULT' : report.operatingResult < 0 ? 'NEGATIVE OPERATING RESULT' : 'OPERATING BREAK EVEN';
        const description = [
            `**${escapeDiscordMarkdown(report.period.label)}**`,
            escapeDiscordMarkdown(report.period.rangeLabel),
            `${condition} · **${formatSignedCredits(report.operatingResult)}**`,
            `Net credit movement after investment: **${formatSignedCredits(report.net)}**`,
            `Daily aggregate audit: **${escapeDiscordMarkdown(report.overviewLabel || 'Detailed ledger only')}**`,
            report.userName ? `Account: **${escapeDiscordMarkdown(report.userName)}**${report.userId ? ` · ID ${escapeDiscordMarkdown(report.userId)}` : ''}` : '',
            report.period.note ? `_${escapeDiscordMarkdown(report.period.note)}_` : ''
        ].filter(Boolean).join('\n');
        const balanceLines = report.openingBalance === null || report.closingBalance === null
            ? ['Balance data was unavailable.']
            : [
                `Opening: **${report.openingBalance.toLocaleString('en-GB')} Credits**`,
                `Closing: **${report.closingBalance.toLocaleString('en-GB')} Credits**`,
                `Peak: **${report.drawdown.peakBalance === null ? 'Unavailable' : report.drawdown.peakBalance.toLocaleString('en-GB')}**`,
                `Largest drawdown: **${report.drawdown.largestDrawdown === null ? 'Unavailable' : formatPlainCredits(report.drawdown.largestDrawdown)}${report.drawdown.largestDrawdownPercent === null ? '' : ` · ${report.drawdown.largestDrawdownPercent.toLocaleString('en-GB')}%`}**`
            ];
        const productivity = [
            `Missions/transport rewards: **${report.missionCount.toLocaleString('en-GB')}**`,
            `Active time estimate: **${report.activeHours.toLocaleString('en-GB')}h**`,
            `Active-hour income: **${formatPlainCredits(report.activeIncomePerHour)}**`,
            `Calendar-hour income: **${formatPlainCredits(report.incomePerHour)}**`,
            `Average / median mission: **${formatPlainCredits(report.averageMissionReward)} / ${formatPlainCredits(report.medianMissionReward)}**`,
            `Alliance / personal share: **${report.allianceIncomePercent.toLocaleString('en-GB')}% / ${report.personalIncomePercent.toLocaleString('en-GB')}%**`
        ].join('\n');
        const executive = {
            title: '📈 MissionChief Financial Command — Executive Audit',
            description: truncateDiscord(description, 4096),
            color: colour,
            timestamp: new Date(report.generatedAt).toISOString(),
            fields: [
                { name: '💰 Total Income', value: `**${formatPlainCredits(report.income)}**`, inline: true },
                { name: '🧾 Operating Costs', value: `**${formatPlainCredits(report.operatingExpense)}**`, inline: true },
                { name: '🏗️ Capital Deployed', value: `**${formatPlainCredits(report.capitalInvestment)}**`, inline: true },
                { name: report.operatingResult >= 0 ? '📊 Operating Result' : '📉 Operating Result', value: `**${formatSignedCredits(report.operatingResult)}**`, inline: true },
                { name: report.net >= 0 ? '🏦 Net Credit Movement' : '🚨 Net Credit Movement', value: `**${formatSignedCredits(report.net)}**`, inline: true },
                { name: '🎯 Operating Margin', value: `**${report.operatingMarginPercent.toLocaleString('en-GB')}%**`, inline: true },
                { name: '🏦 Liquidity & Drawdown', value: truncateDiscord(balanceLines.join('\n')), inline: true },
                { name: '⚡ Productivity', value: truncateDiscord(productivity), inline: true },
                { name: '🏅 Financial Scorecard', value: truncateDiscord(buildDiscordScorecardField(report)), inline: true },
                { name: '🚨 Intelligence Alerts', value: buildDiscordRiskField(report), inline: false },
                { name: '📊 Previous Period', value: truncateDiscord(buildDiscordComparisonField(report)), inline: false }
            ],
            footer: { text: `${SCRIPT.name} • v${SCRIPT.version} • GitHub Intelligence ${activeFinancialRuleVersion} / ${activeFinancialPolicyVersion}` }
        };
        if (withAttachment) executive.image = { url: `attachment://${FINANCE_CHART_FILENAME}` };
        const audit = {
            title: '🧠 Audit Intelligence & Capital Strategy',
            color: 0x3498db,
            fields: [
                { name: '🟢 Income Classification', value: buildDiscordCategoryBreakdown(report.incomeCategories, '+', topLimit), inline: false },
                { name: '🧾 Operating Expenditure', value: buildDiscordCategoryBreakdown(report.operatingExpenseCategories, '-', topLimit), inline: true },
                { name: '🏗️ Capital Deployment', value: buildDiscordCategoryBreakdown(report.capitalCategories, '-', topLimit), inline: true },
                { name: '🏆 Highest Payouts', value: buildDiscordTopPayouts(report, Math.min(5, topLimit)), inline: false },
                { name: '🔭 Forecast', value: truncateDiscord(buildDiscordForecastField(report)), inline: true },
                { name: '🗄️ Archive Coverage', value: truncateDiscord(buildDiscordDataQualityField(report)), inline: false }
            ],
            footer: { text: 'Operating performance is separated from capital investment. Forecasts are indicative, not guaranteed.' }
        };
        const embeds = fitDiscordEmbedsToBudget(state.discordReport.reportMode === 'executive' ? [executive] : [executive, audit]);
        const payload = {
            username: state.discordReport.webhookName || 'MissionChief Finance',
            allowed_mentions: { parse: [] },
            embeds
        };
        if (withAttachment) payload.attachments = [{ id: 0, filename: FINANCE_CHART_FILENAME, description: `${report.period.label} MissionChief financial command chart` }];
        return payload;
    }
    function roundRectPath(context, x, y, width, height, radius) {
        const r = Math.max(0, Math.min(radius, width / 2, height / 2));
        context.beginPath();
        context.moveTo(x + r, y);
        context.arcTo(x + width, y, x + width, y + height, r);
        context.arcTo(x + width, y + height, x, y + height, r);
        context.arcTo(x, y + height, x, y, r);
        context.arcTo(x, y, x + width, y, r);
        context.closePath();
    }

    function drawFinancialMetricCard(context, x, y, width, height, label, value, accent) {
        roundRectPath(context, x, y, width, height, 18);
        context.fillStyle = 'rgba(255,255,255,0.055)';
        context.fill();
        context.fillStyle = accent;
        context.fillRect(x, y, 5, height);
        context.fillStyle = 'rgba(255,255,255,0.58)';
        context.font = '700 18px Arial, sans-serif';
        context.fillText(label.toUpperCase(), x + 24, y + 31);
        context.fillStyle = '#ffffff';
        context.font = '900 34px Arial, sans-serif';
        context.fillText(value, x + 24, y + 75);
    }

    function fitFinancialCanvasText(context, value, maxWidth, { weight = 600, size = 15, minSize = 11 } = {}) {
        const sourceText = String(value ?? '');
        const widthLimit = Math.max(1, Number(maxWidth) || 1);
        let fontSize = Math.max(minSize, Number(size) || 15);
        const applyFont = () => {
            context.font = `${weight} ${fontSize}px Arial, sans-serif`;
        };
        applyFont();
        while (fontSize > minSize && context.measureText(sourceText).width > widthLimit) {
            fontSize -= 1;
            applyFont();
        }
        let renderedText = sourceText;
        let measuredWidth = context.measureText(renderedText).width;
        if (measuredWidth > widthLimit) {
            let remaining = sourceText;
            while (remaining.length > 1) {
                remaining = remaining.slice(0, -1);
                const candidate = `${remaining}…`;
                const candidateWidth = context.measureText(candidate).width;
                if (candidateWidth <= widthLimit) {
                    renderedText = candidate;
                    measuredWidth = candidateWidth;
                    break;
                }
            }
            if (measuredWidth > widthLimit) {
                renderedText = '…';
                measuredWidth = context.measureText(renderedText).width;
            }
        }
        return { text: renderedText, width: Math.min(measuredWidth, widthLimit), fontSize };
    }

    function financialSnapshotRows(report) {
        const rawDifference = report?.reconciliationDifference;
        const hasDifference = rawDifference !== null && rawDifference !== undefined && Number.isFinite(Number(rawDifference));
        let auditRow;
        if (hasDifference) {
            const difference = Number(rawDifference);
            auditRow = Math.abs(difference) <= 1
                ? ['Checkpoint audit', 'Reconciled']
                : ['Checkpoint variance', formatSignedCompactCredits(difference)];
        } else {
            auditRow = report?.overviewRowsUsed
                ? [report.overviewStatus === 'variance' ? 'Overview variance' : 'Overview audit', report.overviewStatus === 'variance' ? formatSignedCompactCredits(report.overviewNetVariance) : 'Reconciled']
                : ['Audit basis', report?.balanceCalculated ? 'Reconstructed' : 'Unavailable'];
        }
        return [
            ['Operating result', formatSignedCompactCredits(report.operatingResult)],
            ['Capital deployed', formatSignedCompactCredits(-Math.abs(report.capitalInvestment || 0))],
            ['Active-hour income', formatSignedCompactCredits(report.activeIncomePerHour || report.incomePerHour)],
            ['Classification', `${Number(report.classificationConfidence || 0).toLocaleString('en-GB', { maximumFractionDigits: 1 })}%`],
            ['Condition score', `${Number(report.scorecard?.overall || 0).toLocaleString('en-GB', { maximumFractionDigits: 0 })}/100`],
            auditRow
        ];
    }

    function drawFinancialSnapshotRow(context, x, y, width, label, value) {
        const gap = 14;
        const valueMaxWidth = Math.min(142, Math.max(96, width * 0.48));
        const valueLayout = fitFinancialCanvasText(context, value, valueMaxWidth, { weight: 800, size: 15, minSize: 11 });
        const valueRight = x + width;
        const valueLeft = valueRight - valueLayout.width;
        const labelMaxWidth = Math.max(56, valueLeft - gap - x);
        const labelLayout = fitFinancialCanvasText(context, label, labelMaxWidth, { weight: 600, size: 15, minSize: 11 });
        context.fillStyle = 'rgba(255,255,255,0.58)';
        context.textAlign = 'left';
        context.font = `600 ${labelLayout.fontSize}px Arial, sans-serif`;
        context.fillText(labelLayout.text, x, y);
        context.fillStyle = '#ffffff';
        context.textAlign = 'right';
        context.font = `800 ${valueLayout.fontSize}px Arial, sans-serif`;
        context.fillText(valueLayout.text, valueRight, y);
        context.textAlign = 'left';
        return {
            gap,
            label: { text: labelLayout.text, left: x, right: x + labelLayout.width, width: labelLayout.width, fontSize: labelLayout.fontSize },
            value: { text: valueLayout.text, left: valueLeft, right: valueRight, width: valueLayout.width, fontSize: valueLayout.fontSize }
        };
    }

    async function buildFinancialChartBlob(report) {
        try {
            const canvas = document.createElement('canvas');
            canvas.width = 1200;
            canvas.height = 675;
            const context = canvas.getContext('2d');
            if (!context) return null;
            const gradient = context.createLinearGradient(0, 0, 1200, 675);
            gradient.addColorStop(0, '#0b1018');
            gradient.addColorStop(0.55, '#111a27');
            gradient.addColorStop(1, '#080b11');
            context.fillStyle = gradient;
            context.fillRect(0, 0, 1200, 675);
            context.fillStyle = 'rgba(88,166,255,0.12)';
            context.beginPath();
            context.arc(1060, 70, 230, 0, Math.PI * 2);
            context.fill();
            context.fillStyle = 'rgba(124,77,255,0.08)';
            context.beginPath();
            context.arc(140, 650, 280, 0, Math.PI * 2);
            context.fill();
            context.fillStyle = '#ffffff';
            context.font = '900 34px Arial, sans-serif';
            context.fillText('MISSIONCHIEF FINANCIAL INTELLIGENCE', 54, 58);
            context.fillStyle = 'rgba(255,255,255,0.62)';
            context.font = '600 18px Arial, sans-serif';
            context.fillText(report.period.label, 54, 89);
            context.fillText(report.period.rangeLabel, 54, 116);
            roundRectPath(context, 1002, 38, 142, 70, 20);
            context.fillStyle = report.net >= 0 ? 'rgba(46,204,113,0.18)' : 'rgba(231,76,60,0.18)';
            context.fill();
            context.fillStyle = report.net >= 0 ? '#67e69b' : '#ff8378';
            context.font = '900 30px Arial, sans-serif';
            context.textAlign = 'center';
            context.fillText(report.grade.grade, 1073, 73);
            context.font = '700 14px Arial, sans-serif';
            context.fillText(`${report.grade.score}/100`, 1073, 96);
            context.textAlign = 'left';
            drawFinancialMetricCard(context, 54, 148, 337, 98, 'Income', formatSignedCompactCredits(report.income), '#2ecc71');
            drawFinancialMetricCard(context, 412, 148, 337, 98, 'Net movement', formatSignedCompactCredits(report.net), report.net >= 0 ? '#58a6ff' : '#ff6b61');
            drawFinancialMetricCard(context, 770, 148, 374, 98, 'Capital deployed', formatSignedCompactCredits(-Math.abs(report.capitalInvestment || 0)), '#f1c40f');
            const chartX = 54;
            const chartY = 288;
            const chartW = 730;
            const chartH = 250;
            roundRectPath(context, chartX, chartY, chartW, chartH, 18);
            context.fillStyle = 'rgba(255,255,255,0.04)';
            context.fill();
            context.fillStyle = '#ffffff';
            context.font = '800 19px Arial, sans-serif';
            context.fillText('CREDIT MOVEMENT TREND', chartX + 22, chartY + 32);
            const buckets = report.buckets.slice(-12);
            const maxMagnitude = Math.max(1, ...buckets.map(bucket => Math.abs(bucket.net)));
            const plotTop = chartY + 58;
            const plotBottom = chartY + chartH - 38;
            const zeroY = plotTop + (plotBottom - plotTop) / 2;
            context.strokeStyle = 'rgba(255,255,255,0.14)';
            context.lineWidth = 1;
            context.beginPath();
            context.moveTo(chartX + 22, zeroY);
            context.lineTo(chartX + chartW - 22, zeroY);
            context.stroke();
            const slotW = (chartW - 52) / Math.max(1, buckets.length);
            buckets.forEach((bucket, index) => {
                const height = Math.max(2, Math.abs(bucket.net) / maxMagnitude * ((plotBottom - plotTop) / 2 - 8));
                const x = chartX + 29 + index * slotW;
                const y = bucket.net >= 0 ? zeroY - height : zeroY;
                roundRectPath(context, x, y, Math.max(8, slotW - 10), height, 4);
                context.fillStyle = bucket.net >= 0 ? '#2ecc71' : '#e74c3c';
                context.fill();
                context.fillStyle = 'rgba(255,255,255,0.52)';
                context.font = '600 11px Arial, sans-serif';
                context.textAlign = 'center';
                context.fillText(bucket.label, x + Math.max(8, slotW - 10) / 2, chartY + chartH - 15);
            });
            context.textAlign = 'left';
            const detailX = 810;
            const detailY = 288;
            const detailW = 334;
            const detailH = 250;
            roundRectPath(context, detailX, detailY, detailW, detailH, 18);
            context.fillStyle = 'rgba(255,255,255,0.04)';
            context.fill();
            context.fillStyle = '#ffffff';
            context.font = '800 19px Arial, sans-serif';
            context.fillText('OPERATING SNAPSHOT', detailX + 22, detailY + 32);
            const lines = financialSnapshotRows(report);
            lines.forEach((line, index) => {
                const y = detailY + 65 + index * 29;
                drawFinancialSnapshotRow(context, detailX + 22, y, detailW - 44, line[0], line[1]);
            });
            context.fillStyle = 'rgba(255,255,255,0.42)';
            context.font = '600 14px Arial, sans-serif';
            context.fillText(`${report.activityCount.toLocaleString('en-GB')} transactions · ${report.ledgerPages.toLocaleString('en-GB')} ledger pages · ${report.overviewRowsUsed ? `${report.overviewRowsUsed.toLocaleString('en-GB')} overview day${report.overviewRowsUsed === 1 ? '' : 's'}` : 'overview unavailable'} · Generated ${new Date(report.generatedAt).toLocaleString('en-GB')}`, 54, 620);
            context.fillStyle = 'rgba(255,255,255,0.27)';
            context.font = '600 12px Arial, sans-serif';
            context.fillText(`${SCRIPT.name} v${SCRIPT.version} · Deterministic local financial audit · projections are estimates`, 54, 648);
            return await new Promise(resolve => {
                canvas.toBlob(resolve, 'image/png', 0.92);
            });
        } catch (err) {
            return null;
        }
    }

    function discordRetryDelayMs(response, attempt = 0) {
        const headerText = String(response?.responseHeaders || '');
        const retryHeader = headerText.match(/^retry-after:\s*([\d.]+)/imu);
        if (retryHeader) {
            const value = Number(retryHeader[1]);
            if (Number.isFinite(value)) return Math.max(250, value > 1000 ? value : value * 1000);
        }
        try {
            const body = JSON.parse(response?.responseText || '{}');
            const retryAfter = Number(body?.retry_after);
            if (Number.isFinite(retryAfter)) return Math.max(250, retryAfter > 1000 ? retryAfter : retryAfter * 1000);
        } catch (err) {}
        return Math.min(10000, 750 * Math.pow(2, attempt));
    }

    async function sendDiscordWithRetry(factory, maximumAttempts = 3) {
        let response = null;
        for (let attempt = 0; attempt < maximumAttempts; attempt++) {
            response = await factory();
            if (response.status !== 429 && response.status < 500) return response;
            if (attempt >= maximumAttempts - 1) return response;
            const delayMs = discordRetryDelayMs(response, attempt);
            setDiscordStatus(`Discord delivery delayed by rate limits. Retrying in ${Math.ceil(delayMs / 1000)}s…`, 'busy');
            if (!await runtimeDelay(delayMs)) throw new Error('Toolkit runtime stopped during Discord retry.');
        }
        return response;
    }

    async function sendDiscordFinancialPayload(webhookUrl, report) {
        const hasChart = Boolean(report.chartBlob && state.discordReport.includeChart);
        const payload = buildDiscordFinancialPayload(report, { withAttachment: hasChart });
        let response;
        if (hasChart) {
            response = await sendDiscordWithRetry(() => {
                const formData = new FormData();
                formData.append('payload_json', JSON.stringify(payload));
                formData.append('files[0]', report.chartBlob, FINANCE_CHART_FILENAME);
                return discordHttpRequest({
                    method: 'POST',
                    url: discordWebhookEndpoint(webhookUrl, { wait: true }),
                    data: formData
                });
            });
            if (response.status === 400 || response.status === 413 || response.status === 415) {
                const errorText = String(response.responseText || '').toLowerCase();
                const attachmentRelated = response.status === 413 || response.status === 415 || /attachment|file|upload|multipart|request entity too large/iu.test(errorText);
                if (attachmentRelated) {
                    const fallbackPayload = buildDiscordFinancialPayload(report, { withAttachment: false });
                    response = await sendDiscordWithRetry(() => discordHttpRequest({
                        method: 'POST',
                        url: discordWebhookEndpoint(webhookUrl, { wait: true }),
                        headers: { 'Content-Type': 'application/json' },
                        data: JSON.stringify(fallbackPayload)
                    }));
                }
            }
        } else {
            response = await sendDiscordWithRetry(() => discordHttpRequest({
                method: 'POST',
                url: discordWebhookEndpoint(webhookUrl, { wait: true }),
                headers: { 'Content-Type': 'application/json' },
                data: JSON.stringify(payload)
            }));
        }
        if (response.status < 200 || response.status >= 300) throw new Error(parseDiscordError(response));
        return response;
    }
    function clearDiscordPreviewChartUrl() {
        if (discordFinanceChartUrl) {
            try { URL.revokeObjectURL(discordFinanceChartUrl); } catch (err) {}
        }
        discordFinanceChartUrl = '';
    }

    function invalidateDiscordFinancialPreview() {
        clearDiscordPreviewChartUrl();
    }

    async function postDiscordFinancialReport() {
        if (discordFinanceBusy) return;
        let webhookUrl;
        try { webhookUrl = readDiscordWebhookInput({ save: true }); }
        catch (err) {
            setDiscordStatus(err?.message || 'Enter a valid Discord webhook URL.', 'bad');
            showToast('Discord webhook required');
            return;
        }
        discordFinanceBusy = true;
        setDiscordStatus('Building and posting the financial report…', 'busy');
        try {
            const report = await buildFinancialReport();
            await sendDiscordFinancialPayload(webhookUrl, report);
            gmSetValueSafe(SCRIPT.discordLastReportState, report.generatedAt);
                clearDiscordPreviewChartUrl();
            setDiscordStatus(`Posted successfully at ${new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}.`, 'good');
            showToast('Discord financial report posted');
        } catch (err) {
            setDiscordStatus(err?.message || 'The Discord report could not be posted.', 'bad');
            showToast('Discord report failed');
        } finally {
            discordFinanceBusy = false;
        }
    }

    function clearDiscordWebhook() {
        if (!getDiscordWebhookUrl()) {
            setDiscordStatus('No Discord webhook is currently saved.', 'neutral');
            return;
        }
        if (!pageWindow.confirm('Remove the saved Discord webhook from Tampermonkey storage?')) return;
        gmDeleteValueSafe(SCRIPT.discordWebhookState);
        const input = document.querySelector(`#${SCRIPT.panelId} [data-setting="discord-webhook"]`);
        if (input) input.value = '';
        setDiscordStatus('Saved Discord webhook removed.', 'good');
        showToast('Discord webhook cleared');
    }


    function setStatus(text) {
        const status = document.querySelector(`#${SCRIPT.panelId} .mcms-status`);
        if (status) status.textContent = text || 'Ready.';
    }

    function showToast(text) {
        let toast = document.getElementById(SCRIPT.toastId);
        if (!toast) {
            toast = document.createElement('div');
            toast.id = SCRIPT.toastId;
            document.body.appendChild(toast);
        }
        toast.textContent = text;
        toast.classList.add('mcms-flash');
        runtimeClearTimeout(toastFlashTimer);
        toastFlashTimer = runtimeSetTimeout(() => {
            toastFlashTimer = null;
            toast.classList.remove('mcms-flash');
        }, 950);
    }

    function applyTheme(themeKey, persist = true) {
        state.theme = normaliseTheme(themeKey);
        if (persist) saveState();
        applyRootAttributes();
        updateUI();
        showToast(THEMES[state.theme].full);
    }

    function setActiveTab(tab) {
        if (!['skins', 'tools', 'resources', 'ops', 'payouts', 'discord', 'places', 'settings'].includes(tab)) return;
        state.activeTab = tab;
        saveState();
        updateUI();
        if (!dragState) positionPanelOverlay(true);
        if (tab === 'ops') refreshPersonalVehicleData(false).finally(() => scheduleOperationalPanelsRender(0, true));
    }

    function applyPosition(position, persist = true) {
        state.position = POSITIONS[position] ? position : 'bl';
        if (persist) saveState();
        updateUI();
        fitControlToMap();
    }

    function nudgeControl(dx, dy) {
        state.nudge.x = clamp(state.nudge.x + dx, -220, 220, 0);
        state.nudge.y = clamp(state.nudge.y + dy, -220, 220, 0);
        saveState();
        updateUI();
    }

    function resetNudge() {
        state.nudge = { x: 0, y: 0 };
        saveState();
        updateUI();
    }
    // Issue #515: restore the generic Toolkit launcher shell removed during v7 retirement.
    function toolkitTopLevelDocument(doc = document) {
        try {
            const view = doc?.defaultView;
            return !view || view.top === view;
        } catch (error) {
            return true;
        }
    }
    function toolkitPrimaryMapElement(mapEl, doc = document) {
        const missionSelector = '#mission-form,.mission-window,.mission_window,.modal,.modal-content,.lightbox,[data-mission-id]';
        const candidates = [
            doc?.querySelector?.('#map'),
            mapEl,
            ...Array.from(doc?.querySelectorAll?.('[data-leaflet-map="main"],.leaflet-container') || [])
        ];
        for (const candidate of candidates) {
            if (!candidate || candidate.ownerDocument !== doc || candidate.isConnected === false) continue;
            if (candidate.closest?.(missionSelector)) continue;
            return candidate;
        }
        return null;
    }
    function toolkitControlHost(mapEl, doc = document) {
        if (!toolkitTopLevelDocument(doc)) return null;
        return toolkitPrimaryMapElement(mapEl, doc) || doc?.body || doc?.documentElement || null;
    }
    function toolkitApplyCommandBarState(control = null) {
        control ||= document.querySelector?.(`#${SCRIPT.controlId}`) || null;
        if (!control) return false;
        const open = state.commandBarOpen !== false;
        control.setAttribute('data-mcms-command-bar-open', String(open));
        for (const selector of ['.mcms-floating-filter', '.mcms-screen-pins']) {
            const element = control.querySelector?.(selector);
            if (!element) continue;
            if (open) element.style.removeProperty('display');
            else element.style.setProperty('display', 'none', 'important');
        }
        const button = control.querySelector?.('.mcms-dock-toggle-btn');
        if (button) {
            const label = open ? 'Collapse command bar' : 'Expand command bar';
            button.classList.toggle('mcms-open', open);
            button.setAttribute('aria-expanded', String(open));
            button.setAttribute('aria-label', label);
            button.title = label;
            const icon = button.querySelector?.('.mcms-dock-toggle-icon');
            if (icon) icon.textContent = open ? '▴' : '▾';
        }
        return open;
    }

    function toggleCommandBar() {
        const control = document.getElementById(SCRIPT.controlId);
        const opening = state.commandBarOpen === false;
        runtimeClearTimeout(commandBarAnimationTimer);
        commandBarAnimationTimer = null;
        commandBarAnimating = false;
        for (const item of Array.from(control?.querySelectorAll?.('.mcms-float-btn, .mcms-screen-pin-btn') || [])) {
            item.style.removeProperty('opacity');
            item.style.removeProperty('transform');
            item.style.removeProperty('transition');
            item.style.removeProperty('transition-delay');
            item.style.removeProperty('will-change');
            delete item.dataset.mcmsCollapseDelay;
        }
        state.commandBarOpen = opening;
        saveState();
        applyRootAttributes();
        toolkitApplyCommandBarState(control);
        updateUI();
        fitControlToMap();
        showToast(opening ? 'Command bar expanded' : 'Command bar collapsed');
    }

    function handleMapVisibilityToggle(feature) {
        if (feature === 'markerFocus') state.markerFocus = !state.markerFocus;
        else if (feature === 'missionPulse') state.missionPulse = !state.missionPulse;
        else if (feature === 'roadPriority') state.roadPriority = !state.roadPriority;
        else if (feature === 'coverage') state.coverage.enabled = !state.coverage.enabled;
        else if (feature === 'allianceMissions') state.visibility.allianceMissions = !state.visibility.allianceMissions;
        else if (feature === 'myMissions') state.visibility.myMissions = !state.visibility.myMissions;
        else if (feature === 'vehicles') state.visibility.vehicles = !state.visibility.vehicles;
        else if (feature === 'buildings') state.visibility.buildings = !state.visibility.buildings;
        else return false;
        return true;
    }
    function applyMapVisibilityToggleEffects(feature) { if(feature==='vehicles')synchroniseVehicleMarkerClasses();if(feature==='buildings')synchronisePersonalBuildingVisibility();if(state.economyMode&&(feature==='vehicles'||feature==='buildings'))scheduleEconomyLayerSync(0);if(feature==='missionAge'){runtimeClearTimeout(missionAgeTimer);missionAgeTimer=null;if(state.missionAge){inlineMissionDataScanned=false;scanInlineMissionMarkerData(true);invalidateMarkerRegistryCaches('mission');scheduleMarkerStateSync(0,true);scheduleMissionAgeRefresh(0);runtimeSetTimeout(()=>{if(state.missionAge)scheduleMissionAgeRefresh(0);},1000);}else clearMissionAgeLabels();} }
    function handleMissionWindowToggle(feature) {
        if (feature === 'missionValue') state.missionValue = !state.missionValue;
        else if (feature === 'customVehicleBadges') state.customVehicleBadges = !state.customVehicleBadges;
        else return false;
        return true;
    }
    function applyMissionWindowToggleEffects(feature) {
        if (feature === 'missionValue') { if (state.missionValue) installMissionValueWindows(); else clearMissionValueIndicators(); showToast(state.missionValue ? 'Mission Value on' : 'Mission Value off'); }
        if (feature === 'customVehicleBadges') { if (state.customVehicleBadges) installCustomVehicleBadges(); else clearCustomVehicleBadges(); showToast(state.customVehicleBadges ? 'Custom Vehicle Badges on' : 'Custom Vehicle Badges off'); }
    }
    function handlePayoutAudioToggle(feature) {
        if (feature === 'missionLockAudio') { state.missionLockAudio = !state.missionLockAudio; if (state.missionLockAudio) unlockPayoutAudio(true); }
        else if (feature === 'payoutFlash') state.payoutFlash.enabled = !state.payoutFlash.enabled;
        else if (feature === 'payoutSound') { state.payoutFlash.soundEnabled = !state.payoutFlash.soundEnabled; if (state.payoutFlash.soundEnabled) unlockPayoutAudio(); else disposePayoutMediaAudio(); }
        else return false;
        return true; }
    function applyPayoutAudioToggleEffects(feature) {
        if (feature === 'missionLockAudio') showToast(state.missionLockAudio ? 'Mission tracking audio on' : 'Mission tracking audio off');
        else if (feature === 'payoutSound') showToast(state.payoutFlash.soundEnabled ? 'Theme audio on · hosted MP3 cues load only when played' : 'Theme audio off');
        else if (feature === 'payoutFlash') showToast(state.payoutFlash.enabled ? 'Emergency payout flash on' : 'Emergency payout flash off');
    }
    function handleMissionMonitoringToggle(feature) {
        if (feature === 'stuckDetector') state.stuckDetector.enabled = !state.stuckDetector.enabled;
        else if (feature === 'missionSpawn') { state.missionSpawn.enabled = !state.missionSpawn.enabled; missionSpawnArmed = false; runtimeClearTimeout(missionSpawnPrimeTimer); knownMissionIds.clear(); if (state.missionSpawn.enabled) primeMissionSpawnDetector(); }
        else return false;
        return true; }
    function applyMissionMonitoringToggleEffects(feature) {
        if (feature === 'stuckDetector') showToast(state.stuckDetector.enabled ? `Stuck detector on · ${state.stuckDetector.thresholdMin} min` : 'Stuck detector off');
        else if (feature === 'missionSpawn') showToast(state.missionSpawn.enabled ? 'New mission animation on' : 'New mission animation off'); }
    function handleInterfaceShellToggle(feature) {
        if (feature === 'clean') state.cleanMode = !state.cleanMode; else if (feature === 'shortcuts') state.shortcuts = !state.shortcuts; else if (feature === 'compactDock') state.compactDock = !state.compactDock; else return false; return true; }
    function toggleFeature(feature) {
        handleMapVisibilityToggle(feature);
        handleMissionWindowToggle(feature);
        handlePayoutAudioToggle(feature);
        handleMissionMonitoringToggle(feature);
        handleInterfaceShellToggle(feature);
        if (feature === 'autoLoadAllVehicles') {
            state.autoLoadAllVehicles = !state.autoLoadAllVehicles;
            if (state.autoLoadAllVehicles) installAutoLoadAllVehicles();
            else stopAutoLoadAllVehicles();
        }
        if (feature === 'allianceBuildingsMapBlocker') state.allianceBuildingsMap = state.allianceBuildingsMap === false;
        if (feature === 'majorIncidentFeed') state.majorIncidentFeed.enabled = !state.majorIncidentFeed.enabled;
        if (feature === 'allianceCredits') state.allianceCredits = !state.allianceCredits;
        if (feature === 'missionAge') state.missionAge = !state.missionAge;
        if (feature === 'unitCommitment') state.unitCommitment = !state.unitCommitment;
        if (feature === 'transportWatcher') state.transportWatcher = !state.transportWatcher;
        if (feature === 'resourceGap') state.resourceGap.enabled = !state.resourceGap.enabled;
        if (state.cleanMode) closePanel();
        saveState();
        applyRootAttributes();
        updateUI();
        applyMapVisibilityToggleEffects(feature);
        reconcileFeatureRefreshes({ includeSnapshots: missionSnapshotsNeeded(), positionPanel: false });
        applyMissionWindowToggleEffects(feature);
        applyPayoutAudioToggleEffects(feature);
        applyMissionMonitoringToggleEffects(feature);
        if (feature === 'autoLoadAllVehicles') showToast(state.autoLoadAllVehicles ? 'Auto-load all vehicles on' : 'Auto-load all vehicles off');
        if (feature === 'allianceCredits') showToast(state.allianceCredits ? 'Alliance credits on' : 'Alliance credits off');
        if (feature === 'missionAge') showToast(state.missionAge ? 'Personal mission age on' : 'Personal mission age off');
        if (feature === 'unitCommitment') {
            if (state.unitCommitment) {
                showToast('Loading unit assignments…');
                refreshPersonalVehicleData(true).then(ok => {
                    scheduleUnitCommitmentRefresh(0);
                    showToast(ok ? 'Unit Count on' : 'Unit Count on · live vehicle data unavailable');
                });
            } else showToast('Unit Count off');
        }
        if (feature === 'transportWatcher') showToast(state.transportWatcher ? 'Transport Watcher on' : 'Transport Watcher off');
        if (feature === 'majorIncidentFeed') {
            if (state.majorIncidentFeed.enabled) {
                refreshMissionSnapshots();
                scheduleMajorIncidentFeedRender(0);
            } else removeMajorIncidentFeed();
            showToast(state.majorIncidentFeed.enabled ? 'Major Incident Feed on' : 'Major Incident Feed off');
        }
        if (feature === 'allianceBuildingsMapBlocker') {
            if (state.allianceBuildingsMap === false) {
                installAllianceBuildingsEarlyStyle();
                installAllianceBuildingsLeafletAssignmentGuard();
                installAllianceBuildingsContextWatcherEarly();
            } else {
                clearAllianceBuildingsEarlyContext();
            }
            showToast(state.allianceBuildingsMap === false ? 'Alliance Map Blocker ON · reloading' : 'Alliance Map Blocker OFF · reloading');
            if (isAllianceBuildingsContext()) runtimeSetTimeout(() => location.reload(), 180);
        }
        if (feature === 'resourceGap') {
            showToast(state.resourceGap.enabled ? `Resource Gap on · ${state.resourceGap.radiusMi}mi` : 'Resource Gap off');
        }
    }
    function parseTime(value, fallback) {
        const match = String(value || '').match(/^(\d{1,2}):(\d{2})$/);
        if (!match) return fallback;
        return clamp(match[1], 0, 23, Math.floor(fallback / 60)) * 60 + clamp(match[2], 0, 59, fallback % 60);
    }
    function shouldSuppressControl() {
        if (state.cleanMode) return false;
        if (document.body && document.body.classList.contains('modal-open')) return true;
        return SUPPRESSION_SELECTORS.some(selector => {
            let nodes;
            try { nodes = Array.from(document.querySelectorAll(selector)); } catch (err) { return false; }
            return nodes.some(el => {
                if (!el || el.closest(`#${SCRIPT.controlId}`) || el.closest(`#${SCRIPT.panelId}`)) return false;
                if (!isVisible(el)) return false;
                const rect = el.getBoundingClientRect();
                return (rect.width * rect.height) > 1200;
            });
        });
    }
    function refreshSuppression() {
        const control = document.getElementById(SCRIPT.controlId);
        if (!control) return;
        control.classList.toggle('mcms-hidden-by-menu', shouldSuppressControl());
    }
    function fitControlToMap() {
        runtimeClearTimeout(fitTimer);
        fitTimer = runtimeSetTimeout(() => {
            const panel = document.getElementById(SCRIPT.panelId);
            const mapEl = getLargestLeafletMap();
            if (!mapEl) {
                if (!isTouchLayoutActive()) {
                    observeDesktopPanelWorkspace(null);
                    applyDesktopPanelSizing(panel, null);
                }
                return;
            }
            if (mobileModeActive) {
                clearDesktopPanelSizing(panel);
                applyMobileDockLayout(mapEl);
            } else if (tabletModeActive) {
                clearDesktopPanelSizing(panel);
                applyTabletDockLayout(mapEl);
            } else {
                clearTabletDockSizing();
                observeDesktopPanelWorkspace(mapEl);
                applyDesktopPanelSizing(panel, mapEl);
            }
            if (!panel) return;
            const rect = mapEl.getBoundingClientRect();
            panel.classList.toggle('mcms-map-small', rect.height < 560 || rect.width < 650);
        }, 60);
    }
    function setPanelCssPosition(left, top) {
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel) return;
        if (isTouchLayoutActive()) { applyTabletPanelPosition(); return; }
        clearTabletPanelSizing(panel);
        panel.style.setProperty('position', 'fixed', 'important');
        panel.style.setProperty('left', `${Math.round(left)}px`, 'important');
        panel.style.setProperty('top', `${Math.round(top)}px`, 'important');
        panel.style.setProperty('right', 'auto', 'important');
        panel.style.setProperty('bottom', 'auto', 'important');
        panel.style.setProperty('transform', 'none', 'important');
    }
    function clampPanelPosition(left, top) {
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel) return { left: 12, top: 12 };
        const mapEl = getLargestLeafletMap();
        const bounds = applyDesktopPanelSizing(panel, mapEl) || resolveDesktopPanelBounds(null);
        const panelWidth = Math.min(panel.offsetWidth || 318, Math.max(1, bounds.right - bounds.left));
        const panelHeight = Math.min(panel.offsetHeight || 500, bounds.maxHeight);
        return clampDesktopPanelPoint(left, top, panelWidth, panelHeight, bounds);
    }
    function getDefaultPanelPosition() {
        const control = document.getElementById(SCRIPT.controlId);
        const panel = document.getElementById(SCRIPT.panelId);
        const margin = 12;
        if (!control || !panel) return { left: margin, top: margin };
        const controlRect = control.getBoundingClientRect();
        const panelWidth = panel.offsetWidth || 318;
        const viewportWidth = pageWindow.innerWidth || document.documentElement.clientWidth;
        const spaceRight = viewportWidth - controlRect.right - margin;
        const spaceLeft = controlRect.left - margin;
        return {
            left: (spaceRight >= panelWidth || spaceRight >= spaceLeft) ? controlRect.right + margin : controlRect.left - panelWidth - margin,
            top: controlRect.top
        };
    }
    function positionPanelOverlay(useSavedPosition = true) {
        if (dragState) return;
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel || !panel.classList.contains('mcms-open')) return;
        if (isTouchLayoutActive()) { applyTabletPanelPosition(); return; }
        clearTabletPanelSizing(panel);
        let left;
        let top;
        if (useSavedPosition && state.panelPosition && Number.isFinite(Number(state.panelPosition.left)) && Number.isFinite(Number(state.panelPosition.top))) {
            left = Number(state.panelPosition.left);
            top = Number(state.panelPosition.top);
        } else {
            const pos = getDefaultPanelPosition();
            left = pos.left;
            top = pos.top;
        }
        const clamped = clampPanelPosition(left, top);
        setPanelCssPosition(clamped.left, clamped.top);
    }

    function resetPanelPosition() {
        if (isTouchLayoutActive()) { showToast(`${mobileModeActive ? 'Mobile' : 'Tablet'} Mode uses a fixed responsive panel`); return; }
        state.panelPosition = null;
        saveState();
        positionPanelOverlay(false);
        showToast('Menu position reset');
    }

    function nudgePanel(dx, dy) {
        if (isTouchLayoutActive()) { showToast(`${mobileModeActive ? 'Mobile' : 'Tablet'} Mode uses a fixed responsive panel`); return; }
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel) return;
        const rect = panel.getBoundingClientRect();
        const pos = clampPanelPosition(rect.left + dx, rect.top + dy);
        setPanelCssPosition(pos.left, pos.top);
        state.panelPosition = { left: pos.left, top: pos.top };
        saveState();
        showToast(`Menu ${pos.left}, ${pos.top}`);
    }

    function startPanelDrag(event) {
        if (isTouchLayoutActive()) return;
        const isMouse = event.type === 'mousedown';
        const isTouch = event.type === 'touchstart';
        if (isMouse && event.button !== 0) return;
        if (!isMouse && !isTouch) return;
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel || !panel.classList.contains('mcms-open')) return;
        const point = isTouch ? event.touches[0] : event;
        if (!point) return;
        const rect = panel.getBoundingClientRect();
        dragState = {
            startX: point.clientX,
            startY: point.clientY,
            startLeft: rect.left,
            startTop: rect.top,
            moved: false
        };
        panel.classList.add('mcms-dragging');
        document.documentElement.style.cursor = 'grabbing';
        document.body.style.userSelect = 'none';
        document.addEventListener('mousemove', movePanelDrag, true);
        document.addEventListener('mouseup', endPanelDrag, true);
        document.addEventListener('touchmove', movePanelDrag, { capture: true, passive: false });
        document.addEventListener('touchend', endPanelDrag, true);
        document.addEventListener('touchcancel', endPanelDrag, true);
        event.preventDefault();
        event.stopPropagation();
    }

    function movePanelDrag(event) {
        if (!dragState) return;
        const isTouch = event.type === 'touchmove';
        const point = isTouch ? event.touches[0] : event;
        if (!point) return;
        const dx = point.clientX - dragState.startX;
        const dy = point.clientY - dragState.startY;
        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) dragState.moved = true;
        const pos = clampPanelPosition(dragState.startLeft + dx, dragState.startTop + dy);
        setPanelCssPosition(pos.left, pos.top);
        event.preventDefault();
        event.stopPropagation();
    }

    function endPanelDrag(event) {
        if (!dragState) return;
        const didMove = Boolean(dragState.moved);
        const panel = document.getElementById(SCRIPT.panelId);
        if (panel) {
            panel.classList.remove('mcms-dragging');
            const rect = panel.getBoundingClientRect();
            const pos = clampPanelPosition(rect.left, rect.top);
            setPanelCssPosition(pos.left, pos.top);
            state.panelPosition = { left: pos.left, top: pos.top };
            saveState();
        }
        dragState = null;
        document.documentElement.style.cursor = '';
        document.body.style.userSelect = '';
        document.removeEventListener('mousemove', movePanelDrag, true);
        document.removeEventListener('mouseup', endPanelDrag, true);
        document.removeEventListener('touchmove', movePanelDrag, true);
        document.removeEventListener('touchend', endPanelDrag, true);
        document.removeEventListener('touchcancel', endPanelDrag, true);
        if (didMove) {
            suppressNextOutsideClick = true;
            showToast('Menu position saved');
            runtimeSetTimeout(() => { suppressNextOutsideClick = false; }, 250);
        }
        if (event) {
            event.preventDefault();
            event.stopPropagation();
        }
    }

    function openPanel() {
        const panel = document.getElementById(SCRIPT.panelId) || createPanel();
        if (!panel) return;
        applyRootAttributes();
        refreshTabletModeUi(panel);
        panel.classList.add('mcms-open');
        panel.setAttribute('aria-hidden', 'false');
        const menuButton = document.querySelector(`#${SCRIPT.controlId} .mcms-menu-btn`);
        menuButton?.setAttribute('aria-expanded', 'true');
        fitControlToMap();
        runtimeSetTimeout(() => positionPanelOverlay(true), 0);
    }

    function closePanel({ restoreFocus = false } = {}) {
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel) return;
        panel.classList.remove('mcms-open');
        panel.setAttribute('aria-hidden', 'true');
        const menuButton = document.querySelector(`#${SCRIPT.controlId} .mcms-menu-btn`);
        menuButton?.setAttribute('aria-expanded', 'false');
        if (restoreFocus && menuButton?.isConnected) runtimeSetTimeout(() => menuButton.focus({ preventScroll: true }), 0);
    }

    function togglePanel() {
        const panel = document.getElementById(SCRIPT.panelId);
        if (!panel) { openPanel(); return; }
        panel.classList.contains('mcms-open') ? closePanel() : openPanel();
    }

    function closeHelpCenter({ restoreFocus = true } = {}) {
        const overlay = document.getElementById(SCRIPT.helpCenterId);
        if (!overlay?.classList.contains('mcms-open')) return false;
        overlay.classList.remove('mcms-open', 'mcms-loading', 'mcms-error');
        overlay.setAttribute('aria-hidden', 'true');
        document.documentElement.removeAttribute('data-mcms-help-open');
        if (restoreFocus && helpCenterReturnFocus?.isConnected) {
            runtimeSetTimeout(() => { try { helpCenterReturnFocus.focus({ preventScroll: true }); } catch (err) {} }, 0);
        }
        helpCenterReturnFocus = null;
        return true;
    }

    function helpGuideRequestUrl(force = false) {
        const separator = HELP_CENTER.rawUrl.includes('?') ? '&' : '?';
        const cacheKey = force ? `${SCRIPT.version}-${Date.now()}` : SCRIPT.version;
        return `${HELP_CENTER.rawUrl}${separator}toolkit=${encodeURIComponent(cacheKey)}`;
    }

    function requestHelpGuideDocument(force = false) {
        if (!force && helpGuideDocumentCache) return Promise.resolve(helpGuideDocumentCache);
        if (helpGuideLoadPromise) return helpGuideLoadPromise;
        const url = helpGuideRequestUrl(force);
        helpGuideLoadPromise = new Promise((resolve, reject) => {
            if (runtime.destroyed) {
                reject(new Error('Toolkit runtime stopped.'));
                return;
            }
            const validate = text => {
                const documentText = String(text || '').trim();
                if (!/<!doctype html|<html[\s>]/iu.test(documentText) || !documentText.includes('MissionChief Map Command Toolkit')) {
                    throw new Error('The Help Centre returned an invalid document.');
                }
                helpGuideDocumentCache = documentText;
                helpGuideLoadedAt = Date.now();
                return documentText;
            };
            if (typeof GM_xmlhttpRequest === 'function') {
                let request = null;
                let settled = false;
                const finish = (error, response = null) => {
                    if (settled) return;
                    settled = true;
                    if (request) runtime.requests.delete(request);
                    try {
                        if (error) throw error;
                        if (!response || Number(response.status) < 200 || Number(response.status) >= 300) throw new Error(`Help Centre returned HTTP ${response?.status || 'error'}.`);
                        resolve(validate(response.responseText));
                    } catch (err) {
                        reject(err instanceof Error ? err : new Error('The Help Centre could not be loaded.'));
                    }
                };
                try {
                    request = GM_xmlhttpRequest({
                        method: 'GET', url, timeout: HELP_CENTER.requestTimeoutMs, responseType: 'text',
                        headers: { Accept: 'text/html, text/plain;q=0.9, */*;q=0.8' },
                        onload: response => finish(null, response),
                        onerror: () => finish(new Error('GitHub could not be reached.')),
                        ontimeout: () => finish(new Error('The Help Centre request timed out.')),
                        onabort: () => finish(new Error('The Help Centre request was cancelled.'))
                    });
                    if (!settled && request?.abort) runtime.requests.add(request);
                } catch (err) {
                    finish(err instanceof Error ? err : new Error('The Help Centre request could not be created.'));
                }
                return;
            }
            runtimeFetch(url, { cache: force ? 'reload' : 'default', credentials: 'omit' })
                .then(response => {
                    if (!response.ok) throw new Error(`Help Centre returned HTTP ${response.status}.`);
                    return response.text();
                })
                .then(text => resolve(validate(text)))
                .catch(error => reject(error instanceof Error ? error : new Error('GitHub could not be reached.')));
        }).finally(() => { helpGuideLoadPromise = null; });
        return helpGuideLoadPromise;
    }

    function patchHelpGuideDocument(documentText) {
        let source = String(documentText || '');
        source = source
            .replace(/Guide for Toolkit v\d+\.\d+\.\d+/u, `Guide for Toolkit v${HELP_CENTER.guideVersion}`)
            .replace(/Help Centre for v\d+\.\d+\.\d+/u, `Help Centre for v${HELP_CENTER.guideVersion}`)
            .replace(
                '<div class="card"><h3>Umbrella</h3><p>Sterile biohazard command styling with classified containment panels.</p></div>',
                '<div class="card"><h3>Umbrella Containment</h3><p>Corporate BSL-4 command styling with original transparent emblem, facility schematic, surveillance terminal, specimen vial and containment-division artwork.</p></div>'
            )
            .replace('Biohazard Containment</span>', 'Umbrella Containment</span>')
            .replace(
                'Set a minimum payout threshold, duration, theme, audio state and volume. Use the test amount control before relying on a new setup.',
                'Set a minimum payout threshold, duration, theme, audio state and volume. Umbrella Containment uses the same identity, artwork package and renamed hosted audio as the Umbrella UI theme. Use the test amount control before relying on a new setup.'
            )
            .replace(
                '<li>Presentation titles and particle treatment scale by payout tier.</li>',
                '<li>Presentation titles and particle treatment scale by payout tier.</li><li>Umbrella Containment displays BSL-4 facility, surveillance, corporate emblem and transfer-authorisation artwork.</li>'
            );
        const semanticMarker = '<div class="callout warning"><strong>Protected semantic colours:</strong> clearing, assistance, warning, critical and syncing states retain their operational meaning across every theme.</div>';
        if (!source.includes('Umbrella Containment asset package:') && source.includes(semanticMarker)) {
            source = source.replace(
                semanticMarker,
                '<div class="callout"><strong>Umbrella Containment asset package:</strong> decorative artwork is loaded from the public Toolkit assets repository only while the theme is in use. Missing artwork never blocks the Toolkit, and the graphics do not replace protected operational colours.</div>' + semanticMarker
            );
        }
        if (!source.includes('id="financial-command"')) {
            const financialSection = `<section class="section" id="financial-command" data-title="Discord Financial Command" data-keywords="discord finance archive ledger audit github rules policy deep scan forecast risk capital investment webhook">
<div class="head"><span class="num">19</span><div><h2>Discord Financial Command</h2><p class="summary">MissionChief ledger extraction, daily `/credits/overview` reconciliation, local historical archiving and GitHub-hosted financial intelligence.</p></div></div>
<h3>Supreme financial audit</h3><p>The Discord tab can generate an Executive Brief or a complete Executive + Full Audit report. The audit separates operating income, other income, operating expenditure and capital investment so expansion spending does not automatically make healthy operations look unprofitable.</p>
<div class="grid"><div class="card"><h4>Financial scorecard</h4><p>Revenue, operating efficiency, liquidity, growth investment and audit confidence are scored independently.</p></div><div class="card"><h4>Daily aggregate audit</h4><p>MissionChief Revenue, Spendings and Sum rows verify complete days without double-counting the detailed ledger. Any unresolved variance remains visible.</p></div><div class="card"><h4>Risk intelligence</h4><p>Highlights overview variance, revenue contraction, concentration, aggressive investment, reserve drawdown, low runway and incomplete classification.</p></div><div class="card"><h4>Deep ledger scan</h4><p>All Available History reads every MissionChief credit-ledger page accessible to the account, with retries, progress reporting, safe cancellation and local checkpoint storage.</p></div><div class="card"><h4>GitHub intelligence</h4><p>Classification rules and audit thresholds are downloaded from the public Toolkit assets repository and cached locally. No player ledger or webhook data is uploaded.</p></div></div>
<h3>Player-linked Local Financial Archive</h3><ol class="steps"><li>Keep Local Financial Archive enabled to retain discovered transactions by MissionChief player ID/name.</li><li>Select All Available History or run Deep Scan All Available to extend the archive as far back as MissionChief exposes.</li><li>Use Export Archive and Import Archive to transfer or merge history between your devices without exposing repository credentials.</li><li>Export All also includes the local archive and Discord webhook for complete private recovery.</li><li>GitHub hosts only public rules, audit policy and Toolkit assets; player financial data remains in the browser and private backups.</li></ol>
<div class="call warn"><strong>Private backup:</strong> Export All includes the saved Discord webhook and local financial history. Store the JSON privately; anyone holding it may be able to post through the webhook and inspect the exported game ledger.</div>
</section>`;
            source = source.replace('</main>', `${financialSection}</main>`);
        }
        if (!source.includes('id="economy-mode"')) {
            const economySection = `<section class="section" id="economy-mode" data-title="Economy Mode" data-keywords="economy eco performance low end laptop ram cpu gpu lag leaflet markers">
<div class="head"><span class="num">20</span><div><h2>Economy Mode</h2><p class="summary">A reversible lower-overhead operating policy for large maps and lower-end computers.</p></div></div>
<p>Use the leaf button beside the Toolkit opener to switch Economy Mode on or off. Your normal themes, overlays and feature selections remain saved; Economy Mode temporarily renders and refreshes them more efficiently.</p>
<div class="grid"><div class="card"><h4>Map workload</h4><p>Off-screen vehicle and building layers are detached with a safety buffer, then restored automatically when they enter the current map area or Economy Mode is disabled.</p></div><div class="card"><h4>Rendering</h4><p>Continuous decorative animation, tile-filter chains, backdrop blur and heavy payout particles are replaced by static equivalents while operational colours remain intact.</p></div><div class="card"><h4>Background work</h4><p>Mission, vehicle, building and maintenance refreshes use longer idle intervals. Opening a module, changing a setting or pressing Refresh still requests current data immediately.</p></div><div class="card"><h4>Large panels</h4><p>Long MissionChief lists use browser rendering containment so off-screen rows do not require full layout and painting.</p></div></div>
<div class="call"><strong>Full restoration:</strong> switching Economy Mode off reattaches quarantined layers, restores Leaflet options, map skins, animation and normal scheduler intervals.</div>
</section>`;
            source = source.replace('</main>', `${economySection}</main>`);
        }
        return source;
    }

    function protectHelpGuideDocument(documentText) {
        const navigationGuard = `
<script data-mcms-help-navigation-guard>
(() => {
    'use strict';
    const scrollToGuideSection = rawHref => {
        const href = String(rawHref || '');
        if (!href.startsWith('#')) return false;
        let id = '';
        try { id = decodeURIComponent(href.slice(1)); } catch (error) { id = href.slice(1); }
        const target = id ? document.getElementById(id) : document.documentElement;
        if (!target) return true;
        const reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
        target.scrollIntoView({ behavior: reduceMotion ? 'auto' : 'smooth', block: 'start' });
        return true;
    };
    document.addEventListener('click', event => {
        const link = event.target instanceof Element ? event.target.closest('a[href]') : null;
        if (!link) return;
        const href = link.getAttribute('href') || '';
        if (href.startsWith('#')) {
            event.preventDefault();
            scrollToGuideSection(href);
            return;
        }
        if (/^(?:https?:)?\/\//i.test(href)) {
            event.preventDefault();
            try { window.open(href, '_blank', 'noopener,noreferrer'); } catch (error) {}
        }
    }, true);
})();
\x3C/script>`;
        const source = patchHelpGuideDocument(documentText);
        if (source.includes('data-mcms-help-navigation-guard')) return source;
        if (/<\/body\s*>/iu.test(source)) return source.replace(/<\/body\s*>/iu, `${navigationGuard}</body>`);
        return `${source}${navigationGuard}`;
    }

    function createHelpCenter() {
        const existing = document.getElementById(SCRIPT.helpCenterId);
        if (existing) return existing;
        const overlay = document.createElement('div');
        overlay.id = SCRIPT.helpCenterId;
        overlay.setAttribute('role', 'dialog');
        overlay.setAttribute('aria-modal', 'true');
        overlay.setAttribute('aria-label', `${SCRIPT.name} Help Centre`);
        overlay.setAttribute('aria-hidden', 'true');
        overlay.innerHTML = `
            <div class="mcms-help-window" role="document">
                <div class="mcms-help-toolbar">
                    <div class="mcms-help-brand">
                        <span class="mcms-help-brand-icon" aria-hidden="true">?</span>
                        <span class="mcms-help-brand-copy"><strong>Toolkit Help Centre</strong><small>Searchable guide · hosted on the public Toolkit assets repository</small></span>
                    </div>
                    <div class="mcms-help-actions">
                        <button class="mcms-help-action" type="button" data-help-action="reload" title="Reload the latest guide" aria-label="Reload the latest guide">↻</button>
                        <button class="mcms-help-action mcms-help-source" type="button" data-help-action="source" title="Open the guide source on GitHub" aria-label="Open the guide source on GitHub">↗</button>
                        <button class="mcms-help-action mcms-help-close" type="button" data-help-action="close" title="Close Help Centre" aria-label="Close Help Centre">×</button>
                    </div>
                </div>
                <div class="mcms-help-address"><span class="mcms-help-address-lock" aria-hidden="true">●</span><span class="mcms-help-address-text">github.com/Conroy1988/missionchief-toolkit-assets/help/index.html</span><span class="mcms-help-status" data-help-status>Ready</span></div>
                <div class="mcms-help-progress" aria-hidden="true"></div>
                <div class="mcms-help-content">
                    <iframe class="mcms-help-frame" title="MissionChief Map Command Toolkit searchable guide" sandbox="allow-scripts allow-popups" referrerpolicy="no-referrer"></iframe>
                    <div class="mcms-help-fallback">
                        <div class="mcms-help-error-card">
                            <strong>Help Centre unavailable</strong>
                            <p data-help-error>The public guide could not be loaded. The main Toolkit remains fully operational.</p>
                            <div class="mcms-help-error-actions"><button type="button" data-help-action="reload">Retry</button><button type="button" data-help-action="source">Open GitHub source</button></div>
                        </div>
                    </div>
                </div>
            </div>`;
        runtimeListen(overlay, 'click', event => {
            const actionButton = closestEventTarget(event, '[data-help-action]');
            if (actionButton) {
                event.preventDefault();
                const action = actionButton.dataset.helpAction;
                if (action === 'close') closeHelpCenter();
                if (action === 'reload') loadHelpCenterGuide(true);
                if (action === 'source') {
                    try { pageWindow.open(HELP_CENTER.sourceUrl, '_blank', 'noopener,noreferrer'); } catch (err) { location.href = HELP_CENTER.sourceUrl; }
                }
                return;
            }
            if (event.target === overlay) closeHelpCenter();
        });
        runtimeListen(overlay, 'mousedown', stopMapInteraction);
        runtimeListen(overlay, 'wheel', stopMapInteraction, { passive: true });
        runtimeListen(overlay, 'touchstart', stopMapInteraction, { passive: true });
        document.body.appendChild(overlay);
        return overlay;
    }

    async function loadHelpCenterGuide(force = false) {
        const overlay = createHelpCenter();
        const frame = overlay.querySelector('.mcms-help-frame');
        const status = overlay.querySelector('[data-help-status]');
        const errorText = overlay.querySelector('[data-help-error]');
        overlay.classList.add('mcms-loading');
        overlay.classList.remove('mcms-error');
        if (status) status.textContent = force ? 'Refreshing…' : 'Loading…';
        try {
            const documentText = await requestHelpGuideDocument(force);
            if (!overlay.isConnected || runtime.destroyed) return false;
            frame.srcdoc = protectHelpGuideDocument(documentText);
            overlay.classList.remove('mcms-error');
            if (status) status.textContent = `Guide ${HELP_CENTER.guideVersion} · online`;
            return true;
        } catch (err) {
            if (!overlay.isConnected || runtime.destroyed) return false;
            overlay.classList.add('mcms-error');
            if (status) status.textContent = 'Offline fallback';
            if (errorText) errorText.textContent = `${err?.message || 'The public guide could not be loaded.'} The main Toolkit remains fully operational.`;
            return false;
        } finally {
            overlay.classList.remove('mcms-loading');
        }
    }

    function openHelpCenter() {
        const overlay = createHelpCenter();
        helpCenterReturnFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
        closePanel();
        overlay.classList.add('mcms-open');
        overlay.setAttribute('aria-hidden', 'false');
        document.documentElement.setAttribute('data-mcms-help-open', 'true');
        const closeButton = overlay.querySelector('[data-help-action="close"]');
        runtimeSetTimeout(() => { try { closeButton?.focus({ preventScroll: true }); } catch (err) {} }, 0);
        const frame = overlay.querySelector('.mcms-help-frame');
        if (!frame?.srcdoc) loadHelpCenterGuide(false);
        else {
            const status = overlay.querySelector('[data-help-status]');
            if (status) status.textContent = helpGuideLoadedAt ? `Guide ${HELP_CENTER.guideVersion} · cached` : `Guide ${HELP_CENTER.guideVersion}`;
        }
    }

    function stopMapInteraction(event) {
        event.stopPropagation();
    }

    function isTypingTarget(target) {
        if (!target) return false;
        const tag = String(target.tagName || '').toLowerCase();
        return tag === 'input' || tag === 'textarea' || tag === 'select' || target.isContentEditable;
    }

    function handleKeyboard(event) {
        if (event.key === 'Escape' && closeHelpCenter()) { event.preventDefault(); return; }
        if (event.key === 'Escape') {
            const hadOpenUi = Boolean(
                document.getElementById(SCRIPT.panelId)?.classList.contains('mcms-open') ||
                document.getElementById(SCRIPT.vehicleStatusId)?.classList.contains('mcms-open')
            );
            if (state.cleanMode && state.shortcuts) toggleFeature('clean');
            closePanel({ restoreFocus: hadOpenUi });
            closeVehicleCodeStatus();
            if (hadOpenUi) event.preventDefault();
            return;
        }
        if (!state.shortcuts || isTypingTarget(event.target)) return;
        const key = String(event.key || '').toLowerCase();
        if (!event.ctrlKey && !event.altKey && !event.metaKey && key === 'm') { event.preventDefault(); togglePanel(); return; }
        if (!event.ctrlKey && !event.altKey && !event.metaKey && !event.repeat && /^[1-9]$/.test(event.key)) {
            const visibilityShortcut = {
                '1': 'myMissions',
                '2': 'allianceMissions',
                '3': 'vehicles',
                '4': 'buildings',
                '5': 'allianceCredits',
                '6': 'missionAge',
                '7': 'transportWatcher',
                '8': 'unitCommitment',
            };
            event.preventDefault();
            toggleFeature(visibilityShortcut[event.key]);
            return;
        }
        if (!event.ctrlKey && !event.altKey && !event.metaKey && !event.repeat && key === 'v') { event.preventDefault(); toggleVehicleCodeStatus(); return; }
        if (!event.ctrlKey && !event.altKey && !event.metaKey && key === 'c') { event.preventDefault(); toggleFeature('clean'); return; }
        if (!event.ctrlKey && !event.altKey && !event.metaKey && key === 'f') { event.preventDefault(); toggleFeature('markerFocus'); return; }
        if (!event.ctrlKey && !event.altKey && !event.metaKey && key === 'p') { event.preventDefault(); toggleFeature('missionPulse'); return; }
        if (!event.ctrlKey && !event.altKey && !event.metaKey && key === 'r') { event.preventDefault(); toggleFeature('roadPriority'); }
    }

    function buildThemeOptions(selected) {
        return THEME_ORDER.map(key => `<option value="${key}" ${key === selected ? 'selected' : ''}>${THEMES[key].full}</option>`).join('');
    }

    function makeToggleButton(key, icon, label, title) {
        return `
            <button class="mcms-toggle-btn" type="button" data-toggle="${key}" title="${escapeHtml(title || label)}">
                <span class="mcms-iconbox">${icon}</span>
                <span class="mcms-text">
                    <span class="mcms-label">${escapeHtml(label)}</span>
                    <span class="mcms-pill">OFF</span>
                </span>
            </button>
        `;
    }

    function makeFloatButton(key, shortcut, label, title, tabletLabel = label, mobileLabel = tabletLabel) {
        return `
            <button class="mcms-float-btn" type="button" data-toggle="${key}" title="${escapeHtml(title)}" aria-pressed="false">
                <span class="mcms-float-key">${escapeHtml(shortcut)}</span>
                <span class="mcms-float-label mcms-float-label-desktop">${escapeHtml(label)}</span>
                <span class="mcms-float-label mcms-float-label-tablet">${escapeHtml(tabletLabel)}</span>
                <span class="mcms-float-label mcms-float-label-mobile">${escapeHtml(mobileLabel)}</span>
            </button>
        `;
    }

    function makeActionFloatButton(action, shortcut, label, title, tabletLabel = label, mobileLabel = tabletLabel) {
        return `
            <button class="mcms-float-btn mcms-float-action-btn" type="button" data-action="${escapeHtml(action)}" title="${escapeHtml(title)}" aria-label="${escapeHtml(title)}" aria-keyshortcuts="${escapeHtml(shortcut)}" aria-pressed="false">
                <span class="mcms-float-key">${escapeHtml(shortcut)}</span>
                <span class="mcms-float-label mcms-float-label-desktop">${escapeHtml(label)}</span>
                <span class="mcms-float-label mcms-float-label-tablet">${escapeHtml(tabletLabel)}</span>
                <span class="mcms-float-label mcms-float-label-mobile">${escapeHtml(mobileLabel)}</span>
            </button>
        `;
    }

    // Issue #153: stable live Toolkit version-status control.
    const VERSION_STATUS = Object.freeze({ manifestUrl: 'https://raw.githubusercontent.com/Conroy1988/missionchief-toolkit-assets/main/status/update-manifest.json', cacheKey: 'mcms_version_status_cache_v1', failureKey: 'mcms_version_status_failure_v1', cacheMs: 30 * 60 * 1000, autoIntervalMs: 30 * 60 * 1000, failureCooldownMs: 10 * 60 * 1000, requestTimeoutMs: 8 * 1000, bootDelayMs: 15 * 1000, longPressMs: 650, styleId: 'mcms-version-status-style', buttonId: 'mcms-version-status-control' });
    let versionStatusModel = { state: 'idle', manifest: null, checkedAt: 0, failedAt: 0, error: '' }; let versionStatusCheckPromise = null; let versionStatusHydrationPromise = null; let versionStatusTimer = null; let versionStatusRequest = null; let versionStatusLongPressTimer = null; let versionStatusSuppressClick = false;
    function versionStatusParse(value) { const match = String(value || '').trim().match(/^(\d+)\.(\d+)\.(\d+)$/u); return match ? match.slice(1).map(Number) : null; }
    function versionStatusCompare(left, right) { const a = versionStatusParse(left); const b = versionStatusParse(right); if (!a || !b) return null; for (let index = 0; index < 3; index += 1) { if (a[index] !== b[index]) return a[index] > b[index] ? 1 : -1; } return 0; }
    function versionStatusUrl(value, kind, version) { let url; try { url = new URL(String(value || '')); } catch (err) { throw new Error(`Invalid ${kind} URL.`); } if (url.protocol !== 'https:') throw new Error(`${kind} URL must use HTTPS.`); if (kind === 'release') { const expected = `/Conroy1988/missionchief-toolkit-assets/releases/tag/v${version}`; if (url.hostname !== 'github.com' || url.pathname !== expected) throw new Error('Release URL is not canonical.'); } else if (url.hostname !== 'update.greasyfork.org' || !/^\/scripts\/586018\/.+\.user\.js$/u.test(url.pathname)) throw new Error('Update URL is not canonical.'); return url.href; }
    function versionStatusValidateManifest(payload) { if (!payload || typeof payload !== 'object' || Array.isArray(payload)) throw new Error('Version manifest is not an object.'); if (Number(payload.schemaVersion) !== 1 || payload.channel !== 'stable') throw new Error('Version manifest channel is invalid.'); const version = String(payload.version || '').trim(); if (!versionStatusParse(version)) throw new Error('Version manifest does not contain a stable semantic version.'); return { schemaVersion: 1, channel: 'stable', version, releaseNotesUrl: versionStatusUrl(payload.releaseNotesUrl, 'release', version), updateUrl: versionStatusUrl(payload.updateUrl, 'update', version), publishedAt: String(payload.publishedAt || '') }; }
    function versionStatusPresentation(installedVersion, manifest) { const comparison = versionStatusCompare(manifest?.version, installedVersion); if (comparison === null) throw new Error('Installed or published version is malformed.'); return comparison > 0 ? { state: 'update', destination: manifest.updateUrl } : { state: 'latest', destination: manifest.releaseNotesUrl }; }
    function versionStatusCacheIsFresh(cache, now = Date.now()) { if (!cache || typeof cache !== 'object') return false; const checkedAt = Number(cache.checkedAt); if (!Number.isFinite(checkedAt) || checkedAt > now || now - checkedAt >= VERSION_STATUS.cacheMs) return false; try { versionStatusValidateManifest(cache.manifest); return true; } catch (err) { return false; } }
    function versionStatusFailureCooling(value, now = Date.now()) { const failedAt = Number(value?.failedAt ?? value); return Number.isFinite(failedAt) && failedAt <= now && now - failedAt < VERSION_STATUS.failureCooldownMs; }
    async function versionStatusStorageRead(key) { try { if (typeof GM_getValue === 'function') return await GM_getValue(key, null); } catch (err) {} try { const raw = pageWindow.localStorage?.getItem(key); return raw ? JSON.parse(raw) : null; } catch (err) { return null; } }
    async function versionStatusStorageWrite(key, value) { try { if (typeof GM_setValue === 'function') { await GM_setValue(key, value); return; } } catch (err) {} try { pageWindow.localStorage?.setItem(key, JSON.stringify(value)); } catch (err) {} }
    async function versionStatusStorageDelete(key) { try { if (typeof GM_deleteValue === 'function') { await GM_deleteValue(key); return; } } catch (err) {} try { pageWindow.localStorage?.removeItem(key); } catch (err) {} }
    function versionStatusRender() { const button = document.getElementById(VERSION_STATUS.buttonId); if (!button) return; const installed = SCRIPT.version; const available = versionStatusModel.manifest?.version || ''; const stateName = versionStatusModel.state; const labels = { idle: 'CHECK', checking: 'CHECK', latest: 'LATEST', update: 'UPDATE', error: 'RETRY' }; const label = labels[stateName] || 'CHECK'; button.textContent = ''; button.dataset.label = label; button.dataset.state = stateName; button.setAttribute('aria-busy', String(stateName === 'checking')); let title = `Check Toolkit ${installed} against the verified production release.`; if (stateName === 'checking') title = `Checking Toolkit ${installed} for updates…`; if (stateName === 'latest') title = `Toolkit ${installed} is current — open release notes. Shift-click, right-click or long-press to recheck.`; if (stateName === 'update') title = `Toolkit ${installed} installed; ${available} available — open update page. Shift-click, right-click or long-press to recheck.`; if (stateName === 'error') title = 'Version check unavailable — activate to retry.'; button.title = title; button.setAttribute('aria-label', title); }
    function ensureVersionStatusStyle() { if (document.getElementById(VERSION_STATUS.styleId)) return; const style = document.createElement('style'); style.id = VERSION_STATUS.styleId; style.textContent = `#${VERSION_STATUS.buttonId}{--mcms-version-accent:#6fb7ff;--mcms-version-accent-rgb:111,183,255;box-sizing:border-box!important;position:relative;display:inline-flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:2px!important;align-self:flex-start;flex:0 0 48px!important;width:48px!important;min-width:48px!important;max-width:48px!important;height:48px!important;min-height:48px!important;max-height:48px!important;margin:0!important;padding:4px 3px 3px!important;overflow:hidden!important;border:1px solid rgba(255,255,255,.26)!important;border-radius:9px!important;background:linear-gradient(180deg,rgba(48,53,59,.98) 0%,rgba(15,19,23,.98) 100%)!important;color:#f5f7fa!important;text-align:center!important;text-transform:uppercase!important;white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important;box-shadow:0 3px 9px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.12),0 0 0 1px rgba(var(--mcms-version-accent-rgb),.11)!important;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-tap-highlight-color:transparent}#${VERSION_STATUS.buttonId}::before{content:"•"!important;box-sizing:border-box;display:flex!important;align-items:center!important;justify-content:center!important;flex:0 0 20px!important;width:20px!important;height:20px!important;margin:0!important;padding:0!important;border:1px solid rgba(var(--mcms-version-accent-rgb),.72)!important;border-radius:50%!important;background:rgba(var(--mcms-version-accent-rgb),.16)!important;color:var(--mcms-version-accent)!important;font:900 12px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;letter-spacing:0!important;white-space:nowrap!important;box-shadow:0 0 7px rgba(var(--mcms-version-accent-rgb),.22),inset 0 1px 0 rgba(255,255,255,.1)!important}#${VERSION_STATUS.buttonId}::after{content:attr(data-label)!important;box-sizing:border-box;display:block!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;color:#f5f7fa!important;font:800 7.2px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;letter-spacing:.12px!important;text-align:center!important;text-transform:uppercase!important;white-space:nowrap!important;word-break:keep-all!important;overflow-wrap:normal!important;text-overflow:clip!important}#${VERSION_STATUS.buttonId}:focus-visible{outline:2px solid var(--mcms-version-accent)!important;outline-offset:2px}#${VERSION_STATUS.buttonId}[data-state="latest"]{--mcms-version-accent:#5bd391;--mcms-version-accent-rgb:91,211,145}#${VERSION_STATUS.buttonId}[data-state="latest"]::before{content:"✓"!important}#${VERSION_STATUS.buttonId}[data-state="update"]{--mcms-version-accent:#ffc452;--mcms-version-accent-rgb:255,196,82}#${VERSION_STATUS.buttonId}[data-state="update"]::before{content:"↑"!important}#${VERSION_STATUS.buttonId}[data-state="checking"]{--mcms-version-accent:#76c7ff;--mcms-version-accent-rgb:118,199,255;cursor:progress;opacity:.88}#${VERSION_STATUS.buttonId}[data-state="checking"]::before{content:"…"!important}#${VERSION_STATUS.buttonId}[data-state="error"]{--mcms-version-accent:#ff7e7e;--mcms-version-accent-rgb:255,126,126}#${VERSION_STATUS.buttonId}[data-state="error"]::before{content:"!"!important}html[data-mcms-tablet-active="true"] #${VERSION_STATUS.buttonId}{flex-basis:44px!important;width:44px!important;min-width:44px!important;max-width:44px!important;height:44px!important;min-height:44px!important;max-height:44px!important;padding:3px 2px!important;border-radius:8px!important}html[data-mcms-tablet-active="true"] #${VERSION_STATUS.buttonId}::before{flex-basis:18px!important;width:18px!important;height:18px!important;font-size:11px!important}html[data-mcms-tablet-active="true"] #${VERSION_STATUS.buttonId}::after{font-size:6.7px!important;letter-spacing:0!important}html[data-mcms-mobile-active="true"] #${VERSION_STATUS.buttonId}{flex-basis:46px!important;width:46px!important;min-width:46px!important;max-width:46px!important;height:46px!important;min-height:46px!important;max-height:46px!important;padding:3px 2px!important;border-radius:9px!important}html[data-mcms-mobile-active="true"] #${VERSION_STATUS.buttonId}::before{flex-basis:19px!important;width:19px!important;height:19px!important;font-size:11px!important}html[data-mcms-mobile-active="true"] #${VERSION_STATUS.buttonId}::after{font-size:6.9px!important;letter-spacing:0!important}@media (prefers-reduced-motion:reduce){#${VERSION_STATUS.buttonId}{transition:none!important}}`; (document.head || document.documentElement).appendChild(style); }
    function versionStatusOpen() { const manifest = versionStatusModel.manifest; if (!manifest) { scheduleVersionStatusCheck(0, true); return; } let destination; try { destination = versionStatusPresentation(SCRIPT.version, manifest).destination; } catch (err) { scheduleVersionStatusCheck(0, true); return; } const opened = pageWindow.open(destination, '_blank', 'noopener,noreferrer'); try { if (opened) opened.opener = null; } catch (err) {} }
    function ensureVersionStatusButton() { ensureVersionStatusStyle(); const control = document.getElementById(SCRIPT.controlId); const row = control?.querySelector?.('.mcms-launch-row'); if (!control || !row) return null; let button = document.getElementById(VERSION_STATUS.buttonId); if (button && !control.contains(button)) { button.remove(); button = null; } if (!button) { button = document.createElement('button'); button.id = VERSION_STATUS.buttonId; button.type = 'button'; button.className = 'mcms-version-btn mcms-version-btn--unified'; button.dataset.variant = 'control-family'; button.setAttribute('aria-live', 'polite'); const economy = row.querySelector?.('.mcms-economy-btn') || null; row.insertBefore(button, economy); runtimeListen(button, 'click', event => { event.preventDefault(); if (versionStatusSuppressClick) { versionStatusSuppressClick = false; return; } if (event.shiftKey || versionStatusModel.state === 'idle' || versionStatusModel.state === 'error') { scheduleVersionStatusCheck(0, true); return; } if (versionStatusModel.state !== 'checking') versionStatusOpen(); }); runtimeListen(button, 'contextmenu', event => { event.preventDefault(); scheduleVersionStatusCheck(0, true); }); runtimeListen(button, 'pointerdown', event => { if (event.pointerType === 'mouse') return; runtimeClearTimeout(versionStatusLongPressTimer); versionStatusLongPressTimer = runtimeSetTimeout(() => { versionStatusSuppressClick = true; scheduleVersionStatusCheck(0, true); showToast('Checking Toolkit version…'); }, VERSION_STATUS.longPressMs); }); for (const eventName of ['pointermove', 'pointerup', 'pointercancel']) runtimeListen(button, eventName, () => { runtimeClearTimeout(versionStatusLongPressTimer); versionStatusLongPressTimer = null; }, { passive: true }); } versionStatusRender(); if (!versionStatusHydrationPromise) void hydrateVersionStatus(); return button; }
    async function hydrateVersionStatus() { if (versionStatusHydrationPromise) return versionStatusHydrationPromise; versionStatusHydrationPromise = (async () => { const now = Date.now(); const cache = await versionStatusStorageRead(VERSION_STATUS.cacheKey); if (versionStatusCacheIsFresh(cache, now)) { const manifest = versionStatusValidateManifest(cache.manifest); versionStatusModel = { state: versionStatusPresentation(SCRIPT.version, manifest).state, manifest, checkedAt: Number(cache.checkedAt), error: '' }; versionStatusRender(); return; } const failure = await versionStatusStorageRead(VERSION_STATUS.failureKey); if (versionStatusFailureCooling(failure, now)) { versionStatusModel = { state: 'error', manifest: null, checkedAt: 0, failedAt: Number(failure.failedAt) || now, error: 'cooldown' }; versionStatusRender(); } })().finally(() => { versionStatusHydrationPromise = null; }); return versionStatusHydrationPromise; }
    function versionStatusRequestManifest() { return new Promise((resolve, reject) => { let settled = false; let timeoutTimer = null; const finish = (error, text) => { if (settled) return; settled = true; runtimeClearTimeout(timeoutTimer); if (versionStatusRequest?.abort) runtime.requests?.delete?.(versionStatusRequest); versionStatusRequest = null; if (error) { reject(error); return; } try { resolve(versionStatusValidateManifest(JSON.parse(String(text || '')))); } catch (err) { reject(err instanceof Error ? err : new Error('Version manifest is invalid.')); } }; const url = `${VERSION_STATUS.manifestUrl}?cache_bust=${Date.now()}`; if (typeof GM_xmlhttpRequest === 'function') { try { versionStatusRequest = GM_xmlhttpRequest({ method: 'GET', url, timeout: VERSION_STATUS.requestTimeoutMs, responseType: 'text', headers: { Accept: 'application/json' }, onload: response => Number(response?.status) >= 200 && Number(response?.status) < 300 ? finish(null, response.responseText) : finish(new Error(`Version endpoint returned HTTP ${response?.status || 'error'}.`)), onerror: () => finish(new Error('Version endpoint could not be reached.')), ontimeout: () => finish(new Error('Version check timed out.')), onabort: () => finish(new Error('Version check was cancelled.')) }); if (versionStatusRequest?.abort) runtime.requests?.add?.(versionStatusRequest); } catch (err) { finish(err); } return; } const Controller = pageWindow.AbortController || globalThis.AbortController; const controller = typeof Controller === 'function' ? new Controller() : null; if (controller) runtime.fetchControllers?.add?.(controller); timeoutTimer = runtimeSetTimeout(() => controller?.abort?.(), VERSION_STATUS.requestTimeoutMs); Promise.resolve((pageWindow.fetch || globalThis.fetch).call(pageWindow, url, { cache: 'no-store', credentials: 'omit', signal: controller?.signal, headers: { Accept: 'application/json' } })).then(response => { if (!response.ok) throw new Error(`Version endpoint returned HTTP ${response.status}.`); return response.text(); }).then(text => finish(null, text)).catch(error => finish(error instanceof Error ? error : new Error('Version endpoint could not be reached.'))).finally(() => { if (controller) runtime.fetchControllers?.delete?.(controller); }); }); }
    async function runVersionStatusCheck(force = false) { ensureVersionStatusButton(); if (versionStatusCheckPromise) return versionStatusCheckPromise; versionStatusCheckPromise = (async () => { const now = Date.now(); if (!force) { const cache = await versionStatusStorageRead(VERSION_STATUS.cacheKey); if (versionStatusCacheIsFresh(cache, now)) { const manifest = versionStatusValidateManifest(cache.manifest); versionStatusModel = { state: versionStatusPresentation(SCRIPT.version, manifest).state, manifest, checkedAt: Number(cache.checkedAt), error: '' }; versionStatusRender(); return versionStatusModel; } const failure = await versionStatusStorageRead(VERSION_STATUS.failureKey); if (versionStatusFailureCooling(failure, now)) { versionStatusModel = { state: 'error', manifest: null, checkedAt: 0, failedAt: Number(failure.failedAt) || now, error: 'cooldown' }; versionStatusRender(); return versionStatusModel; } } versionStatusModel = { state: 'checking', manifest: null, checkedAt: 0, error: '' }; versionStatusRender(); try { const manifest = await versionStatusRequestManifest(); const checkedAt = Date.now(); const presentation = versionStatusPresentation(SCRIPT.version, manifest); versionStatusModel = { state: presentation.state, manifest, checkedAt, error: '' }; await versionStatusStorageWrite(VERSION_STATUS.cacheKey, { checkedAt, manifest }); await versionStatusStorageDelete(VERSION_STATUS.failureKey); } catch (err) { const failedAt = Date.now(); versionStatusModel = { state: 'error', manifest: null, checkedAt: 0, failedAt, error: String(err?.message || err || 'failed') }; await versionStatusStorageWrite(VERSION_STATUS.failureKey, { failedAt }); } versionStatusRender(); return versionStatusModel; })().finally(() => { versionStatusCheckPromise = null; }); return versionStatusCheckPromise; }
    function versionStatusAutomaticDelay(now = Date.now()) {
        const current = Number(now) || Date.now();
        if (versionStatusModel.state === 'error') {
            const failedAt = Number(versionStatusModel.failedAt) || 0;
            if (failedAt > 0) {
                const elapsed = Math.max(0, current - failedAt);
                return Math.max(1000, VERSION_STATUS.failureCooldownMs - Math.min(VERSION_STATUS.failureCooldownMs, elapsed));
            }
            return VERSION_STATUS.failureCooldownMs;
        }
        const checkedAt = Number(versionStatusModel.checkedAt) || 0;
        if (checkedAt > 0 && versionStatusModel.manifest) {
            const elapsed = Math.max(0, current - checkedAt);
            return Math.max(1000, VERSION_STATUS.cacheMs - Math.min(VERSION_STATUS.cacheMs, elapsed));
        }
        return VERSION_STATUS.autoIntervalMs;
    }
    function scheduleVersionStatusCheck(delay = VERSION_STATUS.bootDelayMs, force = false) {
        if (runtime.destroyed) return;
        ensureVersionStatusButton();
        if (versionStatusTimer !== null) {
            if (!force && Number(delay) === VERSION_STATUS.bootDelayMs) return;
            runtimeClearTimeout(versionStatusTimer);
        }
        versionStatusTimer = runtimeSetTimeout(async () => {
            versionStatusTimer = null;
            if (runtime.destroyed) return;
            if (!force && document.visibilityState === 'hidden') return;
            try {
                await runVersionStatusCheck(force);
            } finally {
                if (!runtime.destroyed && document.visibilityState !== 'hidden') {
                    scheduleVersionStatusCheck(versionStatusAutomaticDelay(), false);
                }
            }
        }, Math.max(0, Number(delay) || 0));
    }
    function disposeVersionStatus() { runtimeClearTimeout(versionStatusTimer); runtimeClearTimeout(versionStatusLongPressTimer); versionStatusTimer = null; versionStatusLongPressTimer = null; try { versionStatusRequest?.abort?.(); } catch (err) {} versionStatusRequest = null; document.getElementById(VERSION_STATUS.buttonId)?.remove(); document.getElementById(VERSION_STATUS.styleId)?.remove(); }

    function createCleanExit() {
        if (document.getElementById(SCRIPT.cleanExitId)) return;
        const button = document.createElement('button');
        button.id = SCRIPT.cleanExitId;
        button.type = 'button';
        button.textContent = 'Exit Clean Mode';
        button.title = 'Exit clean mode. Shortcut: C or Esc.';
        button.addEventListener('click', () => toggleFeature('clean'));
        document.body.appendChild(button);
    }

    function createControl(mapEl) {
        const primaryMap = toolkitPrimaryMapElement(mapEl, document);
        const host = toolkitControlHost(primaryMap, document);
        if (!host) return null;
        const existing = document.getElementById(SCRIPT.controlId);
        if (existing) {
            if (existing.parentElement !== host) host.appendChild(existing);
            existing.classList.toggle('mcms-control-fallback', !primaryMap);
            toolkitApplyCommandBarState(existing);
            return existing;
        }
        const control = document.createElement('div');
        control.id = SCRIPT.controlId;
        control.className = 'mcms-control';
        control.setAttribute('aria-label', `${SCRIPT.name} control`);
        control.innerHTML = `
            <div class="mcms-launch-row">
                <div class="mcms-shell">
                    <button class="mcms-menu-btn" type="button" title="Open or close toolkit settings" aria-label="Open or close toolkit settings" aria-expanded="false" aria-controls="${SCRIPT.panelId}">🗺️</button>
                    <button class="mcms-dock-toggle-btn" type="button" title="Collapse command bar" aria-label="Collapse command bar" aria-expanded="true"><span class="mcms-dock-toggle-icon" aria-hidden="true">▴</span></button>
                </div>
                <button class="mcms-economy-btn" type="button" data-action="toggle-economy" title="Enable Economy Mode" aria-label="Enable Economy Mode" aria-pressed="false"><span aria-hidden="true">🍃</span><small>ECO</small></button>
            </div>
            <div class="mcms-floating-filter" title="Persistent map visibility filters">
                ${makeFloatButton('myMissions', '1', 'Personal', 'Show/hide confidently detected personal missions. Shortcut: 1', 'Personal', 'Mine')}
                ${makeFloatButton('allianceMissions', '2', 'Alliance', 'Show/hide confidently detected alliance missions. Shortcut: 2', 'Alliance', 'Ally')}
                ${makeFloatButton('vehicles', '3', 'Vehicles', 'Show/hide confidently detected vehicles. Shortcut: 3', 'Vehicles', 'Units')}
                ${makeFloatButton('buildings', '4', 'Buildings', 'Show/hide confidently detected buildings/stations. Shortcut: 4', 'Buildings', 'Bldgs')}
                ${makeFloatButton('allianceCredits', '5', 'Ally Cred', 'Show/hide approximate credit values beside alliance mission markers. Shortcut: 5', 'Ally Credits', 'Ally £')}
                ${makeFloatButton('missionAge', '6', 'Miss Age', 'Show personal mission age with progressive 8H amber, 16H orange and 24H red severity. Shortcut: 6', 'Mission Age', 'Age')}
                ${makeFloatButton('transportWatcher', '7', 'Transport', 'Show/hide amber transport-required watchers beside missions. Shortcut: 7', 'Transport', 'Trans')}
                ${makeFloatButton('unitCommitment', '8', 'Unit Count', 'Show your committed units beside missions. Shortcut: 8', 'Unit Count', 'Count')}
                ${makeActionFloatButton('open-vehicle-status', 'V', 'Veh Codes', 'Open or close Vehicle Code Status. Shortcut: V', 'Veh Codes', 'Codes')}
            </div>
            <div class="mcms-screen-pins" title="Pinned screen shortcuts"></div>
        `;
        ['click', 'dblclick', 'mousedown', 'mouseup', 'pointerdown', 'pointerup', 'pointercancel', 'touchstart', 'touchmove', 'touchend', 'wheel', 'contextmenu'].forEach(eventName => {
            control.addEventListener(eventName, stopMapInteraction, { passive: false });
        });
        let screenPinLongPressTimer = 0;
        let screenPinLongPressButton = null;
        const cancelScreenPinLongPress = () => {
            runtimeClearTimeout(screenPinLongPressTimer);
            screenPinLongPressTimer = 0;
            screenPinLongPressButton = null;
        };
        control.addEventListener('pointerdown', event => {
            const pinButton = closestEventTarget(event, '.mcms-screen-pin-btn[data-full-label]');
            if (!pinButton || event.pointerType === 'mouse') return;
            cancelScreenPinLongPress();
            screenPinLongPressButton = pinButton;
            screenPinLongPressTimer = runtimeSetTimeout(() => {
                if (screenPinLongPressButton !== pinButton) return;
                pinButton.dataset.mcmsLongPress = 'true';
                showToast(pinButton.dataset.fullLabel || pinButton.textContent || 'Bookmark');
            }, 560);
        });
        control.addEventListener('pointermove', cancelScreenPinLongPress, { passive: true });
        control.addEventListener('pointercancel', cancelScreenPinLongPress, { passive: true });
        control.addEventListener('pointerup', () => {
            runtimeClearTimeout(screenPinLongPressTimer);
            screenPinLongPressTimer = 0;
            screenPinLongPressButton = null;
        }, { passive: true });
        control.addEventListener('click', event => {
            const menuButton = closestEventTarget(event, '.mcms-menu-btn');
            const dockToggleButton = closestEventTarget(event, '.mcms-dock-toggle-btn');
            const toggleButton = closestEventTarget(event, '[data-toggle]');
            const actionButton = closestEventTarget(event, '[data-action]');
            if (actionButton?.dataset.mcmsLongPress === 'true') {
                delete actionButton.dataset.mcmsLongPress;
                event.preventDefault();
                return;
            }
            if (menuButton) { togglePanel(); return; }
            if (dockToggleButton) { toggleCommandBar(); return; }
            if (toggleButton) { toggleFeature(toggleButton.dataset.toggle); return; }
            if (actionButton) handleAction(actionButton);
        });
        control.addEventListener('contextmenu', event => { event.preventDefault(); openPanel(); });
        toolkitApplyCommandBarState(control);
        host.appendChild(control);
        control.classList.toggle('mcms-control-fallback', !primaryMap);
        renderScreenPins();
        updateUI();
        return control;
    }

    function createPanel() {
        const existingPanel = document.getElementById(SCRIPT.panelId);
        if (existingPanel) { settingsPanelActivated = true; return existingPanel; }
        const panelStartedAt = startupClock();
        settingsPanelActivated = true;
        const panel = document.createElement('div');
        panel.id = SCRIPT.panelId;
        panel.setAttribute('role', 'dialog');
        panel.setAttribute('aria-modal', 'false');
        panel.setAttribute('aria-hidden', 'true');
        panel.setAttribute('aria-label', `${SCRIPT.name} menu`);
        const buildUiThemeButtons = () => UI_THEME_ORDER.map(key => {
            const theme = UI_THEMES[key];
            return `
                <button class="mcms-ui-theme-btn" type="button" data-ui-theme="${key}" title="${escapeHtml(theme.description)}" aria-pressed="false">
                    <span class="mcms-ui-theme-preview mcms-ui-theme-preview-${key}" aria-hidden="true"><span></span><span></span><span></span></span>
                    <span class="mcms-ui-theme-copy"><strong>${escapeHtml(theme.label)}</strong><small>${escapeHtml(theme.short)}</small></span>
                </button>
            `;
        }).join('');
        const buildThemeButtons = keys => keys.map(key => {
            const theme = THEMES[key];
            return `
                <button class="mcms-theme-btn" type="button" data-theme="${key}" title="${theme.full}">
                    <span class="mcms-iconbox">${theme.icon}</span>
                    <span class="mcms-text">
                        <span class="mcms-label">${theme.label}</span>
                        <span class="mcms-pill">${theme.short}</span>
                    </span>
                </button>
            `;
        }).join('');
        const uiThemeButtons = buildUiThemeButtons();
        const coreThemeButtons = buildThemeButtons(CORE_THEME_ORDER);
        const serviceThemeButtons = buildThemeButtons(SERVICE_THEME_ORDER);
        const positionButtons = Object.entries(POSITIONS).map(([key, pos]) => `<button class="mcms-position-btn" type="button" data-position="${key}" title="${pos.label}">${pos.short}</button>`).join('');
        panel.innerHTML = `
            <div class="mcms-panel-sticky-stack">
                <div class="mcms-header">
                    <div class="mcms-drag-handle" title="Hold left-click and drag this bar to move the menu">
                        <span class="mcms-title">☰ DRAG MENU HERE</span>
                        <span class="mcms-subtitle">Hold left-click on this title area. Position saves.</span>
                    </div>
                    <button class="mcms-reset-panel" type="button" data-action="panel-reset" title="Reset menu position">↺</button>
                    <button class="mcms-help-button" type="button" data-action="open-help-center" title="Open searchable Help Centre" aria-label="Open searchable Help Centre">?</button>
                    <button class="mcms-close" type="button" title="Close">×</button>
                </div>
                <div class="mcms-tabs">
                    <button class="mcms-tab-btn" type="button" data-tab="skins">Skins</button>
                    <button class="mcms-tab-btn" type="button" data-tab="tools">Tools</button>
                    <button class="mcms-tab-btn" type="button" data-tab="resources">Resources</button>
                    <button class="mcms-tab-btn" type="button" data-tab="ops">Ops</button>
                    <button class="mcms-tab-btn" type="button" data-tab="payouts">Payouts</button>
                    <button class="mcms-tab-btn" type="button" data-tab="discord">Finance</button>
                    <button class="mcms-tab-btn" type="button" data-tab="places">Places</button>
                    <button class="mcms-tab-btn" type="button" data-tab="settings">Settings</button>
                </div>
            </div>
            <section class="mcms-tab-panel" data-panel="skins">
                <div class="mcms-section-label">Interface theme</div>
                <div class="mcms-ui-theme-grid">${uiThemeButtons}</div>
                <div class="mcms-status mcms-ui-theme-status">Interface themes restyle the complete toolkit without changing your selected operational map skin.</div>
                <div class="mcms-section-label">Core skins</div>
                <div class="mcms-grid-2">${coreThemeButtons}</div>
                <div class="mcms-section-label">Emergency services</div>
                <div class="mcms-grid-2">${serviceThemeButtons}</div>
                <div class="mcms-status">Fire Command, Police Tactical, Medical Control and Coastal Command use lightweight local tile filters and remain compatible with map overlays.</div>
            </section>
            <section class="mcms-tab-panel" data-panel="tools">
                <div class="mcms-section-label">Map tools</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('clean', '▢', 'Clean', 'Hide map controls for screenshots. Shortcut: C')}
                    ${makeToggleButton('markerFocus', '◉', 'Focus', 'Dim detected buildings/vehicles and keep missions clearer. Shortcut: F')}
                    ${makeToggleButton('missionPulse', '✦', 'Pulse', 'Pulse detected mission markers. Shortcut: P')}
                    ${makeToggleButton('roadPriority', '═', 'Roads+', 'Increase road contrast. Shortcut: R')}
                    ${makeToggleButton('coverage', '◎', 'Rings', 'Draw coverage rings around detected buildings/stations.')}
                </div>
                <div class="mcms-row" style="margin-top:8px">
                    <span class="mcms-row-label">Ring radius</span>
                    <select class="mcms-select" data-setting="coverage-radius">
                        <option value="5">5 miles</option><option value="10">10 miles</option><option value="25">25 miles</option><option value="50">50 miles</option>
                    </select>
                </div>
                <div class="mcms-section-label">Map performance</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('allianceBuildingsMapBlocker', '▦', 'Alliance Map Blocker', 'Blocks the heavy map in the Alliance Buildings/Courses menu. ON means blocked. Reload required.')}
                </div>
                <div class="mcms-status"><strong>Map Blocker ON</strong> removes the Alliance Buildings map, expands the courses list and prevents its heavy marker layer attaching.</div>
                <div class="mcms-section-label">Map visibility · shortcuts 1–9 · dashboards V/W</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('myMissions', '1', 'Personal Missions', 'Show/hide confidently detected personal missions. Shortcut: 1')}
                    ${makeToggleButton('allianceMissions', '2', 'Alliance Missions', 'Show/hide confidently detected alliance missions. Shortcut: 2')}
                    ${makeToggleButton('vehicles', '3', 'Vehicles', 'Show/hide confidently detected vehicles. Shortcut: 3')}
                    ${makeToggleButton('buildings', '4', 'Buildings', 'Show/hide confidently detected buildings/stations. Shortcut: 4')}
                    ${makeToggleButton('allianceCredits', '5', 'Ally Cred', 'Show/hide approximate credit values beside alliance mission markers. Shortcut: 5')}
                    ${makeToggleButton('missionAge', '6', 'Miss Age', 'Show personal mission age with progressive 8H amber, 16H orange and 24H red severity. Shortcut: 6')}
                    ${makeToggleButton('transportWatcher', '7', 'Transport Watcher', 'Show amber transport-required badges beside personal and alliance missions. Shortcut: 7')}
                    ${makeToggleButton('unitCommitment', '8', 'Unit Count', 'Show your committed units beside personal and alliance missions. Shortcut: 8')}
                </div>
                <div class="mcms-row" style="margin-top:8px"><span class="mcms-row-label">Ally Credits filter</span><select class="mcms-select" data-setting="alliance-credit-minimum"><option value="0">All values</option><option value="5000">5K+</option><option value="10000">10K+</option><option value="15000">15K+</option><option value="20000">20K+</option></select></div>
                <div class="mcms-status">Ready.</div>
            </section>
            <section class="mcms-tab-panel" data-panel="resources">
                <div class="mcms-section-label">Co-admin Patient Transport Sweep</div>
                <div class="mcms-grid-2">
                    <button class="mcms-small-btn" type="button" data-action="scan-transport-sweep">Scan Transports</button>
                    <button class="mcms-small-btn" type="button" data-action="start-transport-sweep">Start Sweep</button>
                    <button class="mcms-small-btn" type="button" data-action="stop-transport-sweep">Stop</button>
                </div>
                <div class="mcms-row"><span class="mcms-row-label">Delay between clears</span><select class="mcms-select" data-setting="transport-sweep-delay"><option value="1500">1.5 seconds</option><option value="2000">2 seconds</option><option value="2500">2.5 seconds</option><option value="3000">3 seconds</option><option value="4000">4 seconds</option><option value="5000">5 seconds</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Maximum per run</span><input class="mcms-input" type="number" min="1" max="50" step="1" data-setting="transport-sweep-max"></div>
                <div data-transport-sweep></div>
                <div class="mcms-status">Manual start only. The sweep excludes your personal vehicle IDs, checks every non-personal FMS 5 patient vehicle in each affected alliance mission, and only clears a vehicle when MissionChief exposes the visible <b>Discharge patient</b> button. Prisoner transports are not included.</div>
                <div class="mcms-section-label">Resource Gap Finder</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('resourceGap', '⚠', 'Resource Gap', 'Show missing-resource badges and nearby available-unit estimates on the map and opened missions.')}
                </div>
                <div class="mcms-row"><span class="mcms-row-label">Nearby radius</span><select class="mcms-select" data-setting="resource-gap-radius"><option value="10">10 miles</option><option value="25">25 miles</option><option value="50">50 miles</option><option value="100">100 miles</option></select></div>
                <div class="mcms-status">Resource Gap uses MissionChief's missing-requirement text and performs best-effort matching against your currently available vehicle types. It never selects or dispatches units.</div>
                <div class="mcms-section-label">Vehicle loading</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('autoLoadAllVehicles', '⇊', 'Auto-load all vehicles', 'Automatically activates MissionChief’s native Load more vehicles control inside an opened mission.')}
                </div>
                <div class="mcms-status">Transport Watcher and Unit Count remain under Tools as the canonical map-overlay controls for shortcuts 7 and 8.</div>
            </section>
            <section class="mcms-tab-panel" data-panel="ops">
                <div class="mcms-section-label">Mission Intelligence</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('missionValue', '£', 'Mission Value', 'Show a formatted mission value in opened MissionChief windows.')}
                    ${makeToggleButton('customVehicleBadges', '▣', 'Custom Vehicle Badges', 'Show custom vehicle categories in available vehicles list.')}
                    ${makeToggleButton('stuckDetector', '⚠', 'Stuck Detect', 'Flag personal or joined missions that show no meaningful progress.')}
                    ${makeToggleButton('missionSpawn', '◎', 'New Mission', 'Animate genuinely new mission spawns with a radar pulse.')}
                    ${makeToggleButton('majorIncidentFeed', '▰', 'Incident Feed', 'Show the theme-aware major incident ticker in the top status bar. Hover pauses; click a mission to zoom.')}
                    ${makeToggleButton('missionLockAudio', '⌁', 'Tracking Audio', 'Play a short synthesized tracking cue during mission zoom and target acquisition.')}
                    <button class="mcms-toggle-btn mcms-action-btn" type="button" data-action="open-vehicle-status" title="Open or close a live table of personal vehicles grouped by MissionChief status code. Shortcut: V">
                        <span class="mcms-iconbox">V</span>
                        <span class="mcms-text"><span class="mcms-label">Vehicle Codes</span><span class="mcms-pill">VIEW</span></span>
                    </button>
                </div>
                <div class="mcms-row"><span class="mcms-row-label">Stuck after</span><select class="mcms-select" data-setting="stuck-threshold"><option value="10">10 minutes</option><option value="15">15 minutes</option><option value="20">20 minutes</option><option value="30">30 minutes</option><option value="45">45 minutes</option><option value="60">60 minutes</option></select></div>
                <div class="mcms-status">Stuck detection resets its timer whenever missing requirements, patients, prisoners, progress value or your assigned-unit state changes.</div>
                <div class="mcms-section-label">Session Performance</div>
                <div data-ops-session></div>
                <div class="mcms-section-label">Completion History</div>
                <div class="mcms-ops-list" data-ops-history></div>
                <div class="mcms-grid-2" style="margin-top:7px !important">
                    <button class="mcms-small-btn" type="button" data-action="reset-session">Reset Session</button>
                    <button class="mcms-small-btn" type="button" data-action="clear-payout-history">Clear History</button>
                </div>
            </section>
            <section class="mcms-tab-panel" data-panel="payouts">
                <div class="mcms-section-label">Emergency Payout Flash</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('payoutFlash', '🚨', 'Payout Flash', 'Flash the map red and blue when a single credit gain reaches the configured threshold.')}
                    ${makeToggleButton('payoutSound', '♪', 'Theme Audio', 'Play the selected template completion cue. Vice City, Bad Company, Scarface and Cyberpunk use hosted MP3 cashout sounds; other templates retain synthesized cues.')}
                </div>
                <div class="mcms-row"><span class="mcms-row-label">Banner style</span><select class="mcms-select" data-setting="payout-template">${buildPayoutTemplateOptions(state.payoutFlash.template)}</select></div>
                <div class="mcms-row"><span class="mcms-row-label">Minimum payout</span><input class="mcms-input" type="number" min="1000" step="1000" data-setting="payout-threshold"></div>
                <div class="mcms-row"><span class="mcms-row-label">Flash duration (sec)</span><input class="mcms-input" type="number" min="2" max="30" step="2" data-setting="payout-duration"></div>
                <div class="mcms-row"><span class="mcms-row-label">Sound volume</span><input class="mcms-input" type="range" min="0" max="1" step="0.05" data-setting="payout-volume"></div>
                <div class="mcms-row"><span class="mcms-row-label">Test payout tier</span><select class="mcms-select" data-setting="payout-test-amount"><option value="10000">10K Standard</option><option value="25000">25K Major</option><option value="50000">50K High Value</option><option value="100000">100K Elite</option></select></div>
                <button class="mcms-small-btn" style="width:100% !important;margin-bottom:8px !important" type="button" data-action="test-payout-flash">Test Emergency Flash</button>
                <div class="mcms-status">Vice City Inspired, Bad Company Inspired, Scarface Inspired and Cyberpunk Inspired use hosted cashout MP3s from your public GitHub asset repository. Other templates retain synthesized cues. Enable Theme Audio, set the volume, then use Test Emergency Flash.</div>
            </section>
            <section class="mcms-tab-panel" data-panel="discord">
                <div class="mcms-section-label">Discord Financial Command</div>
                <div class="mcms-row mcms-discord-wide"><span class="mcms-row-label">Webhook URL</span><input class="mcms-input" type="password" autocomplete="off" spellcheck="false" data-setting="discord-webhook" placeholder="https://discord.com/api/webhooks/..."></div>
                <div class="mcms-row mcms-discord-wide"><span class="mcms-row-label">Webhook name</span><input class="mcms-input" type="text" maxlength="80" data-setting="discord-name" value="MissionChief Finance"></div>
                <div class="mcms-row"><span class="mcms-row-label">Report format</span><select class="mcms-select" data-setting="discord-report-mode"><option value="fullAudit">Executive + Full Audit</option><option value="executive">Executive Brief Only</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Report period</span><select class="mcms-select" data-setting="discord-period"><option value="today">Today</option><option value="yesterday">Yesterday</option><option value="last24">Last 24 Hours</option><option value="last7">Last 7 Days</option><option value="last30">Last 30 Days</option><option value="last90">Last 90 Days</option><option value="last180">Last 180 Days</option><option value="last365">Last 365 Days</option><option value="allAvailable">All Available History</option><option value="session">Current Session</option><option value="sinceLast">Since Last Report</option><option value="custom">Custom Dates</option></select></div>
                <div class="mcms-discord-date-grid">
                    <div class="mcms-row"><span class="mcms-row-label">From</span><input class="mcms-input" type="date" data-setting="discord-custom-start"></div>
                    <div class="mcms-row"><span class="mcms-row-label">To</span><input class="mcms-input" type="date" data-setting="discord-custom-end"></div>
                </div>
                <div class="mcms-row"><span class="mcms-row-label">Breakdown depth</span><select class="mcms-select" data-setting="discord-top-categories"><option value="3">Top 3</option><option value="5">Top 5</option><option value="8">Top 8</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Previous-period comparison</span><select class="mcms-select" data-setting="discord-comparison"><option value="true">Included</option><option value="false">Disabled</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Risk intelligence</span><select class="mcms-select" data-setting="discord-risk"><option value="true">Included</option><option value="false">Disabled</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Forecast intelligence</span><select class="mcms-select" data-setting="discord-forecast"><option value="true">Included</option><option value="false">Disabled</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Discord chart image</span><select class="mcms-select" data-setting="discord-chart"><option value="true">Attach chart</option><option value="false">Text only</option></select></div>
                <div class="mcms-grid-2">
                    <button class="mcms-small-btn" type="button" data-action="discord-test">Test Connection</button>
                    <button class="mcms-small-btn" type="button" data-action="discord-clear">Clear Webhook</button>
                </div>
                <button class="mcms-small-btn" style="width:100% !important;margin-top:7px !important" type="button" data-action="discord-generate-post">Generate & Post Audit</button>
                <div class="mcms-status mcms-discord-status" data-discord-status data-tone="neutral">Select a reporting period, then generate and post the financial intelligence report.</div>

                <div class="mcms-section-label">Player-Linked Local Financial Archive</div>
                <div class="mcms-row"><span class="mcms-row-label">Local historical archive</span><select class="mcms-select" data-setting="finance-vault-enabled"><option value="true">Enabled</option><option value="false">Disabled</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">History retention</span><select class="mcms-select" data-setting="finance-vault-retention"><option value="all">All available</option><option value="1825">5 years</option><option value="730">2 years</option><option value="365">1 year</option><option value="180">180 days</option><option value="90">90 days</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">GitHub intelligence feeds</span><select class="mcms-select" data-setting="finance-rule-feed"><option value="true">Automatic rules + policy</option><option value="false">Built-in intelligence only</option></select></div>
                <div class="mcms-grid-2">
                    <button class="mcms-small-btn" type="button" data-action="finance-archive-scan">Deep Scan All Available</button>
                    <button class="mcms-small-btn" type="button" data-action="finance-archive-cancel">Stop Scan</button>
                    <button class="mcms-small-btn" type="button" data-action="finance-archive-export">Export Archive</button>
                    <button class="mcms-small-btn" type="button" data-action="finance-archive-import">Import Archive</button>
                </div>
                <button class="mcms-small-btn" style="width:100% !important;margin-top:7px !important" type="button" data-action="finance-rules-refresh">Refresh Financial Intelligence</button>
                <button class="mcms-small-btn" style="width:100% !important;margin-top:7px !important" type="button" data-action="finance-archive-clear">Clear Player Archive</button>
                <input class="mcms-hidden-file" type="file" accept="application/json,text/json,.json" data-import-finance-file>
                <div class="mcms-finance-vault-summary" data-finance-vault-summary></div>
                <div class="mcms-status mcms-discord-status" data-finance-vault-status data-tone="neutral">Local Financial Archive ready.</div>
                <div class="mcms-status mcms-discord-status" data-finance-rule-status data-tone="neutral">Built-in financial intelligence active.</div>
                <div class="mcms-status">GitHub hosts public transaction-classification rules and audit policy only. The Toolkit never uploads player ledger data, Discord webhooks or repository credentials. The local archive is indexed by MissionChief player ID/name and can be transferred between devices using Export Archive / Import Archive or the complete private Toolkit backup.</div>
                <div class="mcms-status mcms-finance-private-note">Private backup warning: Export All includes your Discord webhook and locally stored MissionChief financial history. Anyone holding the file may post through the webhook and inspect the exported game ledger.</div>
            </section>
            <section class="mcms-tab-panel" data-panel="places">
                <div class="mcms-section-label">Quick jumps + screen shortcuts</div>
                <div class="mcms-quick-list"></div>
                <div class="mcms-section-label">Custom bookmarks + screen shortcuts</div>
                <div class="mcms-bookmark-list"></div>
                <div class="mcms-section-label">Saved Map Profiles</div>
                <div class="mcms-profile-list" data-profile-list></div>
                <div class="mcms-status">Profiles store your map location, zoom, skin, visibility filters and Toolkit overlays.</div>
            </section>
            <section class="mcms-tab-panel" data-panel="settings">
                <div class="mcms-section-label">Device layout</div>
                <div class="mcms-row"><span class="mcms-row-label">Mobile Mode · iOS Safari</span><select class="mcms-select" data-setting="mobile-mode"><option value="auto">Auto detect iPhone</option><option value="on">Always on</option><option value="off">Always off</option></select></div>
                <div class="mcms-row"><span class="mcms-row-label">Tablet Mode</span><select class="mcms-select" data-setting="tablet-mode"><option value="auto">Auto detect</option><option value="on">Always on</option><option value="off">Always off</option></select></div>
                <div class="mcms-status" data-device-layout-status>Detecting device layout…</div>
                <div class="mcms-status">Mobile Mode is tuned for iPhone Safari with Tampermonkey: a map-aware 5×2 command grid in portrait, a compact single-row dock where space allows, full-width safe-area bottom sheets, 16px form controls to prevent Safari input zoom, and Visual Viewport handling for the iOS keyboard. Tablet and desktop layouts remain separate and unchanged.</div>
                <div class="mcms-section-label">Dock position</div>
                <div class="mcms-position-grid">${positionButtons}</div>
                <div class="mcms-desktop-position-controls">
                    <div class="mcms-section-label">Fine nudge</div>
                    <div class="mcms-nudge-grid">
                        <button class="mcms-small-btn" type="button" data-action="nudge-left">←</button>
                        <button class="mcms-small-btn" type="button" data-action="nudge-up">↑</button>
                        <button class="mcms-small-btn" type="button" data-action="nudge-down">↓</button>
                        <button class="mcms-small-btn" type="button" data-action="nudge-right">→</button>
                        <button class="mcms-small-btn" type="button" data-action="nudge-reset">0</button>
                    </div>
                    <div class="mcms-status mcms-nudge-value">X 0 / Y 0</div>
                    <div class="mcms-section-label">Menu panel</div>
                    <div class="mcms-nudge-grid">
                        <button class="mcms-small-btn" type="button" data-action="panel-left">←</button>
                        <button class="mcms-small-btn" type="button" data-action="panel-up">↑</button>
                        <button class="mcms-small-btn" type="button" data-action="panel-down">↓</button>
                        <button class="mcms-small-btn" type="button" data-action="panel-right">→</button>
                        <button class="mcms-small-btn" type="button" data-action="panel-reset">↺</button>
                    </div>
                </div>
                <div class="mcms-section-label">Input</div>
                <div class="mcms-grid-2">
                    ${makeToggleButton('shortcuts', '⌨', 'Keys', 'Keyboard shortcuts on/off. Map tools: 1–8. Vehicle Codes: V. Menu: M.')}
                </div>
                <div class="mcms-row"><span class="mcms-row-label">Major incident threshold</span><select class="mcms-select" data-setting="major-incident-minimum"><option value="10000">10,000+ credits</option><option value="25000">25,000+ credits</option><option value="50000">50,000+ credits</option><option value="100000">100,000+ credits</option></select></div>
                <div class="mcms-section-label">Economy Mode</div>
                <div class="mcms-status mcms-economy-status">Use the leaf button beside the map-menu opener. Economy Mode preserves every module while reducing animations, map-layer pressure and background refresh frequency.</div>
                <div class="mcms-section-label">Settings Backup</div>
                <div class="mcms-config-actions">
                    <button class="mcms-small-btn" type="button" data-action="export-config" title="Export every toolkit setting, private integration, profile, bookmark and Financial Archive history" aria-label="Export all toolkit settings">Export All</button>
                    <button class="mcms-small-btn" type="button" data-action="import-config" title="Import a current or legacy toolkit settings backup" aria-label="Import all toolkit settings">Import All</button>
                    <button class="mcms-small-btn" type="button" data-action="reset-config">Reset</button>
                </div>
                <input class="mcms-hidden-file" type="file" accept="application/json,text/json,.json" data-import-config-file>
                <div class="mcms-status">Backups include every persistent toolkit preference, desktop/Tablet/iOS layout choice, profile, bookmark, saved Discord webhook and local Financial Archive history. A clear private-file warning is shown before export and import. Store the JSON securely. Current and legacy toolkit backup files are supported.</div>
            </section>
            <div class="mcms-footer">
                <span>Audited runtime: compact Smart Bookmark Labels, responsive modes and every interface theme remain fully preserved.</span>
                <span class="mcms-build">${SCRIPT.name} v${SCRIPT.version} · MIT · ${SCRIPT.author}</span>
            </div>
        `;
        const tabList = panel.querySelector('.mcms-tabs');
        if (tabList) tabList.setAttribute('role', 'tablist');
        panel.querySelectorAll('.mcms-tab-btn').forEach(button => {
            const tab = button.dataset.tab;
            button.id = `mcms-tab-${tab}`;
            button.setAttribute('role', 'tab');
            button.setAttribute('aria-controls', `mcms-tabpanel-${tab}`);
            button.setAttribute('aria-selected', 'false');
            button.tabIndex = -1;
        });
        panel.querySelectorAll('.mcms-tab-panel').forEach(tabPanel => {
            const tab = tabPanel.dataset.panel;
            tabPanel.id = `mcms-tabpanel-${tab}`;
            tabPanel.setAttribute('role', 'tabpanel');
            tabPanel.setAttribute('aria-labelledby', `mcms-tab-${tab}`);
            tabPanel.hidden = true;
        });
        panel.addEventListener('keydown', event => {
            const current = closestEventTarget(event, '.mcms-tab-btn');
            if (!current || !['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return;
            const buttons = Array.from(panel.querySelectorAll('.mcms-tab-btn'));
            const currentIndex = Math.max(0, buttons.indexOf(current));
            const nextIndex = event.key === 'Home' ? 0
                : event.key === 'End' ? buttons.length - 1
                : (currentIndex + (event.key === 'ArrowRight' ? 1 : -1) + buttons.length) % buttons.length;
            event.preventDefault();
            const nextButton = buttons[nextIndex];
            setActiveTab(nextButton.dataset.tab);
            nextButton.focus({ preventScroll: true });
        });
        panel.addEventListener('click', event => {
            const closeButton = closestEventTarget(event, '.mcms-close');
            const tabButton = closestEventTarget(event, '.mcms-tab-btn');
            const uiThemeButton = closestEventTarget(event, '.mcms-ui-theme-btn');
            const themeButton = closestEventTarget(event, '.mcms-theme-btn');
            const toggleButton = closestEventTarget(event, '[data-toggle]');
            const positionButton = closestEventTarget(event, '.mcms-position-btn');
            const actionButton = closestEventTarget(event, '[data-action]');
            if (closeButton) { closePanel({ restoreFocus: true }); return; }
            if (tabButton) { setActiveTab(tabButton.dataset.tab); return; }
            if (uiThemeButton) { applyUiTheme(uiThemeButton.dataset.uiTheme, true); return; }
            if (themeButton) { applyTheme(themeButton.dataset.theme, true); return; }
            if (toggleButton) { toggleFeature(toggleButton.dataset.toggle); return; }
            if (positionButton) { applyPosition(positionButton.dataset.position, true); return; }
            if (actionButton) {
                event.preventDefault();
                handleAction(actionButton);
                return;
            }
        });
        panel.addEventListener('change', event => handleSettingChange(event.target));
        const dragHandle = panel.querySelector('.mcms-drag-handle');
        if (dragHandle) {
            dragHandle.addEventListener('mousedown', startPanelDrag, true);
            dragHandle.addEventListener('touchstart', startPanelDrag, { capture: true, passive: false });
        }
        ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'wheel', 'contextmenu', 'touchstart', 'touchmove', 'touchend'].forEach(eventName => {
            panel.addEventListener(eventName, event => event.stopPropagation(), { passive: false });
        });
        document.body.appendChild(panel);
        const importInput = panel.querySelector('[data-import-config-file]');
        if (importInput) {
            importInput.addEventListener('change', () => {
                const file = importInput.files?.[0];
                if (file) importToolkitConfigFile(file);
                importInput.value = '';
            });
        }
        const financeImportInput = panel.querySelector('[data-import-finance-file]');
        if (financeImportInput) {
            financeImportInput.addEventListener('change', () => {
                const file = financeImportInput.files?.[0];
                if (file) importFinancialArchiveFile(file);
                financeImportInput.value = '';
            });
        }
        renderQuickPlaces();
        renderBookmarks();
        renderProfiles();
        updateUI();
        recordStartupMetric('settingsPanelBuildMs', panelStartedAt, { settingsPanelLazy: true });
        return panel;
    }

    function renderQuickPlaces() {
        const list = document.querySelector(`#${SCRIPT.panelId} .mcms-quick-list`);
        if (!list) return;
        list.innerHTML = QUICK_PLACES.map(place => `
            <div class="mcms-quick-row">
                <button class="mcms-place-main" type="button" data-action="place-go" data-place="${place.id}" title="Jump to ${escapeHtml(place.name)}">
                    <span class="mcms-iconbox">⌖</span><span class="mcms-text"><span class="mcms-label">${escapeHtml(place.name)}</span><span class="mcms-pill">${place.label}</span></span>
                </button>
                <button class="mcms-pin-btn ${state.quickPins[place.id] ? 'mcms-on' : ''}" type="button" data-action="quick-pin" data-place="${place.id}" title="Pin as persistent screen shortcut">${state.quickPins[place.id] ? 'ON' : 'PIN'}</button>
            </div>
        `).join('');
    }

    function renderBookmarks() {
        const list = document.querySelector(`#${SCRIPT.panelId} .mcms-bookmark-list`);
        if (!list) return;
        list.innerHTML = state.bookmarks.map((bookmark, index) => {
            if (!bookmark) {
                return `<div class="mcms-bookmark-row"><span class="mcms-bookmark-name">Slot ${index + 1} empty</span><span></span><span></span><button class="mcms-bookmark-btn" type="button" data-action="bookmark-save" data-slot="${index}">Save</button><span></span></div>`;
            }
            const screenLabel = bookmarkScreenLabel(bookmark);
            const labelMode = bookmark.shortLabel ? 'CUSTOM' : 'AUTO';
            const labelTitle = `${bookmark.name} · Screen label: ${screenLabel} (${labelMode.toLowerCase()})`;
            return `
                <div class="mcms-bookmark-row">
                    <button class="mcms-bookmark-name mcms-bookmark-name-btn" type="button" data-action="bookmark-label" data-slot="${index}" title="${escapeHtml(labelTitle)}" aria-label="Edit ${escapeHtml(bookmark.name)} name and short label">
                        <span class="mcms-bookmark-name-main">${escapeHtml(bookmark.name)}</span>
                        <span class="mcms-bookmark-short">${escapeHtml(screenLabel)} · ${labelMode}</span>
                    </button>
                    <button class="mcms-bookmark-btn" type="button" data-action="bookmark-go" data-slot="${index}">Go</button>
                    <button class="mcms-pin-btn ${bookmark.pinned ? 'mcms-on' : ''}" type="button" data-action="bookmark-pin" data-slot="${index}" title="Pin as persistent screen shortcut">${bookmark.pinned ? 'ON' : 'PIN'}</button>
                    <button class="mcms-bookmark-btn" type="button" data-action="bookmark-save" data-slot="${index}" title="Update this bookmark from the current map view">Save</button>
                    <button class="mcms-bookmark-btn" type="button" data-action="bookmark-delete" data-slot="${index}">×</button>
                </div>`;
        }).join('');
    }

    function renderScreenPins() {
        const dock = document.querySelector(`#${SCRIPT.controlId} .mcms-screen-pins`);
        if (!dock) return;
        const entries = [];
        for (const place of QUICK_PLACES) {
            if (!state.quickPins[place.id]) continue;
            entries.push({
                kind: 'quick',
                id: place.id,
                fullName: place.name,
                baseLabel: sanitiseBookmarkShortLabel(place.label) || makeSmartBookmarkLabel(place.name)
            });
        }
        state.bookmarks.forEach((bookmark, index) => {
            if (!bookmark || !bookmark.pinned) return;
            entries.push({
                kind: 'bookmark',
                index,
                fullName: bookmark.name,
                baseLabel: bookmarkScreenLabel(bookmark)
            });
        });
        dock.innerHTML = resolveScreenPinLabels(entries).map(entry => {
            const action = entry.kind === 'quick'
                ? `data-action="place-go" data-place="${escapeHtml(entry.id)}"`
                : `data-action="bookmark-go" data-slot="${entry.index}"`;
            const className = entry.kind === 'quick' ? 'mcms-pin-quick' : 'mcms-pin-custom';
            return `<button class="mcms-screen-pin-btn ${className}" type="button" ${action} data-full-label="${escapeHtml(entry.fullName)}" data-smart-label="${escapeHtml(entry.label)}" title="Jump to ${escapeHtml(entry.fullName)}" aria-label="Jump to ${escapeHtml(entry.fullName)}">${escapeHtml(entry.label)}</button>`;
        }).join('');
        if (isTouchLayoutActive()) fitControlToMap();
    }

    function handleAction(button) {
        const action = button.dataset.action;
        if (action === 'place-go') {
            const place = QUICK_PLACES.find(item => item.id === button.dataset.place);
            if (place && setMapView(place.lat, place.lng, place.zoom)) showToast(place.name);
            return;
        }
        if (action === 'quick-pin') { toggleQuickPin(button.dataset.place); return; }
        if (action === 'bookmark-save') { saveBookmark(Number(button.dataset.slot)); return; }
        if (action === 'bookmark-label') { editBookmarkLabel(Number(button.dataset.slot)); return; }
        if (action === 'bookmark-go') { goBookmark(Number(button.dataset.slot)); return; }
        if (action === 'bookmark-delete') { deleteBookmark(Number(button.dataset.slot)); return; }
        if (action === 'bookmark-pin') { toggleBookmarkPin(Number(button.dataset.slot)); return; }
        if (action === 'nudge-left') { nudgeControl(-4, 0); return; }
        if (action === 'nudge-right') { nudgeControl(4, 0); return; }
        if (action === 'nudge-up') { nudgeControl(0, -4); return; }
        if (action === 'nudge-down') { nudgeControl(0, 4); return; }
        if (action === 'nudge-reset') { resetNudge(); return; }
        if (action === 'panel-left') { nudgePanel(-24, 0); return; }
        if (action === 'panel-right') { nudgePanel(24, 0); return; }
        if (action === 'panel-up') { nudgePanel(0, -24); return; }
        if (action === 'panel-down') { nudgePanel(0, 24); return; }
        if (action === 'open-help-center') { openHelpCenter(); return; }
        if (action === 'toggle-economy') { setEconomyMode(!state.economyMode, true); return; }
        if (action === 'open-vehicle-status') { toggleVehicleCodeStatus(); return; }
        if (action === 'scan-transport-sweep') { const queue = buildTransportSweepQueue(); showToast(queue.length ? `${queue.length} transport mission${queue.length === 1 ? '' : 's'} found` : 'No alliance patient transports found'); return; }
        if (action === 'start-transport-sweep') { startTransportSweep(); return; }
        if (action === 'stop-transport-sweep') { stopTransportSweep(); return; }
        if (action === 'reset-session') { resetSessionPerformance(); return; }
        if (action === 'clear-payout-history') { clearPayoutHistory(); return; }
        if (action === 'profile-save') { saveMapProfile(Number(button.dataset.slot)); return; }
        if (action === 'profile-load') { loadMapProfile(Number(button.dataset.slot)); return; }
        if (action === 'profile-delete') { deleteMapProfile(Number(button.dataset.slot)); return; }
        if (action === 'export-config') { exportToolkitConfig(); return; }
        if (action === 'import-config') { document.querySelector(`#${SCRIPT.panelId} [data-import-config-file]`)?.click?.(); return; }
        if (action === 'reset-config') { resetToolkitConfiguration(); return; }
        if (action === 'discord-test') { testDiscordWebhook(); return; }
        if (action === 'discord-generate-post') { postDiscordFinancialReport(); return; }
        if (action === 'discord-clear') { clearDiscordWebhook(); return; }
        if (action === 'finance-archive-scan') { scanFinancialArchive(); return; }
        if (action === 'finance-archive-cancel') { cancelFinancialArchiveScan(); return; }
        if (action === 'finance-archive-export') { exportFinancialArchive(); return; }
        if (action === 'finance-archive-import') { document.querySelector(`#${SCRIPT.panelId} [data-import-finance-file]`)?.click?.(); return; }
        if (action === 'finance-archive-clear') { clearFinancialArchive(); return; }
        if (action === 'finance-rules-refresh') { refreshFinancialIntelligenceFeeds(true).then(() => { renderFinanceVaultStatus(); showToast('GitHub financial intelligence refreshed'); }); return; }
        if (action === 'test-payout-flash') {
            const testAmount = Math.max(1000, Number(document.querySelector(`#${SCRIPT.panelId} [data-setting="payout-test-amount"]`)?.value) || state.payoutFlash.threshold);
            const triggered = triggerPayoutFlash(testAmount, true, { source: 'personal', caption: 'Emergency Response Test' });
            showToast(triggered ? 'Emergency flash test' : 'Emergency flash unavailable: map not detected');
            return;
        }
        if (action === 'panel-reset') resetPanelPosition();
    }
    function handleDiscordFinancialSettingChange(target, setting) {
        if (setting === 'discord-webhook') {
            try {
                saveDiscordWebhookUrl(target.value);
                setDiscordStatus(target.value ? 'Webhook saved securely in Tampermonkey storage.' : 'Webhook removed.', 'good');
            } catch (err) {
                setDiscordStatus(err?.message || 'Webhook URL is invalid.', 'bad');
            }
            return true;
        }
        if (setting === 'discord-name') {
            state.discordReport.webhookName = String(target.value || 'MissionChief Finance').trim().slice(0, 80) || 'MissionChief Finance';
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-top-categories') {
            state.discordReport.topCategories = [3, 5, 8].includes(Number(target.value)) ? Number(target.value) : 5;
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-period') {
            state.discordReport.period = ['today', 'yesterday', 'last24', 'last7', 'last30', 'last90', 'last180', 'last365', 'allAvailable', 'session', 'sinceLast', 'custom'].includes(target.value) ? target.value : 'today';
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-custom-start' || setting === 'discord-custom-end') {
            const key = setting === 'discord-custom-start' ? 'customStart' : 'customEnd';
            if (/^\d{4}-\d{2}-\d{2}$/u.test(String(target.value || ''))) state.discordReport[key] = String(target.value);
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-comparison') {
            state.discordReport.includeComparison = String(target.value) !== 'false';
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-chart') {
            state.discordReport.includeChart = String(target.value) !== 'false';
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-report-mode') {
            state.discordReport.reportMode = ['executive', 'fullAudit'].includes(String(target.value)) ? String(target.value) : 'fullAudit';
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'discord-risk' || setting === 'discord-forecast') {
            const key = setting === 'discord-risk' ? 'includeRisk' : 'includeForecast';
            state.discordReport[key] = String(target.value) !== 'false';
            invalidateDiscordFinancialPreview();
            saveState(); updateUI();
            return true;
        }
        if (setting === 'finance-vault-enabled') {
            state.financialVault.enabled = String(target.value) !== 'false';
            saveState(); updateUI();
            setFinanceVaultStatus(state.financialVault.enabled ? 'Local Financial Archive enabled.' : 'Local Financial Archive disabled; reports will scan MissionChief directly without retaining history.', 'neutral');
            return true;
        }
        if (setting === 'finance-vault-retention') {
            state.financialVault.retentionDays = String(target.value) === 'all' ? 'all' : ([90, 180, 365, 730, 1825].includes(Number(target.value)) ? Number(target.value) : 'all');
            saveState(); updateUI(); renderFinanceVaultStatus();
            return true;
        }
        if (setting === 'finance-rule-feed') {
            state.financialVault.ruleFeedEnabled = String(target.value) !== 'false';
            saveState();
            refreshFinancialIntelligenceFeeds(true).then(() => { updateUI(); renderFinanceVaultStatus(); });
            return true;
        }
        return false;
    }
    function handleDeviceLayoutSettingChange(target, setting) {
        const nextValue = ['auto', 'on', 'off'].includes(String(target.value)) ? String(target.value) : 'auto';
        const previousLayout = activeDeviceLayout;
        if (setting === 'mobile-mode') {
            state.mobileMode = nextValue;
            if (nextValue === 'on') state.tabletMode = 'off';
        } else if (setting === 'tablet-mode') {
            state.tabletMode = nextValue;
            if (nextValue === 'on') state.mobileMode = 'off';
        } else return false;
        saveState();
        applyRootAttributes();
        refreshTabletModeUi();
        if (previousLayout !== activeDeviceLayout && !isTouchLayoutActive()) {
            clearTabletPanelSizing();
            clearTabletDockSizing();
        }
        fitControlToMap();
        positionPanelOverlay(true);
        showToast(activeDeviceLayout === 'mobile' ? 'iOS Mobile Mode active' : activeDeviceLayout === 'tablet' ? 'Tablet Mode active' : 'Desktop layout active');
        return true; }
    function handleSettingChange(target) {
        const setting = target.dataset.setting;
        if (!setting) return;
        if (handleDeviceLayoutSettingChange(target, setting)) return;
        if (setting === 'major-incident-minimum') {
            state.majorIncidentFeed.minimumCredits = MAJOR_INCIDENT_FEED_MINIMUM_OPTIONS.includes(Number(target.value)) ? Number(target.value) : 25000;
            saveState();
            updateUI();
            refreshMissionSnapshots();
            scheduleMajorIncidentFeedRender(0);
            showToast(`Major Incident Feed: ${formatOperationalCompactCredits(state.majorIncidentFeed.minimumCredits)}+ credits`);
            return;
        }
        if (setting === 'coverage-radius') {
            state.coverage.radiusMi = Number(target.value) || 10;
            saveState();
            updateUI();
            scheduleCoverageRefresh();
            return;
        }
        if (setting === 'transport-sweep-delay') {
            state.transportSweep.delayMs = TRANSPORT_SWEEP_DELAY_OPTIONS.includes(Number(target.value)) ? Number(target.value) : 2000;
            saveState(); updateUI();
            showToast(`Transport Sweep delay: ${state.transportSweep.delayMs / 1000}s`);
            return;
        }
        if (setting === 'transport-sweep-max') {
            state.transportSweep.maxPerRun = Math.round(clamp(target.value, 1, TRANSPORT_SWEEP_MAX_REQUESTS, 25));
            saveState(); updateUI();
            showToast(`Transport Sweep maximum: ${state.transportSweep.maxPerRun}`);
            return;
        }
        if (setting === 'resource-gap-radius') {
            state.resourceGap.radiusMi = RESOURCE_GAP_RADIUS_OPTIONS.includes(Number(target.value)) ? Number(target.value) : 25;
            resourceGapAnalysisCache.clear();
            showToast(`Resource Gap radius: ${state.resourceGap.radiusMi}mi`);
            return;
        }
        if (setting === 'stuck-threshold') {
            state.stuckDetector.thresholdMin = Math.round(clamp(target.value, STUCK_MIN_MINUTES, STUCK_MAX_MINUTES, 20));
            saveState();
            updateUI();
            scheduleStuckMissionRefresh(0);
            showToast(`Stuck missions: ${state.stuckDetector.thresholdMin} minutes`);
            return;
        }
        if (setting === 'alliance-credit-minimum') {
            state.allianceCreditMinimum = [0, 5000, 10000, 15000, 20000].includes(Number(target.value)) ? Number(target.value) : 0;
            saveState();
            updateUI();
            scheduleAllianceCreditRefresh(0);
            showToast(state.allianceCreditMinimum ? `Alliance credits: ${state.allianceCreditMinimum / 1000}K+` : 'Alliance credits: all values');
            return;
        }
        if (handleDiscordFinancialSettingChange(target, setting)) return;
        if (setting === 'payout-template') {
            state.payoutFlash.template = PAYOUT_TEMPLATES[target.value] ? target.value : 'gta5';
            disposePayoutMediaAudio();
            saveState();
            updateUI();
            const hostedCue = PAYOUT_MEDIA_SOUNDS[state.payoutFlash.template];
            showToast(hostedCue
                ? `${payoutTemplateMeta(state.payoutFlash.template).label} · ${hostedCue.label} ready`
                : `${payoutTemplateMeta(state.payoutFlash.template).label} payout template`);
            return;
        }
        if (setting === 'payout-threshold') {
            state.payoutFlash.threshold = Math.round(clamp(target.value, 1000, 1000000000, 10000));
            saveState();
            updateUI();
            showToast(`Payout flash: ${state.payoutFlash.threshold.toLocaleString()}+`);
            return;
        }
        if (setting === 'payout-duration') {
            state.payoutFlash.durationMs = normalisePayoutFlashDuration(Number(target.value) * 1000);
            saveState();
            updateUI();
            showToast(`Payout flash: ${state.payoutFlash.durationMs / 1000} seconds`);
            return;
        }
        if (setting === 'payout-volume') {
            state.payoutFlash.soundVolume = clamp(target.value, 0, 1, 0.35);
            if (payoutMediaAudio && !payoutMediaAudio.paused) payoutMediaAudio.volume = state.payoutFlash.soundVolume;
            saveState();
            updateUI();
            return;
        }
        if (setting === 'payout-test-amount') return;
    }
    function updateUI() {
        applyRootAttributes();
        if (state.majorIncidentFeed.enabled && operationalStartupComplete) scheduleMajorIncidentFeedRender(40);
        else if (!state.majorIncidentFeed.enabled) removeMajorIncidentFeed();
        const control = document.getElementById(SCRIPT.controlId);
        const panel = document.getElementById(SCRIPT.panelId);
        if (control) {
            for (const pos of Object.keys(POSITIONS)) control.classList.toggle(`mcms-pos-${pos}`, state.position === pos);
            control.style.setProperty('--mcms-nudge-x', `${state.nudge.x}px`);
            control.style.setProperty('--mcms-nudge-y', `${state.nudge.y}px`);
            toolkitApplyCommandBarState(control);
            const controlToggleValues = {
                allianceMissions: state.visibility.allianceMissions,
                myMissions: state.visibility.myMissions,
                vehicles: state.visibility.vehicles,
                buildings: state.visibility.buildings,
                allianceCredits: state.allianceCredits,
                missionAge: state.missionAge,
                transportWatcher: state.transportWatcher,
                unitCommitment: state.unitCommitment,
            };
            control.querySelectorAll('[data-toggle]').forEach(btn => {
                const on = Boolean(controlToggleValues[btn.dataset.toggle]);
                btn.classList.toggle('mcms-on', on);
                btn.setAttribute('aria-pressed', String(on));
                btn.dataset.mcmsState = on ? 'on' : 'off';
            });
            const vehicleStatusButton = control.querySelector('[data-action="open-vehicle-status"]');
            if (vehicleStatusButton) {
                const open = Boolean(document.getElementById(SCRIPT.vehicleStatusId)?.classList?.contains('mcms-open'));
                vehicleStatusButton.classList.toggle('mcms-on', open);
                vehicleStatusButton.setAttribute('aria-pressed', String(open));
                vehicleStatusButton.dataset.mcmsState = open ? 'on' : 'off';
            }
            const economyButton = control.querySelector('.mcms-economy-btn');
            if (economyButton) {
                const on = Boolean(state.economyMode);
                const label = on ? 'Disable Economy Mode' : 'Enable Economy Mode';
                economyButton.classList.toggle('mcms-on', on);
                economyButton.setAttribute('aria-pressed', String(on));
                economyButton.setAttribute('aria-label', label);
                economyButton.title = label;
                economyButton.dataset.mcmsState = on ? 'on' : 'off';
            }
            const dockToggleButton = control.querySelector('.mcms-dock-toggle-btn');
            if (dockToggleButton) {
                const open = state.commandBarOpen !== false;
                const label = open ? 'Collapse command bar' : 'Expand command bar';
                dockToggleButton.classList.toggle('mcms-open', open);
                dockToggleButton.setAttribute('aria-expanded', String(open));
                dockToggleButton.setAttribute('aria-label', label);
                dockToggleButton.title = label;
                const icon = dockToggleButton.querySelector('.mcms-dock-toggle-icon');
                if (icon) icon.textContent = open ? '▴' : '▾';
            }
        }
        if (!panel) return;
        refreshTabletModeUi(panel);
        panel.querySelectorAll('.mcms-tab-btn').forEach(btn => {
            const active = btn.dataset.tab === state.activeTab;
            btn.classList.toggle('mcms-active', active);
            btn.setAttribute('aria-selected', String(active));
            btn.tabIndex = active ? 0 : -1;
        });
        panel.querySelectorAll('.mcms-tab-panel').forEach(tabPanel => {
            const active = tabPanel.dataset.panel === state.activeTab;
            tabPanel.classList.toggle('mcms-active', active);
            tabPanel.hidden = !active;
        });
        const panelOpen = panel.classList.contains('mcms-open');
        panel.setAttribute('aria-hidden', String(!panelOpen));
        control?.querySelector('.mcms-menu-btn')?.setAttribute('aria-expanded', String(panelOpen));
        panel.querySelectorAll('.mcms-ui-theme-btn').forEach(btn => {
            const active = btn.dataset.uiTheme === state.uiTheme;
            btn.classList.toggle('mcms-active', active);
            btn.setAttribute('aria-pressed', String(active));
        });
        panel.querySelectorAll('.mcms-theme-btn').forEach(btn => btn.classList.toggle('mcms-active', btn.dataset.theme === state.theme));
        panel.querySelectorAll('.mcms-position-btn').forEach(btn => btn.classList.toggle('mcms-active', btn.dataset.position === state.position));
        const toggleValues = {
            clean: state.cleanMode,
            markerFocus: state.markerFocus,
            missionPulse: state.missionPulse,
            roadPriority: state.roadPriority,
            coverage: state.coverage.enabled,
            shortcuts: state.shortcuts,
            autoLoadAllVehicles: state.autoLoadAllVehicles,
            allianceBuildingsMapBlocker: state.allianceBuildingsMap === false,
            majorIncidentFeed: state.majorIncidentFeed.enabled,
            missionLockAudio: state.missionLockAudio,
            payoutFlash: state.payoutFlash.enabled,
            payoutSound: state.payoutFlash.soundEnabled,
            missionValue: state.missionValue,
            customVehicleBadges: state.customVehicleBadges,
            stuckDetector: state.stuckDetector.enabled,
            missionSpawn: state.missionSpawn.enabled,
            resourceGap: state.resourceGap.enabled,
            allianceMissions: state.visibility.allianceMissions,
            myMissions: state.visibility.myMissions,
            vehicles: state.visibility.vehicles,
            buildings: state.visibility.buildings,
            allianceCredits: state.allianceCredits,
            missionAge: state.missionAge,
            transportWatcher: state.transportWatcher,
            unitCommitment: state.unitCommitment,
        };
        panel.querySelectorAll('[data-toggle]').forEach(btn => {
            const key = btn.dataset.toggle;
            const on = Boolean(toggleValues[key]);
            btn.classList.toggle('mcms-on', on);
            const pill = btn.querySelector('.mcms-pill');
            if (pill) pill.textContent = key === 'coverage' ? (on ? `${state.coverage.radiusMi}mi` : 'OFF') : (on ? 'ON' : 'OFF');
        });
        const majorIncidentMinimum = panel.querySelector('[data-setting="major-incident-minimum"]');
        if (majorIncidentMinimum) majorIncidentMinimum.value = String(state.majorIncidentFeed.minimumCredits);
        const radius = panel.querySelector('[data-setting="coverage-radius"]');
        if (radius) radius.value = String(state.coverage.radiusMi);
        const allianceCreditMinimum = panel.querySelector('[data-setting="alliance-credit-minimum"]');
        if (allianceCreditMinimum) allianceCreditMinimum.value = String(state.allianceCreditMinimum);
        const transportSweepDelay = panel.querySelector('[data-setting="transport-sweep-delay"]');
        if (transportSweepDelay) transportSweepDelay.value = String(state.transportSweep.delayMs);
        const transportSweepMax = panel.querySelector('[data-setting="transport-sweep-max"]');
        if (transportSweepMax) transportSweepMax.value = String(state.transportSweep.maxPerRun);
        if (panel.classList.contains('mcms-open') && state.activeTab === 'resources') renderTransportSweepPanel();
        const payoutTemplate = panel.querySelector('[data-setting="payout-template"]');
        if (payoutTemplate) payoutTemplate.value = state.payoutFlash.template;
        const resourceGapRadius = panel.querySelector('[data-setting="resource-gap-radius"]'); if (resourceGapRadius) resourceGapRadius.value = String(state.resourceGap.radiusMi);
        const stuckThreshold = panel.querySelector('[data-setting="stuck-threshold"]');
        if (stuckThreshold) stuckThreshold.value = String(state.stuckDetector.thresholdMin);
        const payoutThreshold = panel.querySelector('[data-setting="payout-threshold"]');
        if (payoutThreshold) payoutThreshold.value = String(state.payoutFlash.threshold);
        const payoutDuration = panel.querySelector('[data-setting="payout-duration"]');
        if (payoutDuration) payoutDuration.value = String(state.payoutFlash.durationMs / 1000);
        const payoutVolume = panel.querySelector('[data-setting="payout-volume"]');
        if (payoutVolume) payoutVolume.value = String(state.payoutFlash.soundVolume);
        const discordWebhook = panel.querySelector('[data-setting="discord-webhook"]');
        if (discordWebhook && document.activeElement !== discordWebhook) discordWebhook.value = getDiscordWebhookUrl();
        const discordName = panel.querySelector('[data-setting="discord-name"]');
        if (discordName && document.activeElement !== discordName) discordName.value = state.discordReport.webhookName;
        const discordTopCategories = panel.querySelector('[data-setting="discord-top-categories"]');
        if (discordTopCategories) discordTopCategories.value = String(state.discordReport.topCategories);
        const discordPeriod = panel.querySelector('[data-setting="discord-period"]');
        if (discordPeriod) discordPeriod.value = state.discordReport.period;
        const discordCustomStart = panel.querySelector('[data-setting="discord-custom-start"]');
        if (discordCustomStart && document.activeElement !== discordCustomStart) discordCustomStart.value = state.discordReport.customStart;
        const discordCustomEnd = panel.querySelector('[data-setting="discord-custom-end"]');
        if (discordCustomEnd && document.activeElement !== discordCustomEnd) discordCustomEnd.value = state.discordReport.customEnd;
        const discordComparison = panel.querySelector('[data-setting="discord-comparison"]');
        if (discordComparison) discordComparison.value = String(state.discordReport.includeComparison);
        const discordChart = panel.querySelector('[data-setting="discord-chart"]');
        if (discordChart) discordChart.value = String(state.discordReport.includeChart);
        const discordReportMode = panel.querySelector('[data-setting="discord-report-mode"]');
        if (discordReportMode) discordReportMode.value = state.discordReport.reportMode;
        const discordRisk = panel.querySelector('[data-setting="discord-risk"]');
        if (discordRisk) discordRisk.value = String(state.discordReport.includeRisk);
        const discordForecast = panel.querySelector('[data-setting="discord-forecast"]');
        if (discordForecast) discordForecast.value = String(state.discordReport.includeForecast);
        const financeVaultEnabled = panel.querySelector('[data-setting="finance-vault-enabled"]');
        if (financeVaultEnabled) financeVaultEnabled.value = String(state.financialVault.enabled);
        const financeVaultRetention = panel.querySelector('[data-setting="finance-vault-retention"]');
        if (financeVaultRetention) financeVaultRetention.value = String(state.financialVault.retentionDays);
        const financeRuleFeed = panel.querySelector('[data-setting="finance-rule-feed"]');
        if (financeRuleFeed) financeRuleFeed.value = String(state.financialVault.ruleFeedEnabled);
        setDiscordStatus(discordFinanceStatus, discordFinanceStatusTone);
        if (panel.classList.contains('mcms-open') && state.activeTab === 'discord') renderFinanceVaultStatus();
        const economyStatus = panel.querySelector('.mcms-economy-status');
        if (economyStatus) economyStatus.textContent = state.economyMode
            ? 'Economy Mode is ON: static visual effects, adaptive refresh intervals and off-screen vehicle/building layer culling are active.'
            : 'Economy Mode is OFF. Use the leaf button beside the map-menu opener to reduce CPU, GPU and marker workload.';
        const nudge = panel.querySelector('.mcms-nudge-value');
        if (nudge) nudge.textContent = `X ${state.nudge.x} / Y ${state.nudge.y}`;
        if (panel.classList.contains('mcms-open') && state.activeTab === 'settings') renderProfiles();
        if ((panel.classList.contains('mcms-open') && state.activeTab === 'ops') || operationalUiIsVisible()) renderOperationalPanels();
    }
    function ensureUi() {
        if (!toolkitTopLevelDocument(document)) return true;
        const discoveredMap = getLargestLeafletMap();
        const mapEl = toolkitPrimaryMapElement(discoveredMap, document);
        const control = createControl(mapEl);
        if (settingsPanelActivated && !document.getElementById(SCRIPT.panelId)) createPanel();
        if (control) ensureVersionStatusButton();
        if (mapEl) {
            const map = findLeafletMapInstance(false);
            if (state.economyMode && map) { applyLeafletEconomyPolicy(map); scheduleEconomyLayerSync(0); }
            if (state.majorIncidentFeed.enabled && operationalStartupComplete) scheduleMajorIncidentFeedRender(0);
            else if (!state.majorIncidentFeed.enabled) removeMajorIncidentFeed();
            const payoutOverlay = document.getElementById(SCRIPT.payoutFlashId);
            if (payoutOverlay?.classList.contains('mcms-payout-active')) positionPayoutFlashOverlay(payoutOverlay, mapEl);
        }
        toolkitApplyCommandBarState(control);
        return Boolean(control || document.getElementById(SCRIPT.controlId));
    }

    function mutationBelongsToToolkit(mutation) {
        const target = mutation.target;
        const toolkitTarget = Boolean(
            target &&
            target.nodeType === 1 &&
            (
                target.id === SCRIPT.controlId ||
                target.id === SCRIPT.panelId ||
                target.id === SCRIPT.toastId ||
                target.id === SCRIPT.payoutFlashId ||
                target.id === SCRIPT.vehicleStatusId ||
                target.id === SCRIPT.majorIncidentFeedId ||
                target.closest?.(`#${SCRIPT.controlId}`) ||
                target.closest?.(`#${SCRIPT.panelId}`) ||
                target.closest?.(`#${SCRIPT.toastId}`) ||
                target.closest?.(`#${SCRIPT.payoutFlashId}`) ||
                target.closest?.(`#${SCRIPT.vehicleStatusId}`) ||
                target.closest?.(`#${SCRIPT.majorIncidentFeedId}`) ||
                false
            )
        );
        if (toolkitTarget) return true;
        if (mutation.type === 'attributes' && mutation.attributeName === 'class' && target?.classList) {
            for (const className of target.classList) {
                if (String(className).startsWith('mcms-')) return true;
            }
        }
        const toolkitSelector = '.mcms-alliance-credit-icon, .mcms-alliance-credit-badge, .mcms-mission-age-icon, .mcms-mission-age-badge, .mcms-unit-commitment-icon, .mcms-unit-commitment-badge, .mcms-transport-watcher-icon, .mcms-transport-watcher-badge, .mcms-resource-gap-icon, .mcms-resource-gap-badge, .mcms-stuck-mission-icon, .mcms-stuck-mission-badge, .mcms-mission-spawn-label-icon, .mcms-mission-spawn-label';
        let elementCount = 0;
        for (const collection of [mutation.addedNodes, mutation.removedNodes]) {
            if (!collection?.length) continue;
            for (const node of collection) {
                if (!node || node.nodeType !== 1) continue;
                elementCount += 1;
                if (!(node.matches?.(toolkitSelector) || node.querySelector?.(toolkitSelector))) return false;
            }
        }
        return elementCount > 0;
    }

    function mutationAddsLeafletMarkerIcon(mutation) {
        if (!mutation || mutation.type !== 'childList' || !mutation.addedNodes?.length) return false;
        for (const node of mutation.addedNodes) {
            if (!node || node.nodeType !== 1) continue;
            if (node.matches?.('.mcms-alliance-credit-icon, .mcms-mission-age-icon, .mcms-unit-commitment-icon, .mcms-transport-watcher-icon, .mcms-resource-gap-icon, .mcms-stuck-mission-icon, .mcms-mission-spawn-label-icon') || node.querySelector?.('.mcms-alliance-credit-icon, .mcms-mission-age-icon, .mcms-unit-commitment-icon, .mcms-transport-watcher-icon, .mcms-resource-gap-icon, .mcms-stuck-mission-icon, .mcms-mission-spawn-label-icon')) continue;
            if (node.matches?.('.leaflet-marker-icon')) return true;
            if (node.querySelector?.('.leaflet-marker-icon')) return true;
        }
        return false;
    }

    function mutationTouchesSelector(mutation, selector) {
        const target = mutation?.target;
        if (target?.nodeType === 1 && (target.matches?.(selector) || target.closest?.(selector))) return true;
        for (const collection of [mutation?.addedNodes, mutation?.removedNodes]) {
            if (!collection?.length) continue;
            for (const node of collection) {
                if (!node || node.nodeType !== 1) continue;
                if (node.matches?.(selector) || node.querySelector?.(selector)) return true;
            }
        }
        return false;
    }

    function mutationRemovesToolkitUi(mutation) {
        for (const node of mutation?.removedNodes || []) {
            if (!node || node.nodeType !== 1) continue;
            if ([SCRIPT.panelId, SCRIPT.controlId, SCRIPT.majorIncidentFeedId].includes(node.id)) return true;
            if (node.querySelector?.(`#${SCRIPT.panelId}, #${SCRIPT.controlId}, #${SCRIPT.majorIncidentFeedId}`)) return true;
        }
        return false;
    }

    function mutationAffectsMissionData(mutation) {
        return mutationTouchesSelector(mutation, '.leaflet-marker-pane, .leaflet-marker-icon, [id^="mission_"], #missions, #mission_list, .missionSideBarEntry, .mission-side-bar-entry, [data-mission-id]');
    }

    function mutationAffectsMapLayout(mutation) {
        const target = mutation?.target;
        if (target?.nodeType === 1) {
            if (target.matches?.('#map, #map_outer, .leaflet-container')) return true;
            if (target.closest?.('.navbar, .modal, .modal-backdrop, .dropdown-menu, .popover, [role="dialog"]')) return true;
        }
        for (const collection of [mutation?.addedNodes, mutation?.removedNodes]) {
            if (!collection?.length) continue;
            for (const node of collection) {
                if (!node || node.nodeType !== 1) continue;
                if (node.matches?.('#map, #map_outer, .leaflet-container, .navbar, .modal, .modal-backdrop, .dropdown-menu, .popover, [role="dialog"]')) return true;
                if (node.querySelector?.('#map, #map_outer, .leaflet-container, .navbar, .modal, .modal-backdrop, .dropdown-menu, .popover, [role="dialog"]')) return true;
            }
        }
        return false;
    }


    const ALLIANCE_BUILDINGS_MAP_NOTICE_ID = 'mcms-alliance-buildings-map-notice';

    function findAllianceBuildingsMapElement() {
        if (!isAllianceBuildingsContext()) return null;
        const candidates = Array.from(document.querySelectorAll('#verband-gebauede-map, #verband-gebaeude-map, #map, #map_outer .leaflet-container, [id*="gebauede"][id*="map"], [id*="gebaeude"][id*="map"], .leaflet-container'));
        return candidates.find(element => {
            if (!element || element.closest(`#${SCRIPT.controlId}, #${SCRIPT.panelId}, #${SCRIPT.vehicleStatusId}`)) return false;
            const rect = element.getBoundingClientRect?.();
            return !rect || rect.width >= 120 || rect.height >= 120 || element.id === 'map' || element.id === 'verband-gebauede-map' || element.id === 'verband-gebaeude-map';
        }) || null;
    }

    function findResponsiveColumn(element) {
        let current = element;
        for (let depth = 0; current && current !== document.body && depth < 7; depth += 1, current = current.parentElement) {
            const className = typeof current.className === 'string' ? current.className : '';
            if (/\bcol-(?:xs|sm|md|lg|xl|xxl)-\d+\b/u.test(className)) return current;
        }
        return element?.parentElement || null;
    }

    function findAllianceBuildingsListColumn(mapColumn) {
        const row = mapColumn?.parentElement;
        if (!row) return null;
        const siblings = Array.from(row.children).filter(child => child !== mapColumn);
        return siblings.find(child => child.querySelector?.('table')) || siblings.find(child => /\bcol-(?:xs|sm|md|lg|xl|xxl)-\d+\b/u.test(String(child.className || ''))) || mapColumn.nextElementSibling;
    }

    function allianceBuildingsMapNoticeHtml(enabled) {
        const blocked = !enabled;
        return `
            <span class="mcms-alliance-map-copy">
                <strong>${blocked ? 'Alliance Map Blocker ON' : 'Alliance Map Blocker OFF'}</strong>
                <small>${blocked ? 'The Alliance Buildings / Courses list remains available at full width. Its map tiles and alliance marker attachment are blocked.' : 'Turn the blocker on to stop the heavy map in the Alliance Buildings / Courses menu.'}</small>
            </span>
            <button type="button" data-mcms-alliance-map-toggle="${blocked ? 'restore' : 'block'}">${blocked ? 'Disable blocker & reload' : 'Enable blocker & reload'}</button>
        `;
    }

    function renderAllianceBuildingsMapPreference() {
        if (!isAllianceBuildingsContext()) return false;
        const root = document.documentElement;
        const enabled = state.allianceBuildingsMap !== false;
        root.setAttribute('data-mcms-alliance-buildings-page', 'true');
        root.setAttribute('data-mcms-alliance-buildings-map', enabled ? 'enabled' : 'disabled');
        const mapElement = findAllianceBuildingsMapElement();
        if (!mapElement) return false;
        const mapColumn = findResponsiveColumn(mapElement);
        const listColumn = findAllianceBuildingsListColumn(mapColumn);
        if (!mapColumn) return false;
        mapColumn.classList.toggle('mcms-alliance-buildings-map-column', !enabled);
        mapColumn.toggleAttribute('data-mcms-alliance-map-column', !enabled);
        mapColumn.setAttribute('aria-hidden', String(!enabled));
        if (listColumn) {
            listColumn.classList.toggle('mcms-alliance-buildings-list-column', !enabled);
            listColumn.toggleAttribute('data-mcms-alliance-list-column', !enabled);
        }
        let notice = document.getElementById(ALLIANCE_BUILDINGS_MAP_NOTICE_ID);
        const target = enabled ? mapColumn : (listColumn || mapColumn.parentElement || document.body);
        if (!notice) {
            notice = document.createElement('div');
            notice.id = ALLIANCE_BUILDINGS_MAP_NOTICE_ID;
        }
        notice.classList.toggle('mcms-alliance-map-enabled', enabled);
        notice.innerHTML = allianceBuildingsMapNoticeHtml(enabled);
        if (notice.parentElement !== target) target.insertBefore(notice, target.firstChild || null);
        return true;
    }

    function pruneRuntimeCaches(now = Date.now()) {
        for (const [missionId, panel] of missionPanelCache.entries()) {
            if (!panel?.isConnected) missionPanelCache.delete(missionId);
        }
        for (const [missionId, cached] of missionSnapshotCache.entries()) {
            if (liveMissionSnapshots.has(missionId)) continue;
            if (now - Number(cached?.lastUsed || now) > MISSION_CACHE_RETENTION_MS) missionSnapshotCache.delete(missionId);
        }
        for (const missionId of missionOverlayVersions.keys()) {
            if (!missionOverlayData.has(missionId)) missionOverlayVersions.delete(missionId);
        }
        for (const [name, cached] of markerRegistryCache.entries()) {
            if (now - Number(cached?.createdAt || now) > RUNTIME_CACHE_PRUNE_MS) markerRegistryCache.delete(name);
        }
        for (const [key, cached] of resourceGapAnalysisCache.entries()) {
            if (now - Number(cached?.createdAt || now) > Math.max(2 * RESOURCE_GAP_REFRESH_MS, RUNTIME_CACHE_PRUNE_MS)) resourceGapAnalysisCache.delete(key);
        }
        if (resourceGapAnalysisCache.size > 180) {
            const ordered = Array.from(resourceGapAnalysisCache.entries()).sort((a, b) => Number(a[1]?.createdAt || 0) - Number(b[1]?.createdAt || 0));
            for (const [key] of ordered.slice(0, resourceGapAnalysisCache.size - 180)) resourceGapAnalysisCache.delete(key);
        }
        const currentVehicleLayers = new Set(getVehicleMarkerLayers());
        const currentBuildingLayers = new Set(getBuildingMarkerLayers());
        for (const layer of Array.from(economyHiddenVehicleLayers)) {
            if (!layer || (!layer._map && !currentVehicleLayers.has(layer))) economyHiddenVehicleLayers.delete(layer);
        }
        for (const layer of Array.from(economyHiddenBuildingLayers)) {
            if (!layer || (!layer._map && !currentBuildingLayers.has(layer))) economyHiddenBuildingLayers.delete(layer);
        }
        if (!state.resourceGap.enabled) {
            resourceGapAnalysisCache.clear();
            resourceGapVehicleContextCache = { key: '', createdAt: 0, available: [], byToken: new Map() };
        }
    }

    function installAllianceBuildingsPageOptimisation() {
        const initiallyInContext = isAllianceBuildingsContext();
        const enabled = state.allianceBuildingsMap !== false;
        let renderTimer = null;
        const renderWhenRelevant = () => {
            if (!isAllianceBuildingsContext()) {
                document.getElementById(ALLIANCE_BUILDINGS_MAP_NOTICE_ID)?.remove();
                document.querySelectorAll('.mcms-alliance-buildings-map-column').forEach(element => element.classList.remove('mcms-alliance-buildings-map-column'));
                document.querySelectorAll('.mcms-alliance-buildings-list-column').forEach(element => element.classList.remove('mcms-alliance-buildings-list-column'));
                clearAllianceBuildingsEarlyContext();
                return false;
            }
            if (!enabled) optimiseAllianceBuildingsCourseTableEarly();
            return renderAllianceBuildingsMapPreference();
        };
        if (initiallyInContext || !enabled) {
            renderWhenRelevant();
            runtimeSetTimeout(renderWhenRelevant, 40);
            runtimeSetTimeout(renderWhenRelevant, 300);
            runtimeSetTimeout(renderWhenRelevant, 1200);
            const pageObserver = runtimeTrackObserver(new MutationObserver(mutations => {
                if (!mutations.some(mutation => mutation.addedNodes?.length || mutation.removedNodes?.length)) return;
                runtimeClearTimeout(renderTimer);
                renderTimer = runtimeSetTimeout(() => {
                    renderTimer = null;
                    renderWhenRelevant();
                }, 0);
            }));
            pageObserver.observe(document.body, { childList: true, subtree: true });
        }
        runtimeListen(document, 'click', event => {
            const button = closestEventTarget(event, '[data-mcms-alliance-map-toggle]');
            if (!button) return;
            event.preventDefault();
            event.stopPropagation();
            state.allianceBuildingsMap = button.dataset.mcmsAllianceMapToggle === 'restore';
            saveState();
            button.disabled = true;
            button.textContent = 'Reloading…';
            runtimeSetTimeout(() => location.reload(), 120);
        }, true);
        runtimeOnCleanup(() => {
            document.getElementById(ALLIANCE_BUILDINGS_MAP_NOTICE_ID)?.remove();
            document.querySelectorAll('.mcms-alliance-buildings-map-column').forEach(element => element.classList.remove('mcms-alliance-buildings-map-column'));
            document.querySelectorAll('.mcms-alliance-buildings-list-column').forEach(element => element.classList.remove('mcms-alliance-buildings-list-column'));
            document.querySelectorAll('[data-mcms-alliance-map-column], [data-mcms-alliance-list-column]').forEach(element => {
                element.removeAttribute('data-mcms-alliance-map-column');
                element.removeAttribute('data-mcms-alliance-list-column');
            });
            document.documentElement?.removeAttribute('data-mcms-alliance-buildings-page');
        });
        return isAllianceBuildingsPath() && !enabled;
    }


    function connectMainMutationObserver() {
        if (!mainMutationObserver || runtime.destroyed || !document.body) return;
        try { mainMutationObserver.disconnect(); } catch (err) {}
        const roots = new Set();
        const mapElement = getLargestLeafletMap();
        const mapRoot = mapElement?.closest?.('#map_outer') || mapElement?.parentElement || mapElement;
        const missionRoot = document.querySelector('#missions, #mission_list, .missions-panel, .mission-list');
        if (mapRoot?.isConnected) roots.add(mapRoot);
        if (missionRoot?.isConnected) roots.add(missionRoot);
        if (!roots.size) {
            mainMutationObserverFallbackActive = true;
            mainMutationObserver.observe(document.body, { childList: true, subtree: true });
            return;
        }
        mainMutationObserverFallbackActive = false;
        for (const root of roots) mainMutationObserver.observe(root, { childList: true, subtree: true });
        mainMutationObserver.observe(document.body, { childList: true, subtree: false });
    }
    async function runDeferredOperationalStartup() {
        if (operationalStartupStarted || runtime.destroyed) return;
        const operationalPerformanceStartedAt = startupClock();
        if (document.hidden) {
            runtimeSetTimeout(() => scheduleDeferredOperationalStartup(0), 1000);
            return;
        }
        operationalStartupStarted = true;
        loadCachedFinancialRules();
        loadCachedFinancialPolicy();
        ensureFinanceVaultCredential(financePlayerIdentity());
        scanInlineMissionMarkerData();
        installMissionMarkerAddHook();
        installRadioMessageHook();
        if (state.missionValue) installMissionValueWindows();
        startupDataPassActive = true;
        try {
            if (vehicleDataNeeded()) await refreshPersonalVehicleData(true);
        } finally {
            startupDataPassActive = false;
        }
        runtimeClearTimeout(missionSnapshotTimer);
        missionSnapshotTimer = null;
        if (missionSnapshotsNeeded()) refreshMissionSnapshots();
        if (state.missionSpawn.enabled) primeMissionSpawnDetector();
        if (state.stuckDetector.enabled) scheduleStuckMissionRefresh(180);
        if (state.transportWatcher) scheduleTransportWatcherRefresh(220);
        if (state.resourceGap.enabled) scheduleResourceGapRefresh(260);
        if (state.unitCommitment) scheduleUnitCommitmentRefresh(300);
        if (state.allianceCredits) scheduleAllianceCreditRefresh(320);
        if (state.missionAge) scheduleMissionAgeRefresh(340);
        operationalStartupComplete = true;
        scheduleOperationalPanelsRender(0);
        if (state.majorIncidentFeed.enabled) scheduleMajorIncidentFeedRender(120);
        scheduleEnabledMapRefreshes({ includeSnapshots: false, positionPanel: false, mapOnly: true });
        recordStartupMetric('operationalStartupMs', operationalPerformanceStartedAt, { operationalStartupComplete: true });

    }
    function scheduleDeferredOperationalStartup(delay = STARTUP_OPERATIONAL_DELAY_MS) {
        if (operationalStartupStarted || runtime.destroyed) return;
        runtimeSetTimeout(() => runtimeRunWhenIdle(() => {
            runDeferredOperationalStartup().catch(err => {
                operationalStartupComplete = true;
                startupDataPassActive = false;
                console.debug(`[${SCRIPT.name}] Deferred startup recovered after an operational initialisation error.`, err);
                connectMainMutationObserver();
            });
        }, STARTUP_IDLE_TIMEOUT_MS), Math.max(0, Number(delay) || 0));
    }

    const AUTO_LOAD_ALL_VEHICLES_SELECTOR = 'a.missing_vehicles_load[href*="/missing_vehicles"]';
    const AUTO_LOAD_ALL_VEHICLES_MISSION_ROOT_SELECTOR = '#lightbox_box, #lightbox, .lightbox_content, .modal.show, .modal.in, .modal-content, [role="dialog"], .ui-dialog-content, .ui-dialog';
    const AUTO_LOAD_ALL_VEHICLES_MAX_REQUESTS = 50;
    const AUTO_LOAD_ALL_VEHICLES_SETTLE_MS = 180;
    const AUTO_LOAD_ALL_VEHICLES_TIMEOUT_MS = 6000;
    const AUTO_LOAD_ALL_VEHICLES_HIDDEN_RETRIES = 24;
    let autoLoadAllVehiclesObserver = null;
    let autoLoadAllVehiclesLinkObserver = null;
    let autoLoadAllVehiclesRootObserver = null;
    let autoLoadAllVehiclesScanTimer = null;
    let autoLoadAllVehiclesReleaseTimer = null;
    let autoLoadAllVehiclesMissionId = null;
    let autoLoadAllVehiclesMissionRoot = null;
    let autoLoadAllVehiclesActiveLink = null;
    let autoLoadAllVehiclesActiveSignature = '';
    let autoLoadAllVehiclesInFlight = false;
    let autoLoadAllVehiclesRequestCount = 0;
    let autoLoadAllVehiclesHiddenRetryCount = 0;
    const autoLoadAllVehiclesRequestedPages = new Set();

    function autoLoadAllVehiclesLinkInfo(link) {
        if (!link || link.nodeType !== 1 || !link.matches?.(AUTO_LOAD_ALL_VEHICLES_SELECTOR)) return null;
        let url;
        try { url = new URL(link.getAttribute('href') || link.href, location.href); } catch (err) { return null; }
        if (url.origin !== location.origin) return null;
        const match = url.pathname.match(/^\/missions\/(\d+)\/missing_vehicles\/?$/u);
        if (!match) return null;
        const rawOffset = url.searchParams.get('offset_page');
        const offsetPage = Number.isFinite(Number(rawOffset)) ? Math.max(0, Number(rawOffset)) : 0;
        return {
            missionId: match[1],
            offsetPage,
            signature: `${match[1]}:${offsetPage}:${url.pathname}${url.search}`,
            href: url.href
        };
    }

    function autoLoadAllVehiclesElementVisible(element) {
        if (!element?.isConnected || element.hidden || element.getAttribute?.('aria-hidden') === 'true') return false;
        if (element.matches?.(':disabled, .disabled, [aria-disabled="true"]')) return false;
        try {
            const style = pageWindow.getComputedStyle?.(element);
            if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse' || style?.pointerEvents === 'none' || Number(style?.opacity) === 0) return false;
            const rect = element.getBoundingClientRect?.();
            return !rect || (rect.width > 1 && rect.height > 1);
        } catch (err) {
            return true;
        }
    }

    function autoLoadAllVehiclesResolveMissionRoot(link) {
        return link.closest?.(AUTO_LOAD_ALL_VEHICLES_MISSION_ROOT_SELECTOR) || link.parentElement || document.body;
    }

    function autoLoadAllVehiclesCandidateLinks() {
        if (!state.autoLoadAllVehicles) return [];
        const queryRoot = autoLoadAllVehiclesMissionRoot?.isConnected && autoLoadAllVehiclesElementVisible(autoLoadAllVehiclesMissionRoot)
            ? autoLoadAllVehiclesMissionRoot
            : document;
        return Array.from(queryRoot.querySelectorAll(AUTO_LOAD_ALL_VEHICLES_SELECTOR))
            .reverse()
            .map(link => ({ link, info: autoLoadAllVehiclesLinkInfo(link) }))
            .filter(candidate => Boolean(candidate.info));
    }

    function clearAutoLoadAllVehiclesReleaseTimer() {
        runtimeClearTimeout(autoLoadAllVehiclesReleaseTimer);
        autoLoadAllVehiclesReleaseTimer = null;
    }

    function disconnectAutoLoadAllVehiclesLinkObserver() {
        runtimeUntrackObserver(autoLoadAllVehiclesLinkObserver);
        autoLoadAllVehiclesLinkObserver = null;
    }

    function disconnectAutoLoadAllVehiclesRootObserver() {
        runtimeUntrackObserver(autoLoadAllVehiclesRootObserver);
        autoLoadAllVehiclesRootObserver = null;
    }

    function releaseAutoLoadAllVehiclesRequest({ schedule = true } = {}) {
        clearAutoLoadAllVehiclesReleaseTimer();
        disconnectAutoLoadAllVehiclesLinkObserver();
        autoLoadAllVehiclesInFlight = false;
        autoLoadAllVehiclesActiveLink = null;
        autoLoadAllVehiclesActiveSignature = '';
        if (schedule && state.autoLoadAllVehicles) scheduleAutoLoadAllVehiclesScan(AUTO_LOAD_ALL_VEHICLES_SETTLE_MS);
    }

    function resetAutoLoadAllVehiclesMission() {
        releaseAutoLoadAllVehiclesRequest({ schedule: false });
        disconnectAutoLoadAllVehiclesRootObserver();
        autoLoadAllVehiclesMissionId = null;
        autoLoadAllVehiclesMissionRoot = null;
        autoLoadAllVehiclesRequestCount = 0;
        autoLoadAllVehiclesHiddenRetryCount = 0;
        autoLoadAllVehiclesRequestedPages.clear();
    }

    function observeAutoLoadAllVehiclesRoot(root) {
        disconnectAutoLoadAllVehiclesRootObserver();
        if (!root || root === document.body) return;
        const observer = runtimeTrackObserver(new MutationObserver(() => {
            if (!state.autoLoadAllVehicles) return;
            if (!root.isConnected || !autoLoadAllVehiclesElementVisible(root)) {
                resetAutoLoadAllVehiclesMission();
                return;
            }
            scheduleAutoLoadAllVehiclesScan(AUTO_LOAD_ALL_VEHICLES_SETTLE_MS);
        }));
        observer.observe(root, {
            attributes: true,
            attributeFilter: ['class', 'style', 'hidden', 'aria-hidden']
        });
        autoLoadAllVehiclesRootObserver = observer;
    }

    function observeAutoLoadAllVehiclesLink(link) {
        disconnectAutoLoadAllVehiclesLinkObserver();
        if (!link) return;
        const observer = runtimeTrackObserver(new MutationObserver(() => {
            if (!state.autoLoadAllVehicles) return;
            const info = autoLoadAllVehiclesLinkInfo(link);
            const changed = Boolean(info && info.signature !== autoLoadAllVehiclesActiveSignature);
            if (!link.isConnected || !info || !autoLoadAllVehiclesElementVisible(link) || changed) {
                releaseAutoLoadAllVehiclesRequest({ schedule: true });
            }
        }));
        observer.observe(link, {
            attributes: true,
            attributeFilter: ['href', 'class', 'style', 'hidden', 'aria-hidden', 'aria-disabled']
        });
        autoLoadAllVehiclesLinkObserver = observer;
    }

    function scheduleAutoLoadAllVehiclesScan(delay = 0) {
        if (!state.autoLoadAllVehicles || runtime.destroyed) return;
        runtimeClearTimeout(autoLoadAllVehiclesScanTimer);
        autoLoadAllVehiclesScanTimer = runtimeSetTimeout(() => {
            autoLoadAllVehiclesScanTimer = null;
            scanAutoLoadAllVehicles();
        }, Math.max(0, Number(delay) || 0));
    }

    function scanAutoLoadAllVehicles() {
        if (!state.autoLoadAllVehicles || runtime.destroyed || autoLoadAllVehiclesInFlight) return false;
        const candidates = autoLoadAllVehiclesCandidateLinks();
        if (!candidates.length) {
            autoLoadAllVehiclesHiddenRetryCount = 0;
            if (autoLoadAllVehiclesMissionRoot && (!autoLoadAllVehiclesMissionRoot.isConnected || !autoLoadAllVehiclesElementVisible(autoLoadAllVehiclesMissionRoot))) {
                resetAutoLoadAllVehiclesMission();
            }
            return false;
        }
        const visibleCandidates = candidates.filter(candidate => autoLoadAllVehiclesElementVisible(candidate.link));
        if (!visibleCandidates.length) {
            if (autoLoadAllVehiclesHiddenRetryCount < AUTO_LOAD_ALL_VEHICLES_HIDDEN_RETRIES) {
                autoLoadAllVehiclesHiddenRetryCount += 1;
                scheduleAutoLoadAllVehiclesScan(AUTO_LOAD_ALL_VEHICLES_SETTLE_MS);
            }
            return false;
        }
        autoLoadAllVehiclesHiddenRetryCount = 0;
        const candidate = visibleCandidates.find(item => item.info.missionId !== autoLoadAllVehiclesMissionId || !autoLoadAllVehiclesRequestedPages.has(item.info.signature)) || visibleCandidates[0];
        const { link, info } = candidate;
        const missionRoot = autoLoadAllVehiclesResolveMissionRoot(link);
        if (info.missionId !== autoLoadAllVehiclesMissionId || missionRoot !== autoLoadAllVehiclesMissionRoot) {
            resetAutoLoadAllVehiclesMission();
            autoLoadAllVehiclesMissionId = info.missionId;
            autoLoadAllVehiclesMissionRoot = missionRoot;
            observeAutoLoadAllVehiclesRoot(missionRoot);
        }
        if (autoLoadAllVehiclesRequestedPages.has(info.signature)) return false;
        if (autoLoadAllVehiclesRequestCount >= AUTO_LOAD_ALL_VEHICLES_MAX_REQUESTS) {
            console.warn(`[${SCRIPT.name}] Auto-load all vehicles stopped after ${AUTO_LOAD_ALL_VEHICLES_MAX_REQUESTS} requests for mission ${info.missionId}.`);
            return false;
        }
        autoLoadAllVehiclesRequestedPages.add(info.signature);
        autoLoadAllVehiclesRequestCount += 1;
        autoLoadAllVehiclesInFlight = true;
        autoLoadAllVehiclesActiveLink = link;
        autoLoadAllVehiclesActiveSignature = info.signature;
        link.dataset.mcmsAutoLoadRequested = 'true';
        observeAutoLoadAllVehiclesLink(link);
        try {
            link.click();
        } catch (err) {
            autoLoadAllVehiclesRequestedPages.delete(info.signature);
            releaseAutoLoadAllVehiclesRequest({ schedule: false });
            console.warn(`[${SCRIPT.name}] Auto-load all vehicles could not activate MissionChief's native control.`, err);
            return false;
        }
        clearAutoLoadAllVehiclesReleaseTimer();
        autoLoadAllVehiclesReleaseTimer = runtimeSetTimeout(() => {
            autoLoadAllVehiclesReleaseTimer = null;
            releaseAutoLoadAllVehiclesRequest({ schedule: true });
        }, AUTO_LOAD_ALL_VEHICLES_TIMEOUT_MS);
        return true;
    }

    function autoLoadAllVehiclesMutationRelevant(mutation) {
        if (mutation.type !== 'childList') return false;
        const nodes = [...Array.from(mutation.addedNodes || []), ...Array.from(mutation.removedNodes || [])];
        return nodes.some(node => {
            if (!node || node.nodeType !== 1) return false;
            if (autoLoadAllVehiclesMissionRoot && (node === autoLoadAllVehiclesMissionRoot || node.contains?.(autoLoadAllVehiclesMissionRoot))) return true;
            return Boolean(
                node.matches?.(AUTO_LOAD_ALL_VEHICLES_SELECTOR) ||
                node.querySelector?.(AUTO_LOAD_ALL_VEHICLES_SELECTOR) ||
                node.matches?.(AUTO_LOAD_ALL_VEHICLES_MISSION_ROOT_SELECTOR) ||
                node.querySelector?.(AUTO_LOAD_ALL_VEHICLES_MISSION_ROOT_SELECTOR)
            );
        });
    }

    function stopAutoLoadAllVehicles() {
        runtimeClearTimeout(autoLoadAllVehiclesScanTimer);
        autoLoadAllVehiclesScanTimer = null;
        runtimeUntrackObserver(autoLoadAllVehiclesObserver);
        autoLoadAllVehiclesObserver = null;
        resetAutoLoadAllVehiclesMission();
    }

    function installAutoLoadAllVehicles() {
        if (!state.autoLoadAllVehicles || runtime.destroyed) {
            stopAutoLoadAllVehicles();
            return false;
        }
        if (!document.body) {
            runtimeListen(document, 'DOMContentLoaded', installAutoLoadAllVehicles, { once: true });
            return false;
        }
        if (!autoLoadAllVehiclesObserver) {
            const observer = runtimeTrackObserver(new MutationObserver(mutations => {
                if (!state.autoLoadAllVehicles) return;
                if (autoLoadAllVehiclesMissionRoot && !autoLoadAllVehiclesMissionRoot.isConnected) {
                    resetAutoLoadAllVehiclesMission();
                }
                if (autoLoadAllVehiclesActiveLink && !autoLoadAllVehiclesActiveLink.isConnected) {
                    releaseAutoLoadAllVehiclesRequest({ schedule: false });
                }
                if (mutations.some(autoLoadAllVehiclesMutationRelevant)) scheduleAutoLoadAllVehiclesScan(AUTO_LOAD_ALL_VEHICLES_SETTLE_MS);
            }));
            observer.observe(document.body, { childList: true, subtree: true });
            autoLoadAllVehiclesObserver = observer;
        }
        scheduleAutoLoadAllVehiclesScan(0);
        return true;
    }


    function runBootIntegration(label, callback) {
        try {
            return callback();
        } catch (error) {
            console.warn(`[${SCRIPT.name}] ${label} failed without blocking the Toolkit launcher.`, error);
            return null;
        }
    }

    function startBootAttemptCoordinator(bootPerformanceStartedAt) {
        let attempts = 0;
        let complete = false;
        const scheduleAttempt = delay => {
            if (complete || runtime.destroyed) return;
            runtimeSetTimeout(runBootAttempt, delay);
        };
        const runBootAttempt = () => {
            if (complete || runtime.destroyed) return;
            attempts += 1;
            const ready = Boolean(runBootIntegration('core UI mount', ensureUi));
            const mapReady = Boolean(runBootIntegration('map discovery', getLargestLeafletMap));
            runBootIntegration('mission marker hook', installMissionMarkerAddHook);
            runBootIntegration('radio message hook', installRadioMessageHook);
            runBootIntegration('credits update hook', installCreditsUpdateHook);
            runBootIntegration('credits observer', observeCreditValue);
            if (ready && (mapReady || attempts >= 12)) {
                complete = true;
                runBootIntegration('startup metric', () => recordStartupMetric('coreUiReadyMs', bootPerformanceStartedAt, { bootAttempts: attempts }));
                runBootIntegration('marker state sync', () => {
                    scheduleMarkerStateSync(0, false);
                });
                runBootIntegration('deferred operational startup', () => {
                    scheduleDeferredOperationalStartup();
                });
                runBootIntegration('version status check', () => {
                    scheduleVersionStatusCheck(VERSION_STATUS.bootDelayMs, false);
                });
                runBootIntegration('main observer connection', () => {
                    runtimeSetTimeout(() => runtimeRunWhenIdle(connectMainMutationObserver, STARTUP_OBSERVER_DELAY_MS), STARTUP_OBSERVER_DELAY_MS);
                });
                return;
            }
            if (attempts >= 90) return;
            const delay = attempts < 12 ? 350 : attempts < 30 ? 700 : 1400;
            scheduleAttempt(delay);
        };
        runBootAttempt();
    }
    function registerBootMaintenanceTasks() {
        runtimeRegisterTask('ui-integrity', 2500, () => { if (!document.hidden) return ensureUi(); }, { intervalResolver: () => document.hidden ? 30000 : 2500, economyIntervalMs: 5000, economyIntervalResolver: () => document.hidden ? 30000 : 5000 });
        runtimeRegisterTask('vehicle-data-refresh', VEHICLE_API_REFRESH_MS, () => {
            if (!vehicleDataNeeded()) return;
            installRadioMessageHook();
            return refreshPersonalVehicleData(false);
        }, {
            economyIntervalMs: 10 * 60 * 1000,
            economyIntervalResolver: () => operationalUiIsVisible() ? 2 * 60 * 1000 : 10 * 60 * 1000
        });
        runtimeRegisterTask('mission-maintenance', FALLBACK_MISSION_REFRESH_MS, () => {
            if (state.economyMode && economyMapMoving) {
                economyDeferredMapRefresh = true;
                return;
            }
            installMissionMarkerAddHook();
            installRadioMessageHook();
            installCreditsUpdateHook();
            observeCreditValue();
            if (state.allianceCredits) scheduleAllianceCreditRefresh();
            if (state.unitCommitment) scheduleUnitCommitmentRefresh();
            if (state.resourceGap.enabled) scheduleResourceGapRefresh();
            if (missionSnapshotsNeeded()) scheduleMissionSnapshotRefresh();
        }, {
            economyIntervalMs: 60 * 1000,
            economyIntervalResolver: () => 60 * 1000
        });
        runtimeRegisterTask('minute-maintenance', 60 * 1000, () => {
            if (state.missionAge) scheduleMissionAgeRefresh();
            if (state.stuckDetector.enabled) scheduleStuckMissionRefresh();
                scheduleOperationalPanelsRender(500);
            pruneRuntimeCaches();
        }, {
            economyIntervalMs: 5 * 60 * 1000,
            economyIntervalResolver: () => operationalUiIsVisible() ? 2 * 60 * 1000 : 5 * 60 * 1000
        });
        runtimeRegisterTask('major-incident-feed-integrity', 5000, () => {
            if (!state.majorIncidentFeed.enabled) return;
            recoverMajorIncidentFeed('integrity check');
        }, {
            intervalResolver: () => state.majorIncidentFeed.enabled ? 5000 : 60 * 1000,
            economyIntervalMs: 12000,
            economyIntervalResolver: () => state.majorIncidentFeed.enabled ? 12000 : 2 * 60 * 1000
        });
        runtimeRegisterTask('building-visibility', BUILDING_VISIBILITY_RECHECK_MS, () => {
            if (!state.visibility.buildings) synchronisePersonalBuildingVisibility();
            if (state.economyMode) scheduleEconomyLayerSync(0);
        }, {
            intervalResolver: () => !state.visibility.buildings ? BUILDING_VISIBILITY_RECHECK_MS : 60 * 1000,
            economyIntervalMs: 45 * 1000,
            economyIntervalResolver: () => (!state.visibility.buildings || state.economyMode) ? 45 * 1000 : 2 * 60 * 1000
        });
    }

    function boot() {
        if (runtime.destroyed || bootStarted) return;
        bootStarted = true;
        bootStartedAt = Date.now();
        const bootPerformanceStartedAt = startupClock();
        const allianceBuildingsOnly = isAllianceBuildingsPath() && state.allianceBuildingsMap === false;
        if (!allianceBuildingsOnly) startBootAttemptCoordinator(bootPerformanceStartedAt);
        runBootIntegration('root attributes', applyRootAttributes);
        runBootIntegration('Alliance Buildings optimisation', installAllianceBuildingsPageOptimisation);
        if (allianceBuildingsOnly) return;
        runBootIntegration('clean-mode exit', createCleanExit);
        if (state.autoLoadAllVehicles) runBootIntegration('auto-load all vehicles', installAutoLoadAllVehicles);
        runBootIntegration('mission marker hook', installMissionMarkerAddHook);
        runBootIntegration('radio message hook', installRadioMessageHook);
        lastObservedCredits = runBootIntegration('initial credit total', readCurrentCreditTotal);
        runBootIntegration('credits update hook', installCreditsUpdateHook);
        runBootIntegration('credits observer', observeCreditValue);
        runBootIntegration('custom vehicle badges', installCustomVehicleBadges);
        const observer = runtimeTrackObserver(new MutationObserver(mutations => {
            if (state.economyMode && economyMapMoving) {
                economyDeferredDomMutation = true;
                return;
            }
            let externalMutationFound = false;
            let addedLeafletMarker = false;
            let missionChanged = false;
            let layoutChanged = false;
            let toolkitUiRemoved = false;
            for (const mutation of mutations) {
                const removesToolkitUi = mutationRemovesToolkitUi(mutation);
                if (removesToolkitUi) toolkitUiRemoved = true;
                if (mutationBelongsToToolkit(mutation) && !removesToolkitUi) continue;
                externalMutationFound = true;
                if (!addedLeafletMarker && mutationAddsLeafletMarkerIcon(mutation)) {
                    addedLeafletMarker = true;
                    missionChanged = true;
                }
                if (!missionChanged && mutationAffectsMissionData(mutation)) missionChanged = true;
                if (!layoutChanged && mutationAffectsMapLayout(mutation)) layoutChanged = true;
                if (!toolkitUiRemoved && mutationRemovesToolkitUi(mutation)) toolkitUiRemoved = true;
                if (addedLeafletMarker && missionChanged && layoutChanged && toolkitUiRemoved) break;
            }
            if (!externalMutationFound) return;
            missionChanged ||= addedLeafletMarker;
            if (!missionChanged && !layoutChanged && !toolkitUiRemoved) return;
            if (addedLeafletMarker) {
                invalidateMarkerRegistryCaches('all');
                scheduleMarkerStateSync(0, false);
                if (!state.visibility.buildings) scheduleMarkerStateSync(180, true);
            }
            if (layoutChanged) invalidateMapElementCache();
            if (document.hidden || dragState || (state.economyMode && economyMapMoving)) return;
            runtimeClearTimeout(mutationTimer);
            const startupSettling = bootStartedAt > 0 && Date.now() - bootStartedAt < STARTUP_SETTLE_WINDOW_MS;
            const mutationDelay = startupSettling
                ? STARTUP_MUTATION_DEBOUNCE_MS
                : (state.economyMode ? Math.max(320, DOM_REFRESH_DEBOUNCE_MS) : DOM_REFRESH_DEBOUNCE_MS);
            mutationTimer = runtimeSetTimeout(() => {
                if (dragState || document.hidden || runtime.destroyed || (state.economyMode && economyMapMoving)) return;
                const panelMissing = settingsPanelActivated && !document.getElementById(SCRIPT.panelId);
                const mapElement = getLargestLeafletMap();
                const controlMissing = Boolean(mapElement && !document.getElementById(SCRIPT.controlId));
                if (toolkitUiRemoved || panelMissing || controlMissing) ensureUi();
                if (mainMutationObserverFallbackActive && (mapElement || document.querySelector('#missions, #mission_list, .missions-panel, .mission-list'))) {
                    connectMainMutationObserver();
                }
                if (layoutChanged) {
                    refreshSuppression();
                    fitControlToMap();
                    schedulePanelPosition(true, 50);
                }
                if (missionChanged) {
                    scheduleEnabledMapRefreshes({ includeSnapshots: missionSnapshotsNeeded(), positionPanel: false });
                }
            }, mutationDelay);
        }));
        mainMutationObserver = observer;
        runtimeListen(document, 'keydown', handleKeyboard);
        runtimeListen(document, 'pointerdown', () => unlockPayoutAudio(), { once: true, capture: true });
        runtimeListen(document, 'click', event => {
            runtimeSetTimeout(refreshSuppression, 0);
            if (suppressNextOutsideClick) {
                event.preventDefault();
                event.stopPropagation();
                suppressNextOutsideClick = false;
                return;
            }
            const control = document.getElementById(SCRIPT.controlId);
            const panel = document.getElementById(SCRIPT.panelId);
            if (!panel || !panel.classList.contains('mcms-open')) return;
            if (control && control.contains(event.target)) return;
            if (panel.contains(event.target)) return;
            closePanel();
        }, true);
        runtimeListen(pageWindow, 'resize', () => {
            invalidateMapElementCache();
            applyRootAttributes();
            refreshTabletModeUi();
            scheduleVisualViewportStabilisation('window-resize');
            const payoutOverlay = document.getElementById(SCRIPT.payoutFlashId);
            if (payoutOverlay?.classList.contains('mcms-payout-active')) positionPayoutFlashOverlay(payoutOverlay);
            if (dragState) return;
            refreshSuppression();
            fitControlToMap();
            schedulePanelPosition(true, 40);
            scheduleEnabledMapRefreshes({ includeSnapshots: false, positionPanel: false, mapOnly: true });
            scheduleMajorIncidentFeedLayout();
        });
        runtimeListen(pageWindow, 'scroll', scheduleMajorIncidentFeedLayout, { passive: true });
        runtimeListen(pageWindow,'orientationchange',()=>scheduleVisualViewportStabilisation('orientationchange'));
        if(pageWindow.visualViewport){
            runtimeListen(pageWindow.visualViewport,'resize',()=>scheduleVisualViewportStabilisation('visual-viewport-resize'));
            runtimeListen(pageWindow.visualViewport,'scroll',()=>{if(isTouchLayoutActive())scheduleVisualViewportStabilisation('visual-viewport-scroll');},{passive:true});
        }
        applyVisualViewportGeometry();
        scheduleVisualViewportStabilisation('boot-viewport');
        try {
            const coarsePointerQuery = pageWindow.matchMedia?.('(any-pointer: coarse)');
            if (coarsePointerQuery?.addEventListener) runtimeListen(coarsePointerQuery, 'change', () => scheduleTabletLayoutRefresh(20));
        } catch (err) {}
        runtimeListen(pageWindow, 'focus', () => {
            scheduleVisualViewportStabilisation('window-focus'); if (dragState) return;
            refreshSuppression();
            fitControlToMap();
            schedulePanelPosition(true, 40);
            installRadioMessageHook();
            if (vehicleDataNeeded()) refreshPersonalVehicleData(false);
            if (state.economyMode) scheduleEconomyLayerSync(0);
            scheduleEnabledMapRefreshes({ includeSnapshots: missionSnapshotsNeeded(), positionPanel: false });
            scheduleOperationalPanelsRender(500);
            scheduleMajorIncidentFeedRender(80);
        });
        const recoverUiAfterNavigation = event => {
            runtimeSetTimeout(() => {
                if (runtime.destroyed || document.hidden) return;
                invalidateMapElementCache();
                ensureUi();
                connectMainMutationObserver();
                recoverMajorIncidentFeed(event?.type || 'navigation');
            }, 120);
            runtimeSetTimeout(() => {
                if (runtime.destroyed || document.hidden) return;
                recoverMajorIncidentFeed(`${event?.type || 'navigation'} settle`);
            }, 650);
        };
        runtimeListen(pageWindow, 'pageshow', recoverUiAfterNavigation);
        runtimeListen(pageWindow, 'popstate', recoverUiAfterNavigation);
        runtimeListen(pageWindow, 'hashchange', recoverUiAfterNavigation);
        registerBootMaintenanceTasks();
        runtimeListen(document, 'visibilitychange', () => {
            if (document.hidden) return;
            runtimeWakeTaskScheduler(0);
            ensureUi();
            scheduleVersionStatusCheck(0, false);
            refreshSuppression();
            if (vehicleDataNeeded()) refreshPersonalVehicleData(false);
            if (state.economyMode) scheduleEconomyLayerSync(0);
            scheduleEnabledMapRefreshes({ includeSnapshots: missionSnapshotsNeeded(), positionPanel: true });
            scheduleMajorIncidentFeedRender(80);
        });
        runtimeSetTimeout(() => {
            if (document.hidden || !operationalStartupComplete) return;
            scheduleEnabledMapRefreshes({ includeSnapshots: false, positionPanel: false, mapOnly: true });
        }, 2200);
        runtimeOnCleanup(() => {
            stopAutoLoadAllVehicles();
            transportSweepRuntime.stopRequested = true;
            document.removeEventListener('mousemove', movePanelDrag, true);
            document.removeEventListener('mouseup', endPanelDrag, true);
            document.removeEventListener('touchmove', movePanelDrag, true);
            document.removeEventListener('touchend', endPanelDrag, true);
            document.removeEventListener('touchcancel', endPanelDrag, true);
            document.documentElement.style.cursor = '';
            if (document.body) document.body.style.userSelect = '';
            restoreEconomyLayers();
            restoreLeafletEconomyPolicy();
            disposeEconomyCanvasRenderer();
            runtimeClearTimeout(majorIncidentFeedLayoutTimer);
            majorIncidentFeedLayoutTimer = null;
            const originalBuildingVisibility = state.visibility.buildings;
            try {
                state.visibility.buildings = true;
                synchronisePersonalBuildingVisibility(cachedMap);
            } catch (err) {
                console.debug(`[${SCRIPT.name}] Building visibility restoration skipped during teardown.`, err);
            } finally {
                state.visibility.buildings = originalBuildingVisibility;
            }
            try { creditsValueObserver?.disconnect(); } catch (err) {}
            removeMajorIncidentFeed();
            clearMissionLockOnEffect();
            clearAllianceCreditLabels();
            clearMissionAgeLabels();
            clearUnitCommitmentLabels();
            clearTransportWatcherLabels();
            clearResourceGapLabels();
            clearStuckMissionLabels();
            if (coverageGroup) {
                try { coverageGroup.clearLayers(); coverageGroup.remove(); } catch (err) {}
                coverageGroup = null;
            }
            stopPayoutFlashAnimation();
            disposePayoutMediaAudio();
            try { payoutAudioContext?.close?.(); } catch (err) {}
            clearDiscordPreviewChartUrl();
            closeHelpCenter({ restoreFocus: false });
            disposeVersionStatus();
            helpGuideDocumentCache = '';
            helpGuideLoadedAt = 0;
            stopDesktopPanelWorkspaceObservation();
            runtimeUntrackObserver(desktopPanelResizeObserver);
            desktopPanelResizeObserver = null;
            runtimeUntrackObserver(majorIncidentFeedResizeObserver);
            majorIncidentFeedResizeObserver = null;
            majorIncidentFeedObservedElement = null;
            missionSnapshotCache.clear();
            missionPanelCache.clear();
            missionOverlayVersions.clear();
            markerRegistryCache.clear();
            removeOldInstances();
            const root = document.documentElement;
            for (const attribute of ['data-mcms-ui-theme', 'data-mc-map-skin', 'data-mcms-clean', 'data-mcms-marker-focus', 'data-mcms-mission-pulse', 'data-mcms-road-priority', 'data-mcms-compact-dock', 'data-mcms-command-bar-open', 'data-mcms-economy', 'data-mcms-map-moving', 'data-mcms-alliance-buildings-map', 'data-mcms-alliance-buildings-page', 'data-mcms-device-layout', 'data-mcms-tablet-mode', 'data-mcms-tablet-active', 'data-mcms-tablet-orientation', 'data-mcms-mobile-mode', 'data-mcms-mobile-active', 'data-mcms-mobile-orientation', 'data-mcms-show-alliance-missions', 'data-mcms-show-my-missions', 'data-mcms-show-vehicles', 'data-mcms-show-buildings', 'data-mcms-help-open']) root.removeAttribute(attribute);
        });
        if (state.economyMode) runtimeSetTimeout(() => setEconomyMode(true, false), 420);
        console.debug(`[${SCRIPT.name}] v${SCRIPT.version} audited runtime ready.`);
    }

    function scheduleBoot() {
        if (runtime.destroyed || bootStarted) return;
        runBootIntegration('idle boot scheduling', () => runtimeRunWhenIdle(boot, STARTUP_IDLE_TIMEOUT_MS));
        runtimeSetTimeout(() => {
            if (!runtime.destroyed && !bootStarted) boot();
        }, Math.min(1200, STARTUP_IDLE_TIMEOUT_MS));
    }

    if (document.readyState === 'loading') {
        runtimeListen(document, 'DOMContentLoaded', scheduleBoot, { once: true });
    } else {
        scheduleBoot();
    }
})();