a459fefb7f
Copies the goutam-pages landing (React marketing home + /page/1..19 + assets) into /public and adds beforeFiles rewrites so '/' serves the marketing home and '/1'..'/19' + '/thanks' serve the static pages — reproducing the landing's vercel.json clean URLs. /portal/* (login/register) is untouched.
100 lines
3.1 KiB
HTML
100 lines
3.1 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>LynkedUp Pro - AI Construction Operating System</title>
|
|
|
|
<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=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
|
|
<link rel="stylesheet" href="styles.css"/>
|
|
|
|
<style>
|
|
/* Local animation primitives the components rely on */
|
|
@keyframes floatY {
|
|
0%, 100% { transform: translateY(0); }
|
|
50% { transform: translateY(-12px); }
|
|
}
|
|
@keyframes growBar {
|
|
from { transform: scaleY(0); }
|
|
to { transform: scaleY(1); }
|
|
}
|
|
@keyframes growW {
|
|
from { width: 0; }
|
|
}
|
|
@keyframes spin {
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="root"></div>
|
|
<!-- FLOATING LIFETIME DEAL BUTTON -->
|
|
<a href="#pricing" id="floatingDealBtn">
|
|
🔥 Founders Lifetime Deal - $2000
|
|
</a>
|
|
|
|
<style>
|
|
#floatingDealBtn {
|
|
position: fixed;
|
|
right: 24px;
|
|
bottom: 24px;
|
|
background: linear-gradient(135deg,#0ea5e9,#2563eb);
|
|
color: white;
|
|
padding: 16px 24px;
|
|
border-radius: 999px;
|
|
text-decoration: none;
|
|
font-weight: 700;
|
|
font-size: 15px;
|
|
box-shadow: 0 10px 30px rgba(14,165,233,0.35);
|
|
z-index: 9999;
|
|
transition: all 0.3s ease;
|
|
animation: floatPulse 2s infinite;
|
|
}
|
|
|
|
#floatingDealBtn:hover {
|
|
transform: translateY(-4px) scale(1.03);
|
|
box-shadow: 0 16px 40px rgba(14,165,233,0.45);
|
|
}
|
|
|
|
@keyframes floatPulse {
|
|
0% {
|
|
transform: translateY(0px);
|
|
}
|
|
50% {
|
|
transform: translateY(-6px);
|
|
}
|
|
100% {
|
|
transform: translateY(0px);
|
|
}
|
|
}
|
|
|
|
@media(max-width:768px) {
|
|
#floatingDealBtn {
|
|
right: 16px;
|
|
bottom: 16px;
|
|
padding: 14px 18px;
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
</style>
|
|
<!-- React 18 + Babel -->
|
|
<script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
|
|
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
|
|
<script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
|
|
|
|
<!-- Components in dependency order -->
|
|
<script type="text/babel" src="ui.jsx"></script>
|
|
<script type="text/babel" src="hero.jsx"></script>
|
|
<script type="text/babel" src="features.jsx"></script>
|
|
<script type="text/babel" src="sections.jsx"></script>
|
|
<script type="text/babel" src="app.jsx"></script>
|
|
|
|
<!-- Hosted checkout (Stripe) for the "Claim Founders Lifetime Deal" button -->
|
|
<script src="/square-checkout.js"></script>
|
|
</body>
|
|
</html>
|