/* variables from theme configuration */
:root {
    --am_logo_link: 1;
--am_bg: #f1f5f9;
--am_bg_size: auto;
--am_bg_size_px: auto;
--am_bg_attachment: scroll;
--am_bg_repeat: no-repeat;
--am_color: #f1f5f9;
--am_link_color: #3f7fb0;
--am_btn_color: #4e80a6;
--am_text_color: #303030;
--am_color_c: #0e0a06;
--am_color_d: #bfc3c7;
--am_logo_align: center;
--am_logo_width: 100%;
--am_logo_width_px: 100%;
--am_max_width: 800;
--am_max_width_px: 800px;
--am_font_size: 14;
--am_font_size_px: 14px;
--am_font_family: Roboto;
--am_drop_shadow: 1;
--am_content_shadow: 0px 0px 5px #00000022;;
--am_login_layout: layout.phtml;
--am_login_bg: none;
--am_login_bg_color: unset;
--am_login_shadow: none;
--am_login_legend_bg: #f9f9f9;
--am_login_legend_padding_top: 1em;
--am_login_form_bg_color: #f9f9f9;
--am_login_header_display: block;
--am_header_bg_size: cover;
--am_header_bg_size_px: cover;
--am_header_bg_repeat: no-repeat;
--am_header_bg: none;
--am_menu_color: #009CFF;
--am_menu_dashboard: icon;
--am_dashboard_layout: one-col;
--am_identity_align: left;
--am_identity_type: login;
--am_page_bg_color: #ffffff;
--am_page_bg: #ffffff;
--am_header_menu_link_color: #000000;
--am_header_menu_link2_color: #000000;
--am_header_menu_bg_color: #f1f5f9;
--am_footer_bg: none;
--am_footer_text_color: #0d0d0d;
--am_footer_link_color: #098C36;
--am_sm_size: 18;
--am_sm_size_px: 18px;
--am_sm_color: #0d0d0d;
--am_header_logo: 1;
--am_gravatar: 1;
--am_body_finish_out: <script>(function () {
  'use strict';
  if (window.__keyazPremiumV99) return;
  window.__keyazPremiumV99 = true;

  var _nc = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
  var IS_SLOW = !!(_nc && (_nc.saveData || _nc.effectiveType === '2g' || _nc.effectiveType === 'slow-2g'));

  var _qc = Object.create(null);
  function $1(sel) {
    return (sel in _qc) ? _qc[sel] : (_qc[sel] = document.querySelector(sel));
  }
  function invalidateQS() { _qc = Object.create(null); }

  var keyaz_CSS_HREF    = 'keyaz-style.css';
  var keyaz_CSS_VERSION = String(Date.now());
  var keyaz_LINK_ID     = 'keyaz-premium-css';
  var keyaz_LOGO_URL    = 'https://keyaztools.com/favicon.png';

  function injectPreconnects() {
    if ($1('#keyaz-preconnect')) return;
    var head = document.head;
    if (!head) return;
    var pc = document.createElement('link');
    pc.id  = 'keyaz-preconnect';
    pc.rel = 'preconnect';
    pc.href = 'https://use.fontawesome.com';
    pc.crossOrigin = 'anonymous';
    head.insertBefore(pc, head.firstChild);
    var dp = document.createElement('link');
    dp.rel  = 'dns-prefetch';
    dp.href = 'https://use.fontawesome.com';
    head.insertBefore(dp, head.firstChild);
  }

  function injectCSSLink() {
    var head = document.head;
    if (!head) return;
    var fullHref = keyaz_CSS_HREF + '?v=' + keyaz_CSS_VERSION;
    var preId = keyaz_LINK_ID + '-preload';
    var oldPre = document.getElementById(preId);
    if (oldPre && oldPre.parentNode) oldPre.parentNode.removeChild(oldPre);
    var pre = document.createElement('link');
    pre.id   = preId;
    pre.rel  = 'preload';
    pre.as   = 'style';
    pre.href = fullHref;
    pre.setAttribute('fetchpriority', 'high');
    head.insertBefore(pre, head.firstChild);
    var existing = document.getElementById(keyaz_LINK_ID);
    if (existing && existing.parentNode) existing.parentNode.removeChild(existing);
    var link = document.createElement('link');
    link.id   = keyaz_LINK_ID;
    link.rel  = 'stylesheet';
    link.href = fullHref;
    link.setAttribute('fetchpriority', 'high');
    head.appendChild(link);
  }

  function keepCSSLast() {
    var link = document.getElementById(keyaz_LINK_ID);
    var head = document.head;
    if (!link || !head) return;
    if (head.lastElementChild !== link) head.appendChild(link);
  }

  var __keyazHeadObs = null;
  function startHeadObserver() {
    if (__keyazHeadObs || !document.head) return;
    if (typeof MutationObserver === 'undefined') return;
    var pending = false;
    __keyazHeadObs = new MutationObserver(function (mutations) {
      for (var i = 0; i < mutations.length; i++) {
        var added = mutations[i].addedNodes;
        for (var j = 0; j < added.length; j++) {
          if (added[j].id === keyaz_LINK_ID) return;
        }
      }
      if (pending) return;
      pending = true;
      (window.requestAnimationFrame || function (fn) { setTimeout(fn, 16); })(function () {
        pending = false;
        keepCSSLast();
      });
    });
    __keyazHeadObs.observe(document.head, { childList: true });
  }

  function injectStateCSS() {
    if ($1('#keyaz-sub-state-css')) return;
    var s = document.createElement('style');
    s.id = 'keyaz-sub-state-css';
    s.textContent =
      'body.am-logged-in .am-user-identity-block_login::after{content:none!important;display:none!important}' +
      'body.am-logged-in.keyaz-sub-active .am-user-identity-block_login::after{content:"● Active Member"!important;display:block!important;color:#22c55e!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:.3px!important;margin-top:2px!important}' +
      'body.am-logged-in.keyaz-sub-expired .am-user-identity-block_login::after{content:"● Subscription Expired"!important;display:block!important;color:#ef4444!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:.3px!important;margin-top:2px!important}' +
      'body.am-logged-in.keyaz-sub-none .am-user-identity-block_login::after{content:"● No Subscription"!important;display:block!important;color:#94a3b8!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:.3px!important;margin-top:2px!important}' +
      'body.keyaz-sub-expired .am-user-identity-block-avatar-pic::after{content:""!important;position:absolute!important;bottom:-2px!important;right:-2px!important;width:10px!important;height:10px!important;border-radius:50%!important;background:#ef4444!important;border:2px solid #fff!important}' +
      'body.keyaz-sub-active .am-user-identity-block-avatar-pic::after{content:""!important;position:absolute!important;bottom:-2px!important;right:-2px!important;width:10px!important;height:10px!important;border-radius:50%!important;background:#22c55e!important;border:2px solid #fff!important}' +
      '.keyaz-topbar-actions .keyaz-top-avatar{display:none!important}' +
      /* ✅ NEW: logout button layout + look */
      '.keyaz-topbar-actions{display:flex!important;align-items:center!important;gap:8px!important}' +
      '.keyaz-logout-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;text-decoration:none!important;color:inherit;cursor:pointer;transition:color .18s ease,background .18s ease,border-color .18s ease}' +
      '.keyaz-logout-btn:hover{color:#ef4444!important;background:rgba(239,68,68,.12)!important;border-color:rgba(239,68,68,.35)!important}' +
      '.keyaz-logout-btn i{pointer-events:none}';
    document.head.appendChild(s);
  }

  try { localStorage.removeItem('keyaz-sub-state'); } catch (e) {}
  try { sessionStorage.removeItem('keyaz-sub-state-v2'); } catch (e) {}
  try { sessionStorage.removeItem('keyaz-welcomed'); } catch (e) {}

  var keyaz_ICON_MAP = {
    'dashboard': 'fa-solid fa-house', 'home': 'fa-solid fa-house',
    'signup': 'fa-solid fa-user-plus', 'register': 'fa-solid fa-user-plus',
    'sign up': 'fa-solid fa-user-plus',
    'profile': 'fa-solid fa-user', 'account': 'fa-solid fa-user',
    'password': 'fa-solid fa-key', 'change password': 'fa-solid fa-key',
    'billing': 'fa-solid fa-credit-card', 'payment': 'fa-solid fa-receipt',
    'payments': 'fa-solid fa-receipt', 'payment history': 'fa-solid fa-receipt',
    'history': 'fa-solid fa-clock-rotate-left', 'resources': 'fa-solid fa-layer-group',
    'download': 'fa-solid fa-download', 'downloads': 'fa-solid fa-download',
    'extension': 'fa-solid fa-puzzle-piece',
    'affiliate': 'fa-solid fa-users',
    'help': 'fa-solid fa-circle-question', 'support': 'fa-solid fa-headset',
    'contact': 'fa-solid fa-envelope', 'whatsapp': 'fa-brands fa-whatsapp',
    'telegram': 'fa-brands fa-telegram', 'youtube': 'fa-brands fa-youtube',
    'settings': 'fa-solid fa-gear', 'logout': 'fa-solid fa-right-from-bracket',
    'terms': 'fa-solid fa-file-contract', 'privacy': 'fa-solid fa-shield-halved',
    'agreement': 'fa-solid fa-file-signature', 'user agreement': 'fa-solid fa-file-signature',
    'faq': 'fa-solid fa-circle-question', 'tutorial': 'fa-solid fa-graduation-cap',
    'video': 'fa-solid fa-video', 'invoice': 'fa-solid fa-file-invoice',
    'subscription': 'fa-solid fa-crown', 'license': 'fa-solid fa-certificate'
  };
  var keyaz_ICON_KEYS = Object.keys(keyaz_ICON_MAP);

  /* ✅ FIX 1: href-based icon detection — label چاہے کچھ بھی ہو */
  function guessIconForItem(label, href) {
    if (href) {
      var h = href.replace(/\/+$/, '').toLowerCase();
      if (h === '/member' || h === '')              return keyaz_ICON_MAP['dashboard'];
      if (/\/profile/.test(h))                     return keyaz_ICON_MAP['profile'];
      if (/\/payment-history/.test(h))             return keyaz_ICON_MAP['payments'];
      if (/signup|register/.test(h))               return keyaz_ICON_MAP['signup'];
      if (/password/.test(h))                      return keyaz_ICON_MAP['password'];
      if (/whatsapp/.test(h))                      return keyaz_ICON_MAP['whatsapp'];
      if (/telegram/.test(h))                      return keyaz_ICON_MAP['telegram'];
      if (/youtube/.test(h))                       return keyaz_ICON_MAP['youtube'];
      if (/terms|policy|privacy/.test(h))          return keyaz_ICON_MAP['terms'];
      if (/affiliate/.test(h))                     return keyaz_ICON_MAP['affiliate'];
      if (/billing|invoice/.test(h))               return keyaz_ICON_MAP['billing'];
    }
    return guessIcon(label);
  }

  function guessIcon(label) {
    var l = String(label || '').toLowerCase().trim();
    for (var i = 0; i < keyaz_ICON_KEYS.length; i++) {
      if (l.indexOf(keyaz_ICON_KEYS[i]) !== -1) return keyaz_ICON_MAP[keyaz_ICON_KEYS[i]];
    }
    return 'fa-solid fa-circle-dot';
  }

  function guessSection(label) {
    var l = String(label || '').toLowerCase().trim();
    if (/(dashboard|home|signup|sign up|register|resource|download|extension|tool)/.test(l)) return 'Main';
    if (/(profile|account|password|setting|billing|payment|history|invoice|subscription|license)/.test(l)) return 'Account';
    if (/(support|contact|help|whatsapp|telegram|faq|tutorial|video|youtube)/.test(l)) return 'Support';
    if (/(term|policy|privacy|legal|agreement|user agreement)/.test(l)) return 'Legal';
    return 'More';
  }

  var keyaz_MENU_SELECTORS = [
    'ul.am-tabs > li > a',
    '.am-tabs-wrapper ul li a',
    '.am-tabs-narrow-wrapper ul li a',
    '.am-tabs-narrow-wrapper-tail ul li a',
    '.am-tabs-narrow ul li a',
    '.am-tabs-narrow-stuff ul li a',
    '.am-account-toolbar-items > ul > li > a',
    '.am-user-menu a', '.am-menu a',
    '.am-account-toolbar a', 'nav.am-tabs a'
  ];

  function readAMemberMenu() {
    var items = [], seen = Object.create(null);
    for (var s = 0; s < keyaz_MENU_SELECTORS.length; s++) {
      var nodes;
      try { nodes = document.querySelectorAll(keyaz_MENU_SELECTORS[s]); }
      catch (e) { continue; }
      for (var i = 0; i < nodes.length; i++) {
        var a = nodes[i];
        var href  = a.getAttribute('href');
        var label = (a.textContent || '').trim().replace(/\s+/g, ' ');
        if (!href || !label) continue;
        if (href === '#' || href === '' || href.indexOf('javascript:') === 0) continue;
        var ll = label.toLowerCase();
        if (ll === 'logout' || ll === 'sign out' || ll === 'signout') continue;
        if (ll.indexOf('language') !== -1 || ll.indexOf('print') === 0) continue;
        var key = href + '|' + label;
        if (seen[key]) continue;
        seen[key] = true;
        /* ✅ FIX 2: guessIcon → guessIconForItem */
        items.push({ section: guessSection(label), label: label, href: href, icon: guessIconForItem(label, href), target: a.getAttribute('target') || '' });
      }
    }
    return items;
  }

  /* ✅ NEW: page se asli logout link dhoondo, warna fallback /logout */
  function findLogoutHref() {
    var sels = [
      '.am-tabs a[href*="logout"]',
      '.am-account-toolbar a[href*="logout"]',
      '.am-user-menu a[href*="logout"]',
      '.am-menu a[href*="logout"]',
      'a[href$="/logout"]',
      'a[href*="logout"]'
    ];
    for (var i = 0; i < sels.length; i++) {
      var a;
      try { a = document.querySelector(sels[i]); } catch (e) { continue; }
      if (a) {
        var h = a.getAttribute('href');
        if (h && h !== '#' && h.indexOf('javascript:') !== 0) return h;
      }
    }
    return '/logout';
  }

  var docEl = document.documentElement;

  var ESC_MAP = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' };
  var ESC_RE  = /[&<>"']/g;
  function esc(s) { return String(s == null ? '' : s).replace(ESC_RE, function (c) { return ESC_MAP[c]; }); }

  function txt(sel, fallback) {
    var el = $1(sel);
    return (el && el.textContent.trim()) || fallback || '';
  }

  var _kind = null;
  function pageKind() {
    if (_kind) return _kind;
    var p   = window.location.pathname || '/';
    var cls = document.body.className  || '';
    if (/signup/.test(p) || cls.indexOf('am-page-signup') !== -1)                             _kind = 'signup';
    else if (/login|sendpass/.test(p) || cls.indexOf('am-page-login') !== -1)                 _kind = 'login';
    else if (/profile/.test(p) || cls.indexOf('am-page-profile') !== -1)                      _kind = 'profile';
    else if (/payment-history/.test(p) || cls.indexOf('am-page-payment-history') !== -1)      _kind = 'payments';
    else if (/terms|policy|policies/.test(p) || cls.indexOf('am-page-terms') !== -1 || $1('.keyaz-agreement-root')) _kind = 'terms';
    else _kind = 'dashboard';
    return _kind;
  }

  function timeGreeting() {
    var h = new Date().getHours();
    if (h >= 5  && h < 12) return 'welcome Back';
    if (h >= 12 && h < 17) return 'welcome Back';
    if (h >= 17 && h < 21) return 'welcome Back';
    return 'Welcome Back';
  }

  function daysBetween(a, b) {
    return Math.round((new Date(b.getFullYear(), b.getMonth(), b.getDate()) -
                       new Date(a.getFullYear(), a.getMonth(), a.getDate())) / 86400000);
  }
  function endOfDay(d) {
    var e = new Date(d.getTime());
    e.setHours(23, 59, 59, 999);
    return e;
  }
  function isExpiredDate(d) { return d ? endOfDay(d).getTime() < Date.now() : false; }
  function formatDate(d) {
    try { return d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' }); }
    catch (e) { return String(d); }
  }
  function store(k, v) { try { localStorage.setItem(k, v); } catch (e) {} }
  function read(k)      { try { return localStorage.getItem(k); } catch (e) { return null; } }

  var toastWrap = null;
  var TOAST_ICONS = { ok: 'fa-circle-check', err: 'fa-circle-xmark', info: 'fa-circle-info' };
  function toast(msg, type, ms) {
    if (!toastWrap) {
      toastWrap = document.createElement('div');
      toastWrap.className = 'keyaz-toast-wrap';
      document.body.appendChild(toastWrap);
    }
    while (toastWrap.children.length >= 4) toastWrap.removeChild(toastWrap.firstChild);
    var t = document.createElement('div');
    t.className = 'keyaz-toast ' + (type || 'info');
    t.innerHTML = '<i class="fa-solid ' + (TOAST_ICONS[type] || TOAST_ICONS.info) + '"></i>' +
                  '<span>' + esc(msg) + '</span>' +
                  '<button class="close" aria-label="Dismiss"><i class="fa-solid fa-xmark"></i></button>';
    function dismiss() {
      if (t.classList.contains('leaving')) return;
      t.classList.add('leaving');
      setTimeout(function () { if (t.parentNode) t.parentNode.removeChild(t); }, 260);
    }
    t.querySelector('.close').addEventListener('click', dismiss);
    toastWrap.appendChild(t);
    setTimeout(dismiss, ms || 3200);
  }

  function attachScrollProgress() {
    if ($1('.keyaz-progress')) return;
    var bar = document.createElement('div');
    bar.className = 'keyaz-progress';
    document.body.appendChild(bar);
    var ticking = false;
    function update() {
      var max = docEl.scrollHeight - docEl.clientHeight;
      var pct = max > 0 ? (docEl.scrollTop / max) * 100 : 0;
      bar.style.width = pct + '%';
      bar.classList.toggle('show', docEl.scrollTop > 40);
      ticking = false;
    }
    window.addEventListener('scroll', function () {
      if (!ticking) { ticking = true; window.requestAnimationFrame(update); }
    }, { passive: true });
    update();
  }

  function parseDateRobust(raw) {
    if (!raw) return null;
    raw = String(raw).trim();
    if (!raw) return null;
    var iso = raw.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
    if (iso) {
      var ld = new Date(+iso[1], +iso[2] - 1, +iso[3]);
      if (!isNaN(ld.getTime())) return ld;
    }
    var m = raw.match(/^(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})/);
    if (m) {
      var d2 = new Date(+m[1], +m[2] - 1, +m[3]);
      if (!isNaN(d2.getTime())) return d2;
    }
    var d = new Date(raw);
    if (!isNaN(d.getTime()) && d.getFullYear() >= 2000 && d.getFullYear() <= 2100) return d;
    m = raw.match(/\b(\d{1,2})[\/\-\.](\d{1,2})[\/\-\.](\d{2,4})\b/);
    if (m) {
      var a = +m[1], b = +m[2], y = +m[3];
      if (y < 100) y += 2000;
      if (a > 12)      { d = new Date(y, b - 1, a); if (!isNaN(d.getTime())) return d; }
      else if (b > 12) { d = new Date(y, a - 1, b); if (!isNaN(d.getTime())) return d; }
      else             { d = new Date(y, b - 1, a); if (!isNaN(d.getTime())) return d; }
    }
    m = raw.match(/\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\.?\s+(\d{1,2}),?\s+(\d{4})\b/i);
    if (m) { d = new Date(m[1] + ' ' + m[2] + ', ' + m[3]); if (!isNaN(d.getTime())) return d; }
    m = raw.match(/\b(\d{1,2})\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\.?,?\s+(\d{4})\b/i);
    if (m) { d = new Date(m[2] + ' ' + m[1] + ', ' + m[3]); if (!isNaN(d.getTime())) return d; }
    return null;
  }

  function hasNoSubDOMIndicator() {
    if (document.body.classList.contains('am-page-member-subscriptions-no')) return true;
    if ($1('.am-list-subscriptions-no')) return true;
    if ($1('[class*="subscriptions-no"]')) return true;
    return false;
  }

  var keyaz_DATE_SELECTORS = [
    '.am-list-subscriptions-date_expires_date', '.am-list-subscriptions-date_expires',
    '.am-list-subscriptions-expires', '.am-list-subscriptions-expiry',
    '.am-list-subscriptions-date', 'time[datetime]', '[data-date]'
  ];

  function extractExpiryDate(li) {
    var el = null;
    for (var i = 0; i < keyaz_DATE_SELECTORS.length; i++) {
      el = li.querySelector(keyaz_DATE_SELECTORS[i]);
      if (el) break;
    }
    var raw = '';
    if (el) {
      raw = el.getAttribute('data-date') || el.getAttribute('datetime') ||
            el.getAttribute('title')     || el.textContent || '';
    }
    return parseDateRobust(raw) || parseDateRobust(li.textContent || '');
  }

  function rowHasExpiredIndicator(li) {
    var cls = ' ' + (li.className || '').toLowerCase() + ' ';
    if (/expired|inactive|suspended/.test(cls)) return true;
    if (li.querySelector('[class*="expired"],[class*="inactive"],[class*="suspended"]')) return true;
    var statusEl = li.querySelector('[class*="status"],[class*="state"]');
    if (statusEl) {
      var st = (statusEl.textContent || '').toLowerCase();
      if (/\b(expired|inactive|suspended)\b/.test(st)) return true;
      if (/\b(active|valid|paid)\b/.test(st)) return false;
    }
    var t = (li.textContent || '').toLowerCase();
    return /\b(expired|inactive|suspended)\b/.test(t);
  }

  function detectSubState(sublist) {
    if (hasNoSubDOMIndicator()) return { hasAny: false, hasActive: false, activeCount: 0, unknown: false };
    if (sublist === null || sublist === undefined) return { hasAny: false, hasActive: false, activeCount: 0, unknown: true };
    if (sublist.length > 0) {
      var state = { hasAny: true, hasActive: false, activeCount: 0, unknown: false };
      for (var i = 0; i < sublist.length; i++) {
        var li  = sublist[i];
        var exp = extractExpiryDate(li);
        if (!(exp ? isExpiredDate(exp) : rowHasExpiredIndicator(li))) state.activeCount++;
      }
      state.hasActive = state.activeCount > 0;
      return state;
    }
    return { hasAny: false, hasActive: false, activeCount: 0, unknown: false };
  }

  function applySubStateClasses(state) {
    if (!document.body.classList.contains('am-logged-in')) return { isUnknown: true, isExpired: false, isNoSub: false, isActive: false };
    document.body.classList.remove('keyaz-sub-active', 'keyaz-sub-expired', 'keyaz-sub-none');
    if (state.unknown) return { isUnknown: true, isExpired: false, isNoSub: false, isActive: false };
    var isNoSub   = !state.hasAny;
    var isExpired = !isNoSub && !state.hasActive;
    var isActive  = !!state.hasActive;
    if (isExpired)     document.body.classList.add('keyaz-sub-expired');
    else if (isNoSub)  document.body.classList.add('keyaz-sub-none');
    else if (isActive) document.body.classList.add('keyaz-sub-active');
    return { isUnknown: false, isExpired: isExpired, isNoSub: isNoSub, isActive: isActive };
  }

  function forceExpiredUI(reason, isNoSubState) {
    document.body.classList.remove('keyaz-sub-active', 'keyaz-sub-expired', 'keyaz-sub-none');
    document.body.classList.add(isNoSubState ? 'keyaz-sub-none' : 'keyaz-sub-expired');
    var MSG       = isNoSubState
      ? 'You don\u2019t have an active subscription yet. Subscribe to unlock your tools and resources.'
      : 'Your subscription has expired. Renew to restore access to your tools and resources.';
    var RENEW_HREF = '/signup';
    var BADGE_TEXT = isNoSubState ? 'No Active Subscription' : 'Premium Access Expired';
    var BADGE_ICON = isNoSubState ? 'fa-circle-info' : 'fa-triangle-exclamation';
    var BTN_LABEL  = isNoSubState ? 'Subscribe Now' : 'Renew Subscription';
    var BTN_ICON   = isNoSubState ? 'fa-circle-plus' : 'fa-rotate-right';
    var STATUS_TXT = isNoSubState ? 'No Subscription' : 'Expired';
    var STATUS_ICO = isNoSubState ? 'fa-circle-info' : 'fa-circle-xmark';
    var NOTIF_TTL  = isNoSubState ? 'No Active Subscription' : 'Subscription Expired';

    var heroBadge = document.querySelector('.keyaz-hero .keyaz-hero-badge');
    if (heroBadge) { heroBadge.className = 'keyaz-hero-badge expired'; heroBadge.innerHTML = '<i class="fa-solid ' + BADGE_ICON + '"></i> ' + BADGE_TEXT; }

    var heroP = document.querySelector('.keyaz-hero p');
    if (heroP) heroP.textContent = MSG;

    var heroPrimary = document.querySelector('.keyaz-hero .keyaz-hero-actions a:first-child');
    if (heroPrimary) {
      heroPrimary.href      = RENEW_HREF;
      heroPrimary.className = 'keyaz-btn keyaz-btn-primary keyaz-btn-danger';
      heroPrimary.innerHTML = BTN_LABEL + ' <i class="fa-solid ' + BTN_ICON + '"></i>';
    }

    var allStats = document.querySelectorAll('.keyaz-hero-stats .keyaz-stat');
    if (allStats.length >= 1) {
      var st0 = allStats[0], s0str = st0.querySelector('strong'), s0ico = st0.querySelector('.keyaz-stat-ico i');
      if (s0str) s0str.textContent = STATUS_TXT;
      st0.className = 'keyaz-stat expired';
      if (s0ico) s0ico.className = 'fa-solid ' + STATUS_ICO;
    }
    if (allStats.length >= 2) { var st1 = allStats[1], s1str = st1.querySelector('strong'); if (s1str) s1str.textContent = '0 Available'; st1.className = 'keyaz-stat expired'; }
    if (allStats.length >= 3) { var st2 = allStats[2], s2str = st2.querySelector('strong'); if (s2str) s2str.textContent = '0 Active';     st2.className = 'keyaz-stat expired'; }

    var notifList = document.querySelector('.keyaz-notif-panel .keyaz-notif-list');
    if (notifList && !notifList.querySelector('.keyaz-notif-item.danger')) {
      var reasonMsg = reason === 'resources'
        ? 'You have 0 active resources. Renew your subscription to restore access.'
        : reason === 'subs'
          ? (isNoSubState ? 'You don\u2019t have an active subscription. Subscribe to unlock full access.'
                          : 'You have 0 active subscriptions. Renew to restore full access.')
          : MSG;
      var dangerEl       = document.createElement('a');
      dangerEl.className = 'keyaz-notif-item danger';
      dangerEl.href      = RENEW_HREF;
      dangerEl.innerHTML = '<span class="ic"><i class="fa-solid ' + STATUS_ICO + '"></i></span>' +
                           '<span class="tx"><b>' + esc(NOTIF_TTL) + '</b><span>' + esc(reasonMsg) + '</span></span>';
      notifList.insertBefore(dangerEl, notifList.firstChild);
      var okItems = notifList.querySelectorAll('.keyaz-notif-item.ok');
      for (var oi = 0; oi < okItems.length; oi++) {
        var okTx = okItems[oi].querySelector('b');
        if (okTx && okTx.textContent === 'All good!') okItems[oi].parentNode.removeChild(okItems[oi]);
      }
    }
    var notifDot = document.querySelector('.keyaz-notif-btn .dot');
    if (notifDot) notifDot.style.display = '';
  }

  function scheduleSubRecheck() {
    if (!document.body.classList.contains('am-logged-in')) return;

    function doCheck() {
      invalidateQS();
      var subListContainer  = document.querySelector('.am-list-subscriptions');
      var resourceContainer = document.querySelector('.am-list-resources');

      if (hasNoSubDOMIndicator()) { forceExpiredUI('subs', true); return; }

      var subLis        = subListContainer  ? subListContainer.querySelectorAll(':scope > li')  : null;
      var resourceCount = resourceContainer ? resourceContainer.querySelectorAll(':scope > li').length : -1;
      var st            = detectSubState(subLis);
      var flags         = applySubStateClasses(st);

      var subExpired    = flags.isExpired || (!flags.isUnknown && !st.hasActive && st.hasAny);
      var zeroResources = !flags.isUnknown && !flags.isActive && resourceContainer && resourceCount === 0;
      var zeroSubs      = !flags.isUnknown && subListContainer && subLis && subLis.length === 0;
      var alertNow      = subExpired || flags.isNoSub || zeroResources || zeroSubs;

      if (alertNow) {
        forceExpiredUI(zeroResources ? 'resources' : (zeroSubs || flags.isNoSub) ? 'subs' : 'expired', flags.isNoSub);
        return;
      }
      if (flags.isUnknown) return;

      var heroBadge = document.querySelector('.keyaz-hero .keyaz-hero-badge');
      if (heroBadge) { heroBadge.className = 'keyaz-hero-badge'; heroBadge.innerHTML = '<i class="fa-solid fa-bolt"></i> Premium Access Active'; }
      var heroP = document.querySelector('.keyaz-hero p');
      if (heroP) heroP.textContent = 'We\u2019re glad you\u2019re here. I\u2019m your success partner \u2014 KEY AZ TOOLS.';
      var heroPrimary = document.querySelector('.keyaz-hero .keyaz-hero-actions a:first-child');
      if (heroPrimary) { heroPrimary.href = '/signup'; heroPrimary.className = 'keyaz-btn keyaz-btn-primary'; heroPrimary.innerHTML = 'Explore More Tools <i class="fa-solid fa-arrow-right"></i>'; }

      var allStats = document.querySelectorAll('.keyaz-hero-stats .keyaz-stat');
      if (allStats.length >= 1) { var as0 = allStats[0], as0s = as0.querySelector('strong'), as0i = as0.querySelector('.keyaz-stat-ico i'); if (as0s) as0s.textContent = 'Active Member'; as0.className = 'keyaz-stat'; if (as0i) as0i.className = 'fa-solid fa-circle-check'; }
      if (allStats.length >= 2) { var as1 = allStats[1], as1s = as1.querySelector('strong'); if (as1s) as1s.textContent = (resourceCount >= 0 ? resourceCount : st.activeCount || 0) + ' Available'; as1.className = 'keyaz-stat'; }
      if (allStats.length >= 3) { var as2 = allStats[2], as2s = as2.querySelector('strong'); if (as2s) as2s.textContent = (st.activeCount || 0) + ' Active'; as2.className = 'keyaz-stat'; }
    }

    var delays = IS_SLOW ? [1800] : [600, 2500];
    for (var i = 0; i < delays.length; i++) {
      (function (d) { setTimeout(doCheck, d); })(delays[i]);
    }

    var subListContainerForObs = document.querySelector('.am-list-subscriptions');
    if (subListContainerForObs && typeof MutationObserver !== 'undefined') {
      var subObs = new MutationObserver(function () { doCheck(); subObs.disconnect(); });
      subObs.observe(subListContainerForObs, { childList: true, subtree: true, attributes: true });
    }
  }

  function isValidAvatarSrc(src) {
    if (!src || src === '#' || src.indexOf('blank') !== -1 || src.length < 10) return false;
    if (src === keyaz_LOGO_URL) return false;
    if (src.indexOf('gravatar.com') !== -1) {
      if (/d=(mm|blank|identicon|monsterid|wavatar|retro|robohash)/.test(src)) return false;
    }
    return true;
  }

  function updateAvatarUI(src) {
    var uname = (document.querySelector('.am-user-identity-block_login') || { textContent: 'Member' }).textContent.trim().replace(/\s+/g, ' ') || 'Member';
    var safeSrc = isValidAvatarSrc(src) ? src : keyaz_LOGO_URL;

    var profAv = $1('.keyaz-profile-avatar');
    if (profAv) {
      var profImg = profAv.querySelector('img');
      if (profImg) profImg.src = safeSrc;
      else profAv.innerHTML = '<img src="' + esc(safeSrc) + '" alt="' + esc(uname) + '" onerror="this.src=\'' + keyaz_LOGO_URL + '\'">';
    }
    invalidateQS();
  }

  function watchAvatar() {
    var existing = $1('.am-user-identity-block-avatar-pic img');
    if (existing && isValidAvatarSrc(existing.getAttribute('src') || '')) { updateAvatarUI(existing.getAttribute('src')); return; }

    var avatarObs = null;
    var avatarObsTimer = null;
    var foundValid = false;

    if (typeof MutationObserver !== 'undefined') {
      avatarObs = new MutationObserver(function () {
        var el = $1('.am-user-identity-block-avatar-pic img');
        var src = el ? (el.getAttribute('src') || '') : '';
        if (isValidAvatarSrc(src)) {
          avatarObs.disconnect();
          if (avatarObsTimer) clearTimeout(avatarObsTimer);
          updateAvatarUI(src);
          foundValid = true;
        }
      });
      avatarObs.observe($1('.am-user-identity-block-avatar-pic') || document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['src'] });
      avatarObsTimer = setTimeout(function () { if (avatarObs) avatarObs.disconnect(); }, 30000);
    }

    var TRIES = 0, MAX = IS_SLOW ? 10 : 20, INTERVAL = IS_SLOW ? 1000 : 500;
    (function poll() {
      TRIES++;
      var el = $1('.am-user-identity-block-avatar-pic img');
      var src = el ? (el.getAttribute('src') || '') : '';
      if (isValidAvatarSrc(src)) {
        if (avatarObs) { avatarObs.disconnect(); if (avatarObsTimer) clearTimeout(avatarObsTimer); }
        updateAvatarUI(src);
        foundValid = true;
        return;
      }
      if (TRIES < MAX) {
        setTimeout(poll, INTERVAL);
      } else {
        if (avatarObs) { avatarObs.disconnect(); if (avatarObsTimer) clearTimeout(avatarObsTimer); }
        if (!foundValid) {
          updateAvatarUI(keyaz_LOGO_URL);
        }
      }
    })();
  }

  function defer(fn) {
    if (IS_SLOW) { setTimeout(fn, 2000); return; }
    if (typeof window.requestIdleCallback === 'function') {
      window.requestIdleCallback(fn, { timeout: 600 });
    } else {
      setTimeout(fn, 1);
    }
  }

  function deferLow(fn) {
    setTimeout(fn, IS_SLOW ? 4000 : 1200);
  }

  function build() {
    keepCSSLast();

    var body       = document.body;
    var isLoggedIn = body.classList.contains('am-logged-in');
    var kind       = pageKind();
    var username   = txt('.am-user-identity-block_login', 'Member');
    var avatarEl   = $1('.am-user-identity-block-avatar-pic img');
    var avatar     = avatarEl ? (avatarEl.getAttribute('src') || '') : '';
    if (!isValidAvatarSrc(avatar)) avatar = '';
    var displayAvatar = avatar || keyaz_LOGO_URL;

    var resourceContainer  = $1('.am-list-resources');
    var hasPageResourceData = !!resourceContainer;
    var resourceCount      = hasPageResourceData ? resourceContainer.querySelectorAll(':scope > li').length : 0;

    var subListContainer = $1('.am-list-subscriptions');
    var hasPageSubData   = !!subListContainer;
    var subLis           = hasPageSubData ? subListContainer.querySelectorAll(':scope > li') : null;
    var subCount         = subLis ? subLis.length : 0;

    var subState, stateFlags;
    if (isLoggedIn) {
      subState   = hasNoSubDOMIndicator() ? { hasAny: false, hasActive: false, activeCount: 0, unknown: false } : detectSubState(hasPageSubData ? subLis : null);
      stateFlags = applySubStateClasses(subState);
    } else {
      subState   = { hasAny: false, hasActive: false, activeCount: 0, unknown: true };
      stateFlags = { isUnknown: true, isExpired: false, isNoSub: false, isActive: false };
    }
    var isUnknown = stateFlags.isUnknown, isExpired = stateFlags.isExpired;
    var isNoSub   = stateFlags.isNoSub,   isActive  = stateFlags.isActive;

    var zeroActiveResources = !isUnknown && hasPageResourceData && resourceCount === 0;
    var zeroActiveSubs      = !isUnknown && hasPageSubData && subCount === 0;
    var effectiveResourceCount = (isExpired || isNoSub || zeroActiveResources || zeroActiveSubs) ? 0 : resourceCount;
    var effectiveSubCount      = (isExpired || isNoSub || zeroActiveResources || zeroActiveSubs) ? 0 : subState.activeCount;
    var limitedAccess = zeroActiveResources && !isNoSub && !isActive;

    if (limitedAccess) {
      body.classList.remove('keyaz-sub-active', 'keyaz-sub-none');
      body.classList.add('keyaz-sub-expired');
      isExpired = true; isActive = false; isNoSub = false;
    }

    var alertState  = isExpired || isNoSub || limitedAccess || (!isUnknown && !subState.hasActive && subState.hasAny);
    var exploreHref = ($1('.am-list-resources > li > a') || { getAttribute: function() { return '/member'; } }).getAttribute('href') || '/member';
    var sidebar     = $1('.am-body-content-top');
    var aMemberItems = isLoggedIn ? readAMemberMenu() : [];

    if (isLoggedIn) {
  if (sidebar && !sidebar.querySelector('.keyaz-brand')) {
    var brand = document.createElement('div');
    brand.className = 'keyaz-brand';
    brand.innerHTML =
      '<div class="keyaz-brand-logo" style="text-align: center; padding: 10px 0;">' +
      '<img src="https://cdn.keyaztools.com/images/logo50080" alt="KEY AZ TOOLS Logo" style="max-width: 100%; width: 270px; height: auto; vertical-align: middle;">' +
      '</div>';
    sidebar.insertBefore(brand, sidebar.firstChild);
  }
      var toolbar = sidebar ? sidebar.querySelector('.am-account-toolbar') : null;
      if (toolbar && !toolbar.querySelector('.keyaz-nav-scroll')) {

        var currentPath = (window.location.pathname || '/').replace(/\/+$/, '') || '/';

        var isActiveLink = function (href) {
          if (!href || href === '#' || href.indexOf('javascript:') === 0) return false;
          try {
            var tmp = document.createElement('a');
            tmp.href = href;
            if (tmp.hostname && window.location.hostname &&
                tmp.hostname !== window.location.hostname) return false;
            var lp = (tmp.pathname || '/').replace(/\/+$/, '') || '/';
            var cp = currentPath;
            if (lp === '/member') return cp === '/member' || cp === '' || cp === '/';
            if (lp === '/') return cp === '/' || cp === '';
            return cp === lp || cp.indexOf(lp + '/') === 0;
          } catch (e) {}
          return false;
        };

        var sections = Object.create(null);
        for (var ai = 0; ai < aMemberItems.length; ai++) {
          var item = aMemberItems[ai];
          var sec  = item.section || 'More';
          if (!sections[sec]) sections[sec] = [];
          sections[sec].push(item);
        }

        var navParts = ['<div class="keyaz-nav-search"><input type="text" placeholder="Search menu\u2026" aria-label="Search menu" autocomplete="off"></div>'];
        var preferredOrder = ['Main', 'Account', 'Support', 'Legal', 'More'];
        var orderedSections = [];
        for (var pi = 0; pi < preferredOrder.length; pi++) { if (sections[preferredOrder[pi]]) orderedSections.push(preferredOrder[pi]); }
        for (var sk in sections) { if (orderedSections.indexOf(sk) === -1) orderedSections.push(sk); }

        /* ✅ FIX 3: Fallback section — keyaz_ICON_MAP use karo, hardcoded nahi */
        if (!orderedSections.length) {
          orderedSections = ['Main'];
          sections['Main'] = [
            { label: 'Dashboard',        href: '/member',                 icon: keyaz_ICON_MAP['dashboard'], target: '' },
            { label: 'Profile',          href: '/profile',                icon: keyaz_ICON_MAP['profile'],   target: '' },
            { label: 'Payments History', href: '/member/payment-history', icon: keyaz_ICON_MAP['payments'],  target: '' }
          ];
        }

        for (var oi = 0; oi < orderedSections.length; oi++) {
          var sn = orderedSections[oi];
          navParts.push('<span class="keyaz-nav-label">' + esc(sn) + '</span>');
          var secItems = sections[sn];
          for (var si = 0; si < secItems.length; si++) {
            var it = secItems[si];
            var isActive_link = isActiveLink(it.href);
            navParts.push(
              '<a href="' + esc(it.href) + '" class="keyaz-nav-item' + (isActive_link ? ' active' : '') + '"' +
              (it.target ? ' target="' + esc(it.target) + '" rel="noopener"' : '') + '>' +
              '<span class="ico"><i class="' + esc(it.icon) + '"></i></span>' +
              '<span class="lbl">' + esc(it.label) + '</span>' +
              '<i class="fa-solid fa-chevron-right chev"></i></a>'
            );
          }
        }
        navParts.push('<div class="keyaz-nav-empty">No matches found</div>');

        var nav = document.createElement('div');
        nav.className = 'keyaz-nav-scroll';
        nav.innerHTML = navParts.join('');
        toolbar.insertBefore(nav, toolbar.firstChild);

        var searchInput = nav.querySelector('.keyaz-nav-search input');
        var navEmpty    = nav.querySelector('.keyaz-nav-empty');
        if (searchInput) {
          var searchItems  = nav.querySelectorAll('.keyaz-nav-item');
          var searchLabels = nav.querySelectorAll('.keyaz-nav-label');
          searchInput.addEventListener('input', function () {
            var q = searchInput.value.trim().toLowerCase(), visible = 0;
            for (var i = 0; i < searchItems.length; i++) {
              var match = !q || searchItems[i].textContent.toLowerCase().indexOf(q) !== -1;
              searchItems[i].classList.toggle('hidden-by-search', !match);
              if (match) visible++;
            }
            for (var li2 = 0; li2 < searchLabels.length; li2++) {
              var lb = searchLabels[li2];
              if (!q) { lb.style.display = ''; continue; }
              var next = lb.nextElementSibling, anyVis = false;
              while (next && !next.classList.contains('keyaz-nav-label')) {
                if (next.classList.contains('keyaz-nav-item') && !next.classList.contains('hidden-by-search')) { anyVis = true; break; }
                next = next.nextElementSibling;
              }
              lb.style.display = anyVis ? '' : 'none';
            }
            navEmpty.classList.toggle('show', visible === 0);
          });
        }
      }

      if (subLis && subLis.length) {
        var now = new Date();
        for (var sli = 0; sli < subLis.length; sli++) {
          var li = subLis[sli];
          if (li.querySelector('.keyaz-expiry-track')) continue;
          var expDate = extractExpiryDate(li);
          if (!expDate) continue;
          var isRowExp = isExpiredDate(expDate);
          var daysLeft = isRowExp ? 0 : daysBetween(now, endOfDay(expDate));
          if (isRowExp) li.classList.add('keyaz-expired');
          else li.classList.remove('keyaz-expired');
          var pct   = isRowExp ? 100 : Math.max(0, Math.min(100, (daysLeft / 30) * 100));
          var track = document.createElement('div');
          track.className = 'keyaz-expiry-track';
          var fill  = document.createElement('div');
          fill.className = 'keyaz-expiry-fill' + (isRowExp || daysLeft <= 3 ? ' danger' : daysLeft <= 7 ? ' warn' : '');
          fill.style.width = pct + '%';
          track.appendChild(fill);
          li.appendChild(track);
          var daysTag = document.createElement('span');
          daysTag.className = 'keyaz-days-left' + (isRowExp ? ' expired' : daysLeft <= 3 ? ' urgent' : '');
          daysTag.innerHTML = '<i class="fa-regular fa-clock"></i> ' + (isRowExp ? 'Expired' : daysLeft === 0 ? 'Last day' : daysLeft + 'd left');
          var datePill = li.querySelector('.am-list-subscriptions-date');
          if (datePill) datePill.appendChild(daysTag);
        }
      }
    }

   var topbar = document.createElement('header');
topbar.className = 'keyaz-topbar';
var pageTitle = { signup: 'Signup', login: 'Login', profile: 'Profile', payments: 'Payments History', terms: 'Terms & Conditions' }[kind] || 'Dashboard';

var left = isLoggedIn
  ? '<button class="keyaz-sidebar-collapse" title="Collapse sidebar (Ctrl+B)"><i class="fa-solid fa-chevron-left"></i></button>' +
    '<button class="keyaz-sidebar-expand" title="Expand sidebar"><i class="fa-solid fa-bars"></i></button>' +
    '<button class="keyaz-burger" aria-label="Menu"><i class="fa-solid fa-bars"></i></button>'
  : '<a href="/login" class="keyaz-brand" style="height:auto;min-height:auto;padding:0;border:none;background:transparent;box-shadow:none; display:flex; align-items:center;">' +
    // Yahan full logo image add kar di gayi hai
    '<img src="https://cdn.keyaztools.com/images/logo50080" alt="KEY AZ TOOLS Logo" style="max-width: 100%; width: 270px; height: auto; vertical-align: middle;"></a>';

/* ✅ NEW: asli logout link nikaalo (fallback /logout) */
var keyazLogoutHref = isLoggedIn ? findLogoutHref() : '/logout';

var actions = isLoggedIn
  ? '<button class="keyaz-icon-btn keyaz-notif-btn" title="Notifications" aria-label="Notifications"><i class="fa-regular fa-bell"></i><span class="dot"></span></button>' +
    /* ✅ NEW: bell ke right side logout button */
    '<a href="' + esc(keyazLogoutHref) + '" class="keyaz-icon-btn keyaz-logout-btn" title="Logout" aria-label="Logout"><i class="fa-solid fa-right-from-bracket"></i></a>'
  : kind === 'login'
    ? '<a href="/signup" class="keyaz-btn keyaz-btn-primary" style="padding:10px 20px;font-size:13px;">Get Started <i class="fa-solid fa-arrow-right"></i></a>'
    : '';

topbar.innerHTML = left +
  '<div class="keyaz-page-head"><span class="keyaz-page-title">' + pageTitle + '</span>' +
  '<span class="keyaz-crumb"><a href="/member">Home</a> <i class="fa-solid fa-chevron-right"></i> ' + pageTitle + '</span></div>' +
  '<div class="keyaz-topbar-actions">' + actions + '</div>';
body.appendChild(topbar);
    var content = $1('.am-body-content-content');
    if (content) {
      var inner = content.querySelector('.keyaz-content-inner');
      if (!inner) {
        inner = document.createElement('div');
        inner.className = 'keyaz-content-inner';
        while (content.firstChild) inner.appendChild(content.firstChild);
        content.appendChild(inner);
      }

      if (isLoggedIn && kind === 'dashboard' && !inner.querySelector('.keyaz-hero')) {
        var hbc = isNoSub ? 'keyaz-hero-badge expired' : alertState ? 'keyaz-hero-badge expired' : 'keyaz-hero-badge';
        var hbi = isNoSub ? 'fa-circle-info' : alertState ? 'fa-triangle-exclamation' : 'fa-bolt';
        var hbt = isNoSub ? 'No Active Subscription' : alertState ? 'Premium Access Expired' : 'Premium Access Active';
        var heroMsg  = isNoSub ? 'You don\u2019t have an active subscription yet. Subscribe to unlock your tools and resources.'
                     : alertState ? 'Your subscription has expired. Renew to restore access to your tools and resources.'
                     : 'We\u2019re glad you\u2019re here. I\u2019m your success partner \u2014 KEY AZ TOOLS.';
        var hpHref   = alertState ? '/signup' : exploreHref;
        var hpClass  = alertState ? 'keyaz-btn keyaz-btn-primary keyaz-btn-danger' : 'keyaz-btn keyaz-btn-primary';
        var hpLabel  = isNoSub ? 'Subscribe Now' : alertState ? 'Renew Subscription' : 'Explore More Tools';
        var hpIcon   = isNoSub ? 'fa-circle-plus' : alertState ? 'fa-rotate-right' : 'fa-arrow-right';
        var statLbl  = isNoSub ? 'No Subscription' : alertState ? 'Expired' : isUnknown ? 'Check on Dashboard' : 'Active Member';
        var statIco  = isNoSub ? 'fa-circle-info' : alertState ? 'fa-circle-xmark' : isUnknown ? 'fa-spinner' : 'fa-circle-check';
        var statCls  = alertState ? 'keyaz-stat expired' : 'keyaz-stat';

        var hero = document.createElement('section');
        hero.className = 'keyaz-hero';
        hero.innerHTML =
          '<span class="keyaz-hero-glow g1"></span><span class="keyaz-hero-glow g2"></span>' +
          '<div class="keyaz-hero-inner">' +
            '<span class="' + hbc + '"><i class="fa-solid ' + hbi + '"></i> ' + hbt + '</span>' +
            '<h1>' + timeGreeting() + ', <span class="grad">' + esc(username) + '</span> \uD83D\uDC4B</h1>' +
            '<p>' + heroMsg + '</p>' +
            '<div class="keyaz-hero-actions">' +
              '<a href="' + esc(hpHref) + '" class="' + hpClass + '">' + hpLabel + ' <i class="fa-solid ' + hpIcon + '"></i></a>' +
              '<a href="/member/payment-history" class="keyaz-btn keyaz-btn-ghost"><i class="fa-solid fa-receipt"></i> Billing History</a>' +
            '</div>' +
          '</div>' +
          '<div class="keyaz-hero-stats">' +
            '<div class="' + statCls + '"><span class="keyaz-stat-ico"><i class="fa-solid ' + statIco + '"></i></span><div><small>Account Status</small><strong>' + statLbl + '</strong></div></div>' +
            '<div class="' + statCls + '"><span class="keyaz-stat-ico"><i class="fa-solid fa-layer-group"></i></span><div><small>Active Resources</small><strong>' + (alertState ? '0' : effectiveResourceCount) + ' Available</strong></div></div>' +
            '<div class="' + statCls + '"><span class="keyaz-stat-ico"><i class="fa-solid fa-crown"></i></span><div><small>Subscriptions</small><strong>' + (alertState ? '0' : effectiveSubCount) + ' Active</strong></div></div>' +
          '</div>';
        inner.insertBefore(hero, inner.firstChild);
        invalidateQS();
      }

      if (isLoggedIn && kind === 'profile' && !inner.querySelector('.keyaz-profile-head')) {
        var initials  = username.trim().charAt(0).toUpperCase() || 'U';
        var chipSt    = isNoSub ? '<span class="keyaz-chip"><i class="fa-solid fa-circle-info"></i> No Subscription</span>'
                      : alertState ? '<span class="keyaz-chip danger"><i class="fa-solid fa-circle-xmark"></i> Expired</span>'
                      : isUnknown ? '<span class="keyaz-chip"><i class="fa-solid fa-house"></i> Check on Dashboard</span>'
                      : '<span class="keyaz-chip ok"><i class="fa-solid fa-circle-check"></i> Active</span>';
        var chipPrem  = alertState
          ? '<span class="keyaz-chip"><i class="fa-solid fa-crown"></i> Standard</span>'
          : '<span class="keyaz-chip brand"><i class="fa-solid fa-crown"></i> Premium</span>';
        var profileHead = document.createElement('section');
        profileHead.className = 'keyaz-profile-head';
        profileHead.innerHTML =
          '<div class="keyaz-profile-avatar"><img src="' + esc(displayAvatar) + '" alt="' + esc(username) + '" onerror="this.src=\'' + keyaz_LOGO_URL + '\'"></div>' +
          '<div class="keyaz-profile-info"><h2>' + esc(username) + '</h2>' +
          '<p class="email">' + esc(txt('.am-profile-form input[name="email"],.am-profile-form input[type="email"]', 'Member account')) + '</p>' +
          chipSt + chipPrem +
          '<div class="keyaz-completeness"><div class="lbl"><span>Profile completion</span><span class="pct">0%</span></div><div class="bar"><div class="fill"></div></div></div></div>';
        inner.insertBefore(profileHead, inner.firstChild);

        function calcCompletion() {
          var form = document.querySelector('.am-profile-form');
          if (!form) return false;
          var fields = form.querySelectorAll('input[type="text"],input[type="email"],select,textarea');
          if (!fields.length) return false;
          var filled = 0, countable = 0;
          for (var i = 0; i < fields.length; i++) {
            if (fields[i].type === 'password') continue;
            countable++;
            if (String(fields[i].value || '').trim()) filled++;
          }
          var pct    = countable ? Math.round((filled / countable) * 100) : 0;
          var fillEl = profileHead.querySelector('.keyaz-completeness .fill');
          var pctEl  = profileHead.querySelector('.keyaz-completeness .pct');
          if (fillEl) fillEl.style.width = pct + '%';
          if (pctEl)  pctEl.textContent  = pct + '%';
          return true;
        }
        if (!calcCompletion()) {
          var formObs = null;
          if (typeof MutationObserver !== 'undefined') {
            formObs = new MutationObserver(function () {
              if (calcCompletion()) { formObs.disconnect(); }
            });
            formObs.observe(document.body, { childList: true, subtree: true });
            setTimeout(function () { if (formObs) formObs.disconnect(); }, 10000);
          }
          setTimeout(function () { if (formObs) formObs.disconnect(); calcCompletion(); }, 1500);
        }
      }

      if (isLoggedIn && kind === 'payments') {
        var tbl = inner.querySelector('table');
        if (tbl && !tbl.parentNode.classList.contains('keyaz-table-wrap')) {
          var wrap = document.createElement('div');
          wrap.className = 'keyaz-table-wrap';
          var thead = document.createElement('div');
          thead.className = 'keyaz-table-head';
          thead.innerHTML = '<i class="fa-solid fa-receipt"></i><strong>Payment Transactions</strong>';
          tbl.parentNode.insertBefore(wrap, tbl);
          wrap.appendChild(thead);
          wrap.appendChild(tbl);
          var headers = [], ths = tbl.querySelectorAll('thead th');
          for (var thi = 0; thi < ths.length; thi++) headers.push(ths[thi].textContent.trim());
          var trs = tbl.querySelectorAll('tbody tr');
          for (var tri = 0; tri < trs.length; tri++) {
            var tds = trs[tri].querySelectorAll('td');
            for (var tdi = 0; tdi < tds.length; tdi++) {
              if (!tds[tdi].getAttribute('data-label') && headers[tdi]) tds[tdi].setAttribute('data-label', headers[tdi]);
            }
          }
        }
      }

      if (!inner.querySelector('.keyaz-footer')) {
        var f1 = document.createElement('footer');
        f1.className = 'keyaz-footer';
        f1.innerHTML = '&copy; 2026 <span>&middot;</span> KEY AZ TOOLS <span>&middot;</span> All rights reserved <span>&middot;</span> <a href="https://keyaztools.com/whatsapp" target="_blank" rel="noopener">Support</a>';
        inner.appendChild(f1);
      }
    }

    function attachPasswordMeter(input) {
      if (!input || input.dataset.keyazMeter === '1') return;
      input.dataset.keyazMeter = '1';
      var meter = document.createElement('div');
      meter.className = 'keyaz-pw-meter';
      meter.innerHTML = '<span></span><span></span><span></span><span></span>';
      var label = document.createElement('div');
      label.className = 'keyaz-pw-label';
      label.textContent = 'Password strength';
      var caps = document.createElement('div');
      caps.className = 'keyaz-caps';
      caps.textContent = 'Caps Lock is on';
      var parent = input.parentNode;
      if (parent) { parent.appendChild(meter); parent.appendChild(label); parent.appendChild(caps); }
      var LEVELS = ['', 'weak', 'fair', 'good', 'strong'];
      function score(v) {
        if (!v) return 0;
        var s = 0;
        if (v.length >= 6)  s++;
        if (v.length >= 10) s++;
        if (/[A-Z]/.test(v) && /[a-z]/.test(v)) s++;
        if (/\d/.test(v) && /[^A-Za-z0-9]/.test(v)) s++;
        return Math.min(s, 4);
      }
      function update() { var s = score(input.value); meter.className = 'keyaz-pw-meter' + (input.value ? ' s' + s : ''); meter.setAttribute('data-level', LEVELS[s] || ''); label.textContent = input.value ? 'Password strength: ' + LEVELS[s] : 'Password strength'; }
      function checkCaps(e) { try { caps.classList.toggle('show', !!(e.getModifierState && e.getModifierState('CapsLock'))); } catch (err) {} }
      input.addEventListener('input', update);
      input.addEventListener('keydown', checkCaps);
      input.addEventListener('keyup',   checkCaps);
      input.addEventListener('blur', function () { caps.classList.remove('show'); });
      update();
    }
    defer(function () {
      var pw = document.querySelectorAll('input[type="password"]');
      for (var i = 0; i < pw.length; i++) attachPasswordMeter(pw[i]);
    });

    function refreshSignupTiles() {
      var container = $1('.am-signup-form #row-product_id_page-0-0 > .am-element');
      if (!container) return;
      if (!container.classList.contains('keyaz-products-grid')) container.classList.add('keyaz-products-grid');
      var checked = container.querySelector('input[type="radio"]:checked');
      if (checked) { var t0 = checked.closest('label'); if (t0) t0.classList.add('selected'); }
      var radios = container.querySelectorAll('input[type="radio"]');
      for (var ri = 0; ri < radios.length; ri++) {
        var radio = radios[ri];
        if (radio.dataset.keyazBound) continue;
        radio.dataset.keyazBound = '1';
        radio.addEventListener('change', function () {
          var labels = container.querySelectorAll('label');
          for (var li2 = 0; li2 < labels.length; li2++) labels[li2].classList.remove('selected');
          var tile = this.closest('label');
          if (tile) { tile.classList.add('selected'); var ti = tile.querySelector('.am-product-title'); if (ti) toast('Selected: ' + ti.textContent.trim(), 'ok'); }
        });
      }
      var brs = container.querySelectorAll(':scope > br');
      for (var bi = 0; bi < brs.length; bi++) brs[bi].remove();
    }
    refreshSignupTiles();
    setTimeout(refreshSignupTiles, 800);

    deferLow(function () {
      if ($1('.keyaz-top-btn')) return;
      var topBtn = document.createElement('button');
      topBtn.className = 'keyaz-top-btn';
      topBtn.setAttribute('aria-label', 'Scroll to top');
      topBtn.innerHTML = '<i class="fa-solid fa-arrow-up"></i>';
      topBtn.addEventListener('click', function () { window.scrollTo({ top: 0, behavior: 'smooth' }); });
      body.appendChild(topBtn);
      var topTick = false;
      function toggleTop() { topBtn.classList.toggle('show', window.scrollY > 300); topTick = false; }
      window.addEventListener('scroll', function () { if (!topTick) { topTick = true; window.requestAnimationFrame(toggleTop); } }, { passive: true });
      toggleTop();
    });

    if (isLoggedIn) {
      deferLow(function () {
        if ($1('.keyaz-fab')) return;
        var fab = document.createElement('div');
        fab.className = 'keyaz-fab';
        fab.innerHTML =
          '<div class="keyaz-fab-menu">' +
          '<a href="/member" class="keyaz-fab-item"><i class="fa-solid fa-house"></i> Dashboard</a>' +
          '<a href="/signup" class="keyaz-fab-item"><i class="fa-solid fa-user-plus"></i> Signup</a>' +
          '<a href="/profile" class="keyaz-fab-item"><i class="fa-solid fa-user"></i> Profile</a>' +
          '<a href="/member/payment-history" class="keyaz-fab-item"><i class="fa-solid fa-receipt"></i> Billing</a>' +
          '<a href="https://keyaztools.com/whatsapp" target="_blank" rel="noopener" class="keyaz-fab-item"><i class="fa-brands fa-whatsapp"></i> Support</a>' +
          '</div><button class="keyaz-fab-main" aria-label="Quick actions"><i class="fa-solid fa-plus"></i></button>';
        body.appendChild(fab);
        var fabMain = fab.querySelector('.keyaz-fab-main');
        fabMain.addEventListener('click', function (e) { e.stopPropagation(); fab.classList.toggle('open'); });
        document.addEventListener('click', function (e) { if (!fab.contains(e.target)) fab.classList.remove('open'); });
      });
    }

    if (isLoggedIn) {
      var overlay = document.createElement('div');
      overlay.className = 'keyaz-overlay';
      body.appendChild(overlay);
      var burger      = topbar.querySelector('.keyaz-burger');
      var collapseBtn = topbar.querySelector('.keyaz-sidebar-collapse');
      var expandBtn   = topbar.querySelector('.keyaz-sidebar-expand');
      if (burger && sidebar)  { burger.addEventListener('click', function () { sidebar.classList.toggle('keyaz-open'); overlay.classList.toggle('show'); }); }
      if (collapseBtn)        { collapseBtn.addEventListener('click', function () { body.classList.add('keyaz-collapsed'); store('keyaz-collapsed', '1'); }); }
      if (expandBtn)          { expandBtn.addEventListener('click', function () { body.classList.remove('keyaz-collapsed'); store('keyaz-collapsed', '0'); }); }
      overlay.addEventListener('click', function () { if (sidebar) sidebar.classList.remove('keyaz-open'); overlay.classList.remove('show'); });
      document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && sidebar) { sidebar.classList.remove('keyaz-open'); overlay.classList.remove('show'); } });
      if (read('keyaz-collapsed') === '1' && window.innerWidth > 992) body.classList.add('keyaz-collapsed');

      defer(function () {
        var notifBtn = topbar.querySelector('.keyaz-notif-btn');
        if (!notifBtn) return;
        var panel = document.createElement('div');
        panel.className = 'keyaz-notif-panel';

        var nowN = new Date(), expiredSubs = [], expiringSoon = [], notifItems = [];

        if (hasPageSubData && subLis) {
          for (var ni = 0; ni < subLis.length; ni++) {
            var nli = subLis[ni];
            var ntEl = nli.querySelector('.am-list-subscriptions-title');
            if (!ntEl) continue;
            var nTitle = ntEl.textContent.trim();
            var nexp   = extractExpiryDate(nli);
            if (nexp) {
              if (isExpiredDate(nexp)) expiredSubs.push({ title: nTitle, date: nexp });
              else { var nd = daysBetween(nowN, endOfDay(nexp)); if (nd <= 7) expiringSoon.push({ title: nTitle, date: nexp, days: nd }); }
            } else if (rowHasExpiredIndicator(nli)) expiredSubs.push({ title: nTitle, date: nowN, days: 0 });
          }

          if (expiredSubs.length === 1) {
            notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: 'Subscription Expired', msg: expiredSubs[0].title + ' expired on ' + formatDate(expiredSubs[0].date) + '. Renew now to restore access.', href: '/signup' });
          } else if (expiredSubs.length > 1) {
            var nl = expiredSubs.length === 2 ? expiredSubs[0].title + ' and ' + expiredSubs[1].title : expiredSubs[0].title + ', ' + expiredSubs[1].title + ' and ' + (expiredSubs.length - 2) + ' more';
            notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: expiredSubs.length + ' Subscriptions Expired', msg: nl + '. Renew now to restore full access.', href: '/signup' });
          }
          for (var esi = 0; esi < expiringSoon.length; esi++) {
            var en = expiringSoon[esi];
            notifItems.push({ type: en.days <= 3 ? 'warn' : 'info', icon: en.days <= 3 ? 'fa-triangle-exclamation' : 'fa-clock', title: en.title, msg: 'Expires ' + (en.days === 0 ? 'today' : 'in ' + en.days + ' day' + (en.days === 1 ? '' : 's')) + ' \u2014 ' + formatDate(en.date), href: '/member' });
          }
          if (!notifItems.length) {
            if (isNoSub)  notifItems.push({ type: 'danger', icon: 'fa-circle-info', title: 'No Active Subscription', msg: 'You don\u2019t have an active subscription. Subscribe to unlock full access.', href: '/signup' });
            else if (alertState || zeroActiveResources || zeroActiveSubs || (subLis && subLis.length === 0)) notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: 'Subscription Expired', msg: zeroActiveResources ? 'You have 0 active resources. Renew to restore access.' : 'You have 0 active subscriptions. Renew now.', href: '/signup' });
            else notifItems.push({ type: 'ok', icon: 'fa-circle-check', title: 'All good!', msg: 'No urgent alerts. Your subscriptions are active.', href: '/member' });
          }
        } else {
          if (isNoSub)         notifItems.push({ type: 'danger', icon: 'fa-circle-info', title: 'No Active Subscription', msg: 'You don\u2019t have an active subscription. Subscribe to unlock full access.', href: '/signup' });
          else if (alertState) notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: 'Subscription Expired', msg: 'Your subscription has expired. Renew now.', href: '/signup' });
          else                 notifItems.push({ type: 'ok', icon: 'fa-circle-check', title: 'All good!', msg: 'No urgent alerts. Your subscriptions are active.', href: '/member' });
        }

        var TYPE_RANK = { danger: 0, warn: 1, info: 2, ok: 3 };
        notifItems.sort(function (a, b) { return (TYPE_RANK[a.type] || 9) - (TYPE_RANK[b.type] || 9); });

        var listParts = [];
        for (var ii = 0; ii < notifItems.length; ii++) {
          var itm = notifItems[ii];
          listParts.push('<a class="keyaz-notif-item ' + itm.type + '" href="' + esc(itm.href) + '"><span class="ic"><i class="fa-solid ' + itm.icon + '"></i></span><span class="tx"><b>' + esc(itm.title) + '</b><span>' + esc(itm.msg) + '</span></span></a>');
        }
        panel.innerHTML =
          '<div class="keyaz-notif-head"><strong>Notifications</strong><button class="keyaz-notif-clear" type="button">Clear</button></div>' +
          '<div class="keyaz-notif-list">' + listParts.join('') + '</div>';
        body.appendChild(panel);

        var dot = notifBtn.querySelector('.dot');
        var hasUrgent = notifItems.some(function (n) { return n.type !== 'ok'; });
        if (dot && !hasUrgent) dot.style.display = 'none';

        notifBtn.addEventListener('click', function (e) { e.stopPropagation(); var open = panel.classList.toggle('show'); notifBtn.classList.toggle('active', open); });
        panel.addEventListener('click', function (e) { e.stopPropagation(); });
        var clearBtn = panel.querySelector('.keyaz-notif-clear');
        if (clearBtn) {
          clearBtn.addEventListener('click', function () {
            panel.querySelector('.keyaz-notif-list').innerHTML = '<div class="keyaz-notif-empty"><i class="fa-regular fa-bell-slash"></i>You\u2019re all caught up</div>';
            if (dot) dot.style.display = 'none';
            toast('Notifications cleared', 'ok');
          });
        }
        document.addEventListener('click', function () { panel.classList.remove('show'); notifBtn.classList.remove('active'); });
        document.addEventListener('keydown', function (e) { if (e.key === 'Escape') { panel.classList.remove('show'); notifBtn.classList.remove('active'); } });
      });
    }

    if (isLoggedIn) {
      deferLow(function () {
        if (window.__keyazKeys) return;
        window.__keyazKeys = true;
        var gPressed = false;
        var gTimer   = null;
        var NAV_MAP  = { d: '/member', s: '/signup', p: '/profile', b: '/member/payment-history' };
        document.addEventListener('keydown', function (e) {
          var tgt = e.target, tag = (tgt.tagName || '').toLowerCase();
          if (tag === 'input' || tag === 'textarea' || tag === 'select' || tgt.isContentEditable) return;
          if (e.metaKey || e.ctrlKey || e.altKey) {
            if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'b') { e.preventDefault(); body.classList.toggle('keyaz-collapsed'); store('keyaz-collapsed', body.classList.contains('keyaz-collapsed') ? '1' : '0'); }
            return;
          }
          if (gPressed) { var dest = NAV_MAP[e.key.toLowerCase()]; if (dest) window.location.href = dest; gPressed = false; if (gTimer) { clearTimeout(gTimer); gTimer = null; } return; }
          if (e.key.toLowerCase() === 'g') {
            gPressed = true;
            gTimer = setTimeout(function () { gPressed = false; gTimer = null; }, 1200);
          }
        });
        window.addEventListener('blur', function () { gPressed = false; if (gTimer) { clearTimeout(gTimer); gTimer = null; } });
      });
    }

    defer(function () {
      if (typeof MutationObserver === 'undefined') return;
      var observer = new MutationObserver(function (muts) {
        for (var mi = 0; mi < muts.length; mi++) {
          var added = muts[mi].addedNodes;
          for (var ai = 0; ai < added.length; ai++) {
            var n = added[ai];
            if (n.nodeType === 1 && n.classList && n.classList.contains('am-error')) {
              n.classList.add('keyaz-error');
              var inp = n.parentNode && n.parentNode.querySelector('input');
              if (inp) inp.classList.add('am-error');
            }
          }
        }
      });
      var forms = document.querySelectorAll('.am-signup-form,.am-profile-form,.am-login-form');
      for (var fi = 0; fi < forms.length; fi++) observer.observe(forms[fi], { childList: true, subtree: true });
      var formInputs = document.querySelectorAll('.am-signup-form input,.am-profile-form input,.am-login-form input');
      for (var fii = 0; fii < formInputs.length; fii++) {
        formInputs[fii].addEventListener('input', function () { this.classList.remove('am-error'); });
      }
    });

    defer(function () {
      if (isLoggedIn && kind === 'dashboard') {
        if (alertState) {
          setTimeout(function () {
            var msg = isNoSub ? 'You don\u2019t have an active subscription yet. Subscribe to unlock your tools.'
                    : zeroActiveResources ? 'You have 0 active resources. Please renew your subscription.'
                    : zeroActiveSubs ? 'You have 0 active subscriptions. Please renew to restore access.'
                    : 'Your subscription has expired. Please renew to restore access.';
            toast(msg, isNoSub ? 'info' : 'err', 5000);
          }, 400);
        } else if (isActive) {
          setTimeout(function () { toast('Welcome back, ' + username + '! \uD83C\uDF89', 'ok'); }, 400);
        }
      }
    });

    if (!IS_SLOW) {
      attachScrollProgress();
    } else {
      deferLow(attachScrollProgress);
    }

    wireForgotPassword();

    if (isLoggedIn) {
      defer(watchAvatar);
      defer(scheduleSubRecheck);
    }
  }

  var __fpWired = false;
  function wireForgotPassword() {
    if (__fpWired) return;
    var loginWrap    = $1('.am-login-form-wrapper');
    var sendpassWrap = $1('.am-sendpass-form-wrapper');
    if (!loginWrap || !sendpassWrap) return;
    __fpWired = true;
    var forgotLinks = document.querySelectorAll('.am-form-login-switch[href*="sendpass"],.am-login-form-wrapper a[href*="sendpass"]');
    var backLinks   = document.querySelectorAll('.am-sendpass-form-wrapper a[href="/login"],.am-sendpass-form-wrapper .am-form-login-switch[href$="/login"]');
    function showSendpass(e) {
      if (e) { e.preventDefault(); e.stopPropagation(); }
      loginWrap.style.setProperty('display', 'none', 'important');
      loginWrap.classList.add('keyaz-hidden');
      sendpassWrap.style.setProperty('display', 'block', 'important');
      sendpassWrap.classList.add('active');
      try { if (!/sendpass/.test(window.location.search)) history.pushState({}, '', '/login?sendpass'); } catch (err) {}
      var f = sendpassWrap.querySelector('input[type="text"],input[type="email"]');
      if (f) setTimeout(function () { f.focus(); }, 60);
    }
    function showLogin(e) {
      if (e) { e.preventDefault(); e.stopPropagation(); }
      sendpassWrap.style.setProperty('display', 'none', 'important');
      sendpassWrap.classList.remove('active');
      loginWrap.style.setProperty('display', 'block', 'important');
      loginWrap.classList.remove('keyaz-hidden');
      try { if (/sendpass/.test(window.location.search)) history.pushState({}, '', '/login'); } catch (err) {}
      var f = loginWrap.querySelector('input[type="text"],input[type="email"]');
      if (f) setTimeout(function () { f.focus(); }, 60);
    }
    for (var i = 0; i < forgotLinks.length; i++) { if (!forgotLinks[i].dataset.keyazWired) { forgotLinks[i].dataset.keyazWired = '1'; forgotLinks[i].addEventListener('click', showSendpass, true); } }
    for (var j = 0; j < backLinks.length; j++)   { if (!backLinks[j].dataset.keyazWired)   { backLinks[j].dataset.keyazWired   = '1'; backLinks[j].addEventListener('click', showLogin, true); } }
    if (/sendpass/.test(window.location.search)) showSendpass();
  }

  var __headMo = null;
  function bootstrapHead() {
    if (!document.head) return false;
    injectPreconnects();
    injectCSSLink();
    injectStateCSS();
    startHeadObserver();

    if (!document.querySelector('link[href*="font-awesome"],link[href*="fontawesome"]')) {
      var FA_URL = 'https://use.fontawesome.com/releases/v6.5.1/css/all.css';
      var faPre = document.createElement('link');
      faPre.rel  = 'preload';
      faPre.as   = 'style';
      faPre.href = FA_URL;
      faPre.setAttribute('fetchpriority', IS_SLOW ? 'low' : 'high');
      document.head.appendChild(faPre);
      var fa = document.createElement('link');
      fa.rel  = 'stylesheet';
      fa.href = FA_URL;
      fa.media = 'print';
      fa.onload  = function () { fa.media = 'all'; };
      fa.onerror = function () { fa.media = 'all'; };
      document.head.appendChild(fa);
    }
    return true;
  }

  function run() {
    try { build(); }
    catch (err) { if (window.console && console.warn) console.warn('[keyazPremium v9.9-fixed]', err); }
    var fpDelays = IS_SLOW ? [500] : [300, 900, 1800];
    for (var i = 0; i < fpDelays.length; i++) {
      (function (d) { setTimeout(wireForgotPassword, d); })(fpDelays[i]);
    }
  }

  if (!bootstrapHead()) {
    __headMo = new MutationObserver(function () { if (bootstrapHead()) __headMo.disconnect(); });
    __headMo.observe(document.documentElement, { childList: true, subtree: true });
  }

  function scheduleRun() {
    if (document.readyState === 'interactive' || document.readyState === 'complete') { run(); return; }
    var done = false;
    function fire() {
      if (done) return;
      done = true;
      document.removeEventListener('readystatechange', onRS);
      document.removeEventListener('DOMContentLoaded', fire);
      run();
    }
    function onRS() { if (document.readyState === 'interactive' || document.readyState === 'complete') fire(); }
    document.addEventListener('readystatechange', onRS);
    document.addEventListener('DOMContentLoaded', fire);
  }
  scheduleRun();

  window.addEventListener('pageshow', function (e) {
    if (e.persisted) { try { scheduleSubRecheck(); } catch (err) {} }
  });

})();
</script>;
--am_body_finish_in: <script>(function () {
  'use strict';
  if (window.__keyazPremiumV99) return;
  window.__keyazPremiumV99 = true;

  var _nc = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
  var IS_SLOW = !!(_nc && (_nc.saveData || _nc.effectiveType === '2g' || _nc.effectiveType === 'slow-2g'));

  var _qc = Object.create(null);
  function $1(sel) {
    return (sel in _qc) ? _qc[sel] : (_qc[sel] = document.querySelector(sel));
  }
  function invalidateQS() { _qc = Object.create(null); }

  var keyaz_CSS_HREF    = 'keyaz-style.css';
  var keyaz_CSS_VERSION = String(Date.now());
  var keyaz_LINK_ID     = 'keyaz-premium-css';
  var keyaz_LOGO_URL    = 'https://keyaztools.com/favicon.png';

  function injectPreconnects() {
    if ($1('#keyaz-preconnect')) return;
    var head = document.head;
    if (!head) return;
    var pc = document.createElement('link');
    pc.id  = 'keyaz-preconnect';
    pc.rel = 'preconnect';
    pc.href = 'https://use.fontawesome.com';
    pc.crossOrigin = 'anonymous';
    head.insertBefore(pc, head.firstChild);
    var dp = document.createElement('link');
    dp.rel  = 'dns-prefetch';
    dp.href = 'https://use.fontawesome.com';
    head.insertBefore(dp, head.firstChild);
  }

  function injectCSSLink() {
    var head = document.head;
    if (!head) return;
    var fullHref = keyaz_CSS_HREF + '?v=' + keyaz_CSS_VERSION;
    var preId = keyaz_LINK_ID + '-preload';
    var oldPre = document.getElementById(preId);
    if (oldPre && oldPre.parentNode) oldPre.parentNode.removeChild(oldPre);
    var pre = document.createElement('link');
    pre.id   = preId;
    pre.rel  = 'preload';
    pre.as   = 'style';
    pre.href = fullHref;
    pre.setAttribute('fetchpriority', 'high');
    head.insertBefore(pre, head.firstChild);
    var existing = document.getElementById(keyaz_LINK_ID);
    if (existing && existing.parentNode) existing.parentNode.removeChild(existing);
    var link = document.createElement('link');
    link.id   = keyaz_LINK_ID;
    link.rel  = 'stylesheet';
    link.href = fullHref;
    link.setAttribute('fetchpriority', 'high');
    head.appendChild(link);
  }

  function keepCSSLast() {
    var link = document.getElementById(keyaz_LINK_ID);
    var head = document.head;
    if (!link || !head) return;
    if (head.lastElementChild !== link) head.appendChild(link);
  }

  var __keyazHeadObs = null;
  function startHeadObserver() {
    if (__keyazHeadObs || !document.head) return;
    if (typeof MutationObserver === 'undefined') return;
    var pending = false;
    __keyazHeadObs = new MutationObserver(function (mutations) {
      for (var i = 0; i < mutations.length; i++) {
        var added = mutations[i].addedNodes;
        for (var j = 0; j < added.length; j++) {
          if (added[j].id === keyaz_LINK_ID) return;
        }
      }
      if (pending) return;
      pending = true;
      (window.requestAnimationFrame || function (fn) { setTimeout(fn, 16); })(function () {
        pending = false;
        keepCSSLast();
      });
    });
    __keyazHeadObs.observe(document.head, { childList: true });
  }

  function injectStateCSS() {
    if ($1('#keyaz-sub-state-css')) return;
    var s = document.createElement('style');
    s.id = 'keyaz-sub-state-css';
    s.textContent =
      'body.am-logged-in .am-user-identity-block_login::after{content:none!important;display:none!important}' +
      'body.am-logged-in.keyaz-sub-active .am-user-identity-block_login::after{content:"● Active Member"!important;display:block!important;color:#22c55e!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:.3px!important;margin-top:2px!important}' +
      'body.am-logged-in.keyaz-sub-expired .am-user-identity-block_login::after{content:"● Subscription Expired"!important;display:block!important;color:#ef4444!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:.3px!important;margin-top:2px!important}' +
      'body.am-logged-in.keyaz-sub-none .am-user-identity-block_login::after{content:"● No Subscription"!important;display:block!important;color:#94a3b8!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:.3px!important;margin-top:2px!important}' +
      'body.keyaz-sub-expired .am-user-identity-block-avatar-pic::after{content:""!important;position:absolute!important;bottom:-2px!important;right:-2px!important;width:10px!important;height:10px!important;border-radius:50%!important;background:#ef4444!important;border:2px solid #fff!important}' +
      'body.keyaz-sub-active .am-user-identity-block-avatar-pic::after{content:""!important;position:absolute!important;bottom:-2px!important;right:-2px!important;width:10px!important;height:10px!important;border-radius:50%!important;background:#22c55e!important;border:2px solid #fff!important}' +
      '.keyaz-topbar-actions .keyaz-top-avatar{display:none!important}' +
      /* ✅ NEW: logout button layout + look */
      '.keyaz-topbar-actions{display:flex!important;align-items:center!important;gap:8px!important}' +
      '.keyaz-logout-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;text-decoration:none!important;color:inherit;cursor:pointer;transition:color .18s ease,background .18s ease,border-color .18s ease}' +
      '.keyaz-logout-btn:hover{color:#ef4444!important;background:rgba(239,68,68,.12)!important;border-color:rgba(239,68,68,.35)!important}' +
      '.keyaz-logout-btn i{pointer-events:none}';
    document.head.appendChild(s);
  }

  try { localStorage.removeItem('keyaz-sub-state'); } catch (e) {}
  try { sessionStorage.removeItem('keyaz-sub-state-v2'); } catch (e) {}
  try { sessionStorage.removeItem('keyaz-welcomed'); } catch (e) {}

  var keyaz_ICON_MAP = {
    'dashboard': 'fa-solid fa-house', 'home': 'fa-solid fa-house',
    'signup': 'fa-solid fa-user-plus', 'register': 'fa-solid fa-user-plus',
    'sign up': 'fa-solid fa-user-plus',
    'profile': 'fa-solid fa-user', 'account': 'fa-solid fa-user',
    'password': 'fa-solid fa-key', 'change password': 'fa-solid fa-key',
    'billing': 'fa-solid fa-credit-card', 'payment': 'fa-solid fa-receipt',
    'payments': 'fa-solid fa-receipt', 'payment history': 'fa-solid fa-receipt',
    'history': 'fa-solid fa-clock-rotate-left', 'resources': 'fa-solid fa-layer-group',
    'download': 'fa-solid fa-download', 'downloads': 'fa-solid fa-download',
    'extension': 'fa-solid fa-puzzle-piece',
    'affiliate': 'fa-solid fa-users',
    'help': 'fa-solid fa-circle-question', 'support': 'fa-solid fa-headset',
    'contact': 'fa-solid fa-envelope', 'whatsapp': 'fa-brands fa-whatsapp',
    'telegram': 'fa-brands fa-telegram', 'youtube': 'fa-brands fa-youtube',
    'settings': 'fa-solid fa-gear', 'logout': 'fa-solid fa-right-from-bracket',
    'terms': 'fa-solid fa-file-contract', 'privacy': 'fa-solid fa-shield-halved',
    'agreement': 'fa-solid fa-file-signature', 'user agreement': 'fa-solid fa-file-signature',
    'faq': 'fa-solid fa-circle-question', 'tutorial': 'fa-solid fa-graduation-cap',
    'video': 'fa-solid fa-video', 'invoice': 'fa-solid fa-file-invoice',
    'subscription': 'fa-solid fa-crown', 'license': 'fa-solid fa-certificate'
  };
  var keyaz_ICON_KEYS = Object.keys(keyaz_ICON_MAP);

  /* ✅ FIX 1: href-based icon detection — label چاہے کچھ بھی ہو */
  function guessIconForItem(label, href) {
    if (href) {
      var h = href.replace(/\/+$/, '').toLowerCase();
      if (h === '/member' || h === '')              return keyaz_ICON_MAP['dashboard'];
      if (/\/profile/.test(h))                     return keyaz_ICON_MAP['profile'];
      if (/\/payment-history/.test(h))             return keyaz_ICON_MAP['payments'];
      if (/signup|register/.test(h))               return keyaz_ICON_MAP['signup'];
      if (/password/.test(h))                      return keyaz_ICON_MAP['password'];
      if (/whatsapp/.test(h))                      return keyaz_ICON_MAP['whatsapp'];
      if (/telegram/.test(h))                      return keyaz_ICON_MAP['telegram'];
      if (/youtube/.test(h))                       return keyaz_ICON_MAP['youtube'];
      if (/terms|policy|privacy/.test(h))          return keyaz_ICON_MAP['terms'];
      if (/affiliate/.test(h))                     return keyaz_ICON_MAP['affiliate'];
      if (/billing|invoice/.test(h))               return keyaz_ICON_MAP['billing'];
    }
    return guessIcon(label);
  }

  function guessIcon(label) {
    var l = String(label || '').toLowerCase().trim();
    for (var i = 0; i < keyaz_ICON_KEYS.length; i++) {
      if (l.indexOf(keyaz_ICON_KEYS[i]) !== -1) return keyaz_ICON_MAP[keyaz_ICON_KEYS[i]];
    }
    return 'fa-solid fa-circle-dot';
  }

  function guessSection(label) {
    var l = String(label || '').toLowerCase().trim();
    if (/(dashboard|home|signup|sign up|register|resource|download|extension|tool)/.test(l)) return 'Main';
    if (/(profile|account|password|setting|billing|payment|history|invoice|subscription|license)/.test(l)) return 'Account';
    if (/(support|contact|help|whatsapp|telegram|faq|tutorial|video|youtube)/.test(l)) return 'Support';
    if (/(term|policy|privacy|legal|agreement|user agreement)/.test(l)) return 'Legal';
    return 'More';
  }

  var keyaz_MENU_SELECTORS = [
    'ul.am-tabs > li > a',
    '.am-tabs-wrapper ul li a',
    '.am-tabs-narrow-wrapper ul li a',
    '.am-tabs-narrow-wrapper-tail ul li a',
    '.am-tabs-narrow ul li a',
    '.am-tabs-narrow-stuff ul li a',
    '.am-account-toolbar-items > ul > li > a',
    '.am-user-menu a', '.am-menu a',
    '.am-account-toolbar a', 'nav.am-tabs a'
  ];

  function readAMemberMenu() {
    var items = [], seen = Object.create(null);
    for (var s = 0; s < keyaz_MENU_SELECTORS.length; s++) {
      var nodes;
      try { nodes = document.querySelectorAll(keyaz_MENU_SELECTORS[s]); }
      catch (e) { continue; }
      for (var i = 0; i < nodes.length; i++) {
        var a = nodes[i];
        var href  = a.getAttribute('href');
        var label = (a.textContent || '').trim().replace(/\s+/g, ' ');
        if (!href || !label) continue;
        if (href === '#' || href === '' || href.indexOf('javascript:') === 0) continue;
        var ll = label.toLowerCase();
        if (ll === 'logout' || ll === 'sign out' || ll === 'signout') continue;
        if (ll.indexOf('language') !== -1 || ll.indexOf('print') === 0) continue;
        var key = href + '|' + label;
        if (seen[key]) continue;
        seen[key] = true;
        /* ✅ FIX 2: guessIcon → guessIconForItem */
        items.push({ section: guessSection(label), label: label, href: href, icon: guessIconForItem(label, href), target: a.getAttribute('target') || '' });
      }
    }
    return items;
  }

  /* ✅ NEW: page se asli logout link dhoondo, warna fallback /logout */
  function findLogoutHref() {
    var sels = [
      '.am-tabs a[href*="logout"]',
      '.am-account-toolbar a[href*="logout"]',
      '.am-user-menu a[href*="logout"]',
      '.am-menu a[href*="logout"]',
      'a[href$="/logout"]',
      'a[href*="logout"]'
    ];
    for (var i = 0; i < sels.length; i++) {
      var a;
      try { a = document.querySelector(sels[i]); } catch (e) { continue; }
      if (a) {
        var h = a.getAttribute('href');
        if (h && h !== '#' && h.indexOf('javascript:') !== 0) return h;
      }
    }
    return '/logout';
  }

  var docEl = document.documentElement;

  var ESC_MAP = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' };
  var ESC_RE  = /[&<>"']/g;
  function esc(s) { return String(s == null ? '' : s).replace(ESC_RE, function (c) { return ESC_MAP[c]; }); }

  function txt(sel, fallback) {
    var el = $1(sel);
    return (el && el.textContent.trim()) || fallback || '';
  }

  var _kind = null;
  function pageKind() {
    if (_kind) return _kind;
    var p   = window.location.pathname || '/';
    var cls = document.body.className  || '';
    if (/signup/.test(p) || cls.indexOf('am-page-signup') !== -1)                             _kind = 'signup';
    else if (/login|sendpass/.test(p) || cls.indexOf('am-page-login') !== -1)                 _kind = 'login';
    else if (/profile/.test(p) || cls.indexOf('am-page-profile') !== -1)                      _kind = 'profile';
    else if (/payment-history/.test(p) || cls.indexOf('am-page-payment-history') !== -1)      _kind = 'payments';
    else if (/terms|policy|policies/.test(p) || cls.indexOf('am-page-terms') !== -1 || $1('.keyaz-agreement-root')) _kind = 'terms';
    else _kind = 'dashboard';
    return _kind;
  }

  function timeGreeting() {
    var h = new Date().getHours();
    if (h >= 5  && h < 12) return 'welcome Back';
    if (h >= 12 && h < 17) return 'welcome Back';
    if (h >= 17 && h < 21) return 'welcome Back';
    return 'Welcome Back';
  }

  function daysBetween(a, b) {
    return Math.round((new Date(b.getFullYear(), b.getMonth(), b.getDate()) -
                       new Date(a.getFullYear(), a.getMonth(), a.getDate())) / 86400000);
  }
  function endOfDay(d) {
    var e = new Date(d.getTime());
    e.setHours(23, 59, 59, 999);
    return e;
  }
  function isExpiredDate(d) { return d ? endOfDay(d).getTime() < Date.now() : false; }
  function formatDate(d) {
    try { return d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' }); }
    catch (e) { return String(d); }
  }
  function store(k, v) { try { localStorage.setItem(k, v); } catch (e) {} }
  function read(k)      { try { return localStorage.getItem(k); } catch (e) { return null; } }

  var toastWrap = null;
  var TOAST_ICONS = { ok: 'fa-circle-check', err: 'fa-circle-xmark', info: 'fa-circle-info' };
  function toast(msg, type, ms) {
    if (!toastWrap) {
      toastWrap = document.createElement('div');
      toastWrap.className = 'keyaz-toast-wrap';
      document.body.appendChild(toastWrap);
    }
    while (toastWrap.children.length >= 4) toastWrap.removeChild(toastWrap.firstChild);
    var t = document.createElement('div');
    t.className = 'keyaz-toast ' + (type || 'info');
    t.innerHTML = '<i class="fa-solid ' + (TOAST_ICONS[type] || TOAST_ICONS.info) + '"></i>' +
                  '<span>' + esc(msg) + '</span>' +
                  '<button class="close" aria-label="Dismiss"><i class="fa-solid fa-xmark"></i></button>';
    function dismiss() {
      if (t.classList.contains('leaving')) return;
      t.classList.add('leaving');
      setTimeout(function () { if (t.parentNode) t.parentNode.removeChild(t); }, 260);
    }
    t.querySelector('.close').addEventListener('click', dismiss);
    toastWrap.appendChild(t);
    setTimeout(dismiss, ms || 3200);
  }

  function attachScrollProgress() {
    if ($1('.keyaz-progress')) return;
    var bar = document.createElement('div');
    bar.className = 'keyaz-progress';
    document.body.appendChild(bar);
    var ticking = false;
    function update() {
      var max = docEl.scrollHeight - docEl.clientHeight;
      var pct = max > 0 ? (docEl.scrollTop / max) * 100 : 0;
      bar.style.width = pct + '%';
      bar.classList.toggle('show', docEl.scrollTop > 40);
      ticking = false;
    }
    window.addEventListener('scroll', function () {
      if (!ticking) { ticking = true; window.requestAnimationFrame(update); }
    }, { passive: true });
    update();
  }

  function parseDateRobust(raw) {
    if (!raw) return null;
    raw = String(raw).trim();
    if (!raw) return null;
    var iso = raw.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
    if (iso) {
      var ld = new Date(+iso[1], +iso[2] - 1, +iso[3]);
      if (!isNaN(ld.getTime())) return ld;
    }
    var m = raw.match(/^(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})/);
    if (m) {
      var d2 = new Date(+m[1], +m[2] - 1, +m[3]);
      if (!isNaN(d2.getTime())) return d2;
    }
    var d = new Date(raw);
    if (!isNaN(d.getTime()) && d.getFullYear() >= 2000 && d.getFullYear() <= 2100) return d;
    m = raw.match(/\b(\d{1,2})[\/\-\.](\d{1,2})[\/\-\.](\d{2,4})\b/);
    if (m) {
      var a = +m[1], b = +m[2], y = +m[3];
      if (y < 100) y += 2000;
      if (a > 12)      { d = new Date(y, b - 1, a); if (!isNaN(d.getTime())) return d; }
      else if (b > 12) { d = new Date(y, a - 1, b); if (!isNaN(d.getTime())) return d; }
      else             { d = new Date(y, b - 1, a); if (!isNaN(d.getTime())) return d; }
    }
    m = raw.match(/\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\.?\s+(\d{1,2}),?\s+(\d{4})\b/i);
    if (m) { d = new Date(m[1] + ' ' + m[2] + ', ' + m[3]); if (!isNaN(d.getTime())) return d; }
    m = raw.match(/\b(\d{1,2})\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\.?,?\s+(\d{4})\b/i);
    if (m) { d = new Date(m[2] + ' ' + m[1] + ', ' + m[3]); if (!isNaN(d.getTime())) return d; }
    return null;
  }

  function hasNoSubDOMIndicator() {
    if (document.body.classList.contains('am-page-member-subscriptions-no')) return true;
    if ($1('.am-list-subscriptions-no')) return true;
    if ($1('[class*="subscriptions-no"]')) return true;
    return false;
  }

  var keyaz_DATE_SELECTORS = [
    '.am-list-subscriptions-date_expires_date', '.am-list-subscriptions-date_expires',
    '.am-list-subscriptions-expires', '.am-list-subscriptions-expiry',
    '.am-list-subscriptions-date', 'time[datetime]', '[data-date]'
  ];

  function extractExpiryDate(li) {
    var el = null;
    for (var i = 0; i < keyaz_DATE_SELECTORS.length; i++) {
      el = li.querySelector(keyaz_DATE_SELECTORS[i]);
      if (el) break;
    }
    var raw = '';
    if (el) {
      raw = el.getAttribute('data-date') || el.getAttribute('datetime') ||
            el.getAttribute('title')     || el.textContent || '';
    }
    return parseDateRobust(raw) || parseDateRobust(li.textContent || '');
  }

  function rowHasExpiredIndicator(li) {
    var cls = ' ' + (li.className || '').toLowerCase() + ' ';
    if (/expired|inactive|suspended/.test(cls)) return true;
    if (li.querySelector('[class*="expired"],[class*="inactive"],[class*="suspended"]')) return true;
    var statusEl = li.querySelector('[class*="status"],[class*="state"]');
    if (statusEl) {
      var st = (statusEl.textContent || '').toLowerCase();
      if (/\b(expired|inactive|suspended)\b/.test(st)) return true;
      if (/\b(active|valid|paid)\b/.test(st)) return false;
    }
    var t = (li.textContent || '').toLowerCase();
    return /\b(expired|inactive|suspended)\b/.test(t);
  }

  function detectSubState(sublist) {
    if (hasNoSubDOMIndicator()) return { hasAny: false, hasActive: false, activeCount: 0, unknown: false };
    if (sublist === null || sublist === undefined) return { hasAny: false, hasActive: false, activeCount: 0, unknown: true };
    if (sublist.length > 0) {
      var state = { hasAny: true, hasActive: false, activeCount: 0, unknown: false };
      for (var i = 0; i < sublist.length; i++) {
        var li  = sublist[i];
        var exp = extractExpiryDate(li);
        if (!(exp ? isExpiredDate(exp) : rowHasExpiredIndicator(li))) state.activeCount++;
      }
      state.hasActive = state.activeCount > 0;
      return state;
    }
    return { hasAny: false, hasActive: false, activeCount: 0, unknown: false };
  }

  function applySubStateClasses(state) {
    if (!document.body.classList.contains('am-logged-in')) return { isUnknown: true, isExpired: false, isNoSub: false, isActive: false };
    document.body.classList.remove('keyaz-sub-active', 'keyaz-sub-expired', 'keyaz-sub-none');
    if (state.unknown) return { isUnknown: true, isExpired: false, isNoSub: false, isActive: false };
    var isNoSub   = !state.hasAny;
    var isExpired = !isNoSub && !state.hasActive;
    var isActive  = !!state.hasActive;
    if (isExpired)     document.body.classList.add('keyaz-sub-expired');
    else if (isNoSub)  document.body.classList.add('keyaz-sub-none');
    else if (isActive) document.body.classList.add('keyaz-sub-active');
    return { isUnknown: false, isExpired: isExpired, isNoSub: isNoSub, isActive: isActive };
  }

  function forceExpiredUI(reason, isNoSubState) {
    document.body.classList.remove('keyaz-sub-active', 'keyaz-sub-expired', 'keyaz-sub-none');
    document.body.classList.add(isNoSubState ? 'keyaz-sub-none' : 'keyaz-sub-expired');
    var MSG       = isNoSubState
      ? 'You don\u2019t have an active subscription yet. Subscribe to unlock your tools and resources.'
      : 'Your subscription has expired. Renew to restore access to your tools and resources.';
    var RENEW_HREF = '/signup';
    var BADGE_TEXT = isNoSubState ? 'No Active Subscription' : 'Premium Access Expired';
    var BADGE_ICON = isNoSubState ? 'fa-circle-info' : 'fa-triangle-exclamation';
    var BTN_LABEL  = isNoSubState ? 'Subscribe Now' : 'Renew Subscription';
    var BTN_ICON   = isNoSubState ? 'fa-circle-plus' : 'fa-rotate-right';
    var STATUS_TXT = isNoSubState ? 'No Subscription' : 'Expired';
    var STATUS_ICO = isNoSubState ? 'fa-circle-info' : 'fa-circle-xmark';
    var NOTIF_TTL  = isNoSubState ? 'No Active Subscription' : 'Subscription Expired';

    var heroBadge = document.querySelector('.keyaz-hero .keyaz-hero-badge');
    if (heroBadge) { heroBadge.className = 'keyaz-hero-badge expired'; heroBadge.innerHTML = '<i class="fa-solid ' + BADGE_ICON + '"></i> ' + BADGE_TEXT; }

    var heroP = document.querySelector('.keyaz-hero p');
    if (heroP) heroP.textContent = MSG;

    var heroPrimary = document.querySelector('.keyaz-hero .keyaz-hero-actions a:first-child');
    if (heroPrimary) {
      heroPrimary.href      = RENEW_HREF;
      heroPrimary.className = 'keyaz-btn keyaz-btn-primary keyaz-btn-danger';
      heroPrimary.innerHTML = BTN_LABEL + ' <i class="fa-solid ' + BTN_ICON + '"></i>';
    }

    var allStats = document.querySelectorAll('.keyaz-hero-stats .keyaz-stat');
    if (allStats.length >= 1) {
      var st0 = allStats[0], s0str = st0.querySelector('strong'), s0ico = st0.querySelector('.keyaz-stat-ico i');
      if (s0str) s0str.textContent = STATUS_TXT;
      st0.className = 'keyaz-stat expired';
      if (s0ico) s0ico.className = 'fa-solid ' + STATUS_ICO;
    }
    if (allStats.length >= 2) { var st1 = allStats[1], s1str = st1.querySelector('strong'); if (s1str) s1str.textContent = '0 Available'; st1.className = 'keyaz-stat expired'; }
    if (allStats.length >= 3) { var st2 = allStats[2], s2str = st2.querySelector('strong'); if (s2str) s2str.textContent = '0 Active';     st2.className = 'keyaz-stat expired'; }

    var notifList = document.querySelector('.keyaz-notif-panel .keyaz-notif-list');
    if (notifList && !notifList.querySelector('.keyaz-notif-item.danger')) {
      var reasonMsg = reason === 'resources'
        ? 'You have 0 active resources. Renew your subscription to restore access.'
        : reason === 'subs'
          ? (isNoSubState ? 'You don\u2019t have an active subscription. Subscribe to unlock full access.'
                          : 'You have 0 active subscriptions. Renew to restore full access.')
          : MSG;
      var dangerEl       = document.createElement('a');
      dangerEl.className = 'keyaz-notif-item danger';
      dangerEl.href      = RENEW_HREF;
      dangerEl.innerHTML = '<span class="ic"><i class="fa-solid ' + STATUS_ICO + '"></i></span>' +
                           '<span class="tx"><b>' + esc(NOTIF_TTL) + '</b><span>' + esc(reasonMsg) + '</span></span>';
      notifList.insertBefore(dangerEl, notifList.firstChild);
      var okItems = notifList.querySelectorAll('.keyaz-notif-item.ok');
      for (var oi = 0; oi < okItems.length; oi++) {
        var okTx = okItems[oi].querySelector('b');
        if (okTx && okTx.textContent === 'All good!') okItems[oi].parentNode.removeChild(okItems[oi]);
      }
    }
    var notifDot = document.querySelector('.keyaz-notif-btn .dot');
    if (notifDot) notifDot.style.display = '';
  }

  function scheduleSubRecheck() {
    if (!document.body.classList.contains('am-logged-in')) return;

    function doCheck() {
      invalidateQS();
      var subListContainer  = document.querySelector('.am-list-subscriptions');
      var resourceContainer = document.querySelector('.am-list-resources');

      if (hasNoSubDOMIndicator()) { forceExpiredUI('subs', true); return; }

      var subLis        = subListContainer  ? subListContainer.querySelectorAll(':scope > li')  : null;
      var resourceCount = resourceContainer ? resourceContainer.querySelectorAll(':scope > li').length : -1;
      var st            = detectSubState(subLis);
      var flags         = applySubStateClasses(st);

      var subExpired    = flags.isExpired || (!flags.isUnknown && !st.hasActive && st.hasAny);
      var zeroResources = !flags.isUnknown && !flags.isActive && resourceContainer && resourceCount === 0;
      var zeroSubs      = !flags.isUnknown && subListContainer && subLis && subLis.length === 0;
      var alertNow      = subExpired || flags.isNoSub || zeroResources || zeroSubs;

      if (alertNow) {
        forceExpiredUI(zeroResources ? 'resources' : (zeroSubs || flags.isNoSub) ? 'subs' : 'expired', flags.isNoSub);
        return;
      }
      if (flags.isUnknown) return;

      var heroBadge = document.querySelector('.keyaz-hero .keyaz-hero-badge');
      if (heroBadge) { heroBadge.className = 'keyaz-hero-badge'; heroBadge.innerHTML = '<i class="fa-solid fa-bolt"></i> Premium Access Active'; }
      var heroP = document.querySelector('.keyaz-hero p');
      if (heroP) heroP.textContent = 'We\u2019re glad you\u2019re here. I\u2019m your success partner \u2014 KEY AZ TOOLS.';
      var heroPrimary = document.querySelector('.keyaz-hero .keyaz-hero-actions a:first-child');
      if (heroPrimary) { heroPrimary.href = '/signup'; heroPrimary.className = 'keyaz-btn keyaz-btn-primary'; heroPrimary.innerHTML = 'Explore More Tools <i class="fa-solid fa-arrow-right"></i>'; }

      var allStats = document.querySelectorAll('.keyaz-hero-stats .keyaz-stat');
      if (allStats.length >= 1) { var as0 = allStats[0], as0s = as0.querySelector('strong'), as0i = as0.querySelector('.keyaz-stat-ico i'); if (as0s) as0s.textContent = 'Active Member'; as0.className = 'keyaz-stat'; if (as0i) as0i.className = 'fa-solid fa-circle-check'; }
      if (allStats.length >= 2) { var as1 = allStats[1], as1s = as1.querySelector('strong'); if (as1s) as1s.textContent = (resourceCount >= 0 ? resourceCount : st.activeCount || 0) + ' Available'; as1.className = 'keyaz-stat'; }
      if (allStats.length >= 3) { var as2 = allStats[2], as2s = as2.querySelector('strong'); if (as2s) as2s.textContent = (st.activeCount || 0) + ' Active'; as2.className = 'keyaz-stat'; }
    }

    var delays = IS_SLOW ? [1800] : [600, 2500];
    for (var i = 0; i < delays.length; i++) {
      (function (d) { setTimeout(doCheck, d); })(delays[i]);
    }

    var subListContainerForObs = document.querySelector('.am-list-subscriptions');
    if (subListContainerForObs && typeof MutationObserver !== 'undefined') {
      var subObs = new MutationObserver(function () { doCheck(); subObs.disconnect(); });
      subObs.observe(subListContainerForObs, { childList: true, subtree: true, attributes: true });
    }
  }

  function isValidAvatarSrc(src) {
    if (!src || src === '#' || src.indexOf('blank') !== -1 || src.length < 10) return false;
    if (src === keyaz_LOGO_URL) return false;
    if (src.indexOf('gravatar.com') !== -1) {
      if (/d=(mm|blank|identicon|monsterid|wavatar|retro|robohash)/.test(src)) return false;
    }
    return true;
  }

  function updateAvatarUI(src) {
    var uname = (document.querySelector('.am-user-identity-block_login') || { textContent: 'Member' }).textContent.trim().replace(/\s+/g, ' ') || 'Member';
    var safeSrc = isValidAvatarSrc(src) ? src : keyaz_LOGO_URL;

    var profAv = $1('.keyaz-profile-avatar');
    if (profAv) {
      var profImg = profAv.querySelector('img');
      if (profImg) profImg.src = safeSrc;
      else profAv.innerHTML = '<img src="' + esc(safeSrc) + '" alt="' + esc(uname) + '" onerror="this.src=\'' + keyaz_LOGO_URL + '\'">';
    }
    invalidateQS();
  }

  function watchAvatar() {
    var existing = $1('.am-user-identity-block-avatar-pic img');
    if (existing && isValidAvatarSrc(existing.getAttribute('src') || '')) { updateAvatarUI(existing.getAttribute('src')); return; }

    var avatarObs = null;
    var avatarObsTimer = null;
    var foundValid = false;

    if (typeof MutationObserver !== 'undefined') {
      avatarObs = new MutationObserver(function () {
        var el = $1('.am-user-identity-block-avatar-pic img');
        var src = el ? (el.getAttribute('src') || '') : '';
        if (isValidAvatarSrc(src)) {
          avatarObs.disconnect();
          if (avatarObsTimer) clearTimeout(avatarObsTimer);
          updateAvatarUI(src);
          foundValid = true;
        }
      });
      avatarObs.observe($1('.am-user-identity-block-avatar-pic') || document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['src'] });
      avatarObsTimer = setTimeout(function () { if (avatarObs) avatarObs.disconnect(); }, 30000);
    }

    var TRIES = 0, MAX = IS_SLOW ? 10 : 20, INTERVAL = IS_SLOW ? 1000 : 500;
    (function poll() {
      TRIES++;
      var el = $1('.am-user-identity-block-avatar-pic img');
      var src = el ? (el.getAttribute('src') || '') : '';
      if (isValidAvatarSrc(src)) {
        if (avatarObs) { avatarObs.disconnect(); if (avatarObsTimer) clearTimeout(avatarObsTimer); }
        updateAvatarUI(src);
        foundValid = true;
        return;
      }
      if (TRIES < MAX) {
        setTimeout(poll, INTERVAL);
      } else {
        if (avatarObs) { avatarObs.disconnect(); if (avatarObsTimer) clearTimeout(avatarObsTimer); }
        if (!foundValid) {
          updateAvatarUI(keyaz_LOGO_URL);
        }
      }
    })();
  }

  function defer(fn) {
    if (IS_SLOW) { setTimeout(fn, 2000); return; }
    if (typeof window.requestIdleCallback === 'function') {
      window.requestIdleCallback(fn, { timeout: 600 });
    } else {
      setTimeout(fn, 1);
    }
  }

  function deferLow(fn) {
    setTimeout(fn, IS_SLOW ? 4000 : 1200);
  }

  function build() {
    keepCSSLast();

    var body       = document.body;
    var isLoggedIn = body.classList.contains('am-logged-in');
    var kind       = pageKind();
    var username   = txt('.am-user-identity-block_login', 'Member');
    var avatarEl   = $1('.am-user-identity-block-avatar-pic img');
    var avatar     = avatarEl ? (avatarEl.getAttribute('src') || '') : '';
    if (!isValidAvatarSrc(avatar)) avatar = '';
    var displayAvatar = avatar || keyaz_LOGO_URL;

    var resourceContainer  = $1('.am-list-resources');
    var hasPageResourceData = !!resourceContainer;
    var resourceCount      = hasPageResourceData ? resourceContainer.querySelectorAll(':scope > li').length : 0;

    var subListContainer = $1('.am-list-subscriptions');
    var hasPageSubData   = !!subListContainer;
    var subLis           = hasPageSubData ? subListContainer.querySelectorAll(':scope > li') : null;
    var subCount         = subLis ? subLis.length : 0;

    var subState, stateFlags;
    if (isLoggedIn) {
      subState   = hasNoSubDOMIndicator() ? { hasAny: false, hasActive: false, activeCount: 0, unknown: false } : detectSubState(hasPageSubData ? subLis : null);
      stateFlags = applySubStateClasses(subState);
    } else {
      subState   = { hasAny: false, hasActive: false, activeCount: 0, unknown: true };
      stateFlags = { isUnknown: true, isExpired: false, isNoSub: false, isActive: false };
    }
    var isUnknown = stateFlags.isUnknown, isExpired = stateFlags.isExpired;
    var isNoSub   = stateFlags.isNoSub,   isActive  = stateFlags.isActive;

    var zeroActiveResources = !isUnknown && hasPageResourceData && resourceCount === 0;
    var zeroActiveSubs      = !isUnknown && hasPageSubData && subCount === 0;
    var effectiveResourceCount = (isExpired || isNoSub || zeroActiveResources || zeroActiveSubs) ? 0 : resourceCount;
    var effectiveSubCount      = (isExpired || isNoSub || zeroActiveResources || zeroActiveSubs) ? 0 : subState.activeCount;
    var limitedAccess = zeroActiveResources && !isNoSub && !isActive;

    if (limitedAccess) {
      body.classList.remove('keyaz-sub-active', 'keyaz-sub-none');
      body.classList.add('keyaz-sub-expired');
      isExpired = true; isActive = false; isNoSub = false;
    }

    var alertState  = isExpired || isNoSub || limitedAccess || (!isUnknown && !subState.hasActive && subState.hasAny);
    var exploreHref = ($1('.am-list-resources > li > a') || { getAttribute: function() { return '/member'; } }).getAttribute('href') || '/member';
    var sidebar     = $1('.am-body-content-top');
    var aMemberItems = isLoggedIn ? readAMemberMenu() : [];

    if (isLoggedIn) {
  if (sidebar && !sidebar.querySelector('.keyaz-brand')) {
    var brand = document.createElement('div');
    brand.className = 'keyaz-brand';
    brand.innerHTML =
      '<div class="keyaz-brand-logo" style="text-align: center; padding: 10px 0;">' +
      '<img src="https://cdn.keyaztools.com/images/logo50080" alt="KEY AZ TOOLS Logo" style="max-width: 100%; width: 270px; height: auto; vertical-align: middle;">' +
      '</div>';
    sidebar.insertBefore(brand, sidebar.firstChild);
  }
      var toolbar = sidebar ? sidebar.querySelector('.am-account-toolbar') : null;
      if (toolbar && !toolbar.querySelector('.keyaz-nav-scroll')) {

        var currentPath = (window.location.pathname || '/').replace(/\/+$/, '') || '/';

        var isActiveLink = function (href) {
          if (!href || href === '#' || href.indexOf('javascript:') === 0) return false;
          try {
            var tmp = document.createElement('a');
            tmp.href = href;
            if (tmp.hostname && window.location.hostname &&
                tmp.hostname !== window.location.hostname) return false;
            var lp = (tmp.pathname || '/').replace(/\/+$/, '') || '/';
            var cp = currentPath;
            if (lp === '/member') return cp === '/member' || cp === '' || cp === '/';
            if (lp === '/') return cp === '/' || cp === '';
            return cp === lp || cp.indexOf(lp + '/') === 0;
          } catch (e) {}
          return false;
        };

        var sections = Object.create(null);
        for (var ai = 0; ai < aMemberItems.length; ai++) {
          var item = aMemberItems[ai];
          var sec  = item.section || 'More';
          if (!sections[sec]) sections[sec] = [];
          sections[sec].push(item);
        }

        var navParts = ['<div class="keyaz-nav-search"><input type="text" placeholder="Search menu\u2026" aria-label="Search menu" autocomplete="off"></div>'];
        var preferredOrder = ['Main', 'Account', 'Support', 'Legal', 'More'];
        var orderedSections = [];
        for (var pi = 0; pi < preferredOrder.length; pi++) { if (sections[preferredOrder[pi]]) orderedSections.push(preferredOrder[pi]); }
        for (var sk in sections) { if (orderedSections.indexOf(sk) === -1) orderedSections.push(sk); }

        /* ✅ FIX 3: Fallback section — keyaz_ICON_MAP use karo, hardcoded nahi */
        if (!orderedSections.length) {
          orderedSections = ['Main'];
          sections['Main'] = [
            { label: 'Dashboard',        href: '/member',                 icon: keyaz_ICON_MAP['dashboard'], target: '' },
            { label: 'Profile',          href: '/profile',                icon: keyaz_ICON_MAP['profile'],   target: '' },
            { label: 'Payments History', href: '/member/payment-history', icon: keyaz_ICON_MAP['payments'],  target: '' }
          ];
        }

        for (var oi = 0; oi < orderedSections.length; oi++) {
          var sn = orderedSections[oi];
          navParts.push('<span class="keyaz-nav-label">' + esc(sn) + '</span>');
          var secItems = sections[sn];
          for (var si = 0; si < secItems.length; si++) {
            var it = secItems[si];
            var isActive_link = isActiveLink(it.href);
            navParts.push(
              '<a href="' + esc(it.href) + '" class="keyaz-nav-item' + (isActive_link ? ' active' : '') + '"' +
              (it.target ? ' target="' + esc(it.target) + '" rel="noopener"' : '') + '>' +
              '<span class="ico"><i class="' + esc(it.icon) + '"></i></span>' +
              '<span class="lbl">' + esc(it.label) + '</span>' +
              '<i class="fa-solid fa-chevron-right chev"></i></a>'
            );
          }
        }
        navParts.push('<div class="keyaz-nav-empty">No matches found</div>');

        var nav = document.createElement('div');
        nav.className = 'keyaz-nav-scroll';
        nav.innerHTML = navParts.join('');
        toolbar.insertBefore(nav, toolbar.firstChild);

        var searchInput = nav.querySelector('.keyaz-nav-search input');
        var navEmpty    = nav.querySelector('.keyaz-nav-empty');
        if (searchInput) {
          var searchItems  = nav.querySelectorAll('.keyaz-nav-item');
          var searchLabels = nav.querySelectorAll('.keyaz-nav-label');
          searchInput.addEventListener('input', function () {
            var q = searchInput.value.trim().toLowerCase(), visible = 0;
            for (var i = 0; i < searchItems.length; i++) {
              var match = !q || searchItems[i].textContent.toLowerCase().indexOf(q) !== -1;
              searchItems[i].classList.toggle('hidden-by-search', !match);
              if (match) visible++;
            }
            for (var li2 = 0; li2 < searchLabels.length; li2++) {
              var lb = searchLabels[li2];
              if (!q) { lb.style.display = ''; continue; }
              var next = lb.nextElementSibling, anyVis = false;
              while (next && !next.classList.contains('keyaz-nav-label')) {
                if (next.classList.contains('keyaz-nav-item') && !next.classList.contains('hidden-by-search')) { anyVis = true; break; }
                next = next.nextElementSibling;
              }
              lb.style.display = anyVis ? '' : 'none';
            }
            navEmpty.classList.toggle('show', visible === 0);
          });
        }
      }

      if (subLis && subLis.length) {
        var now = new Date();
        for (var sli = 0; sli < subLis.length; sli++) {
          var li = subLis[sli];
          if (li.querySelector('.keyaz-expiry-track')) continue;
          var expDate = extractExpiryDate(li);
          if (!expDate) continue;
          var isRowExp = isExpiredDate(expDate);
          var daysLeft = isRowExp ? 0 : daysBetween(now, endOfDay(expDate));
          if (isRowExp) li.classList.add('keyaz-expired');
          else li.classList.remove('keyaz-expired');
          var pct   = isRowExp ? 100 : Math.max(0, Math.min(100, (daysLeft / 30) * 100));
          var track = document.createElement('div');
          track.className = 'keyaz-expiry-track';
          var fill  = document.createElement('div');
          fill.className = 'keyaz-expiry-fill' + (isRowExp || daysLeft <= 3 ? ' danger' : daysLeft <= 7 ? ' warn' : '');
          fill.style.width = pct + '%';
          track.appendChild(fill);
          li.appendChild(track);
          var daysTag = document.createElement('span');
          daysTag.className = 'keyaz-days-left' + (isRowExp ? ' expired' : daysLeft <= 3 ? ' urgent' : '');
          daysTag.innerHTML = '<i class="fa-regular fa-clock"></i> ' + (isRowExp ? 'Expired' : daysLeft === 0 ? 'Last day' : daysLeft + 'd left');
          var datePill = li.querySelector('.am-list-subscriptions-date');
          if (datePill) datePill.appendChild(daysTag);
        }
      }
    }

   var topbar = document.createElement('header');
topbar.className = 'keyaz-topbar';
var pageTitle = { signup: 'Signup', login: 'Login', profile: 'Profile', payments: 'Payments History', terms: 'Terms & Conditions' }[kind] || 'Dashboard';

var left = isLoggedIn
  ? '<button class="keyaz-sidebar-collapse" title="Collapse sidebar (Ctrl+B)"><i class="fa-solid fa-chevron-left"></i></button>' +
    '<button class="keyaz-sidebar-expand" title="Expand sidebar"><i class="fa-solid fa-bars"></i></button>' +
    '<button class="keyaz-burger" aria-label="Menu"><i class="fa-solid fa-bars"></i></button>'
  : '<a href="/login" class="keyaz-brand" style="height:auto;min-height:auto;padding:0;border:none;background:transparent;box-shadow:none; display:flex; align-items:center;">' +
    // Yahan full logo image add kar di gayi hai
    '<img src="https://cdn.keyaztools.com/images/logo50080" alt="KEY AZ TOOLS Logo" style="max-width: 100%; width: 270px; height: auto; vertical-align: middle;"></a>';

/* ✅ NEW: asli logout link nikaalo (fallback /logout) */
var keyazLogoutHref = isLoggedIn ? findLogoutHref() : '/logout';

var actions = isLoggedIn
  ? '<button class="keyaz-icon-btn keyaz-notif-btn" title="Notifications" aria-label="Notifications"><i class="fa-regular fa-bell"></i><span class="dot"></span></button>' +
    /* ✅ NEW: bell ke right side logout button */
    '<a href="' + esc(keyazLogoutHref) + '" class="keyaz-icon-btn keyaz-logout-btn" title="Logout" aria-label="Logout"><i class="fa-solid fa-right-from-bracket"></i></a>'
  : kind === 'login'
    ? '<a href="/signup" class="keyaz-btn keyaz-btn-primary" style="padding:10px 20px;font-size:13px;">Get Started <i class="fa-solid fa-arrow-right"></i></a>'
    : '';

topbar.innerHTML = left +
  '<div class="keyaz-page-head"><span class="keyaz-page-title">' + pageTitle + '</span>' +
  '<span class="keyaz-crumb"><a href="/member">Home</a> <i class="fa-solid fa-chevron-right"></i> ' + pageTitle + '</span></div>' +
  '<div class="keyaz-topbar-actions">' + actions + '</div>';
body.appendChild(topbar);
    var content = $1('.am-body-content-content');
    if (content) {
      var inner = content.querySelector('.keyaz-content-inner');
      if (!inner) {
        inner = document.createElement('div');
        inner.className = 'keyaz-content-inner';
        while (content.firstChild) inner.appendChild(content.firstChild);
        content.appendChild(inner);
      }

      if (isLoggedIn && kind === 'dashboard' && !inner.querySelector('.keyaz-hero')) {
        var hbc = isNoSub ? 'keyaz-hero-badge expired' : alertState ? 'keyaz-hero-badge expired' : 'keyaz-hero-badge';
        var hbi = isNoSub ? 'fa-circle-info' : alertState ? 'fa-triangle-exclamation' : 'fa-bolt';
        var hbt = isNoSub ? 'No Active Subscription' : alertState ? 'Premium Access Expired' : 'Premium Access Active';
        var heroMsg  = isNoSub ? 'You don\u2019t have an active subscription yet. Subscribe to unlock your tools and resources.'
                     : alertState ? 'Your subscription has expired. Renew to restore access to your tools and resources.'
                     : 'We\u2019re glad you\u2019re here. I\u2019m your success partner \u2014 KEY AZ TOOLS.';
        var hpHref   = alertState ? '/signup' : exploreHref;
        var hpClass  = alertState ? 'keyaz-btn keyaz-btn-primary keyaz-btn-danger' : 'keyaz-btn keyaz-btn-primary';
        var hpLabel  = isNoSub ? 'Subscribe Now' : alertState ? 'Renew Subscription' : 'Explore More Tools';
        var hpIcon   = isNoSub ? 'fa-circle-plus' : alertState ? 'fa-rotate-right' : 'fa-arrow-right';
        var statLbl  = isNoSub ? 'No Subscription' : alertState ? 'Expired' : isUnknown ? 'Check on Dashboard' : 'Active Member';
        var statIco  = isNoSub ? 'fa-circle-info' : alertState ? 'fa-circle-xmark' : isUnknown ? 'fa-spinner' : 'fa-circle-check';
        var statCls  = alertState ? 'keyaz-stat expired' : 'keyaz-stat';

        var hero = document.createElement('section');
        hero.className = 'keyaz-hero';
        hero.innerHTML =
          '<span class="keyaz-hero-glow g1"></span><span class="keyaz-hero-glow g2"></span>' +
          '<div class="keyaz-hero-inner">' +
            '<span class="' + hbc + '"><i class="fa-solid ' + hbi + '"></i> ' + hbt + '</span>' +
            '<h1>' + timeGreeting() + ', <span class="grad">' + esc(username) + '</span> \uD83D\uDC4B</h1>' +
            '<p>' + heroMsg + '</p>' +
            '<div class="keyaz-hero-actions">' +
              '<a href="' + esc(hpHref) + '" class="' + hpClass + '">' + hpLabel + ' <i class="fa-solid ' + hpIcon + '"></i></a>' +
              '<a href="/member/payment-history" class="keyaz-btn keyaz-btn-ghost"><i class="fa-solid fa-receipt"></i> Billing History</a>' +
            '</div>' +
          '</div>' +
          '<div class="keyaz-hero-stats">' +
            '<div class="' + statCls + '"><span class="keyaz-stat-ico"><i class="fa-solid ' + statIco + '"></i></span><div><small>Account Status</small><strong>' + statLbl + '</strong></div></div>' +
            '<div class="' + statCls + '"><span class="keyaz-stat-ico"><i class="fa-solid fa-layer-group"></i></span><div><small>Active Resources</small><strong>' + (alertState ? '0' : effectiveResourceCount) + ' Available</strong></div></div>' +
            '<div class="' + statCls + '"><span class="keyaz-stat-ico"><i class="fa-solid fa-crown"></i></span><div><small>Subscriptions</small><strong>' + (alertState ? '0' : effectiveSubCount) + ' Active</strong></div></div>' +
          '</div>';
        inner.insertBefore(hero, inner.firstChild);
        invalidateQS();
      }

      if (isLoggedIn && kind === 'profile' && !inner.querySelector('.keyaz-profile-head')) {
        var initials  = username.trim().charAt(0).toUpperCase() || 'U';
        var chipSt    = isNoSub ? '<span class="keyaz-chip"><i class="fa-solid fa-circle-info"></i> No Subscription</span>'
                      : alertState ? '<span class="keyaz-chip danger"><i class="fa-solid fa-circle-xmark"></i> Expired</span>'
                      : isUnknown ? '<span class="keyaz-chip"><i class="fa-solid fa-house"></i> Check on Dashboard</span>'
                      : '<span class="keyaz-chip ok"><i class="fa-solid fa-circle-check"></i> Active</span>';
        var chipPrem  = alertState
          ? '<span class="keyaz-chip"><i class="fa-solid fa-crown"></i> Standard</span>'
          : '<span class="keyaz-chip brand"><i class="fa-solid fa-crown"></i> Premium</span>';
        var profileHead = document.createElement('section');
        profileHead.className = 'keyaz-profile-head';
        profileHead.innerHTML =
          '<div class="keyaz-profile-avatar"><img src="' + esc(displayAvatar) + '" alt="' + esc(username) + '" onerror="this.src=\'' + keyaz_LOGO_URL + '\'"></div>' +
          '<div class="keyaz-profile-info"><h2>' + esc(username) + '</h2>' +
          '<p class="email">' + esc(txt('.am-profile-form input[name="email"],.am-profile-form input[type="email"]', 'Member account')) + '</p>' +
          chipSt + chipPrem +
          '<div class="keyaz-completeness"><div class="lbl"><span>Profile completion</span><span class="pct">0%</span></div><div class="bar"><div class="fill"></div></div></div></div>';
        inner.insertBefore(profileHead, inner.firstChild);

        function calcCompletion() {
          var form = document.querySelector('.am-profile-form');
          if (!form) return false;
          var fields = form.querySelectorAll('input[type="text"],input[type="email"],select,textarea');
          if (!fields.length) return false;
          var filled = 0, countable = 0;
          for (var i = 0; i < fields.length; i++) {
            if (fields[i].type === 'password') continue;
            countable++;
            if (String(fields[i].value || '').trim()) filled++;
          }
          var pct    = countable ? Math.round((filled / countable) * 100) : 0;
          var fillEl = profileHead.querySelector('.keyaz-completeness .fill');
          var pctEl  = profileHead.querySelector('.keyaz-completeness .pct');
          if (fillEl) fillEl.style.width = pct + '%';
          if (pctEl)  pctEl.textContent  = pct + '%';
          return true;
        }
        if (!calcCompletion()) {
          var formObs = null;
          if (typeof MutationObserver !== 'undefined') {
            formObs = new MutationObserver(function () {
              if (calcCompletion()) { formObs.disconnect(); }
            });
            formObs.observe(document.body, { childList: true, subtree: true });
            setTimeout(function () { if (formObs) formObs.disconnect(); }, 10000);
          }
          setTimeout(function () { if (formObs) formObs.disconnect(); calcCompletion(); }, 1500);
        }
      }

      if (isLoggedIn && kind === 'payments') {
        var tbl = inner.querySelector('table');
        if (tbl && !tbl.parentNode.classList.contains('keyaz-table-wrap')) {
          var wrap = document.createElement('div');
          wrap.className = 'keyaz-table-wrap';
          var thead = document.createElement('div');
          thead.className = 'keyaz-table-head';
          thead.innerHTML = '<i class="fa-solid fa-receipt"></i><strong>Payment Transactions</strong>';
          tbl.parentNode.insertBefore(wrap, tbl);
          wrap.appendChild(thead);
          wrap.appendChild(tbl);
          var headers = [], ths = tbl.querySelectorAll('thead th');
          for (var thi = 0; thi < ths.length; thi++) headers.push(ths[thi].textContent.trim());
          var trs = tbl.querySelectorAll('tbody tr');
          for (var tri = 0; tri < trs.length; tri++) {
            var tds = trs[tri].querySelectorAll('td');
            for (var tdi = 0; tdi < tds.length; tdi++) {
              if (!tds[tdi].getAttribute('data-label') && headers[tdi]) tds[tdi].setAttribute('data-label', headers[tdi]);
            }
          }
        }
      }

      if (!inner.querySelector('.keyaz-footer')) {
        var f1 = document.createElement('footer');
        f1.className = 'keyaz-footer';
        f1.innerHTML = '&copy; 2026 <span>&middot;</span> KEY AZ TOOLS <span>&middot;</span> All rights reserved <span>&middot;</span> <a href="https://keyaztools.com/whatsapp" target="_blank" rel="noopener">Support</a>';
        inner.appendChild(f1);
      }
    }

    function attachPasswordMeter(input) {
      if (!input || input.dataset.keyazMeter === '1') return;
      input.dataset.keyazMeter = '1';
      var meter = document.createElement('div');
      meter.className = 'keyaz-pw-meter';
      meter.innerHTML = '<span></span><span></span><span></span><span></span>';
      var label = document.createElement('div');
      label.className = 'keyaz-pw-label';
      label.textContent = 'Password strength';
      var caps = document.createElement('div');
      caps.className = 'keyaz-caps';
      caps.textContent = 'Caps Lock is on';
      var parent = input.parentNode;
      if (parent) { parent.appendChild(meter); parent.appendChild(label); parent.appendChild(caps); }
      var LEVELS = ['', 'weak', 'fair', 'good', 'strong'];
      function score(v) {
        if (!v) return 0;
        var s = 0;
        if (v.length >= 6)  s++;
        if (v.length >= 10) s++;
        if (/[A-Z]/.test(v) && /[a-z]/.test(v)) s++;
        if (/\d/.test(v) && /[^A-Za-z0-9]/.test(v)) s++;
        return Math.min(s, 4);
      }
      function update() { var s = score(input.value); meter.className = 'keyaz-pw-meter' + (input.value ? ' s' + s : ''); meter.setAttribute('data-level', LEVELS[s] || ''); label.textContent = input.value ? 'Password strength: ' + LEVELS[s] : 'Password strength'; }
      function checkCaps(e) { try { caps.classList.toggle('show', !!(e.getModifierState && e.getModifierState('CapsLock'))); } catch (err) {} }
      input.addEventListener('input', update);
      input.addEventListener('keydown', checkCaps);
      input.addEventListener('keyup',   checkCaps);
      input.addEventListener('blur', function () { caps.classList.remove('show'); });
      update();
    }
    defer(function () {
      var pw = document.querySelectorAll('input[type="password"]');
      for (var i = 0; i < pw.length; i++) attachPasswordMeter(pw[i]);
    });

    function refreshSignupTiles() {
      var container = $1('.am-signup-form #row-product_id_page-0-0 > .am-element');
      if (!container) return;
      if (!container.classList.contains('keyaz-products-grid')) container.classList.add('keyaz-products-grid');
      var checked = container.querySelector('input[type="radio"]:checked');
      if (checked) { var t0 = checked.closest('label'); if (t0) t0.classList.add('selected'); }
      var radios = container.querySelectorAll('input[type="radio"]');
      for (var ri = 0; ri < radios.length; ri++) {
        var radio = radios[ri];
        if (radio.dataset.keyazBound) continue;
        radio.dataset.keyazBound = '1';
        radio.addEventListener('change', function () {
          var labels = container.querySelectorAll('label');
          for (var li2 = 0; li2 < labels.length; li2++) labels[li2].classList.remove('selected');
          var tile = this.closest('label');
          if (tile) { tile.classList.add('selected'); var ti = tile.querySelector('.am-product-title'); if (ti) toast('Selected: ' + ti.textContent.trim(), 'ok'); }
        });
      }
      var brs = container.querySelectorAll(':scope > br');
      for (var bi = 0; bi < brs.length; bi++) brs[bi].remove();
    }
    refreshSignupTiles();
    setTimeout(refreshSignupTiles, 800);

    deferLow(function () {
      if ($1('.keyaz-top-btn')) return;
      var topBtn = document.createElement('button');
      topBtn.className = 'keyaz-top-btn';
      topBtn.setAttribute('aria-label', 'Scroll to top');
      topBtn.innerHTML = '<i class="fa-solid fa-arrow-up"></i>';
      topBtn.addEventListener('click', function () { window.scrollTo({ top: 0, behavior: 'smooth' }); });
      body.appendChild(topBtn);
      var topTick = false;
      function toggleTop() { topBtn.classList.toggle('show', window.scrollY > 300); topTick = false; }
      window.addEventListener('scroll', function () { if (!topTick) { topTick = true; window.requestAnimationFrame(toggleTop); } }, { passive: true });
      toggleTop();
    });

    if (isLoggedIn) {
      deferLow(function () {
        if ($1('.keyaz-fab')) return;
        var fab = document.createElement('div');
        fab.className = 'keyaz-fab';
        fab.innerHTML =
          '<div class="keyaz-fab-menu">' +
          '<a href="/member" class="keyaz-fab-item"><i class="fa-solid fa-house"></i> Dashboard</a>' +
          '<a href="/signup" class="keyaz-fab-item"><i class="fa-solid fa-user-plus"></i> Signup</a>' +
          '<a href="/profile" class="keyaz-fab-item"><i class="fa-solid fa-user"></i> Profile</a>' +
          '<a href="/member/payment-history" class="keyaz-fab-item"><i class="fa-solid fa-receipt"></i> Billing</a>' +
          '<a href="https://keyaztools.com/whatsapp" target="_blank" rel="noopener" class="keyaz-fab-item"><i class="fa-brands fa-whatsapp"></i> Support</a>' +
          '</div><button class="keyaz-fab-main" aria-label="Quick actions"><i class="fa-solid fa-plus"></i></button>';
        body.appendChild(fab);
        var fabMain = fab.querySelector('.keyaz-fab-main');
        fabMain.addEventListener('click', function (e) { e.stopPropagation(); fab.classList.toggle('open'); });
        document.addEventListener('click', function (e) { if (!fab.contains(e.target)) fab.classList.remove('open'); });
      });
    }

    if (isLoggedIn) {
      var overlay = document.createElement('div');
      overlay.className = 'keyaz-overlay';
      body.appendChild(overlay);
      var burger      = topbar.querySelector('.keyaz-burger');
      var collapseBtn = topbar.querySelector('.keyaz-sidebar-collapse');
      var expandBtn   = topbar.querySelector('.keyaz-sidebar-expand');
      if (burger && sidebar)  { burger.addEventListener('click', function () { sidebar.classList.toggle('keyaz-open'); overlay.classList.toggle('show'); }); }
      if (collapseBtn)        { collapseBtn.addEventListener('click', function () { body.classList.add('keyaz-collapsed'); store('keyaz-collapsed', '1'); }); }
      if (expandBtn)          { expandBtn.addEventListener('click', function () { body.classList.remove('keyaz-collapsed'); store('keyaz-collapsed', '0'); }); }
      overlay.addEventListener('click', function () { if (sidebar) sidebar.classList.remove('keyaz-open'); overlay.classList.remove('show'); });
      document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && sidebar) { sidebar.classList.remove('keyaz-open'); overlay.classList.remove('show'); } });
      if (read('keyaz-collapsed') === '1' && window.innerWidth > 992) body.classList.add('keyaz-collapsed');

      defer(function () {
        var notifBtn = topbar.querySelector('.keyaz-notif-btn');
        if (!notifBtn) return;
        var panel = document.createElement('div');
        panel.className = 'keyaz-notif-panel';

        var nowN = new Date(), expiredSubs = [], expiringSoon = [], notifItems = [];

        if (hasPageSubData && subLis) {
          for (var ni = 0; ni < subLis.length; ni++) {
            var nli = subLis[ni];
            var ntEl = nli.querySelector('.am-list-subscriptions-title');
            if (!ntEl) continue;
            var nTitle = ntEl.textContent.trim();
            var nexp   = extractExpiryDate(nli);
            if (nexp) {
              if (isExpiredDate(nexp)) expiredSubs.push({ title: nTitle, date: nexp });
              else { var nd = daysBetween(nowN, endOfDay(nexp)); if (nd <= 7) expiringSoon.push({ title: nTitle, date: nexp, days: nd }); }
            } else if (rowHasExpiredIndicator(nli)) expiredSubs.push({ title: nTitle, date: nowN, days: 0 });
          }

          if (expiredSubs.length === 1) {
            notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: 'Subscription Expired', msg: expiredSubs[0].title + ' expired on ' + formatDate(expiredSubs[0].date) + '. Renew now to restore access.', href: '/signup' });
          } else if (expiredSubs.length > 1) {
            var nl = expiredSubs.length === 2 ? expiredSubs[0].title + ' and ' + expiredSubs[1].title : expiredSubs[0].title + ', ' + expiredSubs[1].title + ' and ' + (expiredSubs.length - 2) + ' more';
            notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: expiredSubs.length + ' Subscriptions Expired', msg: nl + '. Renew now to restore full access.', href: '/signup' });
          }
          for (var esi = 0; esi < expiringSoon.length; esi++) {
            var en = expiringSoon[esi];
            notifItems.push({ type: en.days <= 3 ? 'warn' : 'info', icon: en.days <= 3 ? 'fa-triangle-exclamation' : 'fa-clock', title: en.title, msg: 'Expires ' + (en.days === 0 ? 'today' : 'in ' + en.days + ' day' + (en.days === 1 ? '' : 's')) + ' \u2014 ' + formatDate(en.date), href: '/member' });
          }
          if (!notifItems.length) {
            if (isNoSub)  notifItems.push({ type: 'danger', icon: 'fa-circle-info', title: 'No Active Subscription', msg: 'You don\u2019t have an active subscription. Subscribe to unlock full access.', href: '/signup' });
            else if (alertState || zeroActiveResources || zeroActiveSubs || (subLis && subLis.length === 0)) notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: 'Subscription Expired', msg: zeroActiveResources ? 'You have 0 active resources. Renew to restore access.' : 'You have 0 active subscriptions. Renew now.', href: '/signup' });
            else notifItems.push({ type: 'ok', icon: 'fa-circle-check', title: 'All good!', msg: 'No urgent alerts. Your subscriptions are active.', href: '/member' });
          }
        } else {
          if (isNoSub)         notifItems.push({ type: 'danger', icon: 'fa-circle-info', title: 'No Active Subscription', msg: 'You don\u2019t have an active subscription. Subscribe to unlock full access.', href: '/signup' });
          else if (alertState) notifItems.push({ type: 'danger', icon: 'fa-circle-xmark', title: 'Subscription Expired', msg: 'Your subscription has expired. Renew now.', href: '/signup' });
          else                 notifItems.push({ type: 'ok', icon: 'fa-circle-check', title: 'All good!', msg: 'No urgent alerts. Your subscriptions are active.', href: '/member' });
        }

        var TYPE_RANK = { danger: 0, warn: 1, info: 2, ok: 3 };
        notifItems.sort(function (a, b) { return (TYPE_RANK[a.type] || 9) - (TYPE_RANK[b.type] || 9); });

        var listParts = [];
        for (var ii = 0; ii < notifItems.length; ii++) {
          var itm = notifItems[ii];
          listParts.push('<a class="keyaz-notif-item ' + itm.type + '" href="' + esc(itm.href) + '"><span class="ic"><i class="fa-solid ' + itm.icon + '"></i></span><span class="tx"><b>' + esc(itm.title) + '</b><span>' + esc(itm.msg) + '</span></span></a>');
        }
        panel.innerHTML =
          '<div class="keyaz-notif-head"><strong>Notifications</strong><button class="keyaz-notif-clear" type="button">Clear</button></div>' +
          '<div class="keyaz-notif-list">' + listParts.join('') + '</div>';
        body.appendChild(panel);

        var dot = notifBtn.querySelector('.dot');
        var hasUrgent = notifItems.some(function (n) { return n.type !== 'ok'; });
        if (dot && !hasUrgent) dot.style.display = 'none';

        notifBtn.addEventListener('click', function (e) { e.stopPropagation(); var open = panel.classList.toggle('show'); notifBtn.classList.toggle('active', open); });
        panel.addEventListener('click', function (e) { e.stopPropagation(); });
        var clearBtn = panel.querySelector('.keyaz-notif-clear');
        if (clearBtn) {
          clearBtn.addEventListener('click', function () {
            panel.querySelector('.keyaz-notif-list').innerHTML = '<div class="keyaz-notif-empty"><i class="fa-regular fa-bell-slash"></i>You\u2019re all caught up</div>';
            if (dot) dot.style.display = 'none';
            toast('Notifications cleared', 'ok');
          });
        }
        document.addEventListener('click', function () { panel.classList.remove('show'); notifBtn.classList.remove('active'); });
        document.addEventListener('keydown', function (e) { if (e.key === 'Escape') { panel.classList.remove('show'); notifBtn.classList.remove('active'); } });
      });
    }

    if (isLoggedIn) {
      deferLow(function () {
        if (window.__keyazKeys) return;
        window.__keyazKeys = true;
        var gPressed = false;
        var gTimer   = null;
        var NAV_MAP  = { d: '/member', s: '/signup', p: '/profile', b: '/member/payment-history' };
        document.addEventListener('keydown', function (e) {
          var tgt = e.target, tag = (tgt.tagName || '').toLowerCase();
          if (tag === 'input' || tag === 'textarea' || tag === 'select' || tgt.isContentEditable) return;
          if (e.metaKey || e.ctrlKey || e.altKey) {
            if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'b') { e.preventDefault(); body.classList.toggle('keyaz-collapsed'); store('keyaz-collapsed', body.classList.contains('keyaz-collapsed') ? '1' : '0'); }
            return;
          }
          if (gPressed) { var dest = NAV_MAP[e.key.toLowerCase()]; if (dest) window.location.href = dest; gPressed = false; if (gTimer) { clearTimeout(gTimer); gTimer = null; } return; }
          if (e.key.toLowerCase() === 'g') {
            gPressed = true;
            gTimer = setTimeout(function () { gPressed = false; gTimer = null; }, 1200);
          }
        });
        window.addEventListener('blur', function () { gPressed = false; if (gTimer) { clearTimeout(gTimer); gTimer = null; } });
      });
    }

    defer(function () {
      if (typeof MutationObserver === 'undefined') return;
      var observer = new MutationObserver(function (muts) {
        for (var mi = 0; mi < muts.length; mi++) {
          var added = muts[mi].addedNodes;
          for (var ai = 0; ai < added.length; ai++) {
            var n = added[ai];
            if (n.nodeType === 1 && n.classList && n.classList.contains('am-error')) {
              n.classList.add('keyaz-error');
              var inp = n.parentNode && n.parentNode.querySelector('input');
              if (inp) inp.classList.add('am-error');
            }
          }
        }
      });
      var forms = document.querySelectorAll('.am-signup-form,.am-profile-form,.am-login-form');
      for (var fi = 0; fi < forms.length; fi++) observer.observe(forms[fi], { childList: true, subtree: true });
      var formInputs = document.querySelectorAll('.am-signup-form input,.am-profile-form input,.am-login-form input');
      for (var fii = 0; fii < formInputs.length; fii++) {
        formInputs[fii].addEventListener('input', function () { this.classList.remove('am-error'); });
      }
    });

    defer(function () {
      if (isLoggedIn && kind === 'dashboard') {
        if (alertState) {
          setTimeout(function () {
            var msg = isNoSub ? 'You don\u2019t have an active subscription yet. Subscribe to unlock your tools.'
                    : zeroActiveResources ? 'You have 0 active resources. Please renew your subscription.'
                    : zeroActiveSubs ? 'You have 0 active subscriptions. Please renew to restore access.'
                    : 'Your subscription has expired. Please renew to restore access.';
            toast(msg, isNoSub ? 'info' : 'err', 5000);
          }, 400);
        } else if (isActive) {
          setTimeout(function () { toast('Welcome back, ' + username + '! \uD83C\uDF89', 'ok'); }, 400);
        }
      }
    });

    if (!IS_SLOW) {
      attachScrollProgress();
    } else {
      deferLow(attachScrollProgress);
    }

    wireForgotPassword();

    if (isLoggedIn) {
      defer(watchAvatar);
      defer(scheduleSubRecheck);
    }
  }

  var __fpWired = false;
  function wireForgotPassword() {
    if (__fpWired) return;
    var loginWrap    = $1('.am-login-form-wrapper');
    var sendpassWrap = $1('.am-sendpass-form-wrapper');
    if (!loginWrap || !sendpassWrap) return;
    __fpWired = true;
    var forgotLinks = document.querySelectorAll('.am-form-login-switch[href*="sendpass"],.am-login-form-wrapper a[href*="sendpass"]');
    var backLinks   = document.querySelectorAll('.am-sendpass-form-wrapper a[href="/login"],.am-sendpass-form-wrapper .am-form-login-switch[href$="/login"]');
    function showSendpass(e) {
      if (e) { e.preventDefault(); e.stopPropagation(); }
      loginWrap.style.setProperty('display', 'none', 'important');
      loginWrap.classList.add('keyaz-hidden');
      sendpassWrap.style.setProperty('display', 'block', 'important');
      sendpassWrap.classList.add('active');
      try { if (!/sendpass/.test(window.location.search)) history.pushState({}, '', '/login?sendpass'); } catch (err) {}
      var f = sendpassWrap.querySelector('input[type="text"],input[type="email"]');
      if (f) setTimeout(function () { f.focus(); }, 60);
    }
    function showLogin(e) {
      if (e) { e.preventDefault(); e.stopPropagation(); }
      sendpassWrap.style.setProperty('display', 'none', 'important');
      sendpassWrap.classList.remove('active');
      loginWrap.style.setProperty('display', 'block', 'important');
      loginWrap.classList.remove('keyaz-hidden');
      try { if (/sendpass/.test(window.location.search)) history.pushState({}, '', '/login'); } catch (err) {}
      var f = loginWrap.querySelector('input[type="text"],input[type="email"]');
      if (f) setTimeout(function () { f.focus(); }, 60);
    }
    for (var i = 0; i < forgotLinks.length; i++) { if (!forgotLinks[i].dataset.keyazWired) { forgotLinks[i].dataset.keyazWired = '1'; forgotLinks[i].addEventListener('click', showSendpass, true); } }
    for (var j = 0; j < backLinks.length; j++)   { if (!backLinks[j].dataset.keyazWired)   { backLinks[j].dataset.keyazWired   = '1'; backLinks[j].addEventListener('click', showLogin, true); } }
    if (/sendpass/.test(window.location.search)) showSendpass();
  }

  var __headMo = null;
  function bootstrapHead() {
    if (!document.head) return false;
    injectPreconnects();
    injectCSSLink();
    injectStateCSS();
    startHeadObserver();

    if (!document.querySelector('link[href*="font-awesome"],link[href*="fontawesome"]')) {
      var FA_URL = 'https://use.fontawesome.com/releases/v6.5.1/css/all.css';
      var faPre = document.createElement('link');
      faPre.rel  = 'preload';
      faPre.as   = 'style';
      faPre.href = FA_URL;
      faPre.setAttribute('fetchpriority', IS_SLOW ? 'low' : 'high');
      document.head.appendChild(faPre);
      var fa = document.createElement('link');
      fa.rel  = 'stylesheet';
      fa.href = FA_URL;
      fa.media = 'print';
      fa.onload  = function () { fa.media = 'all'; };
      fa.onerror = function () { fa.media = 'all'; };
      document.head.appendChild(fa);
    }
    return true;
  }

  function run() {
    try { build(); }
    catch (err) { if (window.console && console.warn) console.warn('[keyazPremium v9.9-fixed]', err); }
    var fpDelays = IS_SLOW ? [500] : [300, 900, 1800];
    for (var i = 0; i < fpDelays.length; i++) {
      (function (d) { setTimeout(wireForgotPassword, d); })(fpDelays[i]);
    }
  }

  if (!bootstrapHead()) {
    __headMo = new MutationObserver(function () { if (bootstrapHead()) __headMo.disconnect(); });
    __headMo.observe(document.documentElement, { childList: true, subtree: true });
  }

  function scheduleRun() {
    if (document.readyState === 'interactive' || document.readyState === 'complete') { run(); return; }
    var done = false;
    function fire() {
      if (done) return;
      done = true;
      document.removeEventListener('readystatechange', onRS);
      document.removeEventListener('DOMContentLoaded', fire);
      run();
    }
    function onRS() { if (document.readyState === 'interactive' || document.readyState === 'complete') fire(); }
    document.addEventListener('readystatechange', onRS);
    document.addEventListener('DOMContentLoaded', fire);
  }
  scheduleRun();

  window.addEventListener('pageshow', function (e) {
    if (e.persisted) { try { scheduleSubRecheck(); } catch (err) {} }
  });

})();
</script>;
--am_header_path: 6ab03ea13677b.png;
--am_link_color_a99: #3f7fb099;

}
/* end: variables from theme configuration */

body, html {
    font-size: var(--am_font_size_px);
    background: none;
}

html {
    background: var(--am_bg);
    background-size: var(--am_bg_size);
    background-attachment: var(--am_bg_attachment);
}

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.am-layout {
    flex: 1;
}

.am-footer {
    height: auto;
    background: var(--am_footer_bg);
}

.am-common {
    font-family: var(--am_font_family), san-serif;
    color: var(--am_text_color);
}

.am-common legend {
    color: var(--am_text_color);
}

.am-common a {
    color: var(--am_link_color);
    text-decoration-color: var(--am_link_color_a99);
}

.ajax-link, .local-link, .local {
    text-decoration-color: var(--am_link_color_a99);
}

.am-layout {
    min-height: initial;
    margin: 0;
    background: none;
}

.am-header {
    background: var(--am_header_bg);
    background-size: var(--am_header_bg_size);
}

.am-header .am-header-content-wrapper {
    border: none;
    background: none;
}

.am-header-line {
    border:none;
    background: none;
}

.am-footer .am-footer-content-wrapper {
    background: none;
    color: inherit;
    height: auto;
}

.am-footer-content-content {
    padding: 1em 0;
}

.am-footer-text {
    text-align: center;
}

.am-footer .am-footer-content .am-footer-sm a {
    color: var(--am_sm_color);
    font-size: var(--am_sm_size_px);
}

.am-body {
    background: none;
}

.am-body .am-body-content-wrapper {
    border: none;
    padding-bottom: 1em;
    margin-bottom: 50px;
    box-shadow: var(--am_content_shadow);
    border-radius: var(--am_border_radius_px);
    background: var(--am_page_bg);
}

.am-body-content {
    min-height: 300px;
}

.am-header-content-wrapper {
    padding: 0;
}

.am-header-content-content {
    display: none;
}

.am-header .am-header-content .am-header-content-logo {
    float: none;
    margin: 0;
}

.am-header .am-header-content .am-header-logo-wrapper {
    text-align: var(--am_logo_align);
}

.am-main {
    max-width: var(--am_max_width_px);
}

.am-header-content img {
    width: var(--am_logo_width);
}

.am-footer-actions {
    display:none;
}

.am-footer .am-footer-content-wrapper {
    color: var(--am_footer_text_color);
    font-size:.8rem;
}

.am-footer a,
.am-footer a:hover,
.am-footer a:visited,
.am-footer a:active {
    color: var(--am_footer_link_color)
}

.am-user-identity-block {
    float: var(--am_identity_align);
}

.am-page-login .am-header {
    display: var(--am_login_header_display);
}

.am-page-login .am-auth-form legend {
    background: var(--am_login_legend_bg);
    padding-top: var(--am_login_legend_padding_top);
}

.am-page-login .am-auth-form div.am-row {
    background: var(--am_login_form_bg_color);
}

.am-page-login .am-body-content-wrapper {
    background: var(--am_login_bg_color);
    box-shadow: var(--am_login_shadow);
}

.am-auth-form form {
    border: none;
    overflow: hidden;
    box-shadow: 0px 0px 5px #00000022;
}

.am-auth-form form legend {
    border: none;
    background: #f9f9f9;
    padding: 1em 1em 1.5em;
}

.am-auth-form div.am-row div.element,
.am-auth-form div.am-row div.am-element-title {
    padding-right: 2em;
    padding-left: 2em;
}

@media all and (min-width:500px) {

    .am-auth-form div.am-row div.am-element-title {
        padding-right: .5em;
    }
    .am-auth-form div.am-row div.am-element {
        padding-left: .5em;
    }
}

.am-popup {
    border-color: var(--am_color_d);
}

.am-popup .am-popup-header {
    background: var(--am_color);
    color: var(--am_color_c);
}

.am-popup .am-popup-close-icon:after {
    color: var(--am_color_c);
}

.am-fb-login-button-wrapper.am-fb-login-form-after:before,
.am-fb-login-button-wrapper.am-fb-login-form-before:after {
    background: var(--am_color);
}

.am-popup .am-fb-login-button-wrapper.am-fb-login-form-after::before,
.am-popup .am-fb-login-button-wrapper.am-fb-login-form-before::after {
    background: white;
}

.am-signup-link {
    color: var(--am_color_c);
}

.am-login-layout-with-sidebar {
    max-width: 800px;
    margin: 2em auto 0;
}

.am-login-layout-with-sidebar .am-login-form-wrapper,
.am-login-layout-with-sidebar .am-sendpass-form-wrapper {
    margin-top: 0;
}

.am-signup-link {
    max-width: 450px;
    margin: 1em auto 0;
}

@media all and (min-width: 800px) {
    .am-login-layout-with-sidebar .am-login-layout-with-sidebar_form {
        float: left;
        width: 65%;
    }
    .am-login-layout-with-sidebar .am-login-layout-with-sidebar_sidebar {
        display: block;
        width: 35%;
        float: right;
        padding-left: 20px;
        box-sizing: border-box;
    }
    .am-login-layout-with-sidebar .am-auth-form {
        margin: 0;
    }
    .am-login-layout-with-sidebar .am-signup-link {
        margin: 1em 0 0;
    }
}
.am-login-layout-with-sidebar .am-login-layout-with-sidebar_sidebar {
    border-radius: 3px;
    padding: 1em 2em;
    max-width: 450px;
    box-sizing: border-box;
    box-shadow: 0 0 5px #00000022;
    background: #f9f9f9;
    color: #555;
}
.am-login-layout-with-sidebar_clear {
    clear: both;
}

@media all and (max-width: 799px) {
    .am-login-layout-with-sidebar .am-login-layout-with-sidebar_sidebar {
        margin: 2em auto 0;
    }
}

ul.am-tabs li.active,
ul.am-tabs li.normal:hover {
    background: var(--am_menu_color);
}

ul.am-tabs li.active > a,
ul.am-tabs li.normal > a:hover {
    border-color: var(--am_menu_color);
}

.am-page-login-no-label .am-auth-form,
.am-page-login-no-label .am-signup-link,
.am-page-login-no-label .am-fb-login-button-wrapper {
    max-width:350px;
}

.am-page-login-no-label .am-auth-form div.am-row div.am-element-title {
    display: none;
}

.am-page-login-no-label .am-auth-form div.am-row div.am-element {
    margin:0;
    padding:.6em 2em;
}

.am-page-login-no-label .am-auth-form div.am-row div.am-element input[type=submit],
.am-page-login-no-label .am-auth-form div.am-row div.am-element input[type=submit]:active,
.am-page-login-no-label .am-auth-form div.am-row div.am-element input[type=submit]:hover,
.am-page-login-no-label .am-auth-form div.am-row div.am-element input[type=submit]:disabled {
    width: 100%;
}

.am-page-login-no-label .am-auth-form .am-form-login-switch-wrapper {
    text-align: center;
    display: block;
    padding: 1.2em 2em .6em;
}

.am-page-login-no-label .am-auth-form .am-form-login-switch-wrapper  .am-form-login-switch {
    margin:0;
}

@media all and (max-width: 799px) {
    .am-page-login-no-label .am-login-layout-with-sidebar .am-login-layout-with-sidebar_sidebar {
        max-width:350px;
        margin: 2em auto 0;
    }
}

.am-body-content input,
.am-body-content textarea,
.am-body-content select,
.am-body-content button,
.am-popup input,
.am-popup textarea,
.am-popup select,
.am-popup button {
    font-family: var(--am_font_family), san-serif;
}

.am-body-content a.button,
.am-body-content button,
.am-body-content input[type="button"],
.am-body-content input[type="submit"],
.am-popup a.button,
.am-popup button,
.am-popup input[type="button"],
.am-popup input[type="submit"],
.am-body-content a.button:hover,
.am-body-content button:hover,
.am-body-content input[type="button"]:hover,
.am-body-content input[type="submit"]:hover,
.am-popup a.button:hover,
.am-popup button:hover,
.am-popup input[type="button"]:hover,
.am-popup input[type="submit"]:hover {
    color: white;
    background: var(--am_btn_color);
    border-color: var(--am_btn_color);
}

.am-body-content input[type=submit]:disabled,
.am-body-content input[type=submit]:disabled:hover,
.am-body-content input[type=button]:disabled,
.am-body-content input[type=button]:disabled:hover,
.am-body-content button:disabled,
.am-body-content button:disabled:hover,
.am-popup input[type=submit]:disabled,
.am-popup input[type=submit]:disabled:hover,
.am-popup input[type=button]:disabled,
.am-popup input[type=button]:disabled:hover
.am-popup button:disabled,
.am-popup button:disabled:hover {
    background: #f1f1f1;
    color: #ccc;
    border-color: #ced4da;
}

.input-file .input-file-button,
.input-file.hover .input-file-button {
    color: white;
    background: var(--am_btn_color);
    border: none;
    text-shadow: none;
}
.input-file.hover {
    border-color: var(--am_btn_color);
}

ul.am-header-menu a {
    color: var(--am_header_menu_link_color);
}

ul.am-header-menu ul a {
    color: var(--am_header_menu_link2_color);
}

ul.am-header-menu > li > a::after {
    background: var(--am_header_menu_link_color);
    opacity: .4;
}

ul.am-header-menu li ul {
    background: var(--am_header_menu_bg_color);
}

.am-grid-wrap .filter-button input[type=submit] {
    border-color: #ced4da;
}
