// process file: split into chunks (1MB) and encrypt each, build token encryptBtn.addEventListener('click', async () => if (!currentFile) senderStatusDiv.innerHTML = "โ ๏ธ No file selected. Please choose a file."; return;
<!-- INTERACTIVE SECURE TRANSFER SIMULATOR (large files, vanilla crypto) --> <div class="transfer-lab"> <div class="lab-header"> <h2>๐ก Secure File Relay ยท Vanilla CipherStream</h2> <div class="secure-badge">๐ AES-GCM ยท ephemeral key ยท chunked verification</div> </div> <div class="file-zone"> <!-- Sender Panel --> <div class="sender-card"> <div class="card-title">๐ค SENDER ยท ENCRYPT & TRANSFER</div> <div class="input-group"> <label>๐ Select large file (any size up to 500MB demo)</label> <input type="file" id="fileInput" accept="*/*"> </div> <div class="file-info" id="fileMeta">๐ No file selected (max demo: ~500MB chunks but handles big)</div> <div class="flex-btns"> <button id="encryptAndSimulateBtn">๐ Encrypt + Generate Secure Link</button> <button id="resetSenderBtn" style="background:#1e1b2e;">๐๏ธ Reset</button> </div> <div class="transfer-status" id="senderStatus">โก Ready to encrypt. (Key derived locally)</div> </div> // process file: split into chunks (1MB) and