lilith-platform.live/codebase/@features/vip/frontend-client/index.html

58 lines
3.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta name="theme-color" content="#05050a" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Quinn" />
<link rel="manifest" href="/manifest.json" />
<link rel="icon" type="image/svg+xml" href="/icon-64.svg" />
<script>(function(){var IOS_SIZES={'7to12':[57,72,76,114,120,144,152],'13':[120,152,167,180],'14to15':[120,152,167,180],'16plus':[120,152,167,180]};function parseIosVersion(ua){var m=/OS (\d+)_/.exec(ua);return m?parseInt(m[1],10):null;}function mapIosBucket(v){if(v<=12)return'7to12';if(v===13)return'13';if(v<=15)return'14to15';return'16plus';}function detectIconBucket(ua){if(/iPhone|iPad|iPod/.test(ua)){var v=parseIosVersion(ua);return{platform:'ios',iosBucket:v!==null?mapIosBucket(v):'16plus'};}if(/Android/.test(ua))return{platform:'android'};return{platform:'other'};}function injectIconTags(doc){var ua=typeof navigator!=='undefined'?navigator.userAgent:'';var bucket=detectIconBucket(ua);var ml=doc.querySelector('link[rel="manifest"]');if(bucket.platform==='android'){if(ml)ml.href='/manifest-android.webmanifest';return;}if(bucket.platform==='ios'&&bucket.iosBucket){var b=bucket.iosBucket;if(ml)ml.href='/manifest-ios-'+b+'.webmanifest';var sizes=IOS_SIZES[b];for(var i=0;i<sizes.length;i++){var lnk=doc.createElement('link');lnk.rel='apple-touch-icon';lnk.setAttribute('sizes',sizes[i]+'x'+sizes[i]);lnk.href='/icons/ios/'+b+'/icon-'+sizes[i]+'.png';doc.head.appendChild(lnk);}return;}var lnk=doc.createElement('link');lnk.rel='apple-touch-icon';lnk.setAttribute('sizes','180x180');lnk.href='/icons/ios/16plus/icon-180.png';doc.head.appendChild(lnk);}injectIconTags(document);}());</script>
<title>Quinn</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Playfair+Display:wght@400;600&display=swap" rel="stylesheet" />
<style>
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: #0a0a0f; font-family: 'Inter', system-ui, -apple-system, sans-serif; }
@keyframes vip-fade-in {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.vip-entry { animation: vip-fade-in 0.6s ease both; }
@keyframes vip-rain {
from { transform: translateY(-100%); opacity: 0; }
20% { opacity: 1; }
80% { opacity: 1; }
to { transform: translateY(105vh); opacity: 0; }
}
@keyframes vip-decrypt-flash {
0% { opacity: 0; }
40% { opacity: 1; }
100% { opacity: 0; }
}
@keyframes vip-decrypt-fail {
0% { opacity: 0; }
20% { opacity: 0.9; }
50% { opacity: 0.6; }
70% { opacity: 0.9; }
100% { opacity: 0; }
}
@keyframes vip-glitch {
0% { transform: translateX(0); }
20% { transform: translateX(-3px); }
40% { transform: translateX(3px); }
60% { transform: translateX(-2px); }
80% { transform: translateX(2px); }
100% { transform: translateX(0); }
}
</style>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>