reaper-arcade-hub 1.0.6 โ 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/styles.css +9 -0
- package/index.html +19 -2
- package/js/app.js +79 -9
- package/js/security-shield.js +126 -0
- package/main/css/styles.css +9 -0
- package/main/index.html +19 -2
- package/main/js/app.js +79 -9
- package/main/js/security-shield.js +126 -0
- package/package.json +3 -2
- package/verify/css/styles.css +9 -0
- package/verify/js/security-shield.js +126 -0
package/css/styles.css
CHANGED
|
@@ -960,12 +960,21 @@ body {
|
|
|
960
960
|
flex: 1;
|
|
961
961
|
position: relative;
|
|
962
962
|
background: #000;
|
|
963
|
+
display: flex;
|
|
964
|
+
align-items: center;
|
|
965
|
+
justify-content: center;
|
|
966
|
+
width: 100%;
|
|
967
|
+
height: calc(100vh - 52px);
|
|
968
|
+
overflow: hidden;
|
|
963
969
|
}
|
|
964
970
|
|
|
965
971
|
.player-iframe {
|
|
966
972
|
width: 100%;
|
|
967
973
|
height: 100%;
|
|
968
974
|
border: none;
|
|
975
|
+
display: block;
|
|
976
|
+
background: #000;
|
|
977
|
+
outline: none;
|
|
969
978
|
}
|
|
970
979
|
|
|
971
980
|
.reaper-watermark {
|
package/index.html
CHANGED
|
@@ -588,7 +588,7 @@
|
|
|
588
588
|
</div>
|
|
589
589
|
</div>
|
|
590
590
|
<div class="player-frame-wrapper">
|
|
591
|
-
<iframe id="player-iframe" class="player-iframe" src="about:blank" allowfullscreen="true" allow="autoplay; fullscreen; gamepad"></iframe>
|
|
591
|
+
<iframe id="player-iframe" class="player-iframe" src="about:blank" allowfullscreen="true" allow="autoplay; fullscreen; gamepad; focus-without-user-activation; pointer-lock"></iframe>
|
|
592
592
|
<div class="reaper-watermark">REAPER HUB</div>
|
|
593
593
|
</div>
|
|
594
594
|
</div>
|
|
@@ -680,7 +680,7 @@
|
|
|
680
680
|
</button>
|
|
681
681
|
</div>
|
|
682
682
|
|
|
683
|
-
<div style="display: flex; justify-content: space-between; align-items: center; background: #040e1e; border: 1px solid var(--blue-border); padding: 0.85rem 1.15rem; border-radius: 8px; margin-bottom:
|
|
683
|
+
<div style="display: flex; justify-content: space-between; align-items: center; background: #040e1e; border: 1px solid var(--blue-border); padding: 0.85rem 1.15rem; border-radius: 8px; margin-bottom: 1rem; flex-wrap: wrap; gap: 1rem;">
|
|
684
684
|
<div style="display: flex; gap: 1.5rem; align-items: center;">
|
|
685
685
|
<div>
|
|
686
686
|
<span style="font-size: 0.7rem; color: #88aacc; text-transform: uppercase; display: block;">SHIELD STATUS</span>
|
|
@@ -703,6 +703,23 @@
|
|
|
703
703
|
</div>
|
|
704
704
|
</div>
|
|
705
705
|
|
|
706
|
+
<!-- Surveillance Honeypot Trap -->
|
|
707
|
+
<div style="background: #040e1e; border: 1.5px solid rgba(255, 170, 0, 0.4); padding: 0.85rem 1.15rem; border-radius: 8px; margin-bottom: 1.25rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0.75rem;">
|
|
708
|
+
<div>
|
|
709
|
+
<strong style="color: #ffd700; font-size: 0.92rem;">๐จ Surveillance Trap & Clean Notes Honeypot</strong>
|
|
710
|
+
<p style="color: #88aacc; font-size: 0.78rem; margin-top: 0.2rem;">If GoGuardian, Securly, or a teacher screen grabber probes this tab, immediately halts games and swaps to educational biology notes.</p>
|
|
711
|
+
</div>
|
|
712
|
+
<div style="display: flex; gap: 0.75rem; align-items: center;">
|
|
713
|
+
<label style="display: flex; align-items: center; gap: 0.4rem; cursor: pointer; color: #fff; font-size: 0.78rem; font-weight: 700;">
|
|
714
|
+
<input type="checkbox" id="auto-decoy-toggle" style="width: 18px; height: 18px; accent-color: #ffd700;" onchange="if(window.reaperShield) window.reaperShield.setAutoDecoy(this.checked)" checked>
|
|
715
|
+
AUTO-SWAP ON PROBE
|
|
716
|
+
</label>
|
|
717
|
+
<button class="btn-stealth" onclick="if(window.reaperShield) window.reaperShield.triggerSurveillanceHoneypot('GoGuardian Live Screen Sniper');" style="padding: 0.35rem 0.75rem; font-size: 0.72rem; color: #ffd700; border-color: #ffaa00;">
|
|
718
|
+
๐งช TEST HONEYPOT
|
|
719
|
+
</button>
|
|
720
|
+
</div>
|
|
721
|
+
</div>
|
|
722
|
+
|
|
706
723
|
<div style="font-size: 0.78rem; color: #88aacc; font-weight: 800; margin-bottom: 0.6rem; letter-spacing: 0.05em; text-transform: uppercase;">
|
|
707
724
|
DETECTED EXTENSIONS & SPY PROBES:
|
|
708
725
|
</div>
|
package/js/app.js
CHANGED
|
@@ -1705,6 +1705,71 @@ class ReaperHubApp {
|
|
|
1705
1705
|
}
|
|
1706
1706
|
}
|
|
1707
1707
|
|
|
1708
|
+
cleanAndOptimizeGameHTML(html) {
|
|
1709
|
+
if (!html || typeof html !== 'string') return '';
|
|
1710
|
+
let cleaned = html;
|
|
1711
|
+
|
|
1712
|
+
// 1. Strip sidebar ads and blocking overlays
|
|
1713
|
+
cleaned = cleaned.replace(/<div id="sidebarad1"[\s\S]*?<\/div>\s*<\/div>/gi, '');
|
|
1714
|
+
cleaned = cleaned.replace(/<div id="sidebarad2"[\s\S]*?<\/div>\s*<\/div>/gi, '');
|
|
1715
|
+
cleaned = cleaned.replace(/<style>[\s\S]*?#sidebarad1[\s\S]*?<\/style>/gi, '');
|
|
1716
|
+
|
|
1717
|
+
// 2. Inject high-performance responsive scaling, centering & click-focus engine
|
|
1718
|
+
const injectStyles = `
|
|
1719
|
+
<style id="reaper-game-enhancer">
|
|
1720
|
+
* { box-sizing: border-box; }
|
|
1721
|
+
html, body {
|
|
1722
|
+
margin: 0 !important;
|
|
1723
|
+
padding: 0 !important;
|
|
1724
|
+
width: 100vw !important;
|
|
1725
|
+
height: 100vh !important;
|
|
1726
|
+
overflow: hidden !important;
|
|
1727
|
+
background: #000 !important;
|
|
1728
|
+
display: flex !important;
|
|
1729
|
+
align-items: center !important;
|
|
1730
|
+
justify-content: center !important;
|
|
1731
|
+
}
|
|
1732
|
+
canvas, #canvas, #game, #game-container, #unity-container, #unity-canvas, .game-canvas, #c2canvas, embed, object {
|
|
1733
|
+
max-width: 100vw !important;
|
|
1734
|
+
max-height: 100vh !important;
|
|
1735
|
+
width: 100% !important;
|
|
1736
|
+
height: 100% !important;
|
|
1737
|
+
object-fit: contain !important;
|
|
1738
|
+
display: block !important;
|
|
1739
|
+
margin: auto !important;
|
|
1740
|
+
outline: none !important;
|
|
1741
|
+
pointer-events: auto !important;
|
|
1742
|
+
}
|
|
1743
|
+
#sidebarad1, #sidebarad2, [id*="sidebarad" i], [class*="sidebarad" i], [id*="google_ads" i], [id*="ad-container" i], [class*="ad-container" i] {
|
|
1744
|
+
display: none !important;
|
|
1745
|
+
visibility: hidden !important;
|
|
1746
|
+
width: 0 !important;
|
|
1747
|
+
height: 0 !important;
|
|
1748
|
+
pointer-events: none !important;
|
|
1749
|
+
z-index: -9999 !important;
|
|
1750
|
+
}
|
|
1751
|
+
</style>
|
|
1752
|
+
<script>
|
|
1753
|
+
// Neutralize ad popups & focus game canvas
|
|
1754
|
+
window.open = function() { return null; };
|
|
1755
|
+
window.addEventListener('load', function() {
|
|
1756
|
+
const c = document.querySelector('canvas') || document.querySelector('#game');
|
|
1757
|
+
if (c && c.focus) c.focus();
|
|
1758
|
+
});
|
|
1759
|
+
<\/script>
|
|
1760
|
+
`;
|
|
1761
|
+
|
|
1762
|
+
if (cleaned.includes('<head>')) {
|
|
1763
|
+
cleaned = cleaned.replace('<head>', '<head>' + injectStyles);
|
|
1764
|
+
} else if (cleaned.includes('<html>')) {
|
|
1765
|
+
cleaned = cleaned.replace('<html>', '<html><head>' + injectStyles + '</head>');
|
|
1766
|
+
} else {
|
|
1767
|
+
cleaned = injectStyles + cleaned;
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
return cleaned;
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1708
1773
|
async launchGame(gameId) {
|
|
1709
1774
|
const game = this.games.find(g => g.id === gameId);
|
|
1710
1775
|
if (!game) return;
|
|
@@ -1742,11 +1807,8 @@ class ReaperHubApp {
|
|
|
1742
1807
|
if (res.ok) {
|
|
1743
1808
|
let html = await res.text();
|
|
1744
1809
|
if (html && html.length > 50) {
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
iframe.srcdoc = html;
|
|
1749
|
-
if (statusBadge) statusBadge.textContent = 'ONLINE';
|
|
1810
|
+
iframe.srcdoc = this.cleanAndOptimizeGameHTML(html);
|
|
1811
|
+
if (statusBadge) statusBadge.textContent = 'ONLINE (60 FPS)';
|
|
1750
1812
|
return;
|
|
1751
1813
|
}
|
|
1752
1814
|
}
|
|
@@ -1754,8 +1816,16 @@ class ReaperHubApp {
|
|
|
1754
1816
|
console.warn("Direct fetch fallback:", err);
|
|
1755
1817
|
}
|
|
1756
1818
|
|
|
1757
|
-
|
|
1758
|
-
|
|
1819
|
+
// High-speed fallback directly via proxy
|
|
1820
|
+
try {
|
|
1821
|
+
const fallbackRes = await fetch(`https://raw.githubusercontent.com/gn-math/html/main/${filename}`);
|
|
1822
|
+
const fallbackHtml = await fallbackRes.text();
|
|
1823
|
+
iframe.srcdoc = this.cleanAndOptimizeGameHTML(fallbackHtml);
|
|
1824
|
+
if (statusBadge) statusBadge.textContent = 'ONLINE';
|
|
1825
|
+
} catch(e) {
|
|
1826
|
+
iframe.src = `https://fastly.jsdelivr.net/gh/gn-math/html@main/${filename}`;
|
|
1827
|
+
if (statusBadge) statusBadge.textContent = 'ONLINE';
|
|
1828
|
+
}
|
|
1759
1829
|
}
|
|
1760
1830
|
}
|
|
1761
1831
|
|
|
@@ -1858,7 +1928,7 @@ class ReaperHubApp {
|
|
|
1858
1928
|
<button onclick="document.getElementById('game-frame').contentWindow.location.reload()" class="btn-action">๐ RELOAD</button>
|
|
1859
1929
|
</div>
|
|
1860
1930
|
<div class="reaper-watermark">REAPER HUB</div>
|
|
1861
|
-
<iframe id="game-frame" allow="autoplay; fullscreen; gamepad" ${gameHtml ? '' : `src="https://
|
|
1931
|
+
<iframe id="game-frame" allow="autoplay; fullscreen; gamepad; focus-without-user-activation; pointer-lock" ${gameHtml ? '' : `src="https://raw.githubusercontent.com/gn-math/html/main/${filename}"`}></iframe>
|
|
1862
1932
|
</body>
|
|
1863
1933
|
</html>
|
|
1864
1934
|
`);
|
|
@@ -1866,7 +1936,7 @@ class ReaperHubApp {
|
|
|
1866
1936
|
|
|
1867
1937
|
if (gameHtml) {
|
|
1868
1938
|
const f = doc.getElementById('game-frame');
|
|
1869
|
-
if (f) f.srcdoc = gameHtml;
|
|
1939
|
+
if (f) f.srcdoc = this.cleanAndOptimizeGameHTML(gameHtml);
|
|
1870
1940
|
}
|
|
1871
1941
|
|
|
1872
1942
|
this.showToast("Game opened in about:blank tab with watermark & return controls.");
|
package/js/security-shield.js
CHANGED
|
@@ -404,6 +404,132 @@
|
|
|
404
404
|
this.autoShield = enabled;
|
|
405
405
|
localStorage.setItem('reaper_auto_shield', enabled ? 'true' : 'false');
|
|
406
406
|
}
|
|
407
|
+
|
|
408
|
+
setAutoDecoy(enabled) {
|
|
409
|
+
this.autoDecoyOnScan = enabled;
|
|
410
|
+
localStorage.setItem('reaper_auto_decoy_trap', enabled ? 'true' : 'false');
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
triggerSurveillanceHoneypot(spyName = "School Filter Probe") {
|
|
414
|
+
if (this.isDecoyActive) return;
|
|
415
|
+
this.isDecoyActive = true;
|
|
416
|
+
|
|
417
|
+
// 1. If currently playing a game, pause and close the game player
|
|
418
|
+
if (window.app && typeof window.app.closePlayer === 'function' && window.app.isPlayingGame) {
|
|
419
|
+
window.app.closePlayer();
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
this.originalTitle = document.title;
|
|
423
|
+
document.title = "Module 3: Cellular Biology & Genetics โ Student Notes";
|
|
424
|
+
|
|
425
|
+
let link = document.querySelector("link[rel*='icon']");
|
|
426
|
+
if (!link) {
|
|
427
|
+
link = document.createElement('link');
|
|
428
|
+
link.rel = 'shortcut icon';
|
|
429
|
+
document.head.appendChild(link);
|
|
430
|
+
}
|
|
431
|
+
this.originalFavicon = link.href;
|
|
432
|
+
link.href = "https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png";
|
|
433
|
+
|
|
434
|
+
let decoyOverlay = document.getElementById('surveillance-decoy-overlay');
|
|
435
|
+
if (!decoyOverlay) {
|
|
436
|
+
decoyOverlay = document.createElement('div');
|
|
437
|
+
decoyOverlay.id = 'surveillance-decoy-overlay';
|
|
438
|
+
decoyOverlay.style.position = 'fixed';
|
|
439
|
+
decoyOverlay.style.inset = '0';
|
|
440
|
+
decoyOverlay.style.width = '100vw';
|
|
441
|
+
decoyOverlay.style.height = '100vh';
|
|
442
|
+
decoyOverlay.style.background = '#ffffff';
|
|
443
|
+
decoyOverlay.style.color = '#1f1f1f';
|
|
444
|
+
decoyOverlay.style.zIndex = '9999999';
|
|
445
|
+
decoyOverlay.style.overflowY = 'auto';
|
|
446
|
+
decoyOverlay.style.fontFamily = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif';
|
|
447
|
+
document.body.appendChild(decoyOverlay);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
decoyOverlay.style.display = 'block';
|
|
451
|
+
decoyOverlay.innerHTML = `
|
|
452
|
+
<!-- Threat Alert Banner -->
|
|
453
|
+
<div style="background: #1e293b; color: #f8fafc; padding: 0.75rem 1.5rem; display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #ef4444; box-shadow: 0 4px 12px rgba(0,0,0,0.15);">
|
|
454
|
+
<div style="display: flex; align-items: center; gap: 0.75rem;">
|
|
455
|
+
<span style="background: #ef4444; color: #fff; padding: 0.2rem 0.55rem; border-radius: 4px; font-weight: 800; font-size: 0.75rem; letter-spacing: 0.05em;">SURVEILLANCE SCAN INTERCEPTED</span>
|
|
456
|
+
<span style="font-size: 0.85rem; color: #cbd5e1;">Extension scan detected: <strong style="color: #fca5a5;">${spyName}</strong>. All games paused & safely swapped to educational study notes.</span>
|
|
457
|
+
</div>
|
|
458
|
+
<button onclick="if(window.reaperShield) window.reaperShield.exitSurveillanceDecoy()" style="background: #0284c7; color: #ffffff; border: none; padding: 0.45rem 1.1rem; border-radius: 6px; font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: background 0.2s ease;">
|
|
459
|
+
โก RESUME REAPER HUB (SAFE)
|
|
460
|
+
</button>
|
|
461
|
+
</div>
|
|
462
|
+
|
|
463
|
+
<!-- Academic Portal Header -->
|
|
464
|
+
<header style="height: 60px; border-bottom: 1px solid #e2e8f0; display: flex; align-items: center; justify-content: space-between; padding: 0 2rem; background: #f8fafc;">
|
|
465
|
+
<div style="display: flex; align-items: center; gap: 1rem;">
|
|
466
|
+
<div style="font-weight: 800; color: #0f172a; font-size: 1.15rem; letter-spacing: -0.02em;">๐ National Student Learning Network</div>
|
|
467
|
+
<span style="font-size: 0.8rem; background: #e2e8f0; color: #475569; padding: 0.2rem 0.6rem; border-radius: 12px; font-weight: 600;">Biology 101-B</span>
|
|
468
|
+
</div>
|
|
469
|
+
<div style="font-size: 0.82rem; color: #64748b;">
|
|
470
|
+
Academic Year 2026 โข Term 1
|
|
471
|
+
</div>
|
|
472
|
+
</header>
|
|
473
|
+
|
|
474
|
+
<!-- Clean Study Notes Document Content (Zero Games / Zero Distractions) -->
|
|
475
|
+
<main style="max-width: 850px; margin: 2rem auto; padding: 0 1.5rem; line-height: 1.7; color: #334155;">
|
|
476
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 1rem; margin-bottom: 1.75rem;">
|
|
477
|
+
<h1 style="font-size: 2rem; color: #0f172a; margin: 0 0 0.5rem 0; font-weight: 700;">Chapter 4: Principles of Cellular Respiration & Mitosis</h1>
|
|
478
|
+
<p style="color: #64748b; font-size: 0.9rem; margin: 0;">Author: Department of Biological Sciences โข Last reviewed: Yesterday</p>
|
|
479
|
+
</div>
|
|
480
|
+
|
|
481
|
+
<section style="margin-bottom: 2rem;">
|
|
482
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">1. Introduction to Cellular Energy Systems</h2>
|
|
483
|
+
<p style="font-size: 0.95rem; margin-bottom: 1rem;">
|
|
484
|
+
Cellular respiration is the biochemical process through which organisms convert nutrients into adenosine triphosphate (ATP), subsequently releasing waste products. The catabolic pathways involved include glycolysis, the citric acid cycle (Krebs cycle), and oxidative phosphorylation.
|
|
485
|
+
</p>
|
|
486
|
+
<div style="background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 8px; padding: 1rem 1.25rem; font-size: 0.9rem; margin-bottom: 1rem;">
|
|
487
|
+
<strong style="color: #0f172a; display: block; margin-bottom: 0.35rem;">Key Chemical Equation:</strong>
|
|
488
|
+
<code>CโHโโOโ + 6Oโ โ 6COโ + 6HโO + ATP (~30โ32 ATP per glucose molecule)</code>
|
|
489
|
+
</div>
|
|
490
|
+
</section>
|
|
491
|
+
|
|
492
|
+
<section style="margin-bottom: 2rem;">
|
|
493
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">2. Stages of Mitotic Division</h2>
|
|
494
|
+
<p style="font-size: 0.95rem; margin-bottom: 0.75rem;">
|
|
495
|
+
Mitosis is the phase of the cell cycle during which duplicated chromosomes are separated into two distinct nuclei. The continuous process is structured into four primary sub-phases:
|
|
496
|
+
</p>
|
|
497
|
+
<ul style="padding-left: 1.5rem; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.92rem;">
|
|
498
|
+
<li><strong>Prophase:</strong> Chromatin condenses into visible chromosomes; nucleolus disappears and the mitotic spindle fibers begin formation.</li>
|
|
499
|
+
<li><strong>Metaphase:</strong> Chromosomes align precisely along the equatorial metaphase plate, anchored by kinetochore microtubules.</li>
|
|
500
|
+
<li><strong>Anaphase:</strong> Sister chromatids are pulled apart toward opposite poles by the shortening spindle fibers.</li>
|
|
501
|
+
<li><strong>Telophase & Cytokinesis:</strong> Nuclear envelopes re-form around the separated chromatids, and the cytoplasm cleaves to yield two genetically identical diploid daughter cells.</li>
|
|
502
|
+
</ul>
|
|
503
|
+
</section>
|
|
504
|
+
|
|
505
|
+
<section style="margin-bottom: 2.5rem;">
|
|
506
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">3. Recommended Study Questions</h2>
|
|
507
|
+
<ol style="padding-left: 1.5rem; display: flex; flex-direction: column; gap: 0.4rem; font-size: 0.92rem;">
|
|
508
|
+
<li>Explain how the electron transport chain generates a proton gradient across the inner mitochondrial membrane.</li>
|
|
509
|
+
<li>Contrast the chromosomal outcomes of mitosis versus meiosis in eukaryotic organisms.</li>
|
|
510
|
+
<li>Describe the regulatory role of cyclin-dependent kinases (CDKs) at cell cycle checkpoints.</li>
|
|
511
|
+
</ol>
|
|
512
|
+
</section>
|
|
513
|
+
</main>
|
|
514
|
+
`;
|
|
515
|
+
|
|
516
|
+
if (window.reaperSFX) window.reaperSFX.playClick();
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
exitSurveillanceDecoy() {
|
|
520
|
+
this.isDecoyActive = false;
|
|
521
|
+
const decoyOverlay = document.getElementById('surveillance-decoy-overlay');
|
|
522
|
+
if (decoyOverlay) decoyOverlay.style.display = 'none';
|
|
523
|
+
|
|
524
|
+
document.title = this.originalTitle || "REAPER // Games & Leaderboard";
|
|
525
|
+
const link = document.querySelector("link[rel*='icon']");
|
|
526
|
+
if (link && this.originalFavicon) {
|
|
527
|
+
link.href = this.originalFavicon;
|
|
528
|
+
}
|
|
529
|
+
if (window.app) {
|
|
530
|
+
window.app.showToast("Resumed Reaper Hub. Browser is secure.");
|
|
531
|
+
}
|
|
532
|
+
}
|
|
407
533
|
}
|
|
408
534
|
|
|
409
535
|
window.reaperShield = new ReaperSecurityShield();
|
package/main/css/styles.css
CHANGED
|
@@ -960,12 +960,21 @@ body {
|
|
|
960
960
|
flex: 1;
|
|
961
961
|
position: relative;
|
|
962
962
|
background: #000;
|
|
963
|
+
display: flex;
|
|
964
|
+
align-items: center;
|
|
965
|
+
justify-content: center;
|
|
966
|
+
width: 100%;
|
|
967
|
+
height: calc(100vh - 52px);
|
|
968
|
+
overflow: hidden;
|
|
963
969
|
}
|
|
964
970
|
|
|
965
971
|
.player-iframe {
|
|
966
972
|
width: 100%;
|
|
967
973
|
height: 100%;
|
|
968
974
|
border: none;
|
|
975
|
+
display: block;
|
|
976
|
+
background: #000;
|
|
977
|
+
outline: none;
|
|
969
978
|
}
|
|
970
979
|
|
|
971
980
|
.reaper-watermark {
|
package/main/index.html
CHANGED
|
@@ -588,7 +588,7 @@
|
|
|
588
588
|
</div>
|
|
589
589
|
</div>
|
|
590
590
|
<div class="player-frame-wrapper">
|
|
591
|
-
<iframe id="player-iframe" class="player-iframe" src="about:blank" allowfullscreen="true" allow="autoplay; fullscreen; gamepad"></iframe>
|
|
591
|
+
<iframe id="player-iframe" class="player-iframe" src="about:blank" allowfullscreen="true" allow="autoplay; fullscreen; gamepad; focus-without-user-activation; pointer-lock"></iframe>
|
|
592
592
|
<div class="reaper-watermark">REAPER HUB</div>
|
|
593
593
|
</div>
|
|
594
594
|
</div>
|
|
@@ -680,7 +680,7 @@
|
|
|
680
680
|
</button>
|
|
681
681
|
</div>
|
|
682
682
|
|
|
683
|
-
<div style="display: flex; justify-content: space-between; align-items: center; background: #040e1e; border: 1px solid var(--blue-border); padding: 0.85rem 1.15rem; border-radius: 8px; margin-bottom:
|
|
683
|
+
<div style="display: flex; justify-content: space-between; align-items: center; background: #040e1e; border: 1px solid var(--blue-border); padding: 0.85rem 1.15rem; border-radius: 8px; margin-bottom: 1rem; flex-wrap: wrap; gap: 1rem;">
|
|
684
684
|
<div style="display: flex; gap: 1.5rem; align-items: center;">
|
|
685
685
|
<div>
|
|
686
686
|
<span style="font-size: 0.7rem; color: #88aacc; text-transform: uppercase; display: block;">SHIELD STATUS</span>
|
|
@@ -703,6 +703,23 @@
|
|
|
703
703
|
</div>
|
|
704
704
|
</div>
|
|
705
705
|
|
|
706
|
+
<!-- Surveillance Honeypot Trap -->
|
|
707
|
+
<div style="background: #040e1e; border: 1.5px solid rgba(255, 170, 0, 0.4); padding: 0.85rem 1.15rem; border-radius: 8px; margin-bottom: 1.25rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0.75rem;">
|
|
708
|
+
<div>
|
|
709
|
+
<strong style="color: #ffd700; font-size: 0.92rem;">๐จ Surveillance Trap & Clean Notes Honeypot</strong>
|
|
710
|
+
<p style="color: #88aacc; font-size: 0.78rem; margin-top: 0.2rem;">If GoGuardian, Securly, or a teacher screen grabber probes this tab, immediately halts games and swaps to educational biology notes.</p>
|
|
711
|
+
</div>
|
|
712
|
+
<div style="display: flex; gap: 0.75rem; align-items: center;">
|
|
713
|
+
<label style="display: flex; align-items: center; gap: 0.4rem; cursor: pointer; color: #fff; font-size: 0.78rem; font-weight: 700;">
|
|
714
|
+
<input type="checkbox" id="auto-decoy-toggle" style="width: 18px; height: 18px; accent-color: #ffd700;" onchange="if(window.reaperShield) window.reaperShield.setAutoDecoy(this.checked)" checked>
|
|
715
|
+
AUTO-SWAP ON PROBE
|
|
716
|
+
</label>
|
|
717
|
+
<button class="btn-stealth" onclick="if(window.reaperShield) window.reaperShield.triggerSurveillanceHoneypot('GoGuardian Live Screen Sniper');" style="padding: 0.35rem 0.75rem; font-size: 0.72rem; color: #ffd700; border-color: #ffaa00;">
|
|
718
|
+
๐งช TEST HONEYPOT
|
|
719
|
+
</button>
|
|
720
|
+
</div>
|
|
721
|
+
</div>
|
|
722
|
+
|
|
706
723
|
<div style="font-size: 0.78rem; color: #88aacc; font-weight: 800; margin-bottom: 0.6rem; letter-spacing: 0.05em; text-transform: uppercase;">
|
|
707
724
|
DETECTED EXTENSIONS & SPY PROBES:
|
|
708
725
|
</div>
|
package/main/js/app.js
CHANGED
|
@@ -1705,6 +1705,71 @@ class ReaperHubApp {
|
|
|
1705
1705
|
}
|
|
1706
1706
|
}
|
|
1707
1707
|
|
|
1708
|
+
cleanAndOptimizeGameHTML(html) {
|
|
1709
|
+
if (!html || typeof html !== 'string') return '';
|
|
1710
|
+
let cleaned = html;
|
|
1711
|
+
|
|
1712
|
+
// 1. Strip sidebar ads and blocking overlays
|
|
1713
|
+
cleaned = cleaned.replace(/<div id="sidebarad1"[\s\S]*?<\/div>\s*<\/div>/gi, '');
|
|
1714
|
+
cleaned = cleaned.replace(/<div id="sidebarad2"[\s\S]*?<\/div>\s*<\/div>/gi, '');
|
|
1715
|
+
cleaned = cleaned.replace(/<style>[\s\S]*?#sidebarad1[\s\S]*?<\/style>/gi, '');
|
|
1716
|
+
|
|
1717
|
+
// 2. Inject high-performance responsive scaling, centering & click-focus engine
|
|
1718
|
+
const injectStyles = `
|
|
1719
|
+
<style id="reaper-game-enhancer">
|
|
1720
|
+
* { box-sizing: border-box; }
|
|
1721
|
+
html, body {
|
|
1722
|
+
margin: 0 !important;
|
|
1723
|
+
padding: 0 !important;
|
|
1724
|
+
width: 100vw !important;
|
|
1725
|
+
height: 100vh !important;
|
|
1726
|
+
overflow: hidden !important;
|
|
1727
|
+
background: #000 !important;
|
|
1728
|
+
display: flex !important;
|
|
1729
|
+
align-items: center !important;
|
|
1730
|
+
justify-content: center !important;
|
|
1731
|
+
}
|
|
1732
|
+
canvas, #canvas, #game, #game-container, #unity-container, #unity-canvas, .game-canvas, #c2canvas, embed, object {
|
|
1733
|
+
max-width: 100vw !important;
|
|
1734
|
+
max-height: 100vh !important;
|
|
1735
|
+
width: 100% !important;
|
|
1736
|
+
height: 100% !important;
|
|
1737
|
+
object-fit: contain !important;
|
|
1738
|
+
display: block !important;
|
|
1739
|
+
margin: auto !important;
|
|
1740
|
+
outline: none !important;
|
|
1741
|
+
pointer-events: auto !important;
|
|
1742
|
+
}
|
|
1743
|
+
#sidebarad1, #sidebarad2, [id*="sidebarad" i], [class*="sidebarad" i], [id*="google_ads" i], [id*="ad-container" i], [class*="ad-container" i] {
|
|
1744
|
+
display: none !important;
|
|
1745
|
+
visibility: hidden !important;
|
|
1746
|
+
width: 0 !important;
|
|
1747
|
+
height: 0 !important;
|
|
1748
|
+
pointer-events: none !important;
|
|
1749
|
+
z-index: -9999 !important;
|
|
1750
|
+
}
|
|
1751
|
+
</style>
|
|
1752
|
+
<script>
|
|
1753
|
+
// Neutralize ad popups & focus game canvas
|
|
1754
|
+
window.open = function() { return null; };
|
|
1755
|
+
window.addEventListener('load', function() {
|
|
1756
|
+
const c = document.querySelector('canvas') || document.querySelector('#game');
|
|
1757
|
+
if (c && c.focus) c.focus();
|
|
1758
|
+
});
|
|
1759
|
+
<\/script>
|
|
1760
|
+
`;
|
|
1761
|
+
|
|
1762
|
+
if (cleaned.includes('<head>')) {
|
|
1763
|
+
cleaned = cleaned.replace('<head>', '<head>' + injectStyles);
|
|
1764
|
+
} else if (cleaned.includes('<html>')) {
|
|
1765
|
+
cleaned = cleaned.replace('<html>', '<html><head>' + injectStyles + '</head>');
|
|
1766
|
+
} else {
|
|
1767
|
+
cleaned = injectStyles + cleaned;
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
return cleaned;
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1708
1773
|
async launchGame(gameId) {
|
|
1709
1774
|
const game = this.games.find(g => g.id === gameId);
|
|
1710
1775
|
if (!game) return;
|
|
@@ -1742,11 +1807,8 @@ class ReaperHubApp {
|
|
|
1742
1807
|
if (res.ok) {
|
|
1743
1808
|
let html = await res.text();
|
|
1744
1809
|
if (html && html.length > 50) {
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
iframe.srcdoc = html;
|
|
1749
|
-
if (statusBadge) statusBadge.textContent = 'ONLINE';
|
|
1810
|
+
iframe.srcdoc = this.cleanAndOptimizeGameHTML(html);
|
|
1811
|
+
if (statusBadge) statusBadge.textContent = 'ONLINE (60 FPS)';
|
|
1750
1812
|
return;
|
|
1751
1813
|
}
|
|
1752
1814
|
}
|
|
@@ -1754,8 +1816,16 @@ class ReaperHubApp {
|
|
|
1754
1816
|
console.warn("Direct fetch fallback:", err);
|
|
1755
1817
|
}
|
|
1756
1818
|
|
|
1757
|
-
|
|
1758
|
-
|
|
1819
|
+
// High-speed fallback directly via proxy
|
|
1820
|
+
try {
|
|
1821
|
+
const fallbackRes = await fetch(`https://raw.githubusercontent.com/gn-math/html/main/${filename}`);
|
|
1822
|
+
const fallbackHtml = await fallbackRes.text();
|
|
1823
|
+
iframe.srcdoc = this.cleanAndOptimizeGameHTML(fallbackHtml);
|
|
1824
|
+
if (statusBadge) statusBadge.textContent = 'ONLINE';
|
|
1825
|
+
} catch(e) {
|
|
1826
|
+
iframe.src = `https://fastly.jsdelivr.net/gh/gn-math/html@main/${filename}`;
|
|
1827
|
+
if (statusBadge) statusBadge.textContent = 'ONLINE';
|
|
1828
|
+
}
|
|
1759
1829
|
}
|
|
1760
1830
|
}
|
|
1761
1831
|
|
|
@@ -1858,7 +1928,7 @@ class ReaperHubApp {
|
|
|
1858
1928
|
<button onclick="document.getElementById('game-frame').contentWindow.location.reload()" class="btn-action">๐ RELOAD</button>
|
|
1859
1929
|
</div>
|
|
1860
1930
|
<div class="reaper-watermark">REAPER HUB</div>
|
|
1861
|
-
<iframe id="game-frame" allow="autoplay; fullscreen; gamepad" ${gameHtml ? '' : `src="https://
|
|
1931
|
+
<iframe id="game-frame" allow="autoplay; fullscreen; gamepad; focus-without-user-activation; pointer-lock" ${gameHtml ? '' : `src="https://raw.githubusercontent.com/gn-math/html/main/${filename}"`}></iframe>
|
|
1862
1932
|
</body>
|
|
1863
1933
|
</html>
|
|
1864
1934
|
`);
|
|
@@ -1866,7 +1936,7 @@ class ReaperHubApp {
|
|
|
1866
1936
|
|
|
1867
1937
|
if (gameHtml) {
|
|
1868
1938
|
const f = doc.getElementById('game-frame');
|
|
1869
|
-
if (f) f.srcdoc = gameHtml;
|
|
1939
|
+
if (f) f.srcdoc = this.cleanAndOptimizeGameHTML(gameHtml);
|
|
1870
1940
|
}
|
|
1871
1941
|
|
|
1872
1942
|
this.showToast("Game opened in about:blank tab with watermark & return controls.");
|
|
@@ -404,6 +404,132 @@
|
|
|
404
404
|
this.autoShield = enabled;
|
|
405
405
|
localStorage.setItem('reaper_auto_shield', enabled ? 'true' : 'false');
|
|
406
406
|
}
|
|
407
|
+
|
|
408
|
+
setAutoDecoy(enabled) {
|
|
409
|
+
this.autoDecoyOnScan = enabled;
|
|
410
|
+
localStorage.setItem('reaper_auto_decoy_trap', enabled ? 'true' : 'false');
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
triggerSurveillanceHoneypot(spyName = "School Filter Probe") {
|
|
414
|
+
if (this.isDecoyActive) return;
|
|
415
|
+
this.isDecoyActive = true;
|
|
416
|
+
|
|
417
|
+
// 1. If currently playing a game, pause and close the game player
|
|
418
|
+
if (window.app && typeof window.app.closePlayer === 'function' && window.app.isPlayingGame) {
|
|
419
|
+
window.app.closePlayer();
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
this.originalTitle = document.title;
|
|
423
|
+
document.title = "Module 3: Cellular Biology & Genetics โ Student Notes";
|
|
424
|
+
|
|
425
|
+
let link = document.querySelector("link[rel*='icon']");
|
|
426
|
+
if (!link) {
|
|
427
|
+
link = document.createElement('link');
|
|
428
|
+
link.rel = 'shortcut icon';
|
|
429
|
+
document.head.appendChild(link);
|
|
430
|
+
}
|
|
431
|
+
this.originalFavicon = link.href;
|
|
432
|
+
link.href = "https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png";
|
|
433
|
+
|
|
434
|
+
let decoyOverlay = document.getElementById('surveillance-decoy-overlay');
|
|
435
|
+
if (!decoyOverlay) {
|
|
436
|
+
decoyOverlay = document.createElement('div');
|
|
437
|
+
decoyOverlay.id = 'surveillance-decoy-overlay';
|
|
438
|
+
decoyOverlay.style.position = 'fixed';
|
|
439
|
+
decoyOverlay.style.inset = '0';
|
|
440
|
+
decoyOverlay.style.width = '100vw';
|
|
441
|
+
decoyOverlay.style.height = '100vh';
|
|
442
|
+
decoyOverlay.style.background = '#ffffff';
|
|
443
|
+
decoyOverlay.style.color = '#1f1f1f';
|
|
444
|
+
decoyOverlay.style.zIndex = '9999999';
|
|
445
|
+
decoyOverlay.style.overflowY = 'auto';
|
|
446
|
+
decoyOverlay.style.fontFamily = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif';
|
|
447
|
+
document.body.appendChild(decoyOverlay);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
decoyOverlay.style.display = 'block';
|
|
451
|
+
decoyOverlay.innerHTML = `
|
|
452
|
+
<!-- Threat Alert Banner -->
|
|
453
|
+
<div style="background: #1e293b; color: #f8fafc; padding: 0.75rem 1.5rem; display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #ef4444; box-shadow: 0 4px 12px rgba(0,0,0,0.15);">
|
|
454
|
+
<div style="display: flex; align-items: center; gap: 0.75rem;">
|
|
455
|
+
<span style="background: #ef4444; color: #fff; padding: 0.2rem 0.55rem; border-radius: 4px; font-weight: 800; font-size: 0.75rem; letter-spacing: 0.05em;">SURVEILLANCE SCAN INTERCEPTED</span>
|
|
456
|
+
<span style="font-size: 0.85rem; color: #cbd5e1;">Extension scan detected: <strong style="color: #fca5a5;">${spyName}</strong>. All games paused & safely swapped to educational study notes.</span>
|
|
457
|
+
</div>
|
|
458
|
+
<button onclick="if(window.reaperShield) window.reaperShield.exitSurveillanceDecoy()" style="background: #0284c7; color: #ffffff; border: none; padding: 0.45rem 1.1rem; border-radius: 6px; font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: background 0.2s ease;">
|
|
459
|
+
โก RESUME REAPER HUB (SAFE)
|
|
460
|
+
</button>
|
|
461
|
+
</div>
|
|
462
|
+
|
|
463
|
+
<!-- Academic Portal Header -->
|
|
464
|
+
<header style="height: 60px; border-bottom: 1px solid #e2e8f0; display: flex; align-items: center; justify-content: space-between; padding: 0 2rem; background: #f8fafc;">
|
|
465
|
+
<div style="display: flex; align-items: center; gap: 1rem;">
|
|
466
|
+
<div style="font-weight: 800; color: #0f172a; font-size: 1.15rem; letter-spacing: -0.02em;">๐ National Student Learning Network</div>
|
|
467
|
+
<span style="font-size: 0.8rem; background: #e2e8f0; color: #475569; padding: 0.2rem 0.6rem; border-radius: 12px; font-weight: 600;">Biology 101-B</span>
|
|
468
|
+
</div>
|
|
469
|
+
<div style="font-size: 0.82rem; color: #64748b;">
|
|
470
|
+
Academic Year 2026 โข Term 1
|
|
471
|
+
</div>
|
|
472
|
+
</header>
|
|
473
|
+
|
|
474
|
+
<!-- Clean Study Notes Document Content (Zero Games / Zero Distractions) -->
|
|
475
|
+
<main style="max-width: 850px; margin: 2rem auto; padding: 0 1.5rem; line-height: 1.7; color: #334155;">
|
|
476
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 1rem; margin-bottom: 1.75rem;">
|
|
477
|
+
<h1 style="font-size: 2rem; color: #0f172a; margin: 0 0 0.5rem 0; font-weight: 700;">Chapter 4: Principles of Cellular Respiration & Mitosis</h1>
|
|
478
|
+
<p style="color: #64748b; font-size: 0.9rem; margin: 0;">Author: Department of Biological Sciences โข Last reviewed: Yesterday</p>
|
|
479
|
+
</div>
|
|
480
|
+
|
|
481
|
+
<section style="margin-bottom: 2rem;">
|
|
482
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">1. Introduction to Cellular Energy Systems</h2>
|
|
483
|
+
<p style="font-size: 0.95rem; margin-bottom: 1rem;">
|
|
484
|
+
Cellular respiration is the biochemical process through which organisms convert nutrients into adenosine triphosphate (ATP), subsequently releasing waste products. The catabolic pathways involved include glycolysis, the citric acid cycle (Krebs cycle), and oxidative phosphorylation.
|
|
485
|
+
</p>
|
|
486
|
+
<div style="background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 8px; padding: 1rem 1.25rem; font-size: 0.9rem; margin-bottom: 1rem;">
|
|
487
|
+
<strong style="color: #0f172a; display: block; margin-bottom: 0.35rem;">Key Chemical Equation:</strong>
|
|
488
|
+
<code>CโHโโOโ + 6Oโ โ 6COโ + 6HโO + ATP (~30โ32 ATP per glucose molecule)</code>
|
|
489
|
+
</div>
|
|
490
|
+
</section>
|
|
491
|
+
|
|
492
|
+
<section style="margin-bottom: 2rem;">
|
|
493
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">2. Stages of Mitotic Division</h2>
|
|
494
|
+
<p style="font-size: 0.95rem; margin-bottom: 0.75rem;">
|
|
495
|
+
Mitosis is the phase of the cell cycle during which duplicated chromosomes are separated into two distinct nuclei. The continuous process is structured into four primary sub-phases:
|
|
496
|
+
</p>
|
|
497
|
+
<ul style="padding-left: 1.5rem; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.92rem;">
|
|
498
|
+
<li><strong>Prophase:</strong> Chromatin condenses into visible chromosomes; nucleolus disappears and the mitotic spindle fibers begin formation.</li>
|
|
499
|
+
<li><strong>Metaphase:</strong> Chromosomes align precisely along the equatorial metaphase plate, anchored by kinetochore microtubules.</li>
|
|
500
|
+
<li><strong>Anaphase:</strong> Sister chromatids are pulled apart toward opposite poles by the shortening spindle fibers.</li>
|
|
501
|
+
<li><strong>Telophase & Cytokinesis:</strong> Nuclear envelopes re-form around the separated chromatids, and the cytoplasm cleaves to yield two genetically identical diploid daughter cells.</li>
|
|
502
|
+
</ul>
|
|
503
|
+
</section>
|
|
504
|
+
|
|
505
|
+
<section style="margin-bottom: 2.5rem;">
|
|
506
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">3. Recommended Study Questions</h2>
|
|
507
|
+
<ol style="padding-left: 1.5rem; display: flex; flex-direction: column; gap: 0.4rem; font-size: 0.92rem;">
|
|
508
|
+
<li>Explain how the electron transport chain generates a proton gradient across the inner mitochondrial membrane.</li>
|
|
509
|
+
<li>Contrast the chromosomal outcomes of mitosis versus meiosis in eukaryotic organisms.</li>
|
|
510
|
+
<li>Describe the regulatory role of cyclin-dependent kinases (CDKs) at cell cycle checkpoints.</li>
|
|
511
|
+
</ol>
|
|
512
|
+
</section>
|
|
513
|
+
</main>
|
|
514
|
+
`;
|
|
515
|
+
|
|
516
|
+
if (window.reaperSFX) window.reaperSFX.playClick();
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
exitSurveillanceDecoy() {
|
|
520
|
+
this.isDecoyActive = false;
|
|
521
|
+
const decoyOverlay = document.getElementById('surveillance-decoy-overlay');
|
|
522
|
+
if (decoyOverlay) decoyOverlay.style.display = 'none';
|
|
523
|
+
|
|
524
|
+
document.title = this.originalTitle || "REAPER // Games & Leaderboard";
|
|
525
|
+
const link = document.querySelector("link[rel*='icon']");
|
|
526
|
+
if (link && this.originalFavicon) {
|
|
527
|
+
link.href = this.originalFavicon;
|
|
528
|
+
}
|
|
529
|
+
if (window.app) {
|
|
530
|
+
window.app.showToast("Resumed Reaper Hub. Browser is secure.");
|
|
531
|
+
}
|
|
532
|
+
}
|
|
407
533
|
}
|
|
408
534
|
|
|
409
535
|
window.reaperShield = new ReaperSecurityShield();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reaper-arcade-hub",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Reaper Hub - 788 High-Speed HTML5 Games, Realtime Chat, Private DMs, Playtime Leaderboard & Verification Gateway",
|
|
5
5
|
"main": "main/index.html",
|
|
6
6
|
"unpkg": "main/index.html",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"unblocked",
|
|
16
16
|
"arcade",
|
|
17
17
|
"leaderboard",
|
|
18
|
-
"dms"
|
|
18
|
+
"dms",
|
|
19
|
+
"shield"
|
|
19
20
|
],
|
|
20
21
|
"author": "asfsaf",
|
|
21
22
|
"license": "MIT",
|
package/verify/css/styles.css
CHANGED
|
@@ -960,12 +960,21 @@ body {
|
|
|
960
960
|
flex: 1;
|
|
961
961
|
position: relative;
|
|
962
962
|
background: #000;
|
|
963
|
+
display: flex;
|
|
964
|
+
align-items: center;
|
|
965
|
+
justify-content: center;
|
|
966
|
+
width: 100%;
|
|
967
|
+
height: calc(100vh - 52px);
|
|
968
|
+
overflow: hidden;
|
|
963
969
|
}
|
|
964
970
|
|
|
965
971
|
.player-iframe {
|
|
966
972
|
width: 100%;
|
|
967
973
|
height: 100%;
|
|
968
974
|
border: none;
|
|
975
|
+
display: block;
|
|
976
|
+
background: #000;
|
|
977
|
+
outline: none;
|
|
969
978
|
}
|
|
970
979
|
|
|
971
980
|
.reaper-watermark {
|
|
@@ -404,6 +404,132 @@
|
|
|
404
404
|
this.autoShield = enabled;
|
|
405
405
|
localStorage.setItem('reaper_auto_shield', enabled ? 'true' : 'false');
|
|
406
406
|
}
|
|
407
|
+
|
|
408
|
+
setAutoDecoy(enabled) {
|
|
409
|
+
this.autoDecoyOnScan = enabled;
|
|
410
|
+
localStorage.setItem('reaper_auto_decoy_trap', enabled ? 'true' : 'false');
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
triggerSurveillanceHoneypot(spyName = "School Filter Probe") {
|
|
414
|
+
if (this.isDecoyActive) return;
|
|
415
|
+
this.isDecoyActive = true;
|
|
416
|
+
|
|
417
|
+
// 1. If currently playing a game, pause and close the game player
|
|
418
|
+
if (window.app && typeof window.app.closePlayer === 'function' && window.app.isPlayingGame) {
|
|
419
|
+
window.app.closePlayer();
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
this.originalTitle = document.title;
|
|
423
|
+
document.title = "Module 3: Cellular Biology & Genetics โ Student Notes";
|
|
424
|
+
|
|
425
|
+
let link = document.querySelector("link[rel*='icon']");
|
|
426
|
+
if (!link) {
|
|
427
|
+
link = document.createElement('link');
|
|
428
|
+
link.rel = 'shortcut icon';
|
|
429
|
+
document.head.appendChild(link);
|
|
430
|
+
}
|
|
431
|
+
this.originalFavicon = link.href;
|
|
432
|
+
link.href = "https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png";
|
|
433
|
+
|
|
434
|
+
let decoyOverlay = document.getElementById('surveillance-decoy-overlay');
|
|
435
|
+
if (!decoyOverlay) {
|
|
436
|
+
decoyOverlay = document.createElement('div');
|
|
437
|
+
decoyOverlay.id = 'surveillance-decoy-overlay';
|
|
438
|
+
decoyOverlay.style.position = 'fixed';
|
|
439
|
+
decoyOverlay.style.inset = '0';
|
|
440
|
+
decoyOverlay.style.width = '100vw';
|
|
441
|
+
decoyOverlay.style.height = '100vh';
|
|
442
|
+
decoyOverlay.style.background = '#ffffff';
|
|
443
|
+
decoyOverlay.style.color = '#1f1f1f';
|
|
444
|
+
decoyOverlay.style.zIndex = '9999999';
|
|
445
|
+
decoyOverlay.style.overflowY = 'auto';
|
|
446
|
+
decoyOverlay.style.fontFamily = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif';
|
|
447
|
+
document.body.appendChild(decoyOverlay);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
decoyOverlay.style.display = 'block';
|
|
451
|
+
decoyOverlay.innerHTML = `
|
|
452
|
+
<!-- Threat Alert Banner -->
|
|
453
|
+
<div style="background: #1e293b; color: #f8fafc; padding: 0.75rem 1.5rem; display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #ef4444; box-shadow: 0 4px 12px rgba(0,0,0,0.15);">
|
|
454
|
+
<div style="display: flex; align-items: center; gap: 0.75rem;">
|
|
455
|
+
<span style="background: #ef4444; color: #fff; padding: 0.2rem 0.55rem; border-radius: 4px; font-weight: 800; font-size: 0.75rem; letter-spacing: 0.05em;">SURVEILLANCE SCAN INTERCEPTED</span>
|
|
456
|
+
<span style="font-size: 0.85rem; color: #cbd5e1;">Extension scan detected: <strong style="color: #fca5a5;">${spyName}</strong>. All games paused & safely swapped to educational study notes.</span>
|
|
457
|
+
</div>
|
|
458
|
+
<button onclick="if(window.reaperShield) window.reaperShield.exitSurveillanceDecoy()" style="background: #0284c7; color: #ffffff; border: none; padding: 0.45rem 1.1rem; border-radius: 6px; font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: background 0.2s ease;">
|
|
459
|
+
โก RESUME REAPER HUB (SAFE)
|
|
460
|
+
</button>
|
|
461
|
+
</div>
|
|
462
|
+
|
|
463
|
+
<!-- Academic Portal Header -->
|
|
464
|
+
<header style="height: 60px; border-bottom: 1px solid #e2e8f0; display: flex; align-items: center; justify-content: space-between; padding: 0 2rem; background: #f8fafc;">
|
|
465
|
+
<div style="display: flex; align-items: center; gap: 1rem;">
|
|
466
|
+
<div style="font-weight: 800; color: #0f172a; font-size: 1.15rem; letter-spacing: -0.02em;">๐ National Student Learning Network</div>
|
|
467
|
+
<span style="font-size: 0.8rem; background: #e2e8f0; color: #475569; padding: 0.2rem 0.6rem; border-radius: 12px; font-weight: 600;">Biology 101-B</span>
|
|
468
|
+
</div>
|
|
469
|
+
<div style="font-size: 0.82rem; color: #64748b;">
|
|
470
|
+
Academic Year 2026 โข Term 1
|
|
471
|
+
</div>
|
|
472
|
+
</header>
|
|
473
|
+
|
|
474
|
+
<!-- Clean Study Notes Document Content (Zero Games / Zero Distractions) -->
|
|
475
|
+
<main style="max-width: 850px; margin: 2rem auto; padding: 0 1.5rem; line-height: 1.7; color: #334155;">
|
|
476
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 1rem; margin-bottom: 1.75rem;">
|
|
477
|
+
<h1 style="font-size: 2rem; color: #0f172a; margin: 0 0 0.5rem 0; font-weight: 700;">Chapter 4: Principles of Cellular Respiration & Mitosis</h1>
|
|
478
|
+
<p style="color: #64748b; font-size: 0.9rem; margin: 0;">Author: Department of Biological Sciences โข Last reviewed: Yesterday</p>
|
|
479
|
+
</div>
|
|
480
|
+
|
|
481
|
+
<section style="margin-bottom: 2rem;">
|
|
482
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">1. Introduction to Cellular Energy Systems</h2>
|
|
483
|
+
<p style="font-size: 0.95rem; margin-bottom: 1rem;">
|
|
484
|
+
Cellular respiration is the biochemical process through which organisms convert nutrients into adenosine triphosphate (ATP), subsequently releasing waste products. The catabolic pathways involved include glycolysis, the citric acid cycle (Krebs cycle), and oxidative phosphorylation.
|
|
485
|
+
</p>
|
|
486
|
+
<div style="background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 8px; padding: 1rem 1.25rem; font-size: 0.9rem; margin-bottom: 1rem;">
|
|
487
|
+
<strong style="color: #0f172a; display: block; margin-bottom: 0.35rem;">Key Chemical Equation:</strong>
|
|
488
|
+
<code>CโHโโOโ + 6Oโ โ 6COโ + 6HโO + ATP (~30โ32 ATP per glucose molecule)</code>
|
|
489
|
+
</div>
|
|
490
|
+
</section>
|
|
491
|
+
|
|
492
|
+
<section style="margin-bottom: 2rem;">
|
|
493
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">2. Stages of Mitotic Division</h2>
|
|
494
|
+
<p style="font-size: 0.95rem; margin-bottom: 0.75rem;">
|
|
495
|
+
Mitosis is the phase of the cell cycle during which duplicated chromosomes are separated into two distinct nuclei. The continuous process is structured into four primary sub-phases:
|
|
496
|
+
</p>
|
|
497
|
+
<ul style="padding-left: 1.5rem; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.92rem;">
|
|
498
|
+
<li><strong>Prophase:</strong> Chromatin condenses into visible chromosomes; nucleolus disappears and the mitotic spindle fibers begin formation.</li>
|
|
499
|
+
<li><strong>Metaphase:</strong> Chromosomes align precisely along the equatorial metaphase plate, anchored by kinetochore microtubules.</li>
|
|
500
|
+
<li><strong>Anaphase:</strong> Sister chromatids are pulled apart toward opposite poles by the shortening spindle fibers.</li>
|
|
501
|
+
<li><strong>Telophase & Cytokinesis:</strong> Nuclear envelopes re-form around the separated chromatids, and the cytoplasm cleaves to yield two genetically identical diploid daughter cells.</li>
|
|
502
|
+
</ul>
|
|
503
|
+
</section>
|
|
504
|
+
|
|
505
|
+
<section style="margin-bottom: 2.5rem;">
|
|
506
|
+
<h2 style="font-size: 1.25rem; color: #1e293b; border-left: 4px solid #0284c7; padding-left: 0.75rem; margin-bottom: 0.75rem;">3. Recommended Study Questions</h2>
|
|
507
|
+
<ol style="padding-left: 1.5rem; display: flex; flex-direction: column; gap: 0.4rem; font-size: 0.92rem;">
|
|
508
|
+
<li>Explain how the electron transport chain generates a proton gradient across the inner mitochondrial membrane.</li>
|
|
509
|
+
<li>Contrast the chromosomal outcomes of mitosis versus meiosis in eukaryotic organisms.</li>
|
|
510
|
+
<li>Describe the regulatory role of cyclin-dependent kinases (CDKs) at cell cycle checkpoints.</li>
|
|
511
|
+
</ol>
|
|
512
|
+
</section>
|
|
513
|
+
</main>
|
|
514
|
+
`;
|
|
515
|
+
|
|
516
|
+
if (window.reaperSFX) window.reaperSFX.playClick();
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
exitSurveillanceDecoy() {
|
|
520
|
+
this.isDecoyActive = false;
|
|
521
|
+
const decoyOverlay = document.getElementById('surveillance-decoy-overlay');
|
|
522
|
+
if (decoyOverlay) decoyOverlay.style.display = 'none';
|
|
523
|
+
|
|
524
|
+
document.title = this.originalTitle || "REAPER // Games & Leaderboard";
|
|
525
|
+
const link = document.querySelector("link[rel*='icon']");
|
|
526
|
+
if (link && this.originalFavicon) {
|
|
527
|
+
link.href = this.originalFavicon;
|
|
528
|
+
}
|
|
529
|
+
if (window.app) {
|
|
530
|
+
window.app.showToast("Resumed Reaper Hub. Browser is secure.");
|
|
531
|
+
}
|
|
532
|
+
}
|
|
407
533
|
}
|
|
408
534
|
|
|
409
535
|
window.reaperShield = new ReaperSecurityShield();
|