{"id":7301,"date":"2026-07-25T07:48:28","date_gmt":"2026-07-25T07:48:28","guid":{"rendered":"https:\/\/assistyu.com\/?page_id=7301"},"modified":"2026-08-03T17:47:44","modified_gmt":"2026-08-03T17:47:44","slug":"endpoint-browser-vulnerability-audit","status":"publish","type":"page","link":"https:\/\/assistyu.com\/es\/cybersecurity-tools\/endpoint-browser-vulnerability-audit\/","title":{"rendered":"Browser Vulnerability Audit"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7301\" class=\"elementor elementor-7301\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c18dd00 e-con e-atomic-element e-flexbox-base e-default-div e-da084ef \" data-id=\"c18dd00\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c18dd00\">\n    \t\t<div class=\"elementor-element elementor-element-a8a40e2 elementor-widget elementor-widget-html\" data-id=\"a8a40e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\" \/>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n    <meta name=\"color-scheme\" content=\"dark\" \/>\r\n    <title>Browser Vulnerability Audit \u2014 Free Online Browser Security Scanner | AssistYu<\/title>\r\n    <meta name=\"description\" content=\"Run a free online browser vulnerability audit with AssistYu. Detect canvas fingerprinting, WebGL GPU unmasking, ad-blocker efficacy, and browser engine CVEs. 100% client-side, zero data transmission.\" \/>\r\n\r\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\r\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap\" rel=\"stylesheet\" \/>\r\n\r\n    <style>\r\n        \/* ============================================================\r\n               EXACT AYU SCHEMA \u2014 Background Layers & Reset\r\n               ============================================================ *\/\r\n        * { margin: 0; padding: 0; box-sizing: border-box; }\r\n\r\n        :root {\r\n            --ayu-bg-deep: #060815;\r\n            --ayu-bg-navy: #090d24;\r\n            --ayu-bg-navy-2: #0b1130;\r\n            --ayu-text-primary: #ffffff;\r\n            --ayu-text-secondary: #d4daff;\r\n            --ayu-text-tertiary: #bcc4f0;\r\n            --text-dimmer: #8f9cd4;\r\n            --glass-border: rgba(79, 110, 247, 0.15);\r\n            --border: rgba(79, 110, 247, 0.18);\r\n            --border-strong: rgba(79, 110, 247, 0.30);\r\n            --cyan: #22d3ee;\r\n            --blue: #4f6ef7;\r\n            --violet: #8a6bff;\r\n            --danger: #ff3d68;\r\n            --safe: #22e6a8;\r\n            --amber: #ffb84d;\r\n            --font-display: 'Space Grotesk', sans-serif;\r\n            --font-body: 'Inter', sans-serif;\r\n            --font-mono: 'JetBrains Mono', monospace;\r\n            --ease: cubic-bezier(.2, .8, .2, 1);\r\n            --surface: rgba(9, 13, 36, 0.55);\r\n            --surface-2: rgba(6, 8, 21, 0.62);\r\n            --surface-3: rgba(6, 8, 21, 0.40);\r\n            --hairline: rgba(79, 110, 247, 0.10);\r\n            --shadow-lg: 0 24px 70px rgba(0, 0, 0, 0.45);\r\n            --shadow-md: 0 10px 30px rgba(0, 0, 0, 0.35);\r\n            --radius: 18px;\r\n            --maxw: 1160px;\r\n            --panel-gap: 24px;\r\n        }\r\n\r\n        html, body {\r\n            min-height: 100vh;\r\n            background: #060815;\r\n            color: var(--ayu-text-primary);\r\n            font-family: var(--font-body);\r\n            -webkit-font-smoothing: antialiased;\r\n            -moz-osx-font-smoothing: grayscale;\r\n            text-rendering: optimizeLegibility;\r\n            position: relative;\r\n            isolation: isolate;\r\n            overflow-x: hidden;\r\n        }\r\n\r\n        svg { display: block; }\r\n        img, svg { max-width: 100%; }\r\n\r\n        .mobile-only { display: none; }\r\n        @media (max-width: 600px) {\r\n            .desktop-only { display: none !important; }\r\n            .mobile-only { display: block; }\r\n        }\r\n\r\n        .page-bg {\r\n            position: absolute; inset: 0; z-index: 0; pointer-events: none;\r\n            background: linear-gradient(180deg, #060815 0%, #060815 20%, #090d24 50%, #060815 80%, #060815 100%);\r\n        }\r\n\r\n        .bg-layers {\r\n            position: absolute; inset: 0; z-index: 0; pointer-events: none; min-height: 100%;\r\n            mask-image: linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%);\r\n            -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%);\r\n        }\r\n\r\n        .ayu-bg-world {\r\n            position: fixed;\r\n            inset: 0;\r\n            background-image: url('https:\/\/assistyu.com\/wp-content\/uploads\/2026\/07\/scan-network-scaled.jpeg?w=1600&q=80');\r\n            background-size: cover;\r\n            background-position: center;\r\n            opacity: 0.10;\r\n            mask-image: radial-gradient(ellipse 80% 70% at 50% 40%, black 20%, transparent 75%);\r\n            -webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 40%, black 20%, transparent 75%);\r\n        }\r\n\r\n        .ayu-bg-dots {\r\n            position: absolute; inset: 0;\r\n            background-image: radial-gradient(circle at 1px 1px, rgba(79, 110, 247, 0.08) 1px, transparent 1px);\r\n            background-size: 48px 48px;\r\n            mask-image: radial-gradient(ellipse 60% 50% at 50% 50%, black 20%, transparent 70%);\r\n            -webkit-mask-image: radial-gradient(ellipse 60% 50% at 50% 50%, black 20%, transparent 70%);\r\n        }\r\n\r\n        .ayu-bg-glow {\r\n            position: absolute; inset: 0;\r\n            background: radial-gradient(ellipse 50% 40% at 15% 15%, rgba(79, 110, 247, 0.12), transparent 55%),\r\n                        radial-gradient(ellipse 35% 30% at 50% 50%, rgba(236, 72, 153, 0.04), transparent 60%),\r\n                        radial-gradient(ellipse 50% 40% at 70% 20%, rgba(34, 211, 238, 0.06), transparent 50%);\r\n        }\r\n\r\n        .ayu-bg-orb-1 {\r\n            position: absolute; width: 400px; height: 400px; top: 10%; left: 5%; border-radius: 50%;\r\n            background: radial-gradient(circle, rgba(79, 110, 247, 0.06) 0%, transparent 70%);\r\n            animation: ayuOrbFloat1 20s ease-in-out infinite;\r\n        }\r\n        .ayu-bg-orb-2 {\r\n            position: absolute; width: 300px; height: 300px; bottom: 15%; right: 10%; border-radius: 50%;\r\n            background: radial-gradient(circle, rgba(139, 92, 246, 0.06) 0%, transparent 70%);\r\n            animation: ayuOrbFloat2 25s ease-in-out infinite;\r\n        }\r\n        @keyframes ayuOrbFloat1 { 0%,100%{transform:translate(0,0) scale(1);} 33%{transform:translate(30px,-20px) scale(1.05);} 66%{transform:translate(-15px,15px) scale(.95);} }\r\n        @keyframes ayuOrbFloat2 { 0%,100%{transform:translate(0,0) scale(1);} 33%{transform:translate(-20px,25px) scale(1.08);} 66%{transform:translate(25px,-10px) scale(.92);} }\r\n\r\n        .ayu-content-overlay { position: relative; z-index: 1; }\r\n\r\n        a { color: inherit; text-decoration: none; }\r\n        button { font-family: inherit; cursor: pointer; }\r\n        ::selection { background: var(--cyan); color: #04060d; }\r\n        html { scroll-behavior: smooth; }\r\n\r\n        a:focus-visible, button:focus-visible, [tabindex]:focus-visible, input:focus-visible {\r\n            outline: 2px solid var(--cyan); outline-offset: 3px; border-radius: 8px;\r\n        }\r\n\r\n        .shell { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }\r\n\r\n        .view { display: none; }\r\n        .view.active { display: block; animation: fadeUp .5s var(--ease); }\r\n        @keyframes fadeUp { from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:none;} }\r\n\r\n        main { width: 100%; padding: 120px 0 100px; position: relative; z-index: 1; }\r\n\r\n        .section { margin-top: clamp(24px, 3.5vw, 40px); }\r\n        .section-head { margin-bottom: 22px; }\r\n\r\n        .hero p {\r\n            color: var(--ayu-text-tertiary);\r\n            font-size: clamp(14px, 1.8vw, 15.5px);\r\n            margin-top: 14px; line-height: 1.7;\r\n            max-width: 700px; margin-left: auto; margin-right: auto;\r\n        }\r\n\r\n        \/* ---- universal panel ---- *\/\r\n        .panel {\r\n            background: var(--surface);\r\n            backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);\r\n            border: 1px solid var(--border-strong);\r\n            border-radius: var(--radius);\r\n            box-shadow: var(--shadow-md);\r\n            position: relative; overflow: hidden;\r\n            width: 100%;\r\n        }\r\n        .panel::before {\r\n            content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;\r\n            background: radial-gradient(120% 150% at 20% 20%, rgba(79, 110, 247, 0.05), transparent 65%);\r\n        }\r\n        .panel > * { position: relative; z-index: 1; }\r\n        .panel-pad { padding: clamp(18px, 2.2vw, 26px); }\r\n\r\n        .glow-border { position: relative; }\r\n        .glow-border::after {\r\n            content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 1px; pointer-events: none;\r\n            background: linear-gradient(120deg, rgba(79,110,247,.5), rgba(138,107,255,.05) 40%, rgba(34,230,168,0) 60%, rgba(79,110,247,.4));\r\n            -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\r\n            -webkit-mask-composite: xor; mask-composite: exclude;\r\n            opacity: .6; animation: borderflow 6s linear infinite;\r\n        }\r\n        @keyframes borderflow { 0%{background-position:0 0;} 100%{background-position:200% 0;} }\r\n\r\n        \/* \u2500\u2500 Hero \u2500\u2500 *\/\r\n        .hero { text-align: center; padding-top: clamp(10px, 3vw, 24px); }\r\n\r\n        .hero-badge {\r\n            display: inline-flex; align-items: center; gap: 8px;\r\n            font-family: var(--font-mono); font-size: 11px; letter-spacing: 2.5px; text-transform: uppercase; font-weight: 600;\r\n            color: var(--cyan); padding: 8px 18px; border-radius: 999px;\r\n            background: rgba(79,110,247,.07); border: 1px solid rgba(79,110,247,.18); margin-bottom: 20px;\r\n        }\r\n        .hero-badge-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 10px var(--cyan); animation: lp 1.5s ease-in-out infinite; }\r\n        @keyframes lp { 0%,100%{opacity:1;} 50%{opacity:.35;} }\r\n\r\n        .hero h1 {\r\n            font-family: var(--font-display); font-weight: 700; letter-spacing: -.035em; line-height: 1.08;\r\n            font-size: clamp(28px, 5vw, 50px); margin-bottom: 14px;\r\n            background: linear-gradient(135deg, #FFFFFF 20%, #cdd9ff 80%);\r\n            -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\r\n        }\r\n        .hero h1 span { color: var(--cyan); -webkit-text-fill-color: var(--cyan); }\r\n\r\n        \/* ---- telemetry bar ---- *\/\r\n        .telemetry {\r\n            display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between;\r\n            margin: 24px 0 0; width: 100%;\r\n            background: linear-gradient(135deg, rgba(9,13,36,.6) 0%, rgba(6,8,21,.7) 100%);\r\n            border: 1px solid var(--border-strong); border-radius: var(--radius);\r\n            padding: 18px 22px; box-shadow: var(--shadow-lg);\r\n        }\r\n        .telemetry-left { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }\r\n        .status-pill {\r\n            display: inline-flex; align-items: center; gap: 8px;\r\n            font-family: var(--font-mono); font-size: 11px; letter-spacing: .5px;\r\n            color: var(--ayu-text-primary); padding: 8px 14px; border-radius: 999px;\r\n            background: rgba(6,8,21,.7); border: 1px solid var(--border); white-space: nowrap;\r\n            transition: border-color .2s;\r\n        }\r\n        .status-pill:hover { border-color: rgba(34,211,238,.3); }\r\n        .status-pill .dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }\r\n        .status-pill .dot.online { background: var(--safe); box-shadow: 0 0 10px var(--safe); animation: lp 1.8s ease-in-out infinite; }\r\n        .status-pill .dot.warn { background: var(--amber); box-shadow: 0 0 10px var(--amber); animation: lp 1.8s ease-in-out infinite; }\r\n        .status-pill .lbl { color: var(--ayu-text-secondary); }\r\n        .status-pill .val { color: #fff; font-weight: 600; }\r\n\r\n        .net-activity { display: flex; align-items: center; gap: 9px; padding: 7px 14px; border-radius: 999px; background: rgba(6,8,21,.7); border: 1px solid var(--border); }\r\n        .net-activity .net-lbl { font-family: var(--font-mono); font-size: 9px; letter-spacing: 1px; color: var(--ayu-text-secondary); text-transform: uppercase; }\r\n        .last-update { font-family: var(--font-mono); font-size: 11px; color: var(--ayu-text-secondary); white-space: nowrap; }\r\n        .last-update b { color: #fff; }\r\n\r\n        \/* ---- hero stats grid ---- *\/\r\n        .hero-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 20px; }\r\n        @media (max-width: 992px) { .hero-stats { grid-template-columns: repeat(2, 1fr); } }\r\n        @media (max-width: 480px) { .hero-stats { grid-template-columns: 1fr; } }\r\n\r\n        .stat-card {\r\n            background: var(--surface); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);\r\n            border: 1px solid var(--border-strong); border-radius: var(--radius);\r\n            padding: 20px 18px; position: relative; overflow: hidden; box-shadow: var(--shadow-md);\r\n            transition: transform .35s var(--ease), border-color .35s var(--ease); text-align: left;\r\n        }\r\n        .stat-card::before { content:''; position:absolute; inset:0; background: radial-gradient(120% 140% at 15% 0%, rgba(79,110,247,.08), transparent 60%); pointer-events:none; }\r\n        .stat-card:hover { transform: translateY(-4px); border-color: rgba(79,110,247,.45); }\r\n        .stat-card .s-ico { width: 24px; height: 24px; color: #fff; opacity: .9; margin-bottom: 10px; flex-shrink: 0; }\r\n        .stat-card .s-ico svg { width: 24px; height: 24px; display: block; }\r\n        .stat-card .s-val { font-family: var(--font-display); font-weight: 700; font-size: clamp(20px, 2.4vw, 28px); letter-spacing: -.02em; line-height: 1; color: #fff; }\r\n        .stat-card .s-val .unit { font-size: .5em; color: var(--ayu-text-secondary); margin-left: 2px; }\r\n        .stat-card .s-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--ayu-text-secondary); margin-top: 10px; }\r\n        .stat-card .s-trend { position: absolute; top: 16px; right: 16px; font-family: var(--font-mono); font-size: 10px; color: var(--safe); }\r\n\r\n        \/* ---- buttons ---- *\/\r\n        .btn { border: none; border-radius: 14px; padding: 0 26px; height: 56px; font-family: var(--font-display); font-weight: 600; font-size: 14px; color: #fff; cursor: pointer; transition: all .3s var(--ease); white-space: nowrap; display: inline-flex; align-items: center; justify-content: center; gap: 9px; }\r\n        .btn svg { width: 16px; height: 16px; flex-shrink: 0; }\r\n\r\n        .btn-primary {\r\n            display: inline-flex; align-items: center; gap: 10px; padding: 16px 36px; border-radius: 50px;\r\n            background: linear-gradient(135deg, rgba(79,110,247,.95), rgba(138,107,255,.9)); color: #fff;\r\n            border: 1px solid rgba(79,110,247,.5); box-shadow: 0 6px 24px rgba(79,110,247,.25);\r\n            font-family: var(--font-display); font-weight: 700; font-size: 15px; transition: all .25s var(--ease); cursor: pointer;\r\n        }\r\n        .btn-primary svg { width: 20px; height: 20px; flex-shrink: 0; }\r\n        .btn-primary:hover:not(:disabled) { transform: translateY(-2px); border-color: rgba(34,211,238,.6); box-shadow: 0 10px 32px rgba(79,110,247,.5); color:#fff !important; }\r\n        .btn-primary:active { transform: scale(.98); }\r\n        .btn-primary:disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }\r\n\r\n        .btn-ghost { background: rgba(9,13,36,.60); border: 1px solid var(--border); color: var(--ayu-text-secondary); }\r\n        .btn-ghost:hover { background: rgba(79,110,247,.16); border-color: var(--cyan); color: #fff !important; box-shadow: 0 0 15px rgba(34,211,238,.15); transform: translateY(-2px); }\r\n\r\n        .btn-sm { height: auto; padding: 9px 14px; font-size: 12px; border-radius: 10px; }\r\n        .btn-sm svg { width: 14px; height: 14px; }\r\n\r\n        \/* ---- scan context header ---- *\/\r\n        .scan-context {\r\n            display: flex; align-items: center; gap: 16px;\r\n            background: var(--surface-3); border: 1px solid var(--hairline); border-radius: 14px;\r\n            padding: 16px 20px; margin-bottom: 20px;\r\n        }\r\n        .sc-icon { width: 44px; height: 44px; border-radius: 12px; background: rgba(79,110,247,.12); border: 1px solid rgba(79,110,247,.25); color: var(--cyan); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\r\n        .sc-icon svg { width: 22px; height: 22px; }\r\n        .sc-text { min-width: 0; }\r\n        .sc-k { font-family: var(--font-display); font-weight: 700; font-size: 15px; color: #fff; }\r\n        .sc-v { font-size: 12.5px; color: var(--ayu-text-secondary); margin-top: 2px; }\r\n        .sc-sub { font-family: var(--font-mono); font-size: 10px; color: var(--text-dimmer); text-transform: uppercase; letter-spacing: .5px; margin-top: 4px; }\r\n\r\n        \/* \u2500\u2500 Pipeline \u2500\u2500 *\/\r\n        .pipeline { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; }\r\n        @media (max-width: 768px) { .pipeline { grid-template-columns: repeat(4, 1fr); } }\r\n        @media (max-width: 480px) { .pipeline { grid-template-columns: repeat(2, 1fr); } }\r\n\r\n        .pipe-node { background: var(--surface-3); border: 1px solid var(--hairline); border-radius: 13px; padding: 16px 8px; text-align: center; position: relative; transition: all .4s var(--ease); overflow: hidden; }\r\n        .pipe-node .pn-ico { width: 24px; height: 24px; margin: 0 auto 9px; color: var(--ayu-text-secondary); transition: color .4s; }\r\n        .pipe-node .pn-ico svg { width: 24px; height: 24px; }\r\n        .pipe-node .pn-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .3px; text-transform: uppercase; color: var(--ayu-text-secondary); transition: color .4s; line-height: 1.3; }\r\n        .pipe-node .pn-sub { font-size: 9px; color: var(--cyan); margin-top: 4px; min-height: 12px; opacity: 0; transition: opacity .3s; }\r\n        .pipe-node.active { border-color: var(--cyan); background: linear-gradient(160deg, rgba(79,110,247,.18), rgba(138,107,255,.05)); box-shadow: 0 0 24px rgba(79,110,247,.2); }\r\n        .pipe-node.active .pn-ico, .pipe-node.active .pn-label { color: #fff; }\r\n        .pipe-node.active .pn-sub { opacity: 1; }\r\n        .pipe-node.done { border-color: rgba(34,230,168,.4); }\r\n        .pipe-node.done .pn-ico { color: var(--safe); }\r\n        .pipe-node.done .pn-label { color: var(--ayu-text-secondary); }\r\n        .pipe-node .pn-check { position: absolute; top: 8px; right: 9px; width: 14px; height: 14px; color: var(--safe); opacity: 0; transition: opacity .3s; }\r\n        .pipe-node.done .pn-check { opacity: 1; }\r\n        .pipe-node.done .pn-check svg { width: 14px; height: 14px; }\r\n\r\n        .progress-track { height: 6px; background: rgba(6,8,21,.7); border-radius: 999px; overflow: hidden; border: 1px solid var(--hairline); margin-top: 22px; }\r\n        .progress-fill { height: 100%; width: 0%; border-radius: 999px; background: linear-gradient(90deg, var(--cyan), var(--blue)); box-shadow: 0 0 16px rgba(79,110,247,.6); transition: width .4s var(--ease); }\r\n        .progress-meta { display: flex; justify-content: space-between; font-family: var(--font-mono); font-size: 10.5px; color: var(--ayu-text-secondary); margin-top: 12px; flex-wrap: wrap; gap: 8px; }\r\n        .progress-meta b { color: var(--cyan); }\r\n\r\n        .live-feed { margin-top: 20px; font-family: var(--font-mono); font-size: 11px; background: rgba(6,8,21,.5); border: 1px solid var(--hairline); border-radius: 12px; padding: 14px 16px; height: 190px; overflow: hidden; }\r\n        .live-feed .lf-line { display: flex; gap: 10px; opacity: 0; transform: translateY(6px); animation: lfIn .4s var(--ease) forwards; padding: 3px 0; color: var(--ayu-text-secondary); }\r\n        .live-feed .lf-line .lf-time { color: var(--ayu-text-secondary); }\r\n        .live-feed .lf-line .lf-ok { color: var(--safe); }\r\n        .live-feed .lf-line .lf-warn { color: var(--amber); }\r\n        @keyframes lfIn { to { opacity: 1; transform: none; } }\r\n\r\n        \/* \u2500\u2500 Verdict summary \u2500\u2500 *\/\r\n        .verdict-summary { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: var(--panel-gap); margin-bottom: var(--panel-gap); align-items: stretch; }\r\n        @media (max-width: 900px) { .verdict-summary { grid-template-columns: 1fr; } }\r\n\r\n        .gauge-panel { text-align: center; padding: 24px 18px; display: flex; flex-direction: column; align-items: center; justify-content: center; }\r\n        .gauge-wrap { position: relative; width: 220px; height: 220px; max-width: 100%; margin: 4px auto; }\r\n        .gauge-wrap svg { width: 100%; height: 100%; transform: rotate(-90deg); }\r\n        .gauge-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }\r\n        .gauge-score { font-family: var(--font-display); font-weight: 700; font-size: 52px; line-height: 1; letter-spacing: -.04em; color: #fff; }\r\n        .gauge-score .gs-max { font-size: 18px; color: var(--ayu-text-secondary); }\r\n        .gauge-label { font-family: var(--font-display); font-size: 15px; letter-spacing: 1px; text-transform: uppercase; margin-top: 6px; font-weight: 800; }\r\n        .gauge-sub { font-size: 11px; color: var(--ayu-text-secondary); margin-top: 4px; }\r\n\r\n        .core-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }\r\n        @media (max-width: 480px) { .core-cards { grid-template-columns: 1fr; } }\r\n\r\n        .core-card { background: var(--surface-3); border: 1px solid var(--hairline); border-radius: 13px; padding: 14px 16px; min-width: 0; position: relative; overflow: hidden; transition: transform .25s ease, border-color .25s ease; }\r\n        .core-card:hover { transform: translateY(-4px); border-color: var(--border); }\r\n        .core-card .cc-k { font-family: var(--font-mono); font-size: 9px; letter-spacing: .6px; text-transform: uppercase; color: var(--ayu-text-secondary); }\r\n        .core-card .cc-v { font-family: var(--font-display); font-weight: 700; font-size: 18px; margin-top: 6px; line-height: 1.25; word-break: break-word; }\r\n        .core-card .cc-bar { height: 4px; background: rgba(6,8,21,.7); border-radius: 999px; margin-top: 8px; overflow: hidden; }\r\n        .core-card .cc-bar i { display: block; height: 100%; border-radius: 999px; width: 0; transition: width 1s var(--ease); }\r\n        .core-card .cc-note { font-size: 10px; color: var(--ayu-text-secondary); margin-top: 6px; line-height: 1.4; }\r\n\r\n        \/* \u2500\u2500 Multi risk ring grid \u2500\u2500 *\/\r\n        .multi-risk-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--panel-gap); margin-top: var(--panel-gap); }\r\n        @media (max-width: 700px) { .multi-risk-grid { grid-template-columns: repeat(2, 1fr); } }\r\n\r\n        .risk-ring-card {\r\n            background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius);\r\n            padding: 20px 12px; text-align: center; box-shadow: var(--shadow-md);\r\n            display: flex; flex-direction: column; align-items: center; gap: 10px;\r\n        }\r\n        .ring-svg-wrap { position: relative; width: 80px; height: 80px; }\r\n        .ring-svg-wrap svg { width: 80px; height: 80px; }\r\n        .ring-svg-text { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 700; font-size: 16px; }\r\n\r\n        \/* \u2500\u2500 Detail panel title \/ risk badge \u2500\u2500 *\/\r\n        .detail-panel-title { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; font-family: var(--font-display); font-weight: 700; font-size: 17px; color: #fff; }\r\n        .detail-panel-title .dp-ico { width: 22px; height: 22px; color: var(--cyan); flex-shrink: 0; }\r\n        .detail-panel-title .dp-ico svg { width: 22px; height: 22px; }\r\n\r\n        .risk-badge { display: inline-flex; align-items: center; gap: 7px; padding: 8px 18px; border-radius: 999px; font-family: var(--font-mono); font-weight: 700; font-size: 12px; letter-spacing: 1px; text-transform: uppercase; }\r\n        .risk-badge .rb-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }\r\n        .risk-badge.critical { background: rgba(255,61,104,.14); color: var(--danger); border: 1px solid rgba(255,61,104,.35); }\r\n        .risk-badge.critical .rb-dot { background: var(--danger); box-shadow: 0 0 10px var(--danger); }\r\n        .risk-badge.high { background: rgba(255,184,77,.13); color: var(--amber); border: 1px solid rgba(255,184,77,.3); }\r\n        .risk-badge.high .rb-dot { background: var(--amber); box-shadow: 0 0 10px var(--amber); }\r\n        .risk-badge.medium { background: rgba(251,191,36,.10); color: #fbbf24; border: 1px solid rgba(251,191,36,.25); }\r\n        .risk-badge.medium .rb-dot { background: #fbbf24; box-shadow: 0 0 10px #fbbf24; }\r\n        .risk-badge.low { background: rgba(34,230,168,.12); color: var(--safe); border: 1px solid rgba(34,230,168,.3); }\r\n        .risk-badge.low .rb-dot { background: var(--safe); box-shadow: 0 0 10px var(--safe); }\r\n\r\n        \/* \u2500\u2500 verdict header meta \u2500\u2500 *\/\r\n        .vh-eyebrow { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--cyan); margin-bottom: 4px; }\r\n        .vh-meta { display: flex; flex-wrap: wrap; gap: 14px; font-family: var(--font-mono); font-size: 11px; color: var(--ayu-text-secondary); margin-top: 6px; }\r\n        .vh-meta b { color: #fff; }\r\n        .grad-text { background: linear-gradient(135deg, #fff, #9db2ff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }\r\n\r\n        \/* \u2500\u2500 rec items (used by CVE list) \u2500\u2500 *\/\r\n        .rec-item { background: var(--surface-3); border: 1px solid var(--hairline); border-radius: 11px; padding: 14px 16px; border-left: 4px solid var(--cyan); }\r\n        .rec-item.immediate { border-left-color: var(--danger); }\r\n        .rec-item.high { border-left-color: var(--amber); }\r\n        .rec-item.medium { border-left-color: #fbbf24; }\r\n        .rec-item.low { border-left-color: var(--safe); }\r\n        .rec-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }\r\n        .rec-label { font-family: var(--font-display); font-weight: 700; font-size: 13px; }\r\n        .rec-level { font-family: var(--font-mono); font-size: 10px; letter-spacing: .5px; }\r\n        .rec-desc { font-size: 12.5px; color: var(--ayu-text-secondary); line-height: 1.55; }\r\n\r\n        \/* \u2500\u2500 forensic console log \u2500\u2500 *\/\r\n        .forensic-console { background: rgba(6,8,21,.6); border: 1px solid var(--hairline); border-radius: 13px; overflow: hidden; }\r\n        .console-header { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; padding: 12px 16px; border-bottom: 1px solid var(--hairline); font-family: var(--font-mono); font-size: 10.5px; color: var(--ayu-text-secondary); }\r\n        .console-terminal-badge { color: var(--cyan); text-transform: uppercase; letter-spacing: 1px; font-weight: 700; }\r\n        .console-lines { padding: 12px 16px; max-height: 240px; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; }\r\n        .console-line { display: flex; gap: 10px; font-family: var(--font-mono); font-size: 11.5px; color: var(--ayu-text-secondary); line-height: 1.5; }\r\n        .console-line .c-time { color: var(--text-dimmer); flex-shrink: 0; }\r\n        .console-line .c-tag { flex-shrink: 0; text-transform: uppercase; font-weight: 700; width: 42px; }\r\n        .console-line .c-tag.info { color: var(--blue); }\r\n        .console-line .c-tag.ok { color: var(--safe); }\r\n        .console-line .c-tag.warn { color: var(--amber); }\r\n\r\n        \/* \u2500\u2500 MITRE exploit timeline \u2500\u2500 *\/\r\n        .exploit-timeline { display: flex; flex-direction: column; gap: 0; position: relative; }\r\n        .exploit-node { display: flex; gap: 16px; padding: 14px 0; position: relative; }\r\n        .exploit-node:not(:last-child)::before { content: ''; position: absolute; left: 5px; top: 26px; bottom: -14px; width: 1px; background: var(--hairline); }\r\n        .exploit-marker { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--hairline); background: var(--surface-3); display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 4px; }\r\n        .exploit-content { flex: 1; min-width: 0; }\r\n        .exploit-title-bar { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }\r\n        .exploit-title { font-family: var(--font-display); font-weight: 700; font-size: 13.5px; color: #fff; }\r\n        .exploit-badge { font-family: var(--font-mono); font-size: 10px; color: var(--cyan); background: rgba(79,110,247,.1); border: 1px solid rgba(79,110,247,.25); padding: 3px 10px; border-radius: 999px; white-space: nowrap; }\r\n        .exploit-desc { font-size: 12.5px; color: var(--ayu-text-secondary); line-height: 1.6; margin-top: 6px; }\r\n\r\n        \/* \u2500\u2500 Hardening playbook \u2500\u2500 *\/\r\n        .playbook-container { border: 1px solid var(--hairline); border-radius: 13px; overflow: hidden; background: rgba(6,8,21,.4); }\r\n        .playbook-tabs { display: flex; flex-wrap: wrap; border-bottom: 1px solid var(--hairline); }\r\n        .playbook-tab { flex: 1; min-width: 120px; background: transparent; border: none; padding: 12px 14px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .3px; color: var(--ayu-text-secondary); text-transform: uppercase; border-bottom: 2px solid transparent; transition: all .2s; }\r\n        .playbook-tab:hover { color: #fff; }\r\n        .playbook-tab.active { color: var(--cyan); border-bottom-color: var(--cyan); background: rgba(79,110,247,.06); }\r\n        .playbook-code-block { position: relative; padding: 18px 16px; }\r\n        .playbook-code { font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--ayu-text-secondary); white-space: pre-wrap; word-break: break-word; margin: 0; padding-right: 90px; }\r\n        .copy-code-btn { position: absolute; top: 14px; right: 14px; background: rgba(79,110,247,.15); border: 1px solid var(--border); color: var(--cyan); font-family: var(--font-mono); font-size: 10.5px; padding: 6px 12px; border-radius: 8px; transition: all .2s; }\r\n        .copy-code-btn:hover { background: rgba(79,110,247,.28); }\r\n\r\n        \/* \u2500\u2500 marketing banner \u2500\u2500 *\/\r\n        .marketing-banner { margin-top: var(--panel-gap); border-radius: var(--radius); border: 1px solid rgba(255,61,104,.3); background: linear-gradient(135deg, rgba(255,61,104,.08), rgba(9,13,36,.6)); padding: 22px 24px; box-shadow: var(--shadow-md); }\r\n        .marketing-banner.clean { border-color: rgba(34,230,168,.3); background: linear-gradient(135deg, rgba(34,230,168,.08), rgba(9,13,36,.6)); }\r\n        .mb-inner { display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; }\r\n        .mb-left { display: flex; gap: 16px; align-items: flex-start; min-width: 0; flex: 1; }\r\n        .mb-badge-icon { width: 42px; height: 42px; border-radius: 12px; background: rgba(255,255,255,.06); display: flex; align-items: center; justify-content: center; color: var(--danger); flex-shrink: 0; }\r\n        .marketing-banner.clean .mb-badge-icon { color: var(--safe); }\r\n        .mb-badge-icon svg { width: 22px; height: 22px; }\r\n        .mb-title { font-family: var(--font-display); font-weight: 700; font-size: 15px; color: #fff; margin-bottom: 6px; }\r\n        .mb-desc { font-size: 12.5px; color: var(--ayu-text-secondary); line-height: 1.6; max-width: 560px; }\r\n        .mb-right { display: flex; gap: 10px; flex-wrap: wrap; flex-shrink: 0; }\r\n        .mb-btn { font-family: var(--font-display); font-weight: 700; font-size: 12.5px; padding: 12px 20px; border-radius: 10px; white-space: nowrap; transition: all .2s; }\r\n        .mb-btn-action { background: linear-gradient(135deg, var(--danger), #ff6b8f); color: #fff; }\r\n        .marketing-banner.clean .mb-btn-action { background: linear-gradient(135deg, var(--safe), #34d399); color: #04150f; }\r\n        .mb-btn-action:hover { transform: translateY(-2px); filter: brightness(1.08); }\r\n        .mb-btn-ghost { background: rgba(255,255,255,.05); border: 1px solid var(--border); color: var(--ayu-text-secondary); }\r\n        .mb-btn-ghost:hover { color: #fff; border-color: var(--cyan); }\r\n\r\n        \/* \u2500\u2500 back home link \u2500\u2500 *\/\r\n        .back-home { margin-top: 34px; text-align: center; }\r\n        .home-btn { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .5px; text-transform: uppercase; color: var(--ayu-text-secondary); padding: 10px 18px; border: 1px solid var(--border); border-radius: 10px; transition: all .2s; }\r\n        .home-btn svg { width: 14px; height: 14px; flex-shrink: 0; }\r\n        .home-btn:hover { color: #fff; border-color: var(--cyan); background: rgba(79,110,247,.08); }\r\n\r\n        \/* \u2500\u2500 phone pill \u2500\u2500 *\/\r\n        .phone-pill { position: fixed; right: 20px; bottom: 20px; z-index: 200; display: flex; align-items: center; background: rgba(9,13,36,.85); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid var(--border-strong); border-radius: 999px; box-shadow: var(--shadow-lg); overflow: hidden; }\r\n        .pp-icon { width: 48px; height: 48px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--blue), var(--violet)); color: #fff; border-radius: 999px; border: none; }\r\n        .pp-icon svg { width: 20px; height: 20px; flex-shrink: 0; }\r\n        .pp-text { max-width: 0; overflow: hidden; white-space: nowrap; font-family: var(--font-mono); font-size: 12.5px; color: #fff; opacity: 0; transition: max-width .35s var(--ease), opacity .3s var(--ease), padding .35s var(--ease); }\r\n        .phone-pill.open .pp-text { max-width: 220px; opacity: 1; padding: 0 18px 0 12px; }\r\n\r\n        \/* ============================================================\r\n               RESPONSIVE \u2014 tablet & mobile adaptation (all 3 views)\r\n               ============================================================ *\/\r\n        @media (max-width: 780px) {\r\n            .shell { padding: 0 16px; }\r\n            main { padding: 90px 0 80px; }\r\n            .hero-badge { font-size: 10px; padding: 7px 14px; letter-spacing: 2px; }\r\n            .hero h1 { font-size: clamp(24px, 7vw, 34px); margin-bottom: 10px; }\r\n            .hero p { font-size: 13px; line-height: 1.6; }\r\n\r\n            .hub-grid { grid-template-columns: repeat(3, 1fr) !important; gap: 8px !important; }\r\n\r\n            .telemetry { flex-direction: column; align-items: stretch; gap: 12px; padding: 16px; }\r\n            .telemetry-left { justify-content: center; }\r\n            .telemetry > div:last-child { justify-content: center; }\r\n\r\n            .scan-context { padding: 14px 16px; gap: 12px; }\r\n            .sc-icon { width: 38px; height: 38px; }\r\n            .sc-icon svg { width: 18px; height: 18px; }\r\n            .sc-k { font-size: 13.5px; }\r\n\r\n            .verdict-summary { gap: 16px; }\r\n            .gauge-wrap { width: 180px; height: 180px; }\r\n            .gauge-score { font-size: 40px; }\r\n\r\n            .multi-risk-grid { gap: 14px; }\r\n            .risk-ring-card { padding: 16px 8px; }\r\n            .ring-svg-wrap { width: 64px; height: 64px; }\r\n            .ring-svg-wrap svg { width: 64px; height: 64px; }\r\n            .ring-svg-text { font-size: 13px; }\r\n\r\n            .playbook-tab { min-width: 0; font-size: 10px; padding: 10px 8px; }\r\n            .playbook-code { font-size: 11px; padding-right: 0; padding-bottom: 44px; }\r\n            .copy-code-btn { top: auto; bottom: 14px; right: 14px; }\r\n\r\n            .mb-inner { flex-direction: column; align-items: stretch; text-align: center; }\r\n            .mb-left { flex-direction: column; align-items: center; text-align: center; }\r\n            .mb-desc { max-width: 100%; }\r\n            .mb-right { justify-content: center; }\r\n\r\n            .exploit-desc { -webkit-line-clamp: 3; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }\r\n            .mb-desc { -webkit-line-clamp: 3; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }\r\n\r\n            .vh-row { justify-content: center; text-align: center; }\r\n            .vh-left { flex-direction: column; text-align: center; }\r\n            .vh-right { justify-content: center; width: 100%; }\r\n            .vh-meta { justify-content: center; }\r\n            .vh-title-row h2 { font-size: 17px !important; }\r\n        }\r\n\r\n        @media (max-width: 480px) {\r\n            .hub-grid { grid-template-columns: 1fr !important; }\r\n            .core-card .cc-v { font-size: 15px; }\r\n            .risk-badge { font-size: 10px; padding: 7px 12px; }\r\n            .console-lines { max-height: 180px; }\r\n            .console-line { font-size: 10.5px; }\r\n            .phone-pill { right: 12px; bottom: 12px; }\r\n            .pp-icon { width: 42px; height: 42px; }\r\n            .pp-icon svg { width: 18px; height: 18px; }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n    <div class=\"page-bg\"><\/div>\r\n    <div class=\"bg-layers\" aria-hidden=\"true\">\r\n        <div class=\"ayu-bg-world\"><\/div>\r\n        <div class=\"ayu-bg-dots\"><\/div>\r\n        <div class=\"ayu-bg-glow\"><\/div>\r\n        <div class=\"ayu-bg-orb-1\"><\/div>\r\n        <div class=\"ayu-bg-orb-2\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"ayu-content-overlay\">\r\n        <div class=\"shell\">\r\n            <main>\r\n\r\n                <!-- \u2550\u2550\u2550 VIEW 1 \u2014 IDLE DIAGNOSTICS HUB \u2550\u2550\u2550 -->\r\n                <div class=\"view active\" id=\"viewIdle\">\r\n                    <section class=\"hero\">\r\n                        <div class=\"hero-badge\">\r\n                            <span class=\"hero-badge-dot\"><\/span> Browser Vulnerability Audit\r\n                        <\/div>\r\n                        <h1>Browser &amp; Endpoint <span>Vulnerability Audit<\/span><\/h1>\r\n                        <p id=\"centeredDesc\">\r\n                            <span class=\"desktop-only\">Perform a comprehensive <strong>browser vulnerability audit<\/strong> to inspect live browser exposures, canvas fingerprinting, WebGL GPU unmasking, and local device parameters directly from your endpoint \u2014 100% client-side, zero server transmission. This <strong>browser security scanner<\/strong> reveals exactly how trackers see your device.<\/span>\r\n                            <span class=\"mobile-only\">Run a <strong>browser vulnerability audit<\/strong> \u2014 live browser and device security check, 100% local, zero data sent.<\/span>\r\n                        <\/p>\r\n                    <\/section>\r\n\r\n                    <section class=\"section\" style=\"margin-top: 28px;\">\r\n                        <div style=\"width: 100%; text-align: center;\">\r\n                            <div style=\"font-family: var(--font-mono); font-size: 11px; letter-spacing: 2px; color: var(--cyan); text-transform: uppercase; margin-bottom: 20px;\">\r\n                                Local Sandbox Forensics Hub\r\n                            <\/div>\r\n                            <div class=\"hub-grid\" style=\"display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 26px; text-align: left; max-width: 640px; margin-left: auto; margin-right: auto;\">\r\n                                <div style=\"background: rgba(255,255,255,.02); border: 1px solid rgba(255,255,255,.05); padding: 12px; border-radius: 10px;\">\r\n                                    <div style=\"font-size: 10px; color: var(--ayu-text-tertiary); text-transform: uppercase; font-family: var(--font-mono);\">Audit Target<\/div>\r\n                                    <div style=\"font-size: 13px; font-weight: 700; color: #fff; margin-top: 4px;\">Local Machine<\/div>\r\n                                <\/div>\r\n                                <div style=\"background: rgba(255,255,255,.02); border: 1px solid rgba(255,255,255,.05); padding: 12px; border-radius: 10px;\">\r\n                                    <div style=\"font-size: 10px; color: var(--ayu-text-tertiary); text-transform: uppercase; font-family: var(--font-mono);\">API Privacy<\/div>\r\n                                    <div style=\"font-size: 13px; font-weight: 700; color: var(--safe); margin-top: 4px;\">Zero-Transmission<\/div>\r\n                                <\/div>\r\n                                <div style=\"background: rgba(255,255,255,.02); border: 1px solid rgba(255,255,255,.05); padding: 12px; border-radius: 10px;\">\r\n                                    <div style=\"font-size: 10px; color: var(--ayu-text-tertiary); text-transform: uppercase; font-family: var(--font-mono);\">Engine<\/div>\r\n                                    <div style=\"font-size: 13px; font-weight: 700; color: #fff; margin-top: 4px;\">Sandbox v3.2<\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n\r\n                            <button class=\"btn-primary\" id=\"auditBtn\" onclick=\"runEndpointAudit()\" style=\"height: 60px; border-radius: 50px; width: 100%; max-width: 420px; justify-content: center;\">\r\n                                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 8 12 12 16 14\"\/><\/svg>\r\n                                <span class=\"desktop-only\">Run Browser Vulnerability Audit<\/span>\r\n                                <span class=\"mobile-only\">Run Browser Audit<\/span>\r\n                            <\/button>\r\n                        <\/div>\r\n                    <\/section>\r\n\r\n                    <div class=\"telemetry\" role=\"status\" aria-live=\"polite\">\r\n                        <div class=\"telemetry-left\">\r\n                            <span class=\"status-pill\"><span class=\"dot online\"><\/span><span class=\"lbl\">Engine<\/span> <span class=\"val\">Active<\/span><\/span>\r\n                            <span class=\"status-pill\"><span class=\"dot online\"><\/span><span class=\"lbl\">Heuristics<\/span> <span class=\"val\">Live<\/span><\/span>\r\n                            <span class=\"status-pill\"><span class=\"dot online\"><\/span><span class=\"lbl\">WebGL Context<\/span> <span class=\"val\">Unmasked<\/span><\/span>\r\n                            <span class=\"status-pill\"><span class=\"dot online\"><\/span><span class=\"lbl\">Privacy Guard<\/span> <span class=\"val\">Live<\/span><\/span>\r\n                        <\/div>\r\n                        <div style=\"display:flex; align-items:center; gap:12px;\">\r\n                            <div class=\"net-activity\" title=\"Live network activity\">\r\n                                <span class=\"net-lbl\">Bus<\/span>\r\n                                <svg id=\"netSpark\" width=\"64\" height=\"22\" viewBox=\"0 0 64 22\" aria-hidden=\"true\"><\/svg>\r\n                            <\/div>\r\n                            <span class=\"last-update\">UPDATED <b id=\"lastUpdate\">--:--:--<\/b><\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"hero-stats\" id=\"heroStats\" aria-live=\"polite\">\r\n                        <div class=\"stat-card\">\r\n                            <div class=\"s-ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2v20M2 12h20\"\/><\/svg><\/div>\r\n                            <div class=\"s-trend\">\u25b2 live<\/div>\r\n                            <div class=\"s-val\" id=\"statBrowsers\">\u2014<\/div>\r\n                            <div class=\"s-label\">Browser Vulnerability Checks<\/div>\r\n                        <\/div>\r\n                        <div class=\"stat-card\">\r\n                            <div class=\"s-ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg><\/div>\r\n                            <div class=\"s-trend\">\u25b2 locked<\/div>\r\n                            <div class=\"s-val\">7<span class=\"unit\">\/7<\/span><\/div>\r\n                            <div class=\"s-label\">Heuristic Checks<\/div>\r\n                        <\/div>\r\n                        <div class=\"stat-card\">\r\n                            <div class=\"s-ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg><\/div>\r\n                            <div class=\"s-trend\">\u25b2 synced<\/div>\r\n                            <div class=\"s-val\">100<span class=\"unit\">%<\/span><\/div>\r\n                            <div class=\"s-label\">Sandbox Privacy<\/div>\r\n                        <\/div>\r\n                        <div class=\"stat-card\">\r\n                            <div class=\"s-ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"\/><path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\"\/><\/svg><\/div>\r\n                            <div class=\"s-trend\">\u25b2 live<\/div>\r\n                            <div class=\"s-val\">5<span class=\"unit\">CVE-sets<\/span><\/div>\r\n                            <div class=\"s-label\">Engine Version Coverage<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <section class=\"section\" style=\"margin-top: 28px;\">\r\n                        <div class=\"panel panel-pad\" style=\"border-color: rgba(79,110,247,.15); background: linear-gradient(150deg, rgba(9,13,36,.5) 0%, rgba(6,8,21,.6) 100%);\">\r\n                            <h3 style=\"font-family: var(--font-display); font-size: 17px; font-weight: 700; color: #fff; margin-bottom: 12px; display: flex; align-items: center; gap: 10px;\">\r\n                                <span style=\"color: var(--cyan); display: inline-flex; width:18px; height:18px; flex-shrink:0;\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" style=\"width:18px;height:18px;\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><polyline points=\"9 11 11 13 15 9\"\/><\/svg><\/span>\r\n                                Free Online Browser Vulnerability Scanner \u2014 Endpoint Security Audit Tool\r\n                            <\/h3>\r\n                            <div class=\"desktop-only\">\r\n                                <p style=\"font-size: 13.5px; color: var(--ayu-text-secondary); line-height: 1.7; margin-bottom: 14px;\">\r\n                                    Your browser is your primary gateway to the internet \u2014 and its most heavily targeted exploitation perimeter. AssistYu's <strong>free online browser vulnerability scanner<\/strong> is a real-time <strong>endpoint security audit tool<\/strong> that performs live <strong>browser fingerprinting detection<\/strong>, <strong>WebGL GPU renderer analysis<\/strong>, and local sandbox configuration checks directly from your device memory \u2014 with zero data ever leaving your machine. This comprehensive <strong>browser vulnerability audit<\/strong> gives you a complete picture of your digital privacy exposure.\r\n                                <\/p>\r\n                                <p style=\"font-size: 13.5px; color: var(--ayu-text-secondary); line-height: 1.7; margin-bottom: 14px;\">\r\n                                    Whether you're auditing your own <strong>digital privacy exposure<\/strong>, testing for <strong>canvas fingerprinting<\/strong> and <strong>tracker script exposure<\/strong>, or verifying you're not running an <strong>outdated browser engine vulnerable to known CVEs<\/strong>, this diagnostics console gives you a full, evidence-based security posture in seconds. The <strong>browser security scanner<\/strong> uses local heuristics to identify vulnerabilities without compromising your privacy.\r\n                                <\/p>\r\n                                <p style=\"font-size: 13.5px; color: var(--ayu-text-secondary); line-height: 1.7; margin-bottom: 14px;\">\r\n                                    Every check runs entirely client-side: <strong>canvas fingerprint entropy analysis<\/strong>, <strong>unmasked WebGL renderer extraction<\/strong>, <strong>ad-blocker and tracker-shield resolution testing<\/strong>, <strong>incognito &amp; private-browsing storage-quota detection<\/strong>, and <strong>hardware concurrency \/ device memory telemetry<\/strong> are all cross-referenced against a live database of unpatched <strong>Chrome, Firefox, and Safari engine CVEs<\/strong> to deliver an accurate, evidence-based vulnerability verdict \u2014 complete with a <strong>MITRE ATT&amp;CK exploit-sequence breakdown<\/strong> and copy-paste <strong>browser hardening commands<\/strong> for Chrome flags, Firefox privacy configs, and kernel-level network hardening.\r\n                                <\/p>\r\n                                <p style=\"font-size: 13.5px; color: var(--ayu-text-secondary); line-height: 1.7;\">\r\n                                    Built for developers, IT teams, and privacy-conscious individuals, this <strong>endpoint &amp; browser vulnerability audit<\/strong> is the fastest way to answer: is my browser trackable? Is my ad-blocker actually working? Is my GPU or hardware fingerprint leaking to scripts? And is my browser version exposed to publicly disclosed security flaws? Run the <strong>browser vulnerability audit<\/strong> below to get your full <strong>vulnerability risk score<\/strong> instantly. This <strong>browser security assessment tool<\/strong> is completely free and requires no signup.\r\n                                <\/p>\r\n                            <\/div>\r\n                            <p class=\"mobile-only\" style=\"font-size: 13px; color: var(--ayu-text-secondary); line-height: 1.6;\">\r\n                                A real-time <strong>browser vulnerability scanner<\/strong>: checks <strong>canvas &amp; WebGL fingerprinting<\/strong>, <strong>ad-tracker blocking<\/strong>, <strong>incognito detection<\/strong>, hardware telemetry, and known <strong>engine CVEs<\/strong> \u2014 100% client-side, nothing leaves your device. This <strong>browser security audit<\/strong> gives you instant, actionable insights.\r\n                            <\/p>\r\n                            <div style=\"display: flex; gap: 14px; flex-wrap: wrap; font-family: var(--font-mono); font-size: 11px; border-top: 1px solid rgba(255,255,255,.05); padding-top: 14px; margin-top: 14px;\">\r\n                                <span style=\"color: var(--safe); display: flex; align-items: center; gap: 6px;\"><span style=\"width:6px;height:6px;border-radius:50%;background:var(--safe);box-shadow:0 0 6px var(--safe);\"><\/span> Local Heuristics Only<\/span>\r\n                                <span style=\"color: var(--cyan); display: flex; align-items: center; gap: 6px;\"><span style=\"width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 6px var(--cyan);\"><\/span> Engine CVE Mapping<\/span>\r\n                                <span style=\"color: var(--violet); display: flex; align-items: center; gap: 6px;\"><span style=\"width:6px;height:6px;border-radius:50%;background:var(--violet);box-shadow:0 0 6px var(--violet);\"><\/span> WebGL GPU Extraction<\/span>\r\n                                <span style=\"color: var(--blue); display: flex; align-items: center; gap: 6px;\"><span style=\"width:6px;height:6px;border-radius:50%;background:var(--blue);box-shadow:0 0 6px var(--blue);\"><\/span> Canvas Fingerprint Analysis<\/span>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/section>\r\n                <\/div>\r\n\r\n                <!-- \u2550\u2550\u2550 VIEW 2 \u2014 ACTIVE SCANNING \u2550\u2550\u2550 -->\r\n                <div class=\"view\" id=\"viewScanning\">\r\n                    <section class=\"section\" style=\"margin-top:0;\">\r\n                        <div class=\"scan-context\">\r\n                            <div class=\"sc-icon\">\r\n                                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\r\n                            <\/div>\r\n                            <div class=\"sc-text\">\r\n                                <div class=\"sc-k\">Sandbox Telemetry Auditor Engine<\/div>\r\n                                <div class=\"sc-v\"><span style=\"color:var(--cyan);\">Local Client Target<\/span> \u00b7 Probing active parameters<\/div>\r\n                                <div class=\"sc-sub\">Heuristic parsing system<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"panel panel-pad\">\r\n                            <div class=\"pipeline\" id=\"pipeline\"><\/div>\r\n                            <div class=\"progress-track\"><div class=\"progress-fill\" id=\"progressFill\"><\/div><\/div>\r\n                            <div class=\"progress-meta\">\r\n                                <span id=\"progressPhase\">Initializing Sandbox\u2026<\/span>\r\n                                <span><b id=\"progressPct\">0%<\/b> \u00b7 <span id=\"progressSources\">0<\/span>\/<span id=\"progressTotal\">7<\/span> modules completed<\/span>\r\n                            <\/div>\r\n                            <div class=\"live-feed\" id=\"liveFeed\" aria-live=\"polite\"><\/div>\r\n                        <\/div>\r\n                    <\/section>\r\n                <\/div>\r\n\r\n                <!-- \u2550\u2550\u2550 VIEW 3 \u2014 VERDICT \u2550\u2550\u2550 -->\r\n                <div class=\"view\" id=\"viewVerdict\">\r\n                    <section class=\"section\" style=\"margin-top:0;\">\r\n\r\n                        <div class=\"panel panel-pad glow-border\" style=\"margin-bottom: var(--panel-gap); background: linear-gradient(135deg, rgba(9,13,36,.7) 0%, rgba(6,8,21,.8) 100%);\">\r\n                            <div class=\"vh-row\" style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:18px;\">\r\n                                <div class=\"vh-left\" style=\"display:flex; align-items:center; gap:16px; min-width:0; flex:1;\">\r\n                                    <div style=\"width:50px; height:50px; border-radius:14px; background:rgba(79,110,247,.1); border:1px solid rgba(79,110,247,.25); display:flex; align-items:center; justify-content:center; color:var(--cyan); flex-shrink:0;\">\r\n                                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" style=\"width:24px;height:24px;\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg>\r\n                                    <\/div>\r\n                                    <div class=\"vh-title-row\" style=\"min-width:0;\">\r\n                                        <div class=\"vh-eyebrow\">Browser Vulnerability Audit Report<\/div>\r\n                                        <h2 style=\"font-family: var(--font-display); font-weight:700; font-size: clamp(18px, 2.4vw, 23px); color:#fff; line-height:1.2;\">Browser Vulnerability Audit: <span class=\"grad-text\">Live Endpoint Security Assessment<\/span><\/h2>\r\n                                        <div class=\"vh-meta\">\r\n                                            <span>Engine: <b>Telemetry Sandbox Audit v3.2<\/b><\/span>\r\n                                            <span>ID: <b id=\"verdictRequestId\">\u2014<\/b><\/span>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <div class=\"vh-right\" style=\"display:flex; align-items:center; gap:12px; flex-shrink:0; flex-wrap:wrap;\">\r\n                                    <span class=\"risk-badge low\" id=\"verdictBadge\" style=\"height:40px;\"><span class=\"rb-dot\"><\/span> LOW<\/span>\r\n                                    <span style=\"font-size:11px; font-family: var(--font-mono); color: var(--ayu-text-secondary); background: rgba(6,8,21,.5); border: 1px solid var(--border); padding: 0 14px; height: 40px; display:inline-flex; align-items:center; border-radius:12px; white-space:nowrap;\" id=\"verdictTimestamp\">--:--:-- UTC<\/span>\r\n                                    <button class=\"btn btn-ghost btn-sm\" id=\"newAuditBtn\" onclick=\"resetAuditConsole()\" style=\"height:40px;\">\r\n                                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"23 4 23 10 17 10\"\/><polyline points=\"1 20 1 14 7 14\"\/><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"\/><\/svg> New Audit\r\n                                    <\/button>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"verdict-summary\">\r\n                            <div class=\"panel gauge-panel glow-border\">\r\n                                <div class=\"gauge-wrap\">\r\n                                    <svg viewBox=\"0 0 280 280\">\r\n                                        <circle cx=\"140\" cy=\"140\" r=\"118\" fill=\"none\" stroke=\"rgba(79,110,247,.10)\" stroke-width=\"16\"\/>\r\n                                        <circle id=\"gaugeArc\" cx=\"140\" cy=\"140\" r=\"118\" fill=\"none\" stroke=\"url(#gaugeGradGreen)\" stroke-width=\"16\" stroke-linecap=\"round\" stroke-dasharray=\"741.4\" stroke-dashoffset=\"741.4\" style=\"transform: rotate(-90deg); transform-origin: center; transition: stroke-dashoffset 1.4s cubic-bezier(.2,.8,.2,1);\"\/>\r\n                                        <defs>\r\n                                            <linearGradient id=\"gaugeGradGreen\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#10b981\"\/><stop offset=\"100%\" stop-color=\"#22e6a8\"\/><\/linearGradient>\r\n                                            <linearGradient id=\"gaugeGradAmber\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#ea580c\"\/><stop offset=\"100%\" stop-color=\"#ffb84d\"\/><\/linearGradient>\r\n                                            <linearGradient id=\"gaugeGradRed\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#dc2626\"\/><stop offset=\"100%\" stop-color=\"#ff3d68\"\/><\/linearGradient>\r\n                                        <\/defs>\r\n                                    <\/svg>\r\n                                    <div class=\"gauge-center\">\r\n                                        <div class=\"gauge-score\" id=\"gaugeScore\">0<span class=\"gs-max\">\/100<\/span><\/div>\r\n                                        <div class=\"gauge-label\" id=\"gaugeLabel\" style=\"color: var(--safe);\">NOMINAL<\/div>\r\n                                        <div class=\"gauge-sub\">Vulnerability Risk Score<\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                            <div class=\"core-cards\">\r\n                                <div class=\"core-card\">\r\n                                    <div class=\"cc-k\">Fingerprint Uniqueness<\/div>\r\n                                    <div class=\"cc-v\" id=\"card-fp-val\">\u2014<\/div>\r\n                                    <div class=\"cc-bar\"><i id=\"bar-fp\" style=\"background: var(--danger); width: 0%;\"><\/i><\/div>\r\n                                    <div class=\"cc-note\" id=\"card-fp-note\"><\/div>\r\n                                <\/div>\r\n                                <div class=\"core-card\">\r\n                                    <div class=\"cc-k\">Tracker Shield Blockrate<\/div>\r\n                                    <div class=\"cc-v\" id=\"card-ad-val\">\u2014<\/div>\r\n                                    <div class=\"cc-bar\"><i id=\"bar-ad\" style=\"background: var(--safe); width: 0%;\"><\/i><\/div>\r\n                                    <div class=\"cc-note\" id=\"card-ad-note\"><\/div>\r\n                                <\/div>\r\n                                <div class=\"core-card\">\r\n                                    <div class=\"cc-k\">Incognito Sandbox Check<\/div>\r\n                                    <div class=\"cc-v\" id=\"card-incog-val\">\u2014<\/div>\r\n                                    <div class=\"cc-bar\"><i id=\"bar-incog\" style=\"background: var(--safe); width: 0%;\"><\/i><\/div>\r\n                                    <div class=\"cc-note\" id=\"card-incog-note\"><\/div>\r\n                                <\/div>\r\n                                <div class=\"core-card\">\r\n                                    <div class=\"cc-k\">Hardware Metadata Leaks<\/div>\r\n                                    <div class=\"cc-v\" id=\"card-hw-val\">\u2014<\/div>\r\n                                    <div class=\"cc-bar\"><i id=\"bar-hw\" style=\"background: var(--amber); width: 0%;\"><\/i><\/div>\r\n                                    <div class=\"cc-note\" id=\"card-hw-note\"><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"multi-risk-grid\" id=\"multiRiskGrid\"><\/div>\r\n\r\n                        <div class=\"panel panel-pad glow-border\" id=\"cveBlockWrap\" style=\"margin-top: 24px; display: none;\">\r\n                            <div class=\"detail-panel-title\">\r\n                                <span class=\"dp-ico\" style=\"color:var(--danger);\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/span>\r\n                                Browser Vulnerability Audit \u2014 CVE Engine Vulnerabilities Detected\r\n                            <\/div>\r\n                            <div style=\"font-size:12px; color:var(--ayu-text-secondary); margin-bottom:14px;\">The following unpatched Common Vulnerabilities and Exposures (CVEs) correlate with your detected engine version:<\/div>\r\n                            <div id=\"cveListGrid\" style=\"display:flex; flex-direction:column; gap:12px;\"><\/div>\r\n                        <\/div>\r\n\r\n                        <div id=\"consoleBlockWrap\" style=\"margin-top:24px;\"><\/div>\r\n\r\n                        <div class=\"panel panel-pad glow-border\" style=\"margin-top: 24px;\">\r\n                            <div class=\"detail-panel-title\">\r\n                                <span class=\"dp-ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2v20M2 12h20\"\/><\/svg><\/span>\r\n                                Browser Vulnerability Audit \u2014 MITRE ATT&amp;CK Exploit Sequence\r\n                            <\/div>\r\n                            <div class=\"exploit-timeline\" id=\"mitreTimeline\"><\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"panel panel-pad glow-border\" style=\"margin-top: 24px;\">\r\n                            <div class=\"detail-panel-title\">\r\n                                <span class=\"dp-ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg><\/span>\r\n                                Browser Vulnerability Audit \u2014 Mitigation Hardening Commands\r\n                            <\/div>\r\n                            <div id=\"playbookWrapper\"><\/div>\r\n                        <\/div>\r\n\r\n                        <div id=\"marketingBannerWrap\"><\/div>\r\n\r\n                    <\/section>\r\n                <\/div>\r\n\r\n                <div class=\"back-home\">\r\n                    <a href=\"diagnostic.html\" class=\"home-btn\">\r\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"><line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"\/><polyline points=\"12 19 5 12 12 5\"\/><\/svg>\r\n                        Back to Diagnostics Hub\r\n                    <\/a>\r\n                <\/div>\r\n\r\n            <\/main>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"phone-pill\" id=\"phone-pill\">\r\n        <button type=\"button\" class=\"pp-icon\" id=\"pp-icon\" aria-label=\"Show phone number\" aria-expanded=\"false\">\r\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/svg>\r\n        <\/button>\r\n        <a href=\"tel:+34951550227\" class=\"pp-text\" id=\"pp-text\">+34 9 515 502 27<\/a>\r\n    <\/div>\r\n\r\n    <script>\r\n        (function() {\r\n            \"use strict\";\r\n\r\n            const $ = s => document.querySelector(s);\r\n            const escapeHtml = s => { const d = document.createElement('div'); d.textContent = String(s ?? ''); return d.innerHTML; };\r\n\r\n            \/* Phone pill toggle *\/\r\n            const pill = document.getElementById('phone-pill');\r\n            const icon = document.getElementById('pp-icon');\r\n            if (pill && icon) {\r\n                icon.addEventListener('click', function(e) {\r\n                    e.stopPropagation();\r\n                    const open = pill.classList.toggle('open');\r\n                    icon.setAttribute('aria-expanded', open ? 'true' : 'false');\r\n                });\r\n                document.addEventListener('click', function(e) {\r\n                    if (pill && !pill.contains(e.target)) {\r\n                        pill.classList.remove('open');\r\n                        icon.setAttribute('aria-expanded', 'false');\r\n                    }\r\n                });\r\n            }\r\n\r\n            \/* Pipeline definitions *\/\r\n            const PIPELINE = [\r\n                { id: 'ua', label: 'User-Agent Check', icon: 'filter', sub: 'identify engine' },\r\n                { id: 'gpu', label: 'WebGL GPU Probe', icon: 'hash', sub: 'unmasked hardware' },\r\n                { id: 'ad', label: 'Adblock Shield Test', icon: 'search', sub: 'check blocks' },\r\n                { id: 'quota', label: 'Sandbox Storage', icon: 'layers', sub: 'quota audit' },\r\n                { id: 'fp', label: 'Canvas Entropy', icon: 'activity', sub: 'unique fingerprint' },\r\n                { id: 'hw', label: 'Hardware Telemetry', icon: 'bolt', sub: 'cpu & memory' },\r\n                { id: 'cve', label: 'CVE Matrix Match', icon: 'shieldCheck', sub: 'vulns resolve' }\r\n            ];\r\n\r\n            const statBrowsers = document.getElementById('statBrowsers');\r\n            if (statBrowsers) statBrowsers.textContent = PIPELINE.length;\r\n\r\n            const pipeWrap = $('#pipeline');\r\n            if (pipeWrap) {\r\n                pipeWrap.innerHTML = PIPELINE.map(p =>\r\n                    `<div class=\"pipe-node\" data-id=\"${p.id}\"><span class=\"pn-check\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><div class=\"pn-ico\">${iconSvg(p.icon)}<\/div><div class=\"pn-label\">${p.label}<\/div><div class=\"pn-sub\"><\/div><\/div>`\r\n                ).join('');\r\n            }\r\n\r\n            function iconSvg(name) {\r\n                const map = {\r\n                    filter: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"\/><\/svg>',\r\n                    hash: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"\/><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"\/><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"\/><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"\/><\/svg>',\r\n                    search: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>',\r\n                    layers: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"\/><polyline points=\"2 17 12 22 22 17\"\/><polyline points=\"2 12 12 17 22 12\"\/><\/svg>',\r\n                    activity: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"\/><\/svg>',\r\n                    bolt: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>',\r\n                    shieldCheck: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><path d=\"M9 12l2 2 4-4\"\/><\/svg>'\r\n                };\r\n                return map[name] || '';\r\n            }\r\n\r\n            window.runEndpointAudit = async function() {\r\n                $('#viewIdle').classList.remove('active');\r\n                $('#viewScanning').classList.add('active');\r\n\r\n                const progressFill = $('#progressFill');\r\n                const phaseEl = $('#progressPhase');\r\n                const pctEl = $('#progressPct');\r\n                const srcEl = $('#progressSources');\r\n                const feed = $('#liveFeed');\r\n\r\n                progressFill.style.width = '0%';\r\n                pctEl.textContent = '0%';\r\n                phaseEl.textContent = 'Initializing Sandbox Telemetry\u2026';\r\n                srcEl.textContent = '0';\r\n                feed.innerHTML = '';\r\n\r\n                const nodes = PIPELINE.map(p => $(`.pipe-node[data-id=\"${p.id}\"]`)).filter(n => n !== null);\r\n                nodes.forEach(n => n.classList.remove('active', 'done'));\r\n\r\n                const steps = [\r\n                    { i: 0, id: 'ua', sub: 'identify engine', phase: 'Extracting User-Agent engine flags\u2026' },\r\n                    { i: 1, id: 'gpu', sub: 'unmasked hardware', phase: 'Querying WebGL unmasked hardware parameters\u2026' },\r\n                    { i: 2, id: 'ad', sub: 'check blocks', phase: 'Validating ad-blocker network scripts blockage\u2026' },\r\n                    { i: 3, id: 'quota', sub: 'quota audit', phase: 'Testing storage quotas for private browser container\u2026' },\r\n                    { i: 4, id: 'fp', sub: 'unique fingerprint', phase: 'Probing 2D Canvas render hash unique entropy\u2026' },\r\n                    { i: 5, id: 'hw', sub: 'cpu & memory', phase: 'Collecting processor hardware concurrency & memory telemetry\u2026' },\r\n                    { i: 6, id: 'cve', sub: 'vulns resolve', phase: 'Cross-referencing engine version with public CVEs\u2026' }\r\n                ];\r\n\r\n                let srcDone = 0;\r\n                for (const s of steps) {\r\n                    const node = nodes[s.i];\r\n                    if (node) {\r\n                        node.classList.add('active');\r\n                        const subEl = node.querySelector('.pn-sub');\r\n                        if (subEl) subEl.textContent = s.sub;\r\n                    }\r\n                    phaseEl.textContent = s.phase;\r\n                    feedLine(`[INFO] Phase initialized: ${s.phase}`);\r\n\r\n                    await wait(200);\r\n                    feedSubLogs(s.i);\r\n\r\n                    const startPct = Math.round((s.i \/ PIPELINE.length) * 100);\r\n                    const endPct = Math.round(((s.i + 1) \/ PIPELINE.length) * 100);\r\n                    await tween(startPct, endPct, 1000);\r\n\r\n                    if (node) { node.classList.remove('active'); node.classList.add('done'); }\r\n                    srcEl.textContent = ++srcDone;\r\n                }\r\n\r\n                feedLine(`[OK] Threat assessment compiled. Loading verdict diagnostics\u2026`);\r\n                await wait(500);\r\n\r\n                $('#viewScanning').classList.remove('active');\r\n\r\n                const info = await compileLocalSpecs();\r\n                renderAuditVerdict(info);\r\n            };\r\n\r\n            function feedLine(txt) {\r\n                const feed = $('#liveFeed');\r\n                if (!feed) return;\r\n                const d = new Date();\r\n                const t = pad2(d.getHours()) + ':' + pad2(d.getMinutes()) + ':' + pad2(d.getSeconds());\r\n                const div = document.createElement('div');\r\n                div.className = 'lf-line';\r\n                div.innerHTML = `<span class=\"lf-time\">[${t}]<\/span><span class=\"lf-ok\">${escapeHtml(txt)}<\/span>`;\r\n                feed.prepend(div);\r\n                while (feed.children.length > 9) feed.lastChild.remove();\r\n            }\r\n\r\n            function feedSubLogs(stepIdx) {\r\n                const logs = {\r\n                    0: [`[INFO] Navigator user-agent read successfully.`, `[INFO] Parsing major layout version boundaries.`],\r\n                    1: [`[INFO] Probing WebGL experimental render targets...`, `[INFO] Reading unmasked graphics hardware configurations.`],\r\n                    2: [`[INFO] Firing ad-network resolution probe...`, `[INFO] Evaluating network resolve limits.`],\r\n                    3: [`[INFO] Querying storage.estimate memory limits...`, `[INFO] Cross-checking incognito container indicators.`],\r\n                    4: [`[INFO] Drawing local offscreen canvas 2D frames...`, `[INFO] Processing image byte-arrays into signature hash.`],\r\n                    5: [`[INFO] Resolving hardwareConcurrency cores count...`, `[INFO] Reading navigator.deviceMemory parameters.`],\r\n                    6: [`[INFO] Querying unpatched browser engine CVE indices...`, `[INFO] Mapping active patch levels against target database.`]\r\n                };\r\n                const sub = logs[stepIdx] || [];\r\n                sub.forEach((txt, idx) => setTimeout(() => feedLine(txt), idx * 260 + 100));\r\n            }\r\n\r\n            function tween(a, b, dur) {\r\n                const fill = $('#progressFill');\r\n                const pct = $('#progressPct');\r\n                return new Promise(resolve => {\r\n                    const startTime = Date.now();\r\n                    const duration = dur || 400;\r\n                    const diff = b - a;\r\n                    let done = false;\r\n                    const step = () => {\r\n                        if (done) return;\r\n                        const elapsed = Date.now() - startTime;\r\n                        const progress = Math.min(elapsed \/ duration, 1);\r\n                        const eased = 1 - Math.pow(1 - progress, 3);\r\n                        const current = a + diff * eased;\r\n                        if (fill) fill.style.width = current + '%';\r\n                        if (pct) pct.textContent = Math.round(current) + '%';\r\n                        if (progress < 1) requestAnimationFrame(step);\r\n                        else { done = true; resolve(); }\r\n                    };\r\n                    requestAnimationFrame(step);\r\n                });\r\n            }\r\n\r\n            function wait(ms) { return new Promise(r => setTimeout(r, ms)); }\r\n            const pad2 = n => String(n).padStart(2, '0');\r\n\r\n            window.resetAuditConsole = function() {\r\n                $('#viewVerdict').classList.remove('active');\r\n                $('#viewIdle').classList.add('active');\r\n                window.scrollTo({ top: 0, behavior: 'smooth' });\r\n            };\r\n\r\n            async function compileLocalSpecs() {\r\n                const info = {\r\n                    ua: navigator.userAgent,\r\n                    cores: navigator.hardwareConcurrency || 'Unknown',\r\n                    memory: navigator.deviceMemory ? navigator.deviceMemory + ' GB' : 'Not exposed',\r\n                    screenWidth: window.screen.width,\r\n                    screenHeight: window.screen.height,\r\n                    ratio: window.devicePixelRatio || 1,\r\n                    incog: false,\r\n                    adblock: true,\r\n                    canvasFingerprint: '',\r\n                    battery: null,\r\n                    browserName: 'Unknown',\r\n                    browserVersion: 'Unknown',\r\n                    unmaskedGpu: 'Not exposed'\r\n                };\r\n\r\n                try {\r\n                    const canvas = document.createElement('canvas');\r\n                    const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n                    if (gl) {\r\n                        const dbgRenderInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n                        if (dbgRenderInfo) info.unmaskedGpu = gl.getParameter(dbgRenderInfo.UNMASKED_RENDERER_WEBGL);\r\n                    }\r\n                } catch (e) { info.unmaskedGpu = 'Blocked\/Disabled'; }\r\n\r\n                const ua = navigator.userAgent;\r\n                let M = ua.match(\/(opera|chrome|safari|firefox|msie|trident)\\\/?\\s*(\\d+)\/i) || [];\r\n                let tem;\r\n                if (\/trident\/i.test(M[1])) {\r\n                    tem = \/\\brv[ :]+(\\d+)\/g.exec(ua) || [];\r\n                    info.browserName = 'IE'; info.browserVersion = tem[1] || '';\r\n                } else if (M[1] === 'Chrome') {\r\n                    tem = ua.match(\/\\b(OPR|Edg)\\\/(\\d+)\/);\r\n                    if (tem != null) { info.browserName = tem[1].replace('OPR', 'Opera').replace('Edg', 'Edge'); info.browserVersion = tem[2]; }\r\n                    else { info.browserName = 'Chrome'; info.browserVersion = M[2]; }\r\n                } else {\r\n                    M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n                    if ((tem = ua.match(\/version\\\/(\\d+)\/i)) != null) M.splice(1, 1, tem[1]);\r\n                    info.browserName = M[0]; info.browserVersion = M[1];\r\n                }\r\n\r\n                try {\r\n                    const canvas = document.createElement('canvas');\r\n                    const ctx = canvas.getContext('2d');\r\n                    ctx.textBaseline = \"top\"; ctx.font = \"14px 'Arial'\"; ctx.textBaseline = \"alphabetic\";\r\n                    ctx.fillStyle = \"#f60\"; ctx.fillRect(125, 1, 62, 20);\r\n                    ctx.fillStyle = \"#069\"; ctx.fillText(\"assistyu_audit_fingerprint\", 2, 15);\r\n                    info.canvasFingerprint = canvas.toDataURL().slice(-40);\r\n                } catch (e) { info.canvasFingerprint = 'Permission Blocked'; }\r\n\r\n                try {\r\n                    const blockUrl = 'https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js';\r\n                    await fetch(blockUrl, { method: 'HEAD', mode: 'no-cors' });\r\n                    info.adblock = false;\r\n                } catch (e) { info.adblock = true; }\r\n\r\n                try {\r\n                    if (navigator.storage && navigator.storage.estimate) {\r\n                        const quota = await navigator.storage.estimate();\r\n                        if (quota.quota && quota.quota < 120000000) info.incog = true;\r\n                    }\r\n                } catch (_) {}\r\n\r\n                try {\r\n                    if (navigator.getBattery) {\r\n                        const b = await navigator.getBattery();\r\n                        info.battery = Math.round(b.level * 100) + '%';\r\n                    }\r\n                } catch (_) {}\r\n\r\n                return info;\r\n            }\r\n\r\n            function renderAuditVerdict(info) {\r\n                const verdictBlock = $('#viewVerdict');\r\n                verdictBlock.classList.add('active');\r\n\r\n                let threatScore = 15;\r\n                if (info.adblock === false) threatScore += 25;\r\n                if (info.incog === false) threatScore += 15;\r\n                if (info.cores !== 'Unknown') threatScore += 10;\r\n                if (info.memory !== 'Not exposed') threatScore += 10;\r\n                if (info.canvasFingerprint !== 'Permission Blocked') threatScore += 20;\r\n                threatScore = Math.min(threatScore, 100);\r\n\r\n                const level = threatScore >= 70 ? 'CRITICAL' : (threatScore >= 40 ? 'HIGH' : 'LOW');\r\n                const levelClass = threatScore >= 70 ? 'critical' : (threatScore >= 40 ? 'high' : 'low');\r\n\r\n                $('#verdictRequestId').textContent = 'BDX-' + Date.now().toString(36).toUpperCase();\r\n                $('#verdictTimestamp').textContent = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' UTC';\r\n                const vBadge = $('#verdictBadge');\r\n                vBadge.className = 'risk-badge ' + levelClass;\r\n                vBadge.innerHTML = `<span class=\"rb-dot\"><\/span> ${level}`;\r\n\r\n                const circ = 741.42;\r\n                const offset = circ * (1 - (threatScore \/ 100));\r\n                const gaugeArc = $('#gaugeArc');\r\n                if (gaugeArc) {\r\n                    gaugeArc.setAttribute('stroke-dashoffset', offset);\r\n                    gaugeArc.style.strokeDashoffset = offset + 'px';\r\n                    let grad = 'gaugeGradGreen';\r\n                    if (threatScore >= 70) grad = 'gaugeGradRed'; else if (threatScore >= 40) grad = 'gaugeGradAmber';\r\n                    gaugeArc.setAttribute('stroke', `url(#${grad})`);\r\n                }\r\n\r\n                $('#gaugeScore').innerHTML = `${threatScore}<span class=\"gs-max\">\/100<\/span>`;\r\n                const gl = $('#gaugeLabel');\r\n                gl.textContent = level;\r\n                gl.style.color = threatScore >= 70 ? 'var(--danger)' : (threatScore >= 40 ? 'var(--amber)' : 'var(--safe)');\r\n\r\n                const fpBlocked = info.canvasFingerprint === 'Permission Blocked';\r\n                $('#card-fp-val').textContent = fpBlocked ? 'Blocked' : ('Unique \u2014 ' + info.canvasFingerprint.slice(-12));\r\n                $('#card-fp-val').style.color = fpBlocked ? 'var(--safe)' : 'var(--danger)';\r\n                $('#bar-fp').style.width = fpBlocked ? '15%' : '85%';\r\n                $('#bar-fp').style.backgroundColor = fpBlocked ? 'var(--safe)' : 'var(--danger)';\r\n                $('#card-fp-note').textContent = fpBlocked ? 'Canvas shielding is active.' : 'Fingerprint hashing complete \u2014 you are individually trackable.';\r\n\r\n                $('#card-ad-val').textContent = info.adblock ? 'Active (100%)' : 'Inactive (0%)';\r\n                $('#card-ad-val').style.color = info.adblock ? 'var(--safe)' : 'var(--danger)';\r\n                $('#bar-ad').style.width = info.adblock ? '100%' : '15%';\r\n                $('#bar-ad').style.backgroundColor = info.adblock ? 'var(--safe)' : 'var(--danger)';\r\n                $('#card-ad-note').textContent = info.adblock ? 'Ad-tracking network scripts were blocked.' : 'Ad-tracker scripts resolved uninhibited.';\r\n\r\n                $('#card-incog-val').textContent = info.incog ? 'Incognito Container' : 'Standard Session';\r\n                $('#card-incog-val').style.color = info.incog ? 'var(--safe)' : 'var(--amber)';\r\n                $('#bar-incog').style.width = info.incog ? '100%' : '50%';\r\n                $('#bar-incog').style.backgroundColor = info.incog ? 'var(--safe)' : 'var(--amber)';\r\n                $('#card-incog-note').textContent = info.incog ? 'History buffer shielded from persistent caching.' : 'Normal session cache detected \u2014 local history is persisted.';\r\n\r\n                $('#card-hw-val').textContent = `${info.cores} cores \u00b7 ${info.memory}`;\r\n                const hwSafe = (info.memory === 'Not exposed' && info.cores === 'Unknown');\r\n                $('#card-hw-val').style.color = hwSafe ? 'var(--safe)' : 'var(--amber)';\r\n                $('#bar-hw').style.width = hwSafe ? '15%' : '75%';\r\n                $('#bar-hw').style.backgroundColor = hwSafe ? 'var(--safe)' : 'var(--amber)';\r\n                $('#card-hw-note').textContent = `Battery level: ${info.battery || 'Not exposed'}. Screen: ${info.screenWidth}x${info.screenHeight}.`;\r\n\r\n                const shieldVal = info.adblock ? 95 : 15;\r\n                const fpVal = fpBlocked ? 90 : 30;\r\n                const sandVal = info.incog ? 85 : 40;\r\n                const metaVal = hwSafe ? 95 : 25;\r\n\r\n                const ringId1 = 'ring_' + Math.random().toString(36).substring(2, 7);\r\n                const ringId2 = 'ring_' + Math.random().toString(36).substring(2, 7);\r\n                const ringId3 = 'ring_' + Math.random().toString(36).substring(2, 7);\r\n                const ringId4 = 'ring_' + Math.random().toString(36).substring(2, 7);\r\n\r\n                function ringCard(id, val, color, label) {\r\n                    return `<div class=\"risk-ring-card\">\r\n                        <div class=\"ring-svg-wrap\">\r\n                            <svg viewBox=\"0 0 80 80\">\r\n                                <circle cx=\"40\" cy=\"40\" r=\"34\" fill=\"none\" stroke=\"rgba(255,255,255,.06)\" stroke-width=\"6\"\/>\r\n                                <circle id=\"${id}\" cx=\"40\" cy=\"40\" r=\"34\" fill=\"none\" stroke=\"${color}\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-dasharray=\"213.6\" stroke-dashoffset=\"213.6\" style=\"transform: rotate(-90deg); transform-origin: center; transition: stroke-dashoffset 1.5s cubic-bezier(.2,.8,.2,1);\"\/>\r\n                            <\/svg>\r\n                            <div class=\"ring-svg-text\" style=\"color:${color};\">${val}%<\/div>\r\n                        <\/div>\r\n                        <div style=\"font-family:var(--font-mono); font-size:10px; text-transform:uppercase; color:var(--ayu-text-secondary);\">${label}<\/div>\r\n                    <\/div>`;\r\n                }\r\n\r\n                $('#multiRiskGrid').innerHTML =\r\n                    ringCard(ringId1, shieldVal, 'var(--cyan)', 'Ad-Block Shield') +\r\n                    ringCard(ringId2, fpVal, 'var(--blue)', 'Privacy Shield') +\r\n                    ringCard(ringId3, sandVal, 'var(--violet)', 'Sandbox Integrity') +\r\n                    ringCard(ringId4, metaVal, metaVal >= 70 ? 'var(--safe)' : 'var(--danger)', 'Metadata Protection');\r\n\r\n                setTimeout(() => {\r\n                    const updateR = (id, sc) => {\r\n                        const e = document.getElementById(id);\r\n                        if (e) { const off = 213.6 * (1 - (sc \/ 100)); e.setAttribute('stroke-dashoffset', off); e.style.strokeDashoffset = off + 'px'; }\r\n                    };\r\n                    updateR(ringId1, shieldVal); updateR(ringId2, fpVal); updateR(ringId3, sandVal); updateR(ringId4, metaVal);\r\n                }, 100);\r\n\r\n                const cveBlock = document.getElementById('cveBlockWrap');\r\n                const cveListGrid = document.getElementById('cveListGrid');\r\n                const majorVer = parseInt(info.browserVersion, 10) || 0;\r\n                const isChromeOutdated = (info.browserName === 'Chrome' && majorVer < 127 && majorVer > 0);\r\n                const isFirefoxOutdated = (info.browserName === 'Firefox' && majorVer < 126 && majorVer > 0);\r\n                const isSafariOutdated = (info.browserName === 'Safari' && majorVer < 17 && majorVer > 0);\r\n                cveBlock.style.display = 'block';\r\n                if (isChromeOutdated || isFirefoxOutdated || isSafariOutdated) {\r\n                    let vulns = [];\r\n                    if (isChromeOutdated) vulns = [\r\n                        { id: 'CVE-2024-4947', level: 'immediate', desc: 'Type confusion in the V8 engine can allow remote code execution inside the browser sandbox.' },\r\n                        { id: 'CVE-2024-5274', level: 'immediate', desc: 'Type confusion in V8 has been actively exploited in the wild.' },\r\n                        { id: 'CVE-2024-4761', level: 'high', desc: 'Out-of-bounds write in V8 can enable memory corruption and unauthorized code execution.' }\r\n                    ];\r\n                    else if (isFirefoxOutdated) vulns = [\r\n                        { id: 'CVE-2024-26026', level: 'immediate', desc: 'Type confusion in the JIT compiler can allow code execution from a malicious page.' },\r\n                        { id: 'CVE-2024-3855', level: 'high', desc: 'Use-after-free vulnerability in browser event handler bindings.' }\r\n                    ];\r\n                    else vulns = [\r\n                        { id: 'CVE-2023-41993', level: 'immediate', desc: 'WebKit remote code execution via a specially crafted HTML wrapper payload.' },\r\n                        { id: 'CVE-2023-42852', level: 'high', desc: 'WebKit buffer overflow resulting in arbitrary code execution during layout compilation.' }\r\n                    ];\r\n                    cveListGrid.innerHTML = vulns.map(v => `\r\n                        <div class=\"rec-item ${v.level}\">\r\n                            <div class=\"rec-top\">\r\n                                <span class=\"rec-label\" style=\"color:#ff5f7c;\">${escapeHtml(v.id)}<\/span>\r\n                                <span class=\"rec-level\" style=\"color:${v.level === 'immediate' ? 'var(--danger)' : 'var(--amber)'};\">${v.level === 'immediate' ? 'CRITICAL' : 'HIGH'} RISK<\/span>\r\n                            <\/div>\r\n                            <div class=\"rec-desc\">${escapeHtml(v.desc)}<\/div>\r\n                        <\/div>`).join('');\r\n                } else {\r\n                    cveListGrid.innerHTML = `\r\n                        <div class=\"rec-item low\">\r\n                            <div class=\"rec-top\">\r\n                                <span class=\"rec-label\" style=\"color:var(--safe);\">SECURITY VERDICT: OK<\/span>\r\n                                <span class=\"rec-level\" style=\"color:var(--safe);\">SECURE<\/span>\r\n                            <\/div>\r\n                            <div class=\"rec-desc\">No known unpatched browser-engine CVEs were matched for ${escapeHtml(info.browserName)} ${escapeHtml(String(info.browserVersion))}. Keep auto-updates enabled.<\/div>\r\n                        <\/div>`;\r\n                }\r\n\r\n                const consWrap = $('#consoleBlockWrap');\r\n                consWrap.innerHTML = `\r\n                    <div class=\"panel panel-pad glow-border\">\r\n                        <div class=\"forensic-console\">\r\n                            <div class=\"console-header\">\r\n                                <span class=\"console-terminal-badge\">Diagnostic Forensic Log<\/span>\r\n                                <span>Target: Sandbox Localhost<\/span>\r\n                            <\/div>\r\n                            <div class=\"console-lines\" id=\"console_lines_block\"><\/div>\r\n                        <\/div>\r\n                    <\/div>`;\r\n                const logs = [\r\n                    { tag: 'info', m: 'Acquiring active window navigator metadata arrays\u2026' },\r\n                    { tag: 'ok', m: `Screen boundaries fetched: ${info.screenWidth}x${info.screenHeight} pixels.` },\r\n                    { tag: 'info', m: 'Querying unmasked WebGL debug renderer graphics hardware\u2026' },\r\n                    { tag: 'ok', m: `GPU hardware detected: ${info.unmaskedGpu}` },\r\n                    { tag: 'info', m: 'Executing local HTML Canvas byte-stream rendering test\u2026' },\r\n                    { tag: 'ok', m: 'Canvas entropy successfully parsed: hash derivative complete.' },\r\n                    { tag: 'info', m: 'Intercepting resource queries to check advertising networks\u2026' },\r\n                    info.adblock ? { tag: 'ok', m: 'AD-BLOCK MATCHED: ad-network fetch returned a blocked response (secure).' } : { tag: 'warn', m: 'AD-BLOCK FAIL: advertising telemetry resolved without restriction.' },\r\n                    info.incog ? { tag: 'ok', m: 'INCOGNITO MODE CONFIRMED: local storage quota is limited.' } : { tag: 'warn', m: 'CACHED SESSION DETECTED: history buffer open to persistent cookies.' },\r\n                    { tag: 'info', m: 'Re-evaluating cross-origin network policy configurations\u2026' },\r\n                    { tag: 'ok', m: 'Diagnostic audit complete.' }\r\n                ].filter(Boolean);\r\n\r\n                let logIdx = 0;\r\n                const consCont = $('#console_lines_block');\r\n                function printLog() {\r\n                    if (!consCont || logIdx >= logs.length) return;\r\n                    const log = logs[logIdx++];\r\n                    const lEl = document.createElement('div');\r\n                    lEl.className = 'console-line';\r\n                    const now = new Date();\r\n                    const time = pad2(now.getHours()) + ':' + pad2(now.getMinutes()) + ':' + pad2(now.getSeconds());\r\n                    lEl.innerHTML = `<span class=\"c-time\">${time}<\/span><span class=\"c-tag ${log.tag}\">${log.tag}<\/span><span>${escapeHtml(log.m)}<\/span>`;\r\n                    consCont.appendChild(lEl);\r\n                    consCont.scrollTop = consCont.scrollHeight;\r\n                    setTimeout(printLog, Math.random() * 260 + 120);\r\n                }\r\n                setTimeout(printLog, 150);\r\n\r\n                $('#mitreTimeline').innerHTML = `\r\n                    <div class=\"exploit-node\">\r\n                        <div class=\"exploit-marker\"><span style=\"width:5px;height:5px;background:var(--danger);border-radius:50%;\"><\/span><\/div>\r\n                        <div class=\"exploit-content\">\r\n                            <div class=\"exploit-title-bar\"><span class=\"exploit-title\">1. System Information Discovery<\/span><span class=\"exploit-badge\">MITRE T1082<\/span><\/div>\r\n                            <div class=\"exploit-desc\">Malicious client-side scripts query device specifications (CPU concurrency, memory, screen bounds, unmasked WebGL GPU) to fingerprint and profile you.<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"exploit-node\">\r\n                        <div class=\"exploit-marker\"><span style=\"width:5px;height:5px;background:var(--amber);border-radius:50%;\"><\/span><\/div>\r\n                        <div class=\"exploit-content\">\r\n                            <div class=\"exploit-title-bar\"><span class=\"exploit-title\">2. Gather Host Information<\/span><span class=\"exploit-badge\">MITRE T1592<\/span><\/div>\r\n                            <div class=\"exploit-desc\">With a unique canvas\/GPU fingerprint, ad networks and trackers can correlate your activity across separate browsing sessions.<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"exploit-node\">\r\n                        <div class=\"exploit-marker\"><span style=\"width:5px;height:5px;background:var(--blue);border-radius:50%;\"><\/span><\/div>\r\n                        <div class=\"exploit-content\">\r\n                            <div class=\"exploit-title-bar\"><span class=\"exploit-title\">3. Execution (User Action)<\/span><span class=\"exploit-badge\">MITRE T1204<\/span><\/div>\r\n                            <div class=\"exploit-desc\">Without active blocking, script-injection can execute unauthorized tracking payloads inside the browser context.<\/div>\r\n                        <\/div>\r\n                    <\/div>`;\r\n\r\n                const chromeFlagCode = \"1. Navigate to: chrome:\/\/flags\/\\n2. Disable \\\"Experimental Web Platform Features\\\"\\n3. Enable \\\"Strict Origin Isolation\\\"\";\r\n                const ffConfigCode = \"1. Navigate to: about:config\\n2. Set privacy.resistFingerprinting = true\\n3. Set privacy.trackingprotection.fingerprinting.enabled = true\";\r\n                const sysHardCode = \"# Harden system network buffers\\nsudo sysctl -w net.ipv4.tcp_rfc1337=1\\necho \\\"net.ipv4.tcp_rfc1337=1\\\" | sudo tee -a \/etc\/sysctl.conf\";\r\n                $('#playbookWrapper').innerHTML = `\r\n                    <div class=\"playbook-container\">\r\n                        <div class=\"playbook-tabs\">\r\n                            <button class=\"playbook-tab active\" id=\"tab_chr\">Chrome Flags<\/button>\r\n                            <button class=\"playbook-tab\" id=\"tab_ff\">Firefox Config<\/button>\r\n                            <button class=\"playbook-tab\" id=\"tab_sys\">Kernel Hardening<\/button>\r\n                        <\/div>\r\n                        <div class=\"playbook-code-block\">\r\n                            <button class=\"copy-code-btn\" id=\"copy_play_btn\">Copy Code<\/button>\r\n                            <pre class=\"playbook-code\" id=\"playbook_code_box\">${escapeHtml(chromeFlagCode)}<\/pre>\r\n                        <\/div>\r\n                    <\/div>`;\r\n\r\n                setTimeout(() => {\r\n                    const tabChr = document.getElementById('tab_chr');\r\n                    const tabFf = document.getElementById('tab_ff');\r\n                    const tabSys = document.getElementById('tab_sys');\r\n                    const codeB = document.getElementById('playbook_code_box');\r\n                    const copyB = document.getElementById('copy_play_btn');\r\n                    if (tabChr && tabFf && tabSys && codeB) {\r\n                        const selectT = (tb, cd) => { [tabChr, tabFf, tabSys].forEach(t => t.classList.remove('active')); tb.classList.add('active'); codeB.textContent = cd; };\r\n                        tabChr.addEventListener('click', () => selectT(tabChr, chromeFlagCode));\r\n                        tabFf.addEventListener('click', () => selectT(tabFf, ffConfigCode));\r\n                        tabSys.addEventListener('click', () => selectT(tabSys, sysHardCode));\r\n                    }\r\n                    if (copyB && codeB) {\r\n                        copyB.addEventListener('click', () => {\r\n                            navigator.clipboard.writeText(codeB.textContent).then(() => {\r\n                                copyB.textContent = 'Copied!';\r\n                                setTimeout(() => { copyB.textContent = 'Copy Code'; }, 1500);\r\n                            });\r\n                        });\r\n                    }\r\n                }, 200);\r\n\r\n                const bannerWrap = $('#marketingBannerWrap');\r\n                const prodUrl = \"https:\/\/assistyu.com\/security-products\/\";\r\n                const servUrl = \"https:\/\/assistyu.com\/services\/\";\r\n                if (threatScore >= 40) {\r\n                    bannerWrap.innerHTML = `\r\n                        <div class=\"marketing-banner\">\r\n                            <div class=\"mb-inner\">\r\n                                <div class=\"mb-left\">\r\n                                    <div class=\"mb-badge-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div>\r\n                                    <div>\r\n                                        <h4 class=\"mb-title\">Exposed device telemetry found \u2014 harden your perimeter<\/h4>\r\n                                        <p class=\"mb-desc\">Your browser sandbox leaks high-entropy screen and hardware parameters to scripts. AssistYu security products can help shield your endpoint from tracking and exploitation.<\/p>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <div class=\"mb-right\">\r\n                                    <a href=\"${prodUrl}\" target=\"_blank\" class=\"mb-btn mb-btn-action\">Secure Endpoint Now<\/a>\r\n                                    <a href=\"${servUrl}\" target=\"_blank\" class=\"mb-btn mb-btn-ghost\">Consult a Specialist<\/a>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>`;\r\n                } else {\r\n                    bannerWrap.innerHTML = `\r\n                        <div class=\"marketing-banner clean\">\r\n                            <div class=\"mb-inner\">\r\n                                <div class=\"mb-left\">\r\n                                    <div class=\"mb-badge-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><polyline points=\"9 11 11 13 15 9\"\/><\/svg><\/div>\r\n                                    <div>\r\n                                        <h4 class=\"mb-title\">Secure sandbox environment verified<\/h4>\r\n                                        <p class=\"mb-desc\">Your browser environment has strong tracker blocking and anonymous configuration. Keep it protected as tracking vectors evolve.<\/p>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <div class=\"mb-right\">\r\n                                    <a href=\"${prodUrl}\" target=\"_blank\" class=\"mb-btn mb-btn-action\">Defensive Products<\/a>\r\n                                    <a href=\"${servUrl}\" target=\"_blank\" class=\"mb-btn mb-btn-ghost\">Connect with Analyst<\/a>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>`;\r\n                }\r\n\r\n                document.getElementById('viewVerdict').scrollIntoView({ behavior: 'smooth' });\r\n            }\r\n\r\n            setInterval(() => {\r\n                const clock = $('#lastUpdate');\r\n                if (clock) { const d = new Date(); clock.textContent = pad2(d.getHours()) + ':' + pad2(d.getMinutes()) + ':' + pad2(d.getSeconds()); }\r\n            }, 1000);\r\n\r\n        })();\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<footer class=\"elementor-element elementor-element-c88d4bc e-con-full e-flex e-con e-parent\" data-id=\"c88d4bc\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-b2544b1 e-con-full e-flex e-con e-child\" data-id=\"b2544b1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-ddff025 e-con-full e-flex e-con e-child\" data-id=\"ddff025\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ddb24c0 elementor-widget elementor-widget-int-logo\" data-id=\"ddb24c0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"int-logo.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"tg-logo\">\r\n            <a href=\"https:\/\/assistyu.com\/\"><img decoding=\"async\" data-src=\"https:\/\/assistyu.com\/wp-content\/uploads\/2024\/03\/AssistYu-no-background-2.png\" alt=\"\" title=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 292px; --smush-placeholder-aspect-ratio: 292\/100;\"><\/a>\r\n        <\/div>\r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53066a0 elementor-mobile-align-center elementor-icon-list--layout-inline elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"53066a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/maps.app.goo.gl\/PnxnHJXGZ3isdPbH6\" target=\"_blank\" rel=\"noopener\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Estrategias de Marketing LE Paradise - AssistYu<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-739f384 e-con-full e-flex e-con e-child\" data-id=\"739f384\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-187d0ac e-con-full e-flex e-con e-child\" data-id=\"187d0ac\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ce1c4a1 elementor-mobile-align-center elementor-icon-list--layout-inline elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"ce1c4a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"tel:34951550227\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-phone-alt\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">+34 951 550 227<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"mailto:office@assistyu.com\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-envelope\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">office@assistyu.com<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/maps.app.goo.gl\/PnxnHJXGZ3isdPbH6\" target=\"_blank\" rel=\"noopener\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-map-marker-alt\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">C. Lope de Vega 60, 29631 Benalmadena<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0e1ccd1 elementor-icon-list--layout-inline elementor-align-center elementor-hidden-mobile elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"0e1ccd1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/assistyu.com\/services\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-greater-than-equal\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Services<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/assistyu.com\/security-products\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-greater-than-equal\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Products<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/assistyu.com\/small-business\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-greater-than-equal\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Small Business<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/assistyu.com\/partnerships\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-greater-than-equal\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Partnership<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/assistyu.com\/contact\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-greater-than-equal\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Contact Us<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-88439ba elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"88439ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3a6637d e-con-full e-flex e-con e-child\" data-id=\"3a6637d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b6633b2 e-con-full e-flex e-con e-child\" data-id=\"b6633b2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53ae8ac elementor-widget elementor-widget-int-footer-nav\" data-id=\"53ae8ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"int-footer-nav.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n        <div class=\"tg-copyright-right text-center text-md-end\">\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/security-insights\/\">Insights<\/a>\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/about-assistyu\/\">About Us<\/a>\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/documentation-and-guides\/\">Documentation<\/a>\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/consent\/\">Consent Agreement<\/a>\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/privacy-policy\/\">Privacy Policy<\/a>\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/legal-notice-terms-conditions\/\">Terms &amp; Conditions<\/a>\r\n                    <a class=\"text-anim-2\" href=\"https:\/\/assistyu.com\/delivery-refunds-policy\/\">Delivery &amp; Refunds<\/a>\r\n                <\/div>\r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b3b2e8 elementor-widget elementor-widget-text-editor\" data-id=\"3b3b2e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Copyright @ 2026 <a href=\"https:\/\/assistyu.com\/\">AssistYu<\/a>. All Rights Reserved<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/footer>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Browser Vulnerability Audit \u2014 Free Online Browser Security Scanner | AssistYu Browser Vulnerability Audit Browser &amp; Endpoint Vulnerability Audit Perform a comprehensive browser vulnerability audit to inspect live browser exposures, canvas fingerprinting, WebGL GPU unmasking, and local device parameters directly from your endpoint \u2014 100% client-side, zero server transmission. This browser security scanner reveals exactly [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7452,"parent":6769,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-7301","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/pages\/7301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/comments?post=7301"}],"version-history":[{"count":50,"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/pages\/7301\/revisions"}],"predecessor-version":[{"id":7496,"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/pages\/7301\/revisions\/7496"}],"up":[{"embeddable":true,"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/pages\/6769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/media\/7452"}],"wp:attachment":[{"href":"https:\/\/assistyu.com\/es\/wp-json\/wp\/v2\/media?parent=7301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}