import React, { useState, useEffect, useRef } from 'react'; // ============ CRYPTO COIN VISUALS (realistic SVG) ============ const Coins = { btc: () => ( ), eth: () => ( ), usdc: () => ( $ ), usdt: () => ( ), ltc: () => ( Ł ), lightning: () => ( ) }; // ============ WALLET LOGOS (real brand SVGs) ============ const WalletLogos = { metamask: () => ( ), walletconnect: () => ( ), coinbase: () => ( ), phantom: () => ( ), trust: () => ( ), ledger: () => ( ), rainbow: () => ( ), lightningwallet: () => ( ) }; // ============ ISOMETRIC ACTIVE CATEGORY ILLUSTRATIONS ============ const CatArt = ({ type, size = 120 }) => { const arts = { gift: ( {/\* Isometric box — 3 faces \*/} {/\* Left face darker \*/} {/\* Right face \*/} {/\* Top face lighter \*/} {/\* Ribbon vertical on top \*/} {/\* Ribbon on front-left \*/} {/\* Ribbon on front-right \*/} {/\* Bow \*/} {/\* Sparkles \*/} ), phone: ( {/\* Phone 3D side \*/} {/\* Phone front \*/} {/\* Screen \*/} {/\* Notch \*/} {/\* Signal waves (animated via CSS) \*/} {/\* Money symbol big \*/} $ {/\* Dots at bottom \*/} {/\* Sparkles around \*/} ), globe: ( {/\* Orbit ring behind \*/} {/\* Sphere \*/} {/\* Continents — more vivid \*/} {/\* Highlight \*/} {/\* Location pins \*/} {/\* Orbit ring front \*/} {/\* Satellite \*/} ), bolt: ( {/\* Glow halo \*/} {/\* Main bolt — chunky \*/} {/\* Inner highlight \*/} {/\* Energy particles \*/} {/\* Lines \*/} ), gamepad: ( {/\* Body \*/} {/\* Top highlight \*/} {/\* Left grip shadow \*/} {/\* Analog stick left \*/} {/\* D-pad \*/} {/\* ABXY \*/} Y A B X {/\* Center logo \*/} {/\* Sparkle effects \*/} ), play: ( {/\* Stack of screens — back \*/} {/\* Main screen \*/} {/\* Top reflection \*/} {/\* Film strip edges \*/} {/\* Play triangle \*/} {/\* Progress bar \*/} {/\* Sparkles \*/} ), plane: ( {/\* Cloud back \*/} {/\* Main fuselage \*/} {/\* Wings — triangular \*/} {/\* Tail \*/} {/\* Windows \*/} {/\* Cockpit \*/} {/\* Trail \*/} {/\* Stars \*/} ), bag: ( {/\* Bag body \*/} {/\* Top dark rim \*/} {/\* Left highlight \*/} {/\* Handles \*/} {/\* Tag \*/} -50% {/\* String \*/} {/\* Shopping items poking \*/} {/\* Hearts on bag \*/} {/\* Sparkles \*/} ) }; return arts\[type] || null; }; // ============ FLOATING GIFT CARD (realistic) ============ const MiniGiftCard = ({ brand, bg, logo, amount, rot, x, y, delay, size = 1 }) => (
{/\* Chip \*/}
ORAVIXA ✦
{/\* Brand name \*/}
{logo}
{/\* Amount + brand \*/}
{amount}
•••• 2026
); // ============ MAIN APP ============ export default function OravixaApp() { const \[showWalletModal, setShowWalletModal] = useState(false); const \[showPaymentModal, setShowPaymentModal] = useState(false); const \[legalPage, setLegalPage] = useState(null); const \[walletConnected, setWalletConnected] = useState(false); const \[walletAddress, setWalletAddress] = useState(''); const \[mobileMenu, setMobileMenu] = useState(false); const categories = \[ { id: 'gift', name: 'Gift Cards', color: '#ff5722', count: '2,100+ brands', desc: 'Amazon, Apple, Nike \& more', art: 'gift' }, { id: 'mobile', name: 'Mobile Refills', color: '#d4ff3a', count: '180 countries', desc: 'Top up any phone instantly', art: 'phone' }, { id: 'esim', name: 'eSIMs', color: '#3d5afe', count: 'Instant activation', desc: 'Travel-ready data plans', art: 'globe' }, { id: 'bills', name: 'Bills', color: '#ff7eb3', count: 'Global coverage', desc: 'Electric, water, internet', art: 'bolt' }, { id: 'gaming', name: 'Gaming', color: '#7c4dff', count: '400+ titles', desc: 'Steam, PSN, Xbox, Nintendo', art: 'gamepad' }, { id: 'streaming', name: 'Streaming', color: '#d4ff3a', count: '50+ services', desc: 'Netflix, Spotify, Disney+', art: 'play' }, { id: 'travel', name: 'Travel', color: '#06c167', count: 'Worldwide', desc: 'Airbnb, Booking, Uber', art: 'plane' }, { id: 'shopping', name: 'Shopping', color: '#0a0a0a', count: '1,500+ stores', desc: 'Amazon, Nike, IKEA', art: 'bag' } ]; const cryptoOptions = \[ { id: 'btc', name: 'Bitcoin', code: 'BTC', color: '#f7931a', logoKey: 'btc' }, { id: 'eth', name: 'Ethereum', code: 'ETH', color: '#627eea', logoKey: 'eth' }, { id: 'usdc', name: 'USD Coin', code: 'USDC', color: '#2775ca', logoKey: 'usdc' }, { id: 'usdt', name: 'Tether', code: 'USDT', color: '#26a17b', logoKey: 'usdt' }, { id: 'ltc', name: 'Litecoin', code: 'LTC', color: '#a6a9aa', logoKey: 'ltc' }, { id: 'lightning', name: 'Lightning', code: 'LN', color: '#fbc02d', logoKey: 'lightning' }, { id: 'bnb', name: 'Binance Coin', code: 'BNB', color: '#f3ba2f', logoKey: 'btc' }, { id: 'sol', name: 'Solana', code: 'SOL', color: '#9945ff', logoKey: 'eth' }, { id: 'xrp', name: 'XRP', code: 'XRP', color: '#000', logoKey: 'ltc' }, { id: 'doge', name: 'Dogecoin', code: 'DOGE', color: '#c2a633', logoKey: 'btc' }, { id: 'dai', name: 'DAI', code: 'DAI', color: '#f5ac37', logoKey: 'usdc' }, { id: 'matic', name: 'Polygon', code: 'MATIC', color: '#8247e5', logoKey: 'eth' } ]; const wallets = \[ { id: 'metamask', name: 'MetaMask', subtitle: '30M+ users worldwide', logoKey: 'metamask', popular: true }, { id: 'walletconnect', name: 'WalletConnect', subtitle: 'Connect 400+ wallets', logoKey: 'walletconnect' }, { id: 'coinbase', name: 'Coinbase Wallet', subtitle: 'Easy \& beginner-friendly', logoKey: 'coinbase', popular: true }, { id: 'trust', name: 'Trust Wallet', subtitle: 'Mobile-first security', logoKey: 'trust' }, { id: 'phantom', name: 'Phantom', subtitle: 'Solana \& multichain', logoKey: 'phantom' }, { id: 'rainbow', name: 'Rainbow', subtitle: 'Ethereum focused', logoKey: 'rainbow' }, { id: 'ledger', name: 'Ledger', subtitle: 'Hardware wallet', logoKey: 'ledger' }, { id: 'lightningwallet', name: 'Lightning Wallet', subtitle: 'Instant BTC payments', logoKey: 'lightningwallet' } ]; // Real Unsplash photos (verified hotlinking allowed via Unsplash policy) const heroCards = \[ { brand: 'AMAZON', amount: '$100', bg: 'linear-gradient(135deg,#232F3E,#131A22)', x: 4, y: 14, rot: -14, delay: 0, size: 0.85 }, { brand: 'NETFLIX', amount: '$50', bg: 'linear-gradient(135deg,#141414,#000)', x: 82, y: 18, rot: 12, delay: 1.2, size: 0.8 }, { brand: 'APPLE', amount: '$200', bg: 'linear-gradient(135deg,#2a2a2a,#000)', x: 6, y: 66, rot: 16, delay: 2.5, size: 0.78 }, { brand: 'SPOTIFY', amount: '$30', bg: 'linear-gradient(135deg,#1DB954,#0a7a30)', x: 80, y: 70, rot: -10, delay: 3.8, size: 0.75 } ]; const connectWallet = (w) => { setWalletConnected(true); setWalletAddress('0x' + Math.random().toString(16).slice(2, 8) + '...' + Math.random().toString(16).slice(2, 6)); setShowWalletModal(false); }; useEffect(() => { const link = document.createElement('link'); link.href = 'https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600;700;800\&family=Fraunces:ital,wght@0,400;0,900;1,400;1,900\&family=JetBrains+Mono:wght@400;500\&display=swap'; link.rel = 'stylesheet'; document.head.appendChild(link); const style = document.createElement('style'); style.textContent = ` @keyframes float { 0%,100% { transform: rotate(var(--rot)) translateY(0); } 50% { transform: rotate(var(--rot)) translateY(-12px); } } @keyframes floatSlow { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-8px) rotate(3deg); } } @keyframes scroll4d { from { transform: translate3d(0,0,0) rotateX(55deg) rotateZ(-15deg); } to { transform: translate3d(0,-50%,0) rotateX(55deg) rotateZ(-15deg); } } @keyframes cardFlip { 0%,100% { transform: rotateY(0deg); } 50% { transform: rotateY(20deg); } } @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } } @keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes modalIn { from { opacity: 0; transform: scale(0.92) translateY(20px); } to { opacity: 1; transform: scale(1) translateY(0); } } @keyframes backdropIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes spin { from { transform: rotate(0); } to { transform: rotate(360deg); } } \* { box-sizing: border-box; } body { margin: 0; } button { font-family: inherit; } .btn { font-weight: 600; font-size: 14px; padding: 12px 22px; border-radius: 100px; border: 2px solid transparent; cursor: pointer; transition: all 0.2s cubic-bezier(0.34,1.56,0.64,1); } .btn-primary { background: #0a0a0a; color: #f5f1e8; font-weight: 700; } .btn-primary:hover { background: #ff5722; transform: translate(-2px,-2px); box-shadow: 4px 4px 0 #0a0a0a; } .btn-accent { background: #ff5722; color: #fff; font-weight: 700; } .btn-accent:hover { transform: translate(-2px,-2px); box-shadow: 4px 4px 0 #0a0a0a; } .btn-outline { border: 2px solid #0a0a0a; color: #0a0a0a; background: #f5f1e8; } .btn-outline:hover { background: #0a0a0a; color: #f5f1e8; transform: translate(-2px,-2px); box-shadow: 4px 4px 0 #ff5722; } .nav-link { color: #0a0a0a; padding: 8px 14px; border-radius: 100px; transition: all 0.2s; font-size: 14px; font-weight: 500; cursor: pointer; background: transparent; border: none; } .nav-link:hover { background: #0a0a0a; color: #f5f1e8; } .cat-card { transition: all 0.4s cubic-bezier(0.34,1.56,0.64,1); cursor: pointer; } .cat-card:hover { transform: translate(-5px,-5px); box-shadow: 10px 10px 0 #0a0a0a; } .cat-card:hover .cat-art-wrap { transform: scale(1.1) rotate(-5deg); } .cat-art-wrap { transition: transform 0.5s cubic-bezier(0.34,1.56,0.64,1); animation: floatSlow 4s ease-in-out infinite; } .wallet-btn { transition: all 0.2s; } .wallet-btn:hover { background: #0a0a0a !important; color: #f5f1e8 !important; transform: translateX(4px); } .wallet-btn:hover .wallet-logo-bg { background: #f5f1e8 !important; } .coin-btn { transition: all 0.2s cubic-bezier(0.34,1.56,0.64,1); } .coin-btn:hover { transform: translate(-2px,-2px); box-shadow: 4px 4px 0 #0a0a0a; } .marquee-track { animation: marquee 30s linear infinite; } .coin-spin { animation: spin 12s linear infinite; } @keyframes logoPulse { 0%,100% { transform: translate(-50%,-50%) scale(1); } 50% { transform: translate(-50%,-50%) scale(1.08); } } @keyframes logoRotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @media (max-width: 900px) { .hide-mobile { display: none !important; } .show-mobile { display: flex !important; } .hero-section { padding: 40px 20px 60px !important; } .hero-title { font-size: clamp(42px, 11vw, 72px) !important; } .hero-sub { font-size: 15px !important; } .hero-cards-wrap { display: none !important; } .cat-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 10px !important; } .cat-inner { padding: 18px !important; } .cat-art-wrap svg { width: 72px !important; height: 72px !important; } .cat-name { font-size: 17px !important; } .cat-desc { font-size: 11px !important; } .stats-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 20px !important; padding: 36px 18px !important; } .stat-num { font-size: 42px !important; } .section-pad { padding: 48px 18px !important; } .section-title { font-size: clamp(30px, 8vw, 48px) !important; } .step-grid { grid-template-columns: 1fr !important; } .footer-grid { grid-template-columns: 1fr !important; } .cta-padding { padding: 48px 24px !important; } .coins-grid { grid-template-columns: repeat(2, 1fr) !important; } .wallet-grid { grid-template-columns: 1fr !important; } .modal-pad { padding: 24px !important; } .nav-pad { padding: 12px 14px !important; } .trust-grid { grid-template-columns: 1fr !important; } .press-grid { flex-wrap: wrap; gap: 20px !important; } .value-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 10px !important; } .compare-head > div, .compare-row > div { padding: 12px 10px !important; font-size: 12px !important; } .btn-primary { padding: 8px 12px !important; font-size: 12px !important; } } @media (max-width: 420px) { .value-grid { grid-template-columns: 1fr !important; } .stats-grid { grid-template-columns: 1fr !important; } .coins-grid { grid-template-columns: repeat(2, 1fr) !important; } } `; document.head.appendChild(style); return () => { document.head.removeChild(style); document.head.removeChild(link); }; }, \[]); return (
{/\* 4D BACKGROUND GIFT CARDS \*/}
{Array.from({ length: 40 }).map((\_, i) => { const gradients = \[ 'linear-gradient(135deg,#232F3E,#131A22)', 'linear-gradient(135deg,#141414,#000)', 'linear-gradient(135deg,#1DB954,#0a7a30)', 'linear-gradient(135deg,#2a2a2a,#000)', 'linear-gradient(135deg,#E50914,#8b0000)', 'linear-gradient(135deg,#FF5A5F,#c92e34)', 'linear-gradient(135deg,#171a21,#2a475e)', 'linear-gradient(135deg,#003791,#0070d1)' ]; const brands = \['AMAZON', 'NETFLIX', 'SPOTIFY', 'APPLE', 'STEAM', 'AIRBNB', 'NIKE', 'PSN']; const amounts = \['$100', '$50', '$25', '$200', '$75', '$500']; const idx = i % 8; return (
ORAVIXA ✦
{brands\[idx]}
{amounts\[i % 6]}
•••• 2026
); })}
{/\* Content wrapper \*/}
{/\* TICKER \*/}
{\[1,2].map(i => (
{\['⚡ Lightning ready', '🔒 Zero KYC', '🌍 180 countries', '✨ 4,200+ brands', '💨 60-sec delivery', '⭐ 4.8 Trustpilot'].map(t => ( {t} ))}
))}
{/\* NAV \*/} {/\* HERO \*/}
{/\* Background blobs \*/}
{/\* Floating gift cards \*/}
{heroCards.map((c, i) => (
ORAVIXA ✦
{c.brand}
{c.amount}
•••• 2026
))}
{/\* Hero content \*/}
Live · 2,847 orders today

Spend crypto
like cash .

Gift cards, mobile refills, eSIMs, bills — paid with Bitcoin, USDC \& 50+ coins. No bank. No KYC.

★★★★★ 4.8 · 12M+ ORDERS DELIVERED
{/\* STATS \*/}
{\[ { num: '4.2K', label: 'Brands', color: '#ff5722' }, { num: '180', label: 'Countries', color: '#d4ff3a' }, { num: '12M+', label: 'Orders', color: '#3d5afe' }, { num: '4.8★', label: 'Rating', color: '#d4ff3a' } ].map((s, i) => (
{s.num}
{s.label}
))}
{/\* CATEGORIES \*/}
CATEGORIES

Shop everything.

Eight categories. Thousands of options. All paid with crypto.

{categories.map(cat => { const isDark = \['#0a0a0a', '#ff5722', '#3d5afe', '#7c4dff'].includes(cat.color); const textColor = isDark ? '#f5f1e8' : '#0a0a0a'; const dimColor = isDark ? 'rgba(245,241,232,0.65)' : 'rgba(10,10,10,0.6)'; return (
setShowPaymentModal(true)}>
{/\* 3D Art \*/}

{cat.name}

{cat.desc}

{cat.count}
); })}
{/\* HOW IT WORKS \*/}
HOW IT WORKS

Three steps. That's it.

{\[ { num: '01', title: 'Pick what you need', desc: 'Browse 4,200+ brands across gift cards, mobile refills, eSIMs, and bills. No account required.', bg: '#ff7eb3' }, { num: '02', title: 'Pay with crypto', desc: 'Bitcoin, Lightning, USDC, ETH — your choice. Scan a QR, confirm. Prices locked in.', bg: '#d4ff3a' }, { num: '03', title: 'Receive instantly', desc: 'Codes hit your email. Refills land on the phone. Under 60 seconds, every time.', bg: '#d4ff3a' } ].map((s, i) => (
{s.num}

{s.title}

{s.desc}

))}
{/\* TRUST \*/}
TRUSTED

Built for business.

{\[ { title: 'Bank-level security', desc: 'SSL encryption, PCI DSS compliant. No KYC. No tracking. Your keys stay with you.', icon: ( ) }, { title: '60-second delivery', desc: 'Average delivery: 47 seconds. Faster than a bank transfer. Faster than everything.', icon: ( ) }, { title: '12M+ orders', desc: 'Serving millions since 2018. 99.98% uptime. 4.8★ average rating.', icon: ( ) } ].map((t, i) => (
{t.icon}

{t.title}

{t.desc}

))}

AS FEATURED IN

{\['FORBES', 'TECHCRUNCH', 'BLOOMBERG', 'COINDESK', 'WIRED'].map(p => (
{p}
))}
{/\* REVIEWS \*/}
REVIEWS

Loved by millions.

Trustpilot ★★★★★ 4.8/5 · 48,291 reviews
{\[ { name: 'Sarah K.', loc: 'Morocco', stars: 5, text: 'Bought a Netflix gift card with Bitcoin in under 30 seconds. Unbelievable experience.', date: '2 days ago', avatar: '#ff5722' }, { name: 'James T.', loc: 'USA', stars: 5, text: 'Finally a way to spend crypto on real things. Used it for my Amazon order, works flawlessly.', date: '5 days ago', avatar: '#3d5afe' }, { name: 'Ahmed M.', loc: 'UAE', stars: 5, text: 'No KYC, no nonsense. This is what crypto was meant for. Instant delivery every single time.', date: '1 week ago', avatar: '#d4ff3a' }, { name: 'Maya L.', loc: 'Germany', stars: 5, text: 'Used my USDC for a Steam gift card. My gamer cousin was thrilled. Super easy UI.', date: '1 week ago', avatar: '#7c4dff' }, { name: 'Leila B.', loc: 'France', stars: 5, text: 'Had an issue, support replied in 3 minutes. Refunded instantly. Real humans, real service.', date: '2 weeks ago', avatar: '#ff7eb3' }, { name: 'Omar R.', loc: 'Egypt', stars: 5, text: 'Used Lightning Network for a $200 Apple gift card. Paid 3 cents in fees. Mind blown.', date: '3 weeks ago', avatar: '#d4ff3a' } ].map((r, i) => (
{'★'.repeat(r.stars)}

"{r.text}"

{r.name.charAt(0)}
{r.name}
{r.loc} · {r.date}
✓ VERIFIED
))}
{/\* WHY ORAVIXA (vs competitors) \*/}
WHY ORAVIXA

Why us, not them?

We built Oravixa because we hated the alternatives. Here's what makes us different.

Feature
Oravixa
Others
{\[ { f: 'Instant delivery (< 60 sec)', us: true, them: 'Sometimes' }, { f: 'No KYC required', us: true, them: false }, { f: '50+ cryptocurrencies accepted', us: true, them: '2–5 only' }, { f: 'Lightning Network support', us: true, them: false }, { f: '5% crypto discount', us: true, them: false }, { f: '24/7 live human support', us: true, them: 'Bots only' }, { f: 'Full refund guarantee', us: true, them: 'Case-by-case' }, { f: 'Hidden fees', us: false, them: true } ].map((row, i) => (
{row.f}
{row.us === true ? : }
{row.them === true ? : row.them === false ? : row.them}
))}
{/\* VALUE PROPS — what you get \*/}
WHAT YOU GET

More than a store.

{\[ { title: '5% back on every order', desc: 'Pay with crypto, get 5% discount automatically. No codes, no signup.', bg: '#d4ff3a' }, { title: 'Buyer protection', desc: 'Didn\\'t get your code? Full refund in 24 hours. Zero questions asked.', bg: '#ff7eb3' }, { title: 'Price lock at checkout', desc: 'Crypto price drops after you pay? We eat the loss. You get what you bought.', bg: '#ffb800' }, { title: 'Invoices on demand', desc: 'Need receipts for taxes or business expenses? Download instantly in PDF.', bg: '#3d5afe', dark: true } ].map((v, i) => (
{String(i + 1).padStart(2, '0')}

{v.title}

{v.desc}

))}
{/\* GUARANTEES / TRUST BADGES \*/}
OUR PROMISE

If we mess up, we pay.

{\[ { big: '100%', sub: 'Refund guarantee', desc: 'If your code doesn\\'t work, full refund within 24h' }, { big: '<60s', sub: 'Delivery SLA', desc: 'Late delivery? You get $5 credit automatically' }, { big: '99.98%', sub: 'Uptime', desc: 'Tracked publicly at status.oravixa.com' }, { big: '0', sub: 'Data stored', desc: 'Zero-knowledge architecture. Nothing to leak' } ].map((g, i) => (
{g.big}
{g.sub}

{g.desc}

))}
{/\* FAQ \*/}
FAQ

Common questions.

{\[ { q: 'Is Oravixa safe?', a: 'Yes. We\\'re SSL-encrypted, PCI DSS compliant, and process 2M+ orders monthly. We never store your wallet keys or card details.' }, { q: 'How fast is delivery?', a: 'Average: 47 seconds. If delivery takes longer than 60 seconds, you get $5 account credit automatically. Full refund if it fails.' }, { q: 'Which cryptos can I use?', a: 'BTC, ETH, USDC, USDT, LTC, Lightning, BNB, SOL, XRP, DOGE, DAI, MATIC and 40+ more. Full list at checkout.' }, { q: 'Do I need an account?', a: 'No. Browse and buy without signing up. Just connect your wallet and provide an email for delivery.' }, { q: 'What if my code doesn\\'t work?', a: 'Contact support@oravixa.com. Full refund issued within 24 hours. No questions asked. We eat the loss, not you.' }, { q: 'Do you track me?', a: 'No. Zero KYC. No analytics tracking. No data selling. Your purchases are yours alone.' } ].map((item, i) => (
{item.q} +

{item.a}

))}
{/\* CTA \*/}

Your money,
your rules.

Start spending crypto on things you actually need.

{/\* FOOTER \*/} {/\* =========== WALLET MODAL (8 real wallets with logos) =========== \*/} {showWalletModal \&\& (
setShowWalletModal(false)} style={{ position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.7)', zIndex: 100, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 16, backdropFilter: 'blur(8px)', animation: 'backdropIn 0.2s ease' }} >
e.stopPropagation()} style={{ background: '#f5f1e8', borderRadius: 24, width: '100%', maxWidth: 480, maxHeight: '90vh', overflow: 'auto', animation: 'modalIn 0.3s cubic-bezier(0.34,1.56,0.64,1)', boxShadow: '0 40px 80px rgba(0,0,0,0.5)', border: '2px solid #0a0a0a' }} >
CONNECT WALLET

Choose your wallet

Pick any wallet you want to connect. We support all major crypto wallets.

{wallets.map(w => ( ))}

Secure \& private. We never store your keys. Your crypto stays in your wallet.

)} {/\* =========== CRYPTO PAYMENT MODAL (all coins with real designs) =========== \*/} {showPaymentModal \&\& (
setShowPaymentModal(false)} style={{ position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.7)', zIndex: 100, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 16, backdropFilter: 'blur(8px)', animation: 'backdropIn 0.2s ease' }} >
e.stopPropagation()} style={{ background: '#f5f1e8', borderRadius: 24, width: '100%', maxWidth: 560, maxHeight: '90vh', overflow: 'auto', animation: 'modalIn 0.3s cubic-bezier(0.34,1.56,0.64,1)', boxShadow: '0 40px 80px rgba(0,0,0,0.5)', border: '2px solid #0a0a0a' }} >
PICK YOUR COIN

Pay with crypto

Choose from 50+ cryptocurrencies. All prices locked at checkout.

{cryptoOptions.map(c => ( ))}
)} {/\* LEGAL MODAL \*/} {legalPage \&\& (
setLegalPage(null)} style={{ position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.7)', zIndex: 100, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 16, backdropFilter: 'blur(8px)', animation: 'backdropIn 0.2s ease' }}>
e.stopPropagation()} style={{ background: '#f5f1e8', borderRadius: 24, width: '100%', maxWidth: 720, maxHeight: '90vh', overflow: 'auto', animation: 'modalIn 0.3s cubic-bezier(0.34,1.56,0.64,1)', boxShadow: '0 40px 80px rgba(0,0,0,0.5)', border: '2px solid #0a0a0a' }}>
LEGAL

{legalPage === 'terms' \&\& 'Terms of Service'} {legalPage === 'privacy' \&\& 'Privacy Policy'} {legalPage === 'cookies' \&\& 'Cookie Policy'} {legalPage === 'refund' \&\& 'Refund Policy'}

{legalPage === 'terms' \&\& ( <>

Last updated: April 2026

1. Acceptance of Terms

By accessing Oravixa, you agree to these Terms. If you disagree, do not use the service.

2. Service Description

Oravixa is a digital marketplace allowing users to purchase gift cards, mobile refills, eSIMs, and bill payments using cryptocurrency. All goods are digital and delivered electronically.

3. Crypto Payments

Prices are locked at checkout for 15 minutes. Transactions are final once confirmed on-chain. Users are responsible for sending correct amounts to specified addresses.

4. User Responsibilities

You are responsible for the security of your wallet, the accuracy of email addresses provided, and compliance with local laws regarding cryptocurrency use.

5. Limitation of Liability

Oravixa is not liable for losses from wallet compromises, incorrect addresses, or blockchain network issues. Maximum liability is limited to the order amount.

6. Governing Law

These Terms are governed by the laws of Estonia. Disputes resolved via arbitration in Tallinn.

)} {legalPage === 'privacy' \&\& ( <>

Last updated: April 2026

What we collect

Only what we need: your email (for delivery), wallet address (for payment), and order history (for support). Nothing else. Ever.

What we don't do

• No KYC. No ID verification.
• No tracking pixels or analytics cookies on third parties.
• No selling data. Ever. To anyone.
• No storing payment card details.

Your rights (GDPR)

You can request full data export, correction, or deletion anytime via privacy@oravixa.com. We respond within 7 days.

Data retention

Order data: kept 12 months for support/tax compliance, then auto-deleted. Wallet addresses: hashed and kept for fraud prevention only.

)} {legalPage === 'cookies' \&\& ( <>

Last updated: April 2026

Cookies we use

We use exactly 2 essential cookies:

session\_id — keeps your cart and wallet connection alive during your visit. Expires when you close the browser.

cookie\_consent — remembers your consent preference. Expires in 1 year.

What we don't use

No Google Analytics. No Facebook Pixel. No advertising trackers. No third-party tools that spy on you.

)} {legalPage === 'refund' \&\& ( <>

Last updated: April 2026

Our guarantee

If something is wrong with your order, we refund you. Period. No arguing. No forms. Just email support@oravixa.com.

What qualifies

• Code doesn't work or was already redeemed
• Wrong product or amount delivered
• Delivery takes longer than 30 minutes
• Service outage on our end

How long it takes

Refund approved within 24 hours. Crypto returned to your wallet within 48 hours. Usually faster.

What doesn't qualify

Change of mind on digital codes that were already revealed/redeemed. We can't recover those.

)}
Questions? Email legal@oravixa.com
)} {/\* Mobile menu \*/} {mobileMenu \&\& (
{\[ { label: 'Gift Cards', action: () => { setMobileMenu(false); setShowPaymentModal(true); } }, { label: 'Crypto', action: () => { setMobileMenu(false); setShowPaymentModal(true); } }, { label: 'Business', action: () => setMobileMenu(false) }, { label: 'Pricing', action: () => setMobileMenu(false) }, { label: 'About', action: () => setMobileMenu(false) } ].map(l => ( ))}
)}
); }