New design
158
about.php
@@ -1,158 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
$page_title = 'About: Revolutionizing Online Dating Experiences';
|
||||
$page_description = "Learn about Stella Amor's mission to redefine online dating. We combine advanced search features with affordability to help you find meaningful connections.";
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>About Stella Amor</h1>
|
||||
<p>
|
||||
Stella Amor is a dating platform which let's the most picky user search for their desired partner. Our filter is among the biggest in the entire internet and let's you filter by financial statuses, body features, dreams and much much more.
|
||||
<br><br>
|
||||
Our goal is to let everyone go beyond the other platforms limits and allow users to filter by, what other platforms classes as "taboo". Want to find someone with a special fetish? We got it. Virgins? Got that too. If no one else has it, our goal is to either have it or implement it.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/logo.png" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="blue-banner">
|
||||
<div class="container mt-10 p-20 text-center">
|
||||
<h1>Join today for free</h1>
|
||||
<p>We believe that every user should be able to use our platform without any stresful trial periods. Which is why you now can join our platform for free, with all the features we offer. No restrictions. If you later on decides to add a subscription, you can cancel this on your own trough the "manage subscription", without any sort of binding periods.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>Contact details</h1>
|
||||
<p>
|
||||
We're currently setting up a ticket system which will manage everything from investor relations to issue with accounts. While this is in development, feel free to reach out to us using the information below:<br>
|
||||
Support: <a href="mailto:support@stellaamor.com">support@stellaamor.com</a><br>
|
||||
Contact: <a href="mailto:info@stellaamor.com">info@stellaamor.com</a><br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-10" id="tos">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>Terms of use</h1>
|
||||
<p>
|
||||
The following article lists our Terms of use. Please read carefuly and be aware that this may change from time to time.
|
||||
</p>
|
||||
|
||||
<h2>1. User Conduct</h2>
|
||||
<ul>
|
||||
<li>Respect other users at all times. Harassment, hate speech, and abusive behavior are strictly prohibited.</li>
|
||||
<li>Do not impersonate another person or create fake profiles to mislead others.</li>
|
||||
<li>Sharing private or sensitive information of other users outside of the platform is strictly forbidden.</li>
|
||||
<li>Spamming, phishing, or any malicious activity will result in account suspension or termination.</li>
|
||||
</ul>
|
||||
|
||||
<h2>2. Profile Usage</h2>
|
||||
<ul>
|
||||
<li>You are responsible for keeping your account credentials secure.</li>
|
||||
<li>Any content you upload must not violate copyright, trademark, or privacy laws.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Privacy and Data Usage</h2>
|
||||
<ul>
|
||||
<li>We prioritize user privacy and will not share your personal data without consent, except as required by law.</li>
|
||||
<li>By using the platform, you agree to our data collection and usage practices as outlined in our Privacy Policy.</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Reporting Issues</h2>
|
||||
<ul>
|
||||
<li>Any security vulnerabilities or bugs must be reported immediately to our support team and not exploited.</li>
|
||||
<li>If you encounter inappropriate behavior or content, report it through the provided tools or contact support.</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Liability</h2>
|
||||
<ul>
|
||||
<li>We are not responsible for the actions of users outside the platform.</li>
|
||||
<li>Use the platform at your own risk. We do not guarantee outcomes such as successful matches or relationships.</li>
|
||||
</ul>
|
||||
|
||||
<h2>6. Account Termination</h2>
|
||||
<ul>
|
||||
<li>We reserve the right to terminate accounts that violate these terms or engage in prohibited conduct.</li>
|
||||
<li>Users may terminate their accounts at any time through account settings.</li>
|
||||
</ul>
|
||||
|
||||
<h2>7. Amendments</h2>
|
||||
<ul>
|
||||
<li>We may update these Terms of Use from time to time. Continued use of the platform signifies acceptance of any changes.</li>
|
||||
<li>We offer no refunds, unless any current laws require us to. You have 30 days to try our service before you need to create a subscription.</li>
|
||||
<li>We do not offer refunds due to terminating accounts.</li>
|
||||
<li>After your 30 days, you can create a subscription. The price for the subscription is currently 99 SEK.</li>
|
||||
</ul>
|
||||
<h1>Privacy Policy</h1>
|
||||
<p>Your privacy is important to us. This Privacy Policy explains how we collect, use, and protect your personal information when you use Stella Amor.</p>
|
||||
<h2>1. Information We Collect</h2>
|
||||
<ul>
|
||||
<li><strong>Personal Information:</strong> When you create an account, we may collect information such as your name, email address, date of birth, and profile details.</li>
|
||||
<li><strong>Usage Data:</strong> We collect data about your interactions with the platform, including search queries, messages, and matches.</li>
|
||||
<li><strong>Device Information:</strong> Information about your device, such as IP address, browser type, and operating system, may also be collected.</li>
|
||||
</ul>
|
||||
|
||||
<h2>2. How We Use Your Information</h2>
|
||||
<ul>
|
||||
<li>To provide and improve the platform’s functionality and user experience.</li>
|
||||
<li>To personalize your experience, including suggesting matches and content.</li>
|
||||
<li>To communicate with you, including sending updates, notifications, and support messages.</li>
|
||||
<li>To monitor and enhance security, including preventing fraud and abuse.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Sharing Your Information</h2>
|
||||
<ul>
|
||||
<li>We do not sell your personal data to third parties.</li>
|
||||
<li>Your information may be shared with trusted partners or service providers who help operate our platform, under strict confidentiality agreements.</li>
|
||||
<li>We may disclose information as required by law or to protect the rights and safety of our users or platform.</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Data Retention</h2>
|
||||
<ul>
|
||||
<li>We retain your information for as long as your account is active or as necessary to provide our services.</li>
|
||||
<li>Data may be retained to comply with legal obligations, resolve disputes, and enforce agreements.</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Your Rights</h2>
|
||||
<ul>
|
||||
<li>You can opt out of marketing communications by adjusting your preferences in your account.</li>
|
||||
<li>If you have concerns about how your data is being used, contact our support team at support@stellaamor.com</li>
|
||||
</ul>
|
||||
|
||||
<h2>6. Security</h2>
|
||||
<ul>
|
||||
<li>We use industry-standard security measures to protect your data from unauthorized access and breaches.</li>
|
||||
<li>However, no online service can guarantee absolute security. Use the platform at your own risk.</li>
|
||||
</ul>
|
||||
|
||||
<h2>7. Changes to This Privacy Policy</h2>
|
||||
<ul>
|
||||
<li>We may update this Privacy Policy from time to time. Significant changes will be communicated to users through the platform or email.</li>
|
||||
<li>Continued use of the platform indicates acceptance of any updates.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');
|
||||
?>
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
$page_title = 'Free dating platform';
|
||||
$page_description = "Stella Amor is the best free online dating site for picky singles and professionals. With the world’s largest dating filters, including body features and financial preferences, find serious relationships that match your exact criteria. Join Stella Amor for free today!";
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>Free Online Dating with Stella Amor</h1>
|
||||
<p>Experience free online dating on Stella Amor, the best platform for singles near you. With the world’s largest dating filters, including body features and financial preferences, finding love online has never been this tailored. Start your journey toward serious relationships today—free to join!</p>
|
||||
<a href="https://stellaamor.com/" class="btn">Join now</a>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/kisses.jpg" class="shadow" alt="free dating">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="blue-banner">
|
||||
<div class="container mt-10 p-20 text-center">
|
||||
<h2>Stella Amor: The Best Free Alternative to Tinder for Picky Singles and Professionals</h2>
|
||||
<p>Stella Amor isn’t just another dating app—it’s the perfect choice for picky singles and professionals looking for serious connections. Our platform combines the world’s largest dating filters, including body features, financial details, and lifestyle preferences, to ensure compatibility. Whether you're a busy professional or simply someone who knows exactly what they want, Stella Amor makes online dating effortless and free to use.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/kisses2.jpg" class="shadow" alt="Local singles">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h3>Why Stella Amor Is the Ultimate Free Dating Site for Serious Relationships</h3>
|
||||
<p>Stella Amor is the ultimate free dating site for those looking for serious relationships. With our advanced matchmaking filters, you can find a partner who shares your specific preferences, from body features to financial goals and lifestyle. Whether you're dating for love or seeking a committed relationship, Stella Amor’s compatibility-based approach helps you find meaningful connections with ease. Join today, and take the first step towards building a relationship that truly fits your life.</p>
|
||||
<a href="https://stellaamor.com/" class="btn">Start Now for Free</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');
|
||||
?>
|
||||
@@ -1,12 +0,0 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
|
||||
RewriteCond %{HTTPS} off
|
||||
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
RewriteRule ^index\.html$ - [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule . /index.html [L]
|
||||
</IfModule>
|
||||
@@ -1 +0,0 @@
|
||||
@import url(https://fonts.googleapis.com/css2?family=Niconne&family=Poly:ital@0;1&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap);#app{font-family:Poppins,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#353535}nav{padding:30px}nav a{font-weight:700;color:#fff}nav a.router-link-exact-active{color:#42b983}.font-niconne{font-family:Niconne,cursive;font-family:Poly,serif}.poppins,body{font-family:Poppins,sans-serif}img{max-width:100%}.main{padding-top:60px}@media(min-width:960px){.main{padding-top:70px}}*{text-align:left}.app-main{margin-top:60px;position:relative;min-height:calc(100vh - 60px)}.top-bar{z-index:10;position:fixed}.loadingScreen{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#ffffffc9;display:flex;justify-content:center;align-items:center;z-index:9}.resetRow{justify-content:flex-end;padding:8px}.filterDrawer{background-color:#fff;z-index:9;height:calc(100% - 60px);padding-top:50px}.filter-header{font-size:18px;font-weight:300;padding-left:5px;padding-bottom:5px;padding-top:20px}.filter-label{font-size:12px;padding-left:15px;margin-bottom:10px;margin-top:10px;display:block}.filter-span{color:#747474;display:block;text-wrap:wrap}.filter-titles{font-size:14px;color:#6d6b6b;font-weight:400;padding-bottom:5px}.list-actions{position:fixed;height:60px;bottom:0;width:100%;padding:0 15px;background:#fff}.filter{padding-bottom:70px}.v-input--selection-controls .v-input__slot>.v-label{font-size:12px}.v-list--dense .v-l,.v-list-item--dense{min-height:30px}.user-age{padding-left:5px;font-size:14px;color:#999}.user-info{color:#666}.user-info ul{list-style:none;padding:0;margin:0}.banner{background-size:cover;background-position:50%;height:350px;background-color:#f7f7f7}.profile-card{margin-top:-100px}.user-info{text-align:center;padding:20px}.user-info h2{margin-bottom:10px}.user-info p{margin:0}.lightbox-arrow{position:absolute;top:50%;width:36px!important;height:36px!important;transform:translateY(-50%);color:#fff!important;background-color:rgba(0,0,0,.5)!important;border-radius:50%!important;box-shadow:0 2px 4px rgba(0,0,0,.3)!important;min-width:unset!important}.lightbox-arrow.left{left:10px}.lightbox-arrow.right{right:10px}.removeImage{top:3px;right:3px;width:18px!important;height:18px!important}.removeImage,.removeImage2{position:absolute;padding:5px!important;color:#e5e5e5!important;background-color:rgba(0,0,0,.5)!important;border-radius:50%!important;box-shadow:0 2px 4px rgba(0,0,0,.3)!important;min-width:unset!important}.removeImage2{top:10px;right:10px;width:30px!important;height:30px!important}.unreadMessages{color:#1976d2!important}.equal-height-row{display:flex;flex-wrap:wrap}.equal-height-card{flex:1 0 auto;display:flex;flex-direction:column}.userInfoListClass{list-style-type:none;padding:0;margin:0;display:flex;flex-wrap:wrap}.userInfoListClass li{width:calc(50% - 20px);margin:10px;padding:15px;border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.1);background-color:#fff;transition:background-color .3s ease}.userInfoListClass li:hover{background-color:#f0f0f0}.userInfoListClass li h4{margin-top:0;margin-bottom:10px;font-size:14px;font-weight:400;color:#979797}.userInfoListClass li p{margin-bottom:5px;font-size:12px;color:#919191;line-height:1.4}@media(max-width:768px){.userInfoListClass li{width:calc(100% - 20px)}}.fixedToolbar[data-v-4464b245]{position:fixed;top:0;width:100%}.chat-messages[data-v-4464b245]{padding-top:65px;overflow-y:auto;display:flex;flex-direction:column;height:100%}.chat-message[data-v-4464b245]{margin:10px;padding:10px;border-radius:10px;width:80%}.message-header[data-v-4464b245]{display:flex;align-items:center}.avatar[data-v-4464b245]{width:40px;height:40px;border-radius:50%;margin-right:10px}.username[data-v-4464b245]{font-weight:700;margin-right:10px;cursor:pointer}.message-content[data-v-4464b245]{word-wrap:break-word}.outgoing[data-v-4464b245]{align-self:flex-end;background-color:#2196f3;color:#fff}.incoming[data-v-4464b245]{align-self:flex-start;background-color:#f5f5f5}.sendButton[data-v-4464b245]{display:flex;align-items:center;justify-content:flex-end}.chat-container[data-v-4464b245]{display:flex;flex-direction:column;min-height:100%;justify-content:space-between}.conversation-row[data-v-4464b245]{background-color:#6492f938;padding:10px;margin-bottom:20px;border-radius:12px;cursor:pointer}.conversationTime[data-v-4464b245]{font-size:12px;color:#a3a3a3;right:5px;position:absolute}.conversationUsername[data-v-4464b245]{display:inline;font-weight:500;padding-bottom:5px}.conversation-box[data-v-4464b245]{position:relative}
|
||||
BIN
home/favicon.png
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 31 KiB |
@@ -1,5 +0,0 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico"><title>Stella Amor | Discover Your Dream Date Today</title><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" crossorigin="anonymous"/><link rel="canonical" href="https://stellaamor.com"><link rel="icon" type="image/x-icon" href="favicon.ico"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:title" content="Stella Amor | Discover Your Dream Date Today"><meta property="og:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:image" content="https://api.stellaamor.com/static/logo2.png"><meta property="og:url" content="https://stellaamor.com"><meta property="og:type" content="website"><meta name="twitter:title" content="Stella Amor | Discover Your Dream Date Today"><meta name="twitter:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta name="twitter:image" content="https://api.stellaamor.com/static/logo2.png"><meta name="twitter:card" content="summary_large_image"><meta name="author" content="Stella Amor"><meta name="keywords" content="Dating"><meta name="robots" content="index,follow"><meta httpequiv="expires" content="0"><meta httpequiv="pragma" content="no-cache"><script defer="defer" src="/home/js/chunk-vendors.644485be.js"></script><script defer="defer" src="/home/js/app.eb118890.js"></script><link href="/home/css/chunk-vendors.0ee1ee54.css" rel="stylesheet"><link href="/home/css/app.5360f6f2.css" rel="stylesheet"></head><script async src="https://www.googletagmanager.com/gtag/js?id=G-486MZV8H9M"></script><script>window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-486MZV8H9M');</script><body><noscript><strong>We're sorry but app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
@@ -1,5 +0,0 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico"><title>Stella Amor | Discover Your Dream Date Today</title><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" crossorigin="anonymous"/><link rel="canonical" href="https://stellaamor.com"><link rel="icon" type="image/x-icon" href="favicon.ico"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:title" content="Stella Amor | Discover Your Dream Date Today"><meta property="og:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:image" content="https://api.stellaamor.com/static/logo2.png"><meta property="og:url" content="https://stellaamor.com"><meta property="og:type" content="website"><meta name="twitter:title" content="Stella Amor | Discover Your Dream Date Today"><meta name="twitter:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta name="twitter:image" content="https://api.stellaamor.com/static/logo2.png"><meta name="twitter:card" content="summary_large_image"><meta name="author" content="Stella Amor"><meta name="keywords" content="Dating"><meta name="robots" content="index,follow"><meta httpequiv="expires" content="0"><meta httpequiv="pragma" content="no-cache"><script defer="defer" src="/js/chunk-vendors.644485be.js"></script><script defer="defer" src="/js/app.eb118890.js"></script><link href="/css/chunk-vendors.0ee1ee54.css" rel="stylesheet"><link href="/css/app.5360f6f2.css" rel="stylesheet"></head><script async src="https://www.googletagmanager.com/gtag/js?id=G-486MZV8H9M"></script><script>window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-486MZV8H9M');</script><body><noscript><strong>We're sorry but app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
|
Before Width: | Height: | Size: 176 KiB |
BIN
img/logo.png
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 63 KiB |
170
index.php
@@ -1,164 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
|
||||
$page_title = 'Exclusive Online Dating Platform with Advanced Match Filters';
|
||||
$page_description = 'Join Stella Amor to experience the largest dating filters online. Enjoy personalized matchmaking with free first-month access. Start finding meaningful connections today!';
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<section class="landing-banner">
|
||||
<div class="overlay">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-12">
|
||||
<h1>Explore the Future of Online Dating with StellaAmor</h1>
|
||||
<p>Join StellaAmor for free and discover meaningful connections with our advanced match filters.
|
||||
Love is just a click away!</p>
|
||||
</div>
|
||||
<div class="col-md-6 col-12">
|
||||
|
||||
<div class="home-container">
|
||||
<h2>Sign Up</h2>
|
||||
<form action="#" method="POST" id="signup">
|
||||
<div class="form-field">
|
||||
<label for="username">Username:</label>
|
||||
<input type="text" id="username" placeholder="Username" required>
|
||||
<div class="errors" id="usernameError"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-field">
|
||||
<label for="email">Email:</label>
|
||||
<input type="email" id="email" placeholder="Enter your email" required>
|
||||
<div class="errors" id="emailError"></div>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label for="u_dob">Date of birth:</label>
|
||||
<input type="date" id="u_dob" required>
|
||||
<div class="errors" id="dobError"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="gender-select form-field">
|
||||
<label for="gender">Gender:</label>
|
||||
<select id="gender" required>
|
||||
<option value="" disabled selected>Select your gender</option>
|
||||
<option value="male">Male</option>
|
||||
<option value="female">Female</option>
|
||||
<option value="other">Other</option>
|
||||
</select>
|
||||
<div class="errors" id="genderError"></div>
|
||||
</div>
|
||||
|
||||
<div class="country-select form-field">
|
||||
<label for="userCountry">Country:</label>
|
||||
<select id="userCountry" required>
|
||||
<option value="" disabled selected>Select your country</option>
|
||||
</select>
|
||||
<div class="errors" id="countryError"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-field">
|
||||
<label for="password">Password:</label>
|
||||
<input type="password" id="password" placeholder="Password" required>
|
||||
<div class="errors" id="passwordError"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-field">
|
||||
<label for="password2">Confirm Password:</label>
|
||||
<input type="password" id="password2" placeholder="Confirm Password" required>
|
||||
<div class="errors" id="password2Error"></div>
|
||||
</div>
|
||||
|
||||
<div class="checkbox-container">
|
||||
<label>
|
||||
<input type="checkbox" required> I am over 18 years old
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" required id="tos"> I accept the <a class="link" target="_blank" href="/about#tos">terms of use</a>
|
||||
</label>
|
||||
<div class="errors" id=""></div>
|
||||
</div>
|
||||
|
||||
<button type="submit">Sign up</button>
|
||||
<i class="mdi mdi-loading" id="spinner"></i>
|
||||
</form>
|
||||
|
||||
<div class="error" id="errors"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h2>Online dating made exclusive</h2>
|
||||
<p>We offer the widest search filter among all dating sites. To prove how good our platform is, we give each new member an entire month of free access. No binding periods and no credit card verifications.
|
||||
Our dating platform is built for people to be able to find exactly what they are looking for. Wheter if it's body features, preferences or future dreams, we have exactly what you need to find what you're looking for.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img alt="dating couple" src="/rss/img/couple.jpg" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="light-banner mt-10">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-s-12">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/freedom.jpg" alt="free dating" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 col-s-12 align-self-center">
|
||||
<h2>Join today for free</h2>
|
||||
<p>We believe that every user should be able to use our platform without any stresful trial periods. Which is why you now can join our platform for free, with all the features we offer. No restrictions. If you later on decides to add a subscription, you can cancel this on your own trough the "manage subscription", without any sort of binding periods.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h2>Why Stella Amor Stands Out</h2>
|
||||
<p>We wanted to create the best dating service, free from any sort of public opinions. You can filter by body features such as muscles, breast and penis size. Financial features like in debt, current financial status, financial dreams. Family features like already have kids or want kids. Pets, tattoos, hair color, sexual active.<br>
|
||||
<i>We simply hope that our filter will cover any feature you could possible imagine</i></p>
|
||||
</div>
|
||||
<div class="col-md-6 col-s-12">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/dining.jpg" alt="dating filter">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img alt="free dating app" src="/rss/img/screenshot.png" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h2>The dating app</h2>
|
||||
<p>Our free dating app is built with a one-page-app, which works on all devices. Thanks to the development technique, we offer a fast, reliable and user friendly app for you to use. Our filter is made to be the largest filter any dating platform has ever had. Why don't you try it out now?</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');?>
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/pageHandler.php');
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
loadContents();
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');
|
||||
?>
|
||||
6056
rss/css/main.css
1293
rss/css/main.scss
399
rss/css/theme.css
Normal file
@@ -0,0 +1,399 @@
|
||||
/* Grid system */
|
||||
/* Breakpoints */
|
||||
/* Display types */
|
||||
/* Color palette */
|
||||
/* Spacing scale */
|
||||
/* Shadows (soft shadows) */
|
||||
/* Flex utilities */
|
||||
/* Button component variables */
|
||||
/* Typography */
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.7rem 2rem;
|
||||
background-color: #ffffff;
|
||||
align-items: center;
|
||||
box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.12);
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
font-family: "Nunito", sans-serif;
|
||||
}
|
||||
header .logo {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
}
|
||||
header .logo img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
header nav {
|
||||
display: flex;
|
||||
position: relative;
|
||||
}
|
||||
header nav .menu-item {
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-right: 15px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
transition: color 0.3s;
|
||||
font-size: 16px;
|
||||
}
|
||||
header nav .menu-item.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
header nav .menu-item::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 120%;
|
||||
left: 0;
|
||||
height: 2px;
|
||||
width: 100%;
|
||||
background: #B54418;
|
||||
transform: scaleX(0);
|
||||
transform-origin: left;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
header nav .menu-item:hover {
|
||||
color: #B54418;
|
||||
cursor: pointer;
|
||||
}
|
||||
header nav .menu-item:hover::after {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
|
||||
.home-banner {
|
||||
height: calc(100vh - 55px);
|
||||
padding: 50px 0;
|
||||
display: flex;
|
||||
background-color: #ffffff;
|
||||
opacity: 0;
|
||||
animation: slideUp 1s ease-in-out forwards;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.home-banner {
|
||||
height: 100vh;
|
||||
}
|
||||
}
|
||||
.home-banner .home-banner-inner {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
.home-banner .home-banner-inner .container {
|
||||
height: 100%;
|
||||
}
|
||||
.home-banner .home-banner-inner .inner-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: stretch;
|
||||
height: 100%;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.home-banner .home-banner-inner .inner-row {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.home-banner .home-banner-inner .image-col {
|
||||
flex: 0 0 45%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.home-banner .home-banner-inner .image-col img {
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
.home-banner .home-banner-inner .text-col {
|
||||
flex: 0 0 40%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.home-banner .home-banner-inner .text-col {
|
||||
flex: 0 0 100%;
|
||||
max-width: 100%;
|
||||
text-align: center;
|
||||
z-index: 9;
|
||||
}
|
||||
}
|
||||
.home-banner .home-banner-inner .text-col .title {
|
||||
font-weight: 800;
|
||||
font-size: 3.7rem;
|
||||
line-height: 1.2;
|
||||
font-family: "Nunito", sans-serif;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.home-banner .home-banner-inner .text-col .title {
|
||||
font-size: 3.2rem;
|
||||
}
|
||||
}
|
||||
.home-banner .home-banner-inner .text-col .lead {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.home-banner .home-banner-inner .text-col .lead {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
}
|
||||
.home-banner .home-banner-inner .text-col .cta-btn {
|
||||
padding: 10px;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
.home-banner .home-banner-inner .text-col .login-text {
|
||||
display: inline-flex;
|
||||
gap: 5px;
|
||||
font-weight: 400;
|
||||
}
|
||||
.home-banner .home-banner-inner .text-col .login-text .login-link {
|
||||
font-weight: 500;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
.home-banner .home-banner-inner .image-wrapper {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.home-banner .home-banner-inner .image-wrapper {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 999;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
opacity: 0.1;
|
||||
}
|
||||
}
|
||||
.home-banner .home-banner-inner .image-wrapper img {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
-o-object-fit: cover;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.display-banner {
|
||||
width: 100%;
|
||||
padding: 120px 0px;
|
||||
}
|
||||
.display-banner.wedding-banner {
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url("/rss/img/wedding.jpg");
|
||||
padding: 180px 0px;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
.display-banner.moving-banner {
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url("/rss/img/couple.jpg");
|
||||
background-position: center 40%;
|
||||
background-size: cover;
|
||||
padding: 180px 0px;
|
||||
}
|
||||
|
||||
footer {
|
||||
background-color: #212529;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
padding: 25px 0px;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
}
|
||||
footer .logo {
|
||||
width: 125px;
|
||||
cursor: pointer;
|
||||
}
|
||||
footer ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.features-section h2 {
|
||||
font-size: 1.8rem;
|
||||
color: #212529;
|
||||
}
|
||||
.features-section .theme-card {
|
||||
border-radius: 0.25rem;
|
||||
overflow: hidden;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
}
|
||||
.features-section .theme-card .card-header {
|
||||
padding: 0.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
.features-section .theme-card .card-header img {
|
||||
width: 125px;
|
||||
height: 125px;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.16);
|
||||
-o-object-fit: cover;
|
||||
object-fit: cover;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.features-section .theme-card .card-header img.object-left {
|
||||
-o-object-position: left center;
|
||||
object-position: left center;
|
||||
}
|
||||
.features-section .theme-card .card-header img.object-center {
|
||||
-o-object-position: center center;
|
||||
object-position: center center;
|
||||
}
|
||||
.features-section .theme-card .card-header img.object-bottom {
|
||||
-o-object-position: bottom center;
|
||||
object-position: bottom center;
|
||||
}
|
||||
.features-section .theme-card .card-body {
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.styled-title {
|
||||
font-family: "Nunito", sans-serif;
|
||||
}
|
||||
.styled-title.fw-900 {
|
||||
font-weight: 900;
|
||||
}
|
||||
.styled-title.fw-600 {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.filter-section {
|
||||
padding: 2rem 0;
|
||||
}
|
||||
|
||||
.filter-card {
|
||||
background-color: #ffffff;
|
||||
border-radius: 0.25rem;
|
||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.16);
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
height: 100%;
|
||||
margin: 15px 0px;
|
||||
}
|
||||
|
||||
.filter-icon {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #aa0b3d;
|
||||
}
|
||||
|
||||
.filter-title {
|
||||
font-size: 1.3rem;
|
||||
font-weight: 500;
|
||||
margin-bottom: 0.5rem;
|
||||
color: #212529;
|
||||
}
|
||||
|
||||
.filter-text {
|
||||
font-size: 1rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* Responsive adjustments */
|
||||
@media (max-width: 768px) {
|
||||
.filter-card {
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.filter-icon {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.filter-title {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
}
|
||||
.rounded-col-image {
|
||||
height: 450px;
|
||||
width: 450px;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
@media (max-width: 1200px) {
|
||||
.rounded-col-image {
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 920px) {
|
||||
.rounded-col-image {
|
||||
width: 225px;
|
||||
height: 225px;
|
||||
}
|
||||
}
|
||||
.rounded-col-image:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
box-shadow: inset 0px 0px 27px -5px rgb(2, 2, 2);
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
}
|
||||
.rounded-col-image img {
|
||||
-o-object-fit: cover;
|
||||
object-fit: cover;
|
||||
-o-object-position: right;
|
||||
object-position: right;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
section h2 {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
section h3 {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
section p {
|
||||
font-size: 1.2rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
}
|
||||
section .bolder {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.section-animation {
|
||||
opacity: 0; /* Start hidden */
|
||||
transform: translateY(50px); /* Slide up from 50px below */
|
||||
transition: opacity 0.8s ease-out, transform 0.8s ease-out; /* Smooth transition */
|
||||
}
|
||||
|
||||
.section-animation.visible {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
/* Accessibility for reduced motion */
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.section-animation {
|
||||
opacity: 1;
|
||||
transform: none;
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
@keyframes slideUp {
|
||||
from {
|
||||
transform: translateY(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}/*# sourceMappingURL=theme.css.map */
|
||||
1
rss/css/theme.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["variables.scss","theme.scss","theme.css"],"names":[],"mappings":"AAAA,gBAAA;AAIA,gBAAA;AAmBA,kBAAA;AAGA,kBAAA;AAmBA,kBAAA;AAGA,2BAAA;AAoBA,mBAAA;AAyBA,+BAAA;AAQA,eAAA;ACnGA;EACI,aAAA;EACA,8BAAA;EACA,oBAAA;EACA,yBAAA;EACA,mBAAA;EACA,+CAAA;EACA,kBAAA;EACA,YAAA;EACA,iCAAA;ACQJ;ADNI;EACI,YAAA;EACA,aAAA;EACA,eAAA;ACQR;ADNQ;EACI,WAAA;EACA,YAAA;ACQZ;ADJI;EACI,aAAA;EACA,kBAAA;ACMR;ADJQ;EACI,cAAA;EACA,gBAAA;EACA,kBAAA;EACA,qBAAA;EACA,kBAAA;EACA,sBAAA;EACA,eAAA;ACMZ;ADJY;EACI,iBAAA;ACMhB;ADFY;EACI,WAAA;EACA,kBAAA;EACA,SAAA;EACA,OAAA;EACA,WAAA;EACA,WAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;EACA,0BAAA;ACIhB;ADDY;EACI,cAAA;EACA,eAAA;ACGhB;ADAY;EACI,oBAAA;ACEhB;;ADIA;EACE,0BAAA;EACA,eAAA;EACA,aAAA;EACA,yBAAA;EACA,UAAA;EACA,0CAAA;ACDF;ADME;EAXF;IAYI,aAAA;ECHF;AACF;ADKE;EACE,OAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;ACHJ;ADMI;EACI,YAAA;ACJR;ADOI;EACI,aAAA;EACA,8BAAA;EACA,oBAAA;EACA,YAAA;ACLR;ADOQ;EANJ;IAOQ,sBAAA;ECJV;AACF;ADOI;EACE,aAAA;EACA,aAAA;EACA,sBAAA;EACA,uBAAA;ACLN;ADOM;EACE,mBAAA;EACA,0CAAA;ACLR;ADSI;EACE,aAAA;EACA,aAAA;EACA,sBAAA;EACA,uBAAA;EACA,SAAA;ACPN;ADSM;EAPF;IAQI,cAAA;IACA,eAAA;IACA,kBAAA;IACA,UAAA;ECNN;AACF;ADQM;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iCDhCW;AE0BnB;ADQQ;EANF;IAOM,iBAAA;ECLV;AACF;ADQM;EACE,iBAAA;EACA,gBAAA;ACNR;ADQQ;EAJF;IAKM,iBAAA;ECLV;AACF;ADOM;EACE,aAAA;EACA,iBAAA;ACLR;ADOM;EACE,oBAAA;EACA,QAAA;EACA,gBAAA;ACLR;ADMQ;EACI,gBAAA;EACA,0BAAA;EACA,eAAA;ACJZ;ADSI;EACE,OAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;ACPN;ADSM;EAPF;IAQI,kBAAA;IACA,MAAA;IACA,OAAA;IACA,YAAA;IACA,YAAA;IACA,UAAA;IACA,YAAA;ECNN;AACF;ADQM;EACE,YAAA;EACA,WAAA;EACA,oBAAA;KAAA,iBAAA;EACA,cAAA;ACNR;;ADeA;EACI,WAAA;EACA,kBAAA;ACZJ;ADcI;EACI,sGAAA;EAEA,kBAAA;EACA,kCAAA;EACA,sBAAA;ACbR;ADgBI;EACI,qGAAA;EAEA,+BAAA;EACA,sBAAA;EACA,kBAAA;ACfR;;ADoBA;EACI,yBAAA;EACA,WAAA;EACA,aAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;ACjBJ;ADmBI;EACI,YAAA;EACA,eAAA;ACjBR;ADoBI;EACI,gBAAA;AClBR;;ADwBI;EACI,iBAAA;EACA,cAAA;ACrBR;ADwBI;EACI,sBAAA;EACA,gBAAA;EACA,qDAAA;ACtBR;ADwBQ;EACI,eAAA;EACA,kBAAA;ACtBZ;ADwBY;EACI,YAAA;EACA,aAAA;EACA,kBAAA;EACA,yCAAA;EACA,oBAAA;KAAA,iBAAA;EACA,cAAA;ACtBhB;ADwBgB;EACI,+BAAA;KAAA,4BAAA;ACtBpB;ADwBgB;EACI,iCAAA;KAAA,8BAAA;ACtBpB;ADwBgB;EACI,iCAAA;KAAA,8BAAA;ACtBpB;AD2BQ;EACI,aAAA;EACA,kBAAA;ACzBZ;;ADgCA;EACI,iCAAA;AC7BJ;AD+BI;EACI,gBAAA;AC7BR;ADgCI;EACI,gBAAA;AC9BR;;ADmCA;EACE,eAAA;AChCF;;ADmCA;EACE,yBAAA;EACA,sBAAA;EACA,yCAAA;EACA,aAAA;EACA,kBAAA;EACA,qDAAA;EACA,YAAA;EACA,gBAAA;AChCF;;ADmCA;EACE,iBAAA;EACA,mBAAA;EACA,cAAA;AChCF;;ADmCA;EACE,iBAAA;EACA,gBAAA;EACA,qBAAA;EACA,cAAA;AChCF;;ADmCA;EACE,eAAA;EAEA,gBAAA;ACjCF;;ADoCA,2BAAA;AACA;EACE;IACE,qBAAA;ECjCF;EDmCA;IACE,eAAA;ECjCF;EDmCA;IACE,iBAAA;ECjCF;AACF;AD6CA;EACI,aAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,kBAAA;AC3CJ;AD6CI;EAVJ;IAWQ,YAAA;IACA,aAAA;EC1CN;AACF;AD4CI;EAfJ;IAgBQ,YAAA;IACA,aAAA;ECzCN;AACF;AD2CI;EACI,WAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EAGA,gDAAA;EACA,UAAA;EACA,oBAAA;ACzCR;AD6CI;EACI,oBAAA;KAAA,iBAAA;EACA,yBAAA;KAAA,sBAAA;EACA,WAAA;EACA,YAAA;AC3CR;;ADgDI;EACI,iBAAA;EACA,gBAAA;AC7CR;AD+CI;EACI,iBAAA;EACA,gBAAA;AC7CR;ADgDI;EACI,iBAAA;EACJ,gBAAA;EACA,gBAAA;AC9CJ;ADiDI;EACI,gBAAA;AC/CR;;ADmDA;EACE,UAAA,EAAA,iBAAA;EACA,2BAAA,EAAA,6BAAA;EACA,0DAAA,EAAA,sBAAA;AChDF;;ADmDA;EACE,UAAA;EACA,wBAAA;AChDF;;ADmDA,qCAAA;AACA;EACE;IACE,UAAA;IACA,eAAA;IACA,gBAAA;EChDF;AACF;ADmDA;EACE;IACE,2BAAA;IACA,UAAA;ECjDF;EDmDA;IACE,wBAAA;IACA,UAAA;ECjDF;AACF","file":"theme.css"}
|
||||
444
rss/css/theme.scss
Normal file
@@ -0,0 +1,444 @@
|
||||
@import 'variables';
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.7rem 2rem;
|
||||
background-color: #ffffff;
|
||||
align-items: center;
|
||||
box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.12);
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
font-family: "Nunito", sans-serif;
|
||||
|
||||
.logo {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
position: relative;
|
||||
|
||||
.menu-item {
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-right: 15px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
transition: color 0.3s;
|
||||
font-size: 16px;
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
// color: #your-brand-color;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 120%;
|
||||
left: 0;
|
||||
height: 2px;
|
||||
width: 100%;
|
||||
background: #B54418;
|
||||
transform: scaleX(0);
|
||||
transform-origin: left;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #B54418;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&:hover::after {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home-banner {
|
||||
height: calc(100vh - 55px);
|
||||
padding: 50px 0;
|
||||
display: flex;
|
||||
background-color: #{map-get($colors, white)};
|
||||
opacity: 0;
|
||||
animation: slideUp 1s ease-in-out forwards;
|
||||
// animation-delay: 0.2s;
|
||||
|
||||
|
||||
|
||||
@media(max-width:768px){
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.home-banner-inner {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
|
||||
|
||||
.container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.inner-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: stretch;
|
||||
height: 100%;
|
||||
|
||||
@media(max-width:768px){
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
.image-col {
|
||||
flex: 0 0 45%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
img{
|
||||
border-radius: 12px;
|
||||
box-shadow: #{map-get($shadows, 3)};
|
||||
}
|
||||
}
|
||||
|
||||
.text-col {
|
||||
flex: 0 0 40%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
|
||||
@media(max-width: 768px){
|
||||
flex: 0 0 100%;
|
||||
max-width: 100%;
|
||||
text-align: center;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.title{
|
||||
font-weight: 800;
|
||||
font-size: 3.7rem;
|
||||
line-height: 1.2;
|
||||
font-family: $font-family-base;
|
||||
|
||||
@media(max-width:768px){
|
||||
font-size: 3.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.lead{
|
||||
font-size: 1.6rem;
|
||||
font-weight: 400;
|
||||
|
||||
@media(max-width:768px){
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
}
|
||||
.cta-btn{
|
||||
padding: 10px;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
.login-text{
|
||||
display: inline-flex;
|
||||
gap: 5px;
|
||||
font-weight: 400;
|
||||
.login-link{
|
||||
font-weight: 500;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.image-wrapper {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
|
||||
@media(max-width: 768px){
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 999;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
img {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Banners
|
||||
.display-banner {
|
||||
width: 100%;
|
||||
padding: 120px 0px;
|
||||
|
||||
&.wedding-banner {
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
|
||||
url('/rss/img/wedding.jpg');
|
||||
padding: 180px 0px;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
&.moving-banner {
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
|
||||
url('/rss/img/couple.jpg');
|
||||
background-position: center 40%;
|
||||
background-size: cover;
|
||||
padding: 180px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
// Footer
|
||||
footer {
|
||||
background-color: #{map-get($colors, 'dark')};
|
||||
color: #fff;
|
||||
display: flex;
|
||||
padding: 25px 0px;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
|
||||
.logo {
|
||||
width: 125px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
.features-section {
|
||||
|
||||
h2 {
|
||||
font-size: map-get($font-sizes, xl);
|
||||
color: map-get($colors, dark);
|
||||
}
|
||||
|
||||
.theme-card {
|
||||
border-radius: map-get($border-radius-sizes, md);
|
||||
overflow: hidden;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
|
||||
.card-header {
|
||||
padding: #{map-get($spacing, "2")};
|
||||
text-align: center;
|
||||
|
||||
img {
|
||||
width: 125px;
|
||||
height: 125px;
|
||||
border-radius: 50%;
|
||||
box-shadow: map-get($shadows, 2);
|
||||
object-fit: cover;
|
||||
margin: 0 auto;
|
||||
|
||||
&.object-left{
|
||||
object-position: left center;
|
||||
}
|
||||
&.object-center{
|
||||
object-position: center center;
|
||||
}
|
||||
&.object-bottom{
|
||||
object-position: bottom center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: #{map-get($spacing, "3")};
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fix before release
|
||||
// Theme fonts
|
||||
.styled-title{
|
||||
font-family: "Nunito", sans-serif;
|
||||
|
||||
&.fw-900{
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
&.fw-600{
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.filter-section {
|
||||
padding: 2rem 0;
|
||||
}
|
||||
|
||||
.filter-card {
|
||||
background-color: #{map-get($colors, white)};
|
||||
border-radius: map-get($border-radius-sizes, md);
|
||||
box-shadow: map-get($shadows, 2);
|
||||
padding: #{map-get($spacing, "3")};
|
||||
text-align: center;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
height: 100%;
|
||||
margin: 15px 0px;
|
||||
}
|
||||
|
||||
.filter-icon {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #{map-get($colors, primary)};
|
||||
}
|
||||
|
||||
.filter-title {
|
||||
font-size: 1.3rem;
|
||||
font-weight: 500;
|
||||
margin-bottom: 0.5rem;
|
||||
color: map-get($colors, dark);
|
||||
}
|
||||
|
||||
.filter-text {
|
||||
font-size: 1rem;
|
||||
color: map-get($colors, gray);
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* Responsive adjustments */
|
||||
@media (max-width: 768px) {
|
||||
.filter-card {
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.filter-icon {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.filter-title {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Images
|
||||
|
||||
// Rounded col images
|
||||
.rounded-col-image{
|
||||
height: 450px;
|
||||
width: 450px;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
@media(max-width:1200px){
|
||||
width: 300px;
|
||||
height:300px;
|
||||
}
|
||||
|
||||
@media(max-width:920px){
|
||||
width:225px;
|
||||
height: 225px;
|
||||
}
|
||||
|
||||
&:before{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
-webkit-box-shadow: inset 0px 0px 27px -5px rgba(2, 2, 2, 1);
|
||||
-moz-box-shadow: inset 0px 0px 27px -5px rgba(2, 2, 2, 1);
|
||||
box-shadow: inset 0px 0px 27px -5px rgba(2, 2, 2, 1);
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
|
||||
}
|
||||
|
||||
img{
|
||||
object-fit: cover;
|
||||
object-position: right;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
section{
|
||||
h2{
|
||||
font-size: 1.8rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
h3{
|
||||
font-size: 1.6rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
p{
|
||||
font-size: 1.2rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.bolder{
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
.section-animation {
|
||||
opacity: 0; /* Start hidden */
|
||||
transform: translateY(50px); /* Slide up from 50px below */
|
||||
transition: opacity 0.8s ease-out, transform 0.8s ease-out; /* Smooth transition */
|
||||
}
|
||||
|
||||
.section-animation.visible {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
/* Accessibility for reduced motion */
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.section-animation {
|
||||
opacity: 1;
|
||||
transform: none;
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from {
|
||||
transform: translateY(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
9
rss/css/variables.css
Normal file
@@ -0,0 +1,9 @@
|
||||
/* Grid system */
|
||||
/* Breakpoints */
|
||||
/* Display types */
|
||||
/* Color palette */
|
||||
/* Spacing scale */
|
||||
/* Shadows (soft shadows) */
|
||||
/* Flex utilities */
|
||||
/* Button component variables */
|
||||
/* Typography *//*# sourceMappingURL=variables.css.map */
|
||||
1
rss/css/variables.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["variables.scss"],"names":[],"mappings":"AAAA,gBAAA;AAIA,gBAAA;AAmBA,kBAAA;AAGA,kBAAA;AAoBA,kBAAA;AAGA,2BAAA;AAoBA,mBAAA;AAyBA,+BAAA;AAQA,eAAA","file":"variables.css"}
|
||||
165
rss/css/variables.scss
Normal file
@@ -0,0 +1,165 @@
|
||||
/* Grid system */
|
||||
$container-padding: 1rem;
|
||||
$grid-columns: 12;
|
||||
|
||||
/* Breakpoints */
|
||||
$breakpoints: (
|
||||
sm: 576px,
|
||||
md: 768px,
|
||||
lg: 992px,
|
||||
xl: 1200px,
|
||||
xxl: 1400px,
|
||||
xxxl: 1600px
|
||||
);
|
||||
|
||||
$container-max-widths: (
|
||||
sm: 540px,
|
||||
md: 720px,
|
||||
lg: 960px,
|
||||
xl: 1140px,
|
||||
xxl: 1320px,
|
||||
xxxl: 1520px
|
||||
);
|
||||
|
||||
/* Display types */
|
||||
$display-types: block, flex, inline, inline-block, inline-flex, grid, none;
|
||||
|
||||
/* Color palette */
|
||||
$colors: (
|
||||
primary: #aa0b3d,
|
||||
primary-alt: #aa0b3da8,
|
||||
alt: #b5451896,
|
||||
secondary: #333,
|
||||
success: #34b97b,
|
||||
warning: #ffc107,
|
||||
danger: #dc3545,
|
||||
info: #0dcaf0,
|
||||
light: #e5e5e5,
|
||||
dark: #212529,
|
||||
white: #ffffff,
|
||||
black: #000000,
|
||||
muted: #C7C7C7,
|
||||
accent-white: #f7f7f7,
|
||||
accent: #08bbbb,
|
||||
transparent: transparent
|
||||
);
|
||||
|
||||
/* Spacing scale */
|
||||
$spacing-scale: 0, 0.25rem, 0.5rem, 1rem, 1.5rem, 3rem;
|
||||
|
||||
/* Shadows (soft shadows) */
|
||||
$shadows: (
|
||||
1: 0 1px 3px rgba(0, 0, 0, 0.12),
|
||||
2: 0 2px 6px rgba(0, 0, 0, 0.16),
|
||||
3: 0 4px 10px rgba(0, 0, 0, 0.18),
|
||||
4: 0 6px 15px rgba(0, 0, 0, 0.20),
|
||||
5: 0 10px 24px rgba(0, 0, 0, 0.22)
|
||||
);
|
||||
|
||||
$drop-shadows: (
|
||||
1: 0 2px 4px rgba(0, 0, 0, 0.14),
|
||||
2: 0 4px 8px rgba(0, 0, 0, 0.18),
|
||||
3: 0 8px 16px rgba(0, 0, 0, 0.20),
|
||||
4: 0 12px 24px rgba(0, 0, 0, 0.22),
|
||||
5: 0 20px 40px rgba(0, 0, 0, 0.24)
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/* Flex utilities */
|
||||
$flex-directions: (
|
||||
row: row,
|
||||
row-reverse: row-reverse,
|
||||
column: column,
|
||||
column-reverse: column-reverse
|
||||
);
|
||||
|
||||
$justify-content-values: (
|
||||
start: flex-start,
|
||||
end: flex-end,
|
||||
center: center,
|
||||
between: space-between,
|
||||
around: space-around,
|
||||
evenly: space-evenly
|
||||
);
|
||||
|
||||
$align-items-values: (
|
||||
start: flex-start,
|
||||
end: flex-end,
|
||||
center: center,
|
||||
baseline: baseline,
|
||||
stretch: stretch
|
||||
);
|
||||
|
||||
/* Button component variables */
|
||||
$btn-padding-y: 0.375rem;
|
||||
$btn-padding-x: 0.75rem;
|
||||
$btn-font-size: 1rem;
|
||||
$btn-border-radius: 0.25rem;
|
||||
$btn-border-width: 1px;
|
||||
$btn-hover-brightness: 0.9;
|
||||
|
||||
/* Typography */
|
||||
$font-family-base: "Nunito", sans-serif;
|
||||
$font-family-monospace: Menlo, Monaco, Consolas, 'Courier New', monospace;
|
||||
|
||||
$font-sizes: (
|
||||
xs: 0.75rem,
|
||||
sm: 0.875rem,
|
||||
base: 1.1rem,
|
||||
lg: 1.35rem,
|
||||
xl: 1.8rem,
|
||||
xxl: 2.2rem
|
||||
);
|
||||
|
||||
$font-weights: (
|
||||
light: 300,
|
||||
normal: 400,
|
||||
medium: 500,
|
||||
semibold: 600,
|
||||
bold: 700
|
||||
);
|
||||
|
||||
$line-heights: (
|
||||
tight: 1,
|
||||
normal: 1.3,
|
||||
heading: 1.5
|
||||
|
||||
);
|
||||
|
||||
|
||||
$border-widths: (
|
||||
0: 0,
|
||||
1: 1px,
|
||||
2: 2px,
|
||||
3: 3px
|
||||
);
|
||||
|
||||
$border-radius-sizes: (
|
||||
none: 0,
|
||||
sm: 0.125rem,
|
||||
md: 0.25rem,
|
||||
lg: 0.5rem,
|
||||
xl: 1rem,
|
||||
full: 9999px
|
||||
);
|
||||
|
||||
$spacer: 1rem;
|
||||
$spacing: (
|
||||
"0": 0,
|
||||
"1": $spacer * 0.25,
|
||||
"2": $spacer * 0.5,
|
||||
"3": $spacer,
|
||||
"4": $spacer * 1.5,
|
||||
"5": $spacer * 3
|
||||
);
|
||||
|
||||
$gutters: (
|
||||
0: 0,
|
||||
1: map-get($spacing, "1"),
|
||||
2: map-get($spacing, "2"),
|
||||
3: map-get($spacing, "3"),
|
||||
4: map-get($spacing, "4"),
|
||||
5: map-get($spacing, "5")
|
||||
);
|
||||
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 49 KiB |
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"name": "MyWebSite",
|
||||
"short_name": "MySite",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/rss/favicon/web-app-manifest-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/rss/favicon/web-app-manifest-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 181 KiB |
BIN
rss/img/couple-beach.jpg
Normal file
|
After Width: | Height: | Size: 575 KiB |
BIN
rss/img/couple-luxury.jpg
Normal file
|
After Width: | Height: | Size: 388 KiB |
|
Before Width: | Height: | Size: 350 KiB |
BIN
rss/img/couple_sunset.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
|
Before Width: | Height: | Size: 172 KiB |
BIN
rss/img/family-frame.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
rss/img/family-pregnant.jpg
Normal file
|
After Width: | Height: | Size: 230 KiB |
BIN
rss/img/family.jpg
Normal file
|
After Width: | Height: | Size: 514 KiB |
BIN
rss/img/fetish.jpg
Normal file
|
After Width: | Height: | Size: 519 KiB |
|
Before Width: | Height: | Size: 168 KiB |
BIN
rss/img/kink.jpg
Normal file
|
After Width: | Height: | Size: 195 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 286 KiB |
|
Before Width: | Height: | Size: 103 KiB |
BIN
rss/img/save.png
|
Before Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 111 KiB |
BIN
rss/img/stella-hero1.jpg
Normal file
|
After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 477 KiB |
BIN
rss/img/wedding.jpg
Normal file
|
After Width: | Height: | Size: 627 KiB |
BIN
rss/img/yacht.jpg
Normal file
|
After Width: | Height: | Size: 193 KiB |
0
rss/js/create-account.js
Normal file
128
rss/js/home.js
@@ -1,128 +0,0 @@
|
||||
document.addEventListener('DOMContentLoaded', async (v) => {
|
||||
let countries = await fetchCountries();
|
||||
|
||||
// Handlers
|
||||
let countrySelector = document.getElementById('userCountry');
|
||||
for(country of countries){
|
||||
countrySelector.innerHTML += `<option value="${country.text}">${country.text}</option>`;
|
||||
}
|
||||
|
||||
let signupForm = document.getElementById('signup');
|
||||
signupForm.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
document.getElementById('spinner').classList.add('show');
|
||||
|
||||
// Extract form data
|
||||
let username = signupForm.querySelector('#username').value;
|
||||
let dob = signupForm.querySelector('#u_dob').value;
|
||||
let country = signupForm.querySelector('#userCountry').value;
|
||||
let gender = signupForm.querySelector('#gender').value;
|
||||
let email = signupForm.querySelector('#email').value;
|
||||
let password = signupForm.querySelector('#password').value;
|
||||
let password2 = signupForm.querySelector('#password2').value;
|
||||
let tosInput = signupForm.querySelector('#tos');
|
||||
let tos = tosInput.checked;
|
||||
|
||||
// Remove errors
|
||||
document.getElementById('usernameError').innerText = null;
|
||||
document.getElementById('countryError').innerText = null;
|
||||
document.getElementById('emailError').innerText = null;
|
||||
document.getElementById('dobError').innerText = null;
|
||||
document.getElementById('genderError').innerText = null;
|
||||
document.getElementById('passwordError').innerText = null;
|
||||
document.getElementById('password2Error').innerText = null;
|
||||
|
||||
|
||||
let userData = {
|
||||
username: username,
|
||||
country: country,
|
||||
gender: gender,
|
||||
email: email,
|
||||
dob: dob,
|
||||
password: password,
|
||||
password2: password2,
|
||||
acceptTerms: tos
|
||||
};
|
||||
|
||||
let action = 'signup';
|
||||
|
||||
let formData = JSON.stringify({
|
||||
action: action,
|
||||
userData: userData
|
||||
});
|
||||
|
||||
// Send request
|
||||
fetch('https://api.stellaamor.com/users.php', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: formData
|
||||
})
|
||||
.then(response => {
|
||||
if(response && response.length){
|
||||
return response.json();
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.then(msg => {
|
||||
console.log(msg);
|
||||
// If we have a JSON response, process it; otherwise, assume success
|
||||
document.getElementById('spinner').classList.remove('show');
|
||||
if (msg && msg.status === 'fail') {
|
||||
let errorArea = msg.fail_status;
|
||||
|
||||
if (errorArea === 'username') {
|
||||
document.getElementById('usernameError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'country') {
|
||||
document.getElementById('countryError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'email') {
|
||||
document.getElementById('emailError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'dob') {
|
||||
document.getElementById('dobError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'gender') {
|
||||
document.getElementById('genderError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'password') {
|
||||
document.getElementById('passwordError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'password2' || errorArea === 'passwords') {
|
||||
document.getElementById('password2Error').innerText = msg.message;
|
||||
}
|
||||
} else {
|
||||
// Success: Redirect to signin page
|
||||
setTimeout(() => {
|
||||
window.location.href = '/signin';
|
||||
}, 2000);
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error during signup:', error);
|
||||
document.getElementById('errors').innerText = 'An error occurred. Please try again later.';
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Call init functions
|
||||
});
|
||||
|
||||
async function fetchCountries() {
|
||||
try {
|
||||
const response = await fetch('https://restcountries.com/v3.1/all?fields=name');
|
||||
const data = await response.json();
|
||||
|
||||
const countries = data.map(country => ({
|
||||
text: country.name.common,
|
||||
val: country.cca2,
|
||||
})).sort((a, b) => a.text.localeCompare(b.text));
|
||||
|
||||
return countries;
|
||||
} catch (error) {
|
||||
console.error('Error fetching countries:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
0
rss/js/index.js
Normal file
@@ -1,82 +0,0 @@
|
||||
document.addEventListener('DOMContentLoaded', async (v) =>{
|
||||
await isAuth();
|
||||
let loginForm = document.getElementById('loginForm');
|
||||
|
||||
loginForm.addEventListener('submit', async (e) =>{
|
||||
e.preventDefault();
|
||||
await login();
|
||||
})
|
||||
})
|
||||
|
||||
// Async login function in vanilla JS
|
||||
async function login() {
|
||||
// Set login running state
|
||||
let loginRunning = true;
|
||||
let loginError = false;
|
||||
|
||||
// Get form data
|
||||
let username = document.getElementById('username').value;
|
||||
let password = document.getElementById('password').value;
|
||||
|
||||
let postFields = {
|
||||
userData: {
|
||||
username: username,
|
||||
password: password
|
||||
},
|
||||
action: 'login'
|
||||
};
|
||||
|
||||
try {
|
||||
// Send request
|
||||
const response = await fetch('https://api.stellaamor.com/users.php', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
credentials: 'include', // To handle cookies
|
||||
body: JSON.stringify(postFields)
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (data.status === 'fail') {
|
||||
// Display error if login fails
|
||||
loginError = true;
|
||||
document.getElementById('loginError').innerText = data.message;
|
||||
loginRunning = false;
|
||||
} else {
|
||||
// Successful login, redirect to /home
|
||||
loginRunning = false;
|
||||
setTimeout(() => {
|
||||
window.location.href = '/home';
|
||||
|
||||
// Reset form fields and errors after login
|
||||
document.getElementById('username').value = '';
|
||||
document.getElementById('password').value = '';
|
||||
document.getElementById('loginError').innerText = '';
|
||||
loginRunning = false;
|
||||
}, 1500);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Login error:', error);
|
||||
loginError = true;
|
||||
loginRunning = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Async authentication check function in vanilla JS
|
||||
async function isAuth() {
|
||||
try {
|
||||
const response = await fetch('https://api.stellaamor.com/users.php?isAuth=true', {
|
||||
method: 'GET',
|
||||
credentials: 'include'
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (data.status === true) {
|
||||
window.location.href = '/home';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,76 @@
|
||||
// Global functions
|
||||
async function mainFetch(fdata){
|
||||
|
||||
async function _post(formObj, target, func){
|
||||
try{
|
||||
const form = await createFormData(formObj, target, func)
|
||||
const respJson = await fetch('/rss/php/handler.php', {
|
||||
method: 'POST',
|
||||
body: form
|
||||
});
|
||||
|
||||
if(respJson){
|
||||
return await(respJson.json());
|
||||
}else{
|
||||
return 'Error';
|
||||
}
|
||||
}catch(errno){
|
||||
console.log('Post failed');
|
||||
console.log(errno)
|
||||
}
|
||||
}
|
||||
|
||||
async function createFormData(data, target, func){
|
||||
const formData = new FormData();
|
||||
try{
|
||||
for(const key in data){
|
||||
if(data.hasOwnProperty(key)){
|
||||
formData.append(key, data[key]);
|
||||
}
|
||||
}
|
||||
formData.append('target', target);
|
||||
formData.append('function', func)
|
||||
}catch(errno){
|
||||
console.log('Incorrect use of object');
|
||||
return false;
|
||||
}
|
||||
return formData;
|
||||
}
|
||||
|
||||
function createEl(el, classArr = null, elText = null, dtSet = null){
|
||||
const element = document.createElement(el);
|
||||
if(elText){
|
||||
element.appendChild(document.createTextNode(elText));
|
||||
}
|
||||
|
||||
if(classArr && classArr.length){
|
||||
element.classList.add(...classArr);
|
||||
}
|
||||
|
||||
if(dtSet && Object.keys(dtSet).length){
|
||||
for(const [data, value] of Object.entries(dtSet)){
|
||||
element.dataset[data] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
|
||||
function getRandomID(){
|
||||
return Math.random().toString(36).replace('0.', '');
|
||||
}
|
||||
|
||||
async function generateAlert(type, text){
|
||||
const alert = document.createElement('div');
|
||||
alert.classList.add('alert');
|
||||
alert.classList.add(type);
|
||||
alert.appendChild(document.createTextNode(text));
|
||||
return alert;
|
||||
}
|
||||
|
||||
async function removeAlert(){
|
||||
const alerts = document.querySelectorAll('.alert');
|
||||
if(alerts && alerts.length){
|
||||
for(const alert of alerts){
|
||||
alert.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
const burger = document.querySelector('.burger');
|
||||
const navLinks = document.querySelector('.nav-links');
|
||||
|
||||
burger.addEventListener('click', () => {
|
||||
navLinks.classList.toggle('nav-active');
|
||||
burger.classList.toggle('toggle');
|
||||
});
|
||||
21
rss/js/properties.js
Normal file
@@ -0,0 +1,21 @@
|
||||
document.addEventListener('DOMContentLoaded', async () =>{
|
||||
await getParams();
|
||||
})
|
||||
|
||||
async function getParams() {
|
||||
const queryString = window.location.search;
|
||||
const params = new URLSearchParams(queryString);
|
||||
const paramsObject = {};
|
||||
for (const key of params.keys()) {
|
||||
if (key.endsWith('[]')) {
|
||||
|
||||
const cleanKey = key.replace('[]', '');
|
||||
paramsObject[cleanKey] = params.getAll(key);
|
||||
} else {
|
||||
|
||||
paramsObject[key] = params.get(key);
|
||||
}
|
||||
}
|
||||
|
||||
return paramsObject;
|
||||
}
|
||||
8
rss/json/pages/404.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Not found",
|
||||
"long_desc": "Page or property was not found",
|
||||
"short_desc": "Page or property was not found",
|
||||
"template": "404",
|
||||
"restricted": false,
|
||||
"redirect_login": false
|
||||
}
|
||||
8
rss/json/pages/create-account.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Create account",
|
||||
"long_desc": "Testing the description!",
|
||||
"short_desc": "Test desc",
|
||||
"template": "create-account",
|
||||
"restricted": false,
|
||||
"redirect_login": true
|
||||
}
|
||||
8
rss/json/pages/index.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Home",
|
||||
"long_desc": "Testing the description!",
|
||||
"short_desc": "Test desc",
|
||||
"template": "index",
|
||||
"restricted": false,
|
||||
"redirect_login": false
|
||||
}
|
||||
8
rss/json/pages/login.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Login",
|
||||
"long_desc": "Testing the description!",
|
||||
"short_desc": "Test desc",
|
||||
"template": "login",
|
||||
"restricted": false,
|
||||
"redirect_login": true
|
||||
}
|
||||
11
rss/php/autoload.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
spl_autoload_register(function ($class){
|
||||
$class = str_replace('App\\', '', $class);
|
||||
$class = str_replace('\\', '/', $class);
|
||||
|
||||
$file = $_SERVER['DOCUMENT_ROOT'] . '/rss/php/class/'.$class.'.php';
|
||||
|
||||
if(file_exists($file)){
|
||||
require_once($file);
|
||||
}
|
||||
});
|
||||
56
rss/php/class/Main.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
namespace App;
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/autoload.php');
|
||||
|
||||
use PDO;
|
||||
use PDOException;
|
||||
use Exception;
|
||||
|
||||
class Main extends Sys{
|
||||
|
||||
|
||||
public function __construct(){
|
||||
|
||||
}
|
||||
|
||||
public function getCountryData() {
|
||||
$csvPath = $_SERVER['DOCUMENT_ROOT'] . '/rss/csv/worldcities.csv';
|
||||
if (!file_exists($csvPath)) {
|
||||
return ['status' => 'error', 'message' => 'CSV file not found'];
|
||||
}
|
||||
|
||||
$handle = fopen($csvPath, 'r');
|
||||
if (!$handle) {
|
||||
return ['status' => 'error', 'message' => 'Failed to open CSV'];
|
||||
}
|
||||
|
||||
$header = fgetcsv($handle);
|
||||
$countryData = [];
|
||||
|
||||
while (($row = fgetcsv($handle)) !== false) {
|
||||
$rowData = array_combine($header, $row);
|
||||
|
||||
$country = $rowData['country'] ?? null;
|
||||
$city = $rowData['city'] ?? null;
|
||||
$state = $rowData['admin_name'] ?? null;
|
||||
|
||||
if (!$country || !$city) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$cityObj = ['city' => $city];
|
||||
if ($state && $state !== $city) {
|
||||
$cityObj['state'] = $state;
|
||||
}
|
||||
|
||||
if (!isset($countryData[$country])) {
|
||||
$countryData[$country] = [];
|
||||
}
|
||||
|
||||
$countryData[$country][] = $cityObj;
|
||||
}
|
||||
|
||||
fclose($handle);
|
||||
return $this->createResponse('success', $countryData);
|
||||
}
|
||||
}
|
||||
34
rss/php/class/Sys.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
namespace App;
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/autoload.php');
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/conf.php');
|
||||
|
||||
use PDO;
|
||||
use PDOException;
|
||||
use Exception;
|
||||
use stdClass;
|
||||
|
||||
class Sys{
|
||||
protected $conn;
|
||||
|
||||
public function __construct(){
|
||||
global $conn;
|
||||
$this->conn = $conn;
|
||||
}
|
||||
|
||||
public function validateVar($val){
|
||||
if(isset($val) && !empty($val) && $val){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected function createResponse($status, $message = null, $info = null){
|
||||
$resp = new stdClass();
|
||||
$resp->status = $status;
|
||||
$resp->message = $message;
|
||||
$resp->info = $info;
|
||||
return $resp;
|
||||
}
|
||||
}
|
||||
36
rss/php/conf.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/.env')){
|
||||
$lines = file($_SERVER['DOCUMENT_ROOT'] . '/.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
|
||||
if(isset($lines) && !empty($lines)){
|
||||
foreach($lines as $line){
|
||||
if(strpos(trim($line), '#') === 0){
|
||||
continue;
|
||||
}
|
||||
|
||||
list($name, $value) = explode('=', $line, 2);
|
||||
$name = trim($name);
|
||||
$value = trim($value);
|
||||
|
||||
$value = trim($value, '"\'');
|
||||
|
||||
putenv("$name=$value");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
$db_user = getenv("DB_USER");
|
||||
$db_pass = getenv("DB_PASS");
|
||||
$db_server = getenv("DB_SERVER");
|
||||
$db_name = getenv("DB_NAME");
|
||||
|
||||
$conn = new PDO("mysql:host=$db_server;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
|
||||
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
}catch(PDOException $e){
|
||||
var_dump($e);
|
||||
echo json_encode('Connection exception');
|
||||
exit();
|
||||
}
|
||||
|
||||
?>
|
||||
58
rss/php/handler.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/autoload.php');
|
||||
use App\Main;
|
||||
|
||||
$classList = array(
|
||||
'Main' => Main::class,
|
||||
);
|
||||
|
||||
session_start();
|
||||
|
||||
if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/php/conf.php')){
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/conf.php');
|
||||
}
|
||||
|
||||
if(isset($_POST['function']) && !empty($_POST['function']) && isset($_POST['target']) && !empty($_POST['target'])){
|
||||
$t_class = trim($_POST['target']);
|
||||
$t_func = trim($_POST['function']);
|
||||
if(array_key_exists($t_class, $classList) && class_exists($classList[$t_class])){
|
||||
if(method_exists($classList[$t_class], $t_func)){
|
||||
$_class = new $classList[$t_class];
|
||||
|
||||
if(count($_POST) > 2){
|
||||
foreach($_POST as $prop => $val){
|
||||
if(property_exists($classList[$t_class], $prop)){
|
||||
$_class->$prop = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_FILES) && !empty($_FILES)){
|
||||
foreach($_FILES as $prop => $val){
|
||||
if(property_exists($classList[$t_class], $prop)){
|
||||
$_class->$prop = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$response = $_class->$t_func();
|
||||
if($response){
|
||||
$msg = $response;
|
||||
}else{
|
||||
$msg = new stdClass();
|
||||
$msg->status = 'fail';
|
||||
$msg->message = $response;
|
||||
}
|
||||
}else{
|
||||
$msg = new stdClass();
|
||||
$msg->status = 'fail';
|
||||
$msg->message = 'Invalid function';
|
||||
}
|
||||
}else{
|
||||
$msg = new stdClass();
|
||||
$msg->status = 'fail';
|
||||
$msg->message = 'Invalid class';
|
||||
}
|
||||
}
|
||||
|
||||
die(json_encode($msg));
|
||||
@@ -1,45 +1,28 @@
|
||||
<script src="/rss/js/menu.js"></script>
|
||||
|
||||
<?php
|
||||
$pre_page = $_SERVER['PHP_SELF'];
|
||||
$page = str_replace('/', '', $pre_page);
|
||||
$page = str_replace('.php', '', $page);
|
||||
|
||||
if($page == 'index'){
|
||||
echo '<script src="/rss/js/home.js"></script>';
|
||||
}
|
||||
|
||||
if($page == 'signin'){
|
||||
echo '<script src="/rss/js/login.js"></script>';
|
||||
}
|
||||
global $pageInfo;
|
||||
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/js/' . $pageInfo['template'] .'.js')){
|
||||
echo '<script src="/rss/js/' . $pageInfo['template'] .'.js"></script>';
|
||||
}
|
||||
?>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div class="footer-col">
|
||||
<div class="footer-menu">
|
||||
<h3 class="link-title">Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</li>
|
||||
<li><a href="/signin">Sign in</a></li>
|
||||
<li><a href="/about">About</a></li>
|
||||
</ul>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-3 d-flex align-center">
|
||||
<a href="/"><img src="/rss/img/logo-light.png" class="logo"></a>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-3">
|
||||
<h4>Links</h4>
|
||||
<ul>
|
||||
<li>Home</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-3">
|
||||
<h4>Contact</h4>
|
||||
<ul>
|
||||
<li>Info</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-col">
|
||||
<div class="footer-menu">
|
||||
<h3 class="link-title">Contact</h3>
|
||||
<ul>
|
||||
<li>Support: <a href="mailto:support@stellaamor.com">support@stellaamor.com</li>
|
||||
<li>Contact: <a href="mailto:info@stellaamor.com">info@stellaamor.com</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-col img">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/logo-light.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
</footer>
|
||||
@@ -1,72 +1,82 @@
|
||||
<?php
|
||||
$menu = array(
|
||||
'Home' => '/',
|
||||
'Create account' => '/create-account',
|
||||
'Login' => '/login',
|
||||
'About us' => '/about-us',
|
||||
);
|
||||
$pageTitle = htmlspecialchars($pageTitle ?? 'Stella Amor | Free Dating with Ultimate Match Filters', ENT_QUOTES, 'UTF-8');
|
||||
$pageDescription = htmlspecialchars($pageDescription ?? 'Free dating! Ultimate filters for wealth, kinks, fetishes, & passions. Meet your perfect match now!', ENT_QUOTES, 'UTF-8');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Basic Meta Tags -->
|
||||
<!-- Defaults -->
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>Stella Amor | <?php echo $page_title;?></title>
|
||||
<title><?php echo $pageTitle; ?></title>
|
||||
<meta name="description" content="<?php echo $pageDescription; ?>">
|
||||
<meta name="author" content="Stella Amor">
|
||||
<meta name="keywords" content="free dating, online dating, match filters, finance, kinks, fetishes, lifestyle dating">
|
||||
<link rel="canonical" href="https://stellaamor.com<?php echo isset($_GET['page']) ? '/' . htmlspecialchars(basename($_GET['page']), ENT_QUOTES, 'UTF-8') : ''; ?>">
|
||||
|
||||
<!-- Meta Description -->
|
||||
<meta name="description" content="<?php echo $page_description;?> ">
|
||||
<meta name="keywords" content="dating">
|
||||
|
||||
<!-- Open Graph Tags for Social Media -->
|
||||
<meta property="og:title" content="Stella Amor | <?php echo $page_title;?>">
|
||||
<meta property="og:description" content="<?php echo $page_description;?>">
|
||||
<meta property="og:image" content="https://stellaamor.com/rss/img/logo.png">
|
||||
<meta property="og:url" content="https://stellaamor.com<?php echo $_SERVER['REQUEST_URI'];?>">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<!-- Twitter Card Meta Tags -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Stella Amor | <?php echo $page_title;?>">
|
||||
<meta name="twitter:description" content="<?php echo $page_description;?>">
|
||||
<meta name="twitter:image" content="https://stellaamor.com/rss/img/logo.png">
|
||||
|
||||
|
||||
<link rel="icon" type="image/png" href="/rss/favicon/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="icon" type="image/svg+xml" href="/rss/favicon/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/rss/favicon/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/rss/favicon/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="/rss/favicon/site.webmanifest" />
|
||||
|
||||
<!-- Canonical Link (for duplicate pages) -->
|
||||
<link rel="canonical" href="https://stellaamor.com<?php echo rtrim($_SERVER['REQUEST_URI'], '/'); ?>">
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-7LSPWJ1YKX"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-7LSPWJ1YKX');
|
||||
</script>
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
|
||||
<!-- Robots Meta Tag (for search engine crawling control) -->
|
||||
<!-- Robots -->
|
||||
<meta name="robots" content="index, follow">
|
||||
|
||||
<!-- Include css and JS -->
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:title" content="<?php echo $pageTitle; ?>">
|
||||
<meta property="og:description" content="<?php echo $pageDescription; ?>">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://stellaamor.com<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<meta property="og:image" content="https://stellaamor.com/rss/img/logo.png">
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="<?php echo $pageTitle; ?>">
|
||||
<meta name="twitter:description" content="<?php echo $pageDescription; ?>">
|
||||
<meta name="twitter:image" content="https://stellaamor.com/rss/img/logo.png">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="/rss/img/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/rss/img/apple-touch-icon.png">
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link rel="preload" href="/rss/css/main.css" as="style">
|
||||
<link href="https://cdn.jsdelivr.net/npm/@mdi/font/css/materialdesignicons.min.css" rel="stylesheet">
|
||||
<link href="/rss/css/main.css" rel="stylesheet">
|
||||
<body>
|
||||
|
||||
<!-- Begin menu -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<a href="/" class="logo"><img src="/rss/img/logo.png"></a>
|
||||
<ul class="nav-links">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="signin">Login</a></li>
|
||||
<li><a href="/about">About us</a></li>
|
||||
</ul>
|
||||
<div class="burger">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
<link rel="stylesheet" href="/rss/css/main.css">
|
||||
<link rel="stylesheet" href="/rss/css/theme.css" media="print" onload="this.media='all'">
|
||||
|
||||
<!-- JavaScript -->
|
||||
<script src="/rss/js/main.js" defer></script>
|
||||
|
||||
<!-- Structured Data (JSON-LD) -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "Stella Amor",
|
||||
"url": "https://stellaamor.com",
|
||||
"logo": "https://stellaamor.com/rss/img/logo.png",
|
||||
"description": "Stella Amor: Free online dating with advanced filters for lifestyle, finance, kinks, and more. Find your perfect match today."
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo">
|
||||
<a href="/">
|
||||
<img src="/rss/img/logo.png" alt="Stella Amor Logo" width="150" height="50">
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
<button class="menu-toggle" aria-label="Toggle navigation">☰</button>
|
||||
<nav>
|
||||
<?php
|
||||
$currentPage = $_SERVER['REQUEST_URI'];
|
||||
foreach($menu as $name => $link):
|
||||
$isActive = ($currentPage === $link) ? 'active' : '';
|
||||
$ariaCurrent = ($currentPage === $link) ? ' aria-current="page"' : '';
|
||||
?>
|
||||
<a href="<?php echo $link; ?>" class="menu-item <?php echo $isActive; ?>"<?php echo $ariaCurrent; ?>><?php echo $name; ?></a>
|
||||
<?php endforeach; ?>
|
||||
</nav>
|
||||
</header>
|
||||
33
rss/php/pageHandler.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
session_start();
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/autoload.php');
|
||||
// require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/conf.php');
|
||||
$page = isset($_GET['page']) && !empty($_GET['page']) ? str_replace('.php', '', $_GET['page']) : 'index';
|
||||
if($page == '404'){
|
||||
http_response_code(404);
|
||||
}
|
||||
|
||||
if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/json/pages/' . $page . '.json')){
|
||||
// Load page configuration
|
||||
$jsonInfo = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/rss/json/pages/' . $page .'.json');
|
||||
$pageInfo = json_decode($jsonInfo, true);
|
||||
|
||||
}else{
|
||||
http_response_code(404);
|
||||
header('location:/404');
|
||||
die('Not found');
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
function loadContents(){
|
||||
global $pageInfo;
|
||||
if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/php/templates/'.$pageInfo['template'].'.php')){
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/templates/'.$pageInfo['template'].'.php');
|
||||
}else{
|
||||
http_response_code(404);
|
||||
header('location:/404');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
?>
|
||||
1
rss/php/templates/404.php
Normal file
@@ -0,0 +1 @@
|
||||
<h2>This page was not found</h2>
|
||||
322
rss/php/templates/index.php
Normal file
@@ -0,0 +1,322 @@
|
||||
<main>
|
||||
<div class="home-banner">
|
||||
<div class="home-banner-inner">
|
||||
<div class="container">
|
||||
<div class="inner-row">
|
||||
<div class="text-col">
|
||||
<h1 class="title mb-3">Discover <span class="text-primary">Your Love Story</span> with Stella Amor</h1>
|
||||
<p class="lead mb-1">Join free today with unique date filters for finance, kinks, lifestyle, and beyond. Start exploring now!</p>
|
||||
<a href="/signup" class="mb-3 btn btn-dark cta-btn">Sign up today</a>
|
||||
<p class="login-text">Already have an account? <a href="/login" class="login-link">Login now</a></p>
|
||||
</div>
|
||||
<div class="image-col">
|
||||
<div class="image-wrapper">
|
||||
<img src="/rss/img/couple_sunset.jpg" alt="Couple at sunset">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="features-section py-4 bg-white">
|
||||
<div class="container border-top text-light py-4">
|
||||
<h2 class="text-center mb-2 fw-light text-black">Discover Your Ideal Match Today</h2>
|
||||
<div class="row text-black">
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="theme-card primary card-hover">
|
||||
<div class="card-header theme-header">
|
||||
<img src="/rss/img/yacht.jpg" alt="Financial compatibility couple" class="rounded-image object-bottom">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3 class="h3 fw-light">Financial Harmony</h3>
|
||||
<p class="text">Match with singles who align with your financial dreams, from savings to luxury lifestyles.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="theme-card secondary card-hover">
|
||||
<div class="card-header theme-header">
|
||||
<img src="/rss/img/kink.jpg" alt="Kinks and fetishes compatibility couple" class="rounded-image object-left">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3 class="h3 fw-light">Unique Preferences</h3>
|
||||
<p class="text">Find love with filters for kinks and personal desires tailored just for you.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="theme-card primary card-hover">
|
||||
<div class="card-header theme-header">
|
||||
<img src="/rss/img/family-frame.jpg" alt="Lifestyle compatibility couple" class="rounded-image object-bottom">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3 class="h3 fw-light">Lifestyle Connections</h3>
|
||||
<p class="text">Connect with partners who share your passion for pets, fitness, or family values.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-center mt-3">
|
||||
<a href="/create-account" class="btn btn-dark" title="Explore Stella Amor filters" aria-label="Explore filters">Explore Your Options</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section>
|
||||
<div class="py-5 display-banner wedding-banner">
|
||||
<div class="container">
|
||||
<div class="flex-column justify-center align-center">
|
||||
<h3 class="text-white">Uncover True Love and Marriage with Free Dating</h3>
|
||||
<p class="text-white">Join free today at Stella Amor to connect with your lifelong partner using unique date filters for finance, kinks, lifestyle, and much more.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="bg-white py-4">
|
||||
<div class="container my-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-12 col-md-5">
|
||||
<div class="rounded-col-image">
|
||||
<img src="/rss/img/couple-beach.jpg" alt="Stella Amor dating experience">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-7 flex-column justify-center">
|
||||
<h2 class="mb-3">Join the Best <span class="bolder text-primary">Dating Platform </span> with Advanced Filters</h2>
|
||||
<p>Stella Amor offers free dating with advanced filters for finance, kinks, lifestyle, and more. Connect with singles who truly align with your values and passions. Start your journey to love today with a platform designed for your unique preferences!</p>
|
||||
<div class="d-flex mt-3">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="container border-top text-light" aria-hidden="true"></div>
|
||||
|
||||
<section class="py-2 bg-white">
|
||||
<div class="container my-5">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-12 col-md-5">
|
||||
<img src="/rss/img/couple-luxury.jpg" alt="Free dating with economy filters on Stella Amor" class="img-w-100 img-rounded-lg shadow-2">
|
||||
</div>
|
||||
<div class="col-12 col-md-7 flex-column justify-center">
|
||||
<h2 class="mb-3">Find Love with Economy Compatibility</h2>
|
||||
<p>Stella Amor’s free dating platform lets you filter for financial compatibility, connecting you with singles who share your economic goals. Start building a stable future with the right partner today!</p>
|
||||
<div class="d-flex mt-3">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-12 col-md-7 flex-column justify-center">
|
||||
<h2 class="mb-3">Explore Love with Kinks & Preferences</h2>
|
||||
<p>Discover your ideal match on Stella Amor with advanced filters for kinks and unique preferences. Join free to find a partner who embraces your desires on this top dating site!</p>
|
||||
</div>
|
||||
<div class="col-12 col-md-5">
|
||||
<img src="/rss/img/fetish.jpg" alt="Free dating with kinks filters on Stella Amor" class="img-w-100 img-rounded-lg shadow-2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-12 col-md-5">
|
||||
<img src="/rss/img/family-pregnant.jpg" alt="Free dating with family filters on Stella Amor" class="img-w-100 img-rounded-lg shadow-2">
|
||||
</div>
|
||||
<div class="col-12 col-md-7 flex-column justify-center">
|
||||
<h2 class="mb-3">Build a Family with Lifestyle Matching</h2>
|
||||
<p>Stella Amor offers free dating with filters for family values and lifestyle, helping you find a lifelong partner ready for marriage and a shared future. Join now!</p>
|
||||
<div class="d-flex mt-3">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="success-stories bg-white">
|
||||
<div class="container text-light border-top border-bottom py-4 mb-3">
|
||||
<div class="text-black">
|
||||
<h2 class="mb-4 text-center">Love Found on Stella Amor</h2>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="theme-card primary">
|
||||
<div class="inner">
|
||||
<p class="text">“The finance filter helped us align our goals!” – K & M</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="theme-card secondary">
|
||||
<div class="inner">
|
||||
<p class="text">“Kink filters made finding my match effortless!” – P & J</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="theme-card primary">
|
||||
<div class="inner">
|
||||
<p class="text">“Found my pet-loving soulmate!” – S & T</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-center mt-4">
|
||||
<a href="/success-stories" class="btn btn-outline-primary" title="Read more Stella Amor success stories" aria-label="Read more success stories">Read More Stories</a>
|
||||
</div>
|
||||
</div>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Review",
|
||||
"itemReviewed": {
|
||||
"@type": "Organization",
|
||||
"name": "Stella Amor"
|
||||
},
|
||||
"reviewRating": {
|
||||
"@type": "Rating",
|
||||
"ratingValue": 5
|
||||
},
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "K & M"
|
||||
},
|
||||
"reviewBody": "The finance filter helped us align our goals!"
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="filter-section bg-accent-white py-4">
|
||||
<div class="container my-5">
|
||||
<h2 class="mb-4 text-center">What You Can Filter By</h2>
|
||||
<div class="row g-4">
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-currency-usd"></i> <!-- Finance icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Financial Goals & Spending Habits</h3>
|
||||
<p class="filter-text">Find partners aligned with your wealth dreams, from savings to luxury lifestyles.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-handcuffs"></i> <!-- Kinks icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Fetishes & Personalities</h3>
|
||||
<p class="filter-text">Connect with those who share your unique desires and preferences.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-paw"></i> <!-- Lifestyle icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Lifestyle (Pets, Fitness, Diets)</h3>
|
||||
<p class="filter-text">Match with partners who vibe with your pet love, fitness, or dietary choices.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-eye"></i> <!-- Eye Colors icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Eye Colors & Hair Styles</h3>
|
||||
<p class="filter-text">Filter by physical traits to find your visually perfect match.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-human-male-female"></i> <!-- Body Types icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Body Types & Ethnicities</h3>
|
||||
<p class="filter-text">Discover love based on body preferences and cultural backgrounds.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-school"></i> <!-- Education icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Education & Travel Preferences</h3>
|
||||
<p class="filter-text">Connect with those who share your academic and travel passions.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-heart-pulse"></i> <!-- Health icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Health Habits & Exercise Frequency</h3>
|
||||
<p class="filter-text">Find matches with similar health and fitness routines.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-briefcase"></i> <!-- Job Roles icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Job Roles & Living Arrangements</h3>
|
||||
<p class="filter-text">Align with partners based on career and living situations.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-church"></i> <!-- Religion icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Religion & Languages</h3>
|
||||
<p class="filter-text">Meet those who share your faith and linguistic background.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-lg-4 my-2">
|
||||
<div class="filter-card">
|
||||
<div class="filter-icon">
|
||||
<i class="mdi mdi-movie"></i> <!-- Hobbies icon -->
|
||||
</div>
|
||||
<h3 class="filter-title">Hobbies & Movie Genres</h3>
|
||||
<p class="filter-text">Bond over shared interests and favorite films.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-center mt-4 pt-5">
|
||||
<a href="/create-account" class="btn btn-white me-2">Join Free Now</a>
|
||||
</div>
|
||||
<p class="text-center mt-3">Stella Amor offers the best free dating filters to customize your search and start your love journey today!</p>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- FIX THIS BEFORE RELASE -->
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const sections = document.querySelectorAll('section');
|
||||
|
||||
const observer = new IntersectionObserver(
|
||||
(entries, observer) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('visible');
|
||||
observer.unobserve(entry.target); // Stop observing after animation
|
||||
}
|
||||
});
|
||||
}, {
|
||||
threshold: 0.05, // Trigger when 10% of section is visible
|
||||
rootMargin: '0px 0px -50px 0px' // Trigger 50px before fully in view
|
||||
}
|
||||
);
|
||||
|
||||
sections.forEach(section => {
|
||||
section.classList.add('section-animation');
|
||||
observer.observe(section);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
37
rss/php/templates/login.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<div class="bg-light full-height d-flex align-center">
|
||||
<div class="container">
|
||||
<div class="row py-4 no-wrap">
|
||||
<div class="col-12 col-md-6 rel neg-col d-flex align-center">
|
||||
<div class="card shadow-3">
|
||||
<h2>Login</h2>
|
||||
<form method="POST" action="#" id="loginForm">
|
||||
<div class="form-group">
|
||||
<label for="email">Email</label>
|
||||
<input type="email" class="form-input" id="email" name="email">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="password">Passowrd</label>
|
||||
<input type="password" class="form-input" id="password" name="password">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="form-group">
|
||||
<button class="btn secondary">Login</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-8">
|
||||
<div class="card bg-alt rel has-neg-col shadow-4 py-5">
|
||||
<h2 class="text-white">Log In to Your Real Estate Account</h2>
|
||||
<p class="text-white">Ready to manage your properties? Log in to Globalestatenet and get started in seconds. From your dashboard, you can update your global property listings, respond to inquiries, and connect with buyers and renters across the world—all from one easy-to-use platform.</p>
|
||||
<p class="text-white">For broker agency members, this platform is built to help you grow. After logging in, add your team members to your account, so each employee can create and manage listings that reach international clients. It’s a simple way to expand your agency’s presence in the global real estate market.</p>
|
||||
<p class="text-white">Listing with us is budget-friendly: every property listing costs the same price, whether it’s a small apartment or a luxury estate. You can add up to 100 photos to each listing for free, with no hidden fees. Want more visibility? The only extra cost is for featured listings to help your properties stand out. Don’t have an account yet?<br><a href="/create-account.php" class="btn secondary">Create account</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
23
signin.php
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
$page_title = 'Log In or Sign Up: Start Your Dating Journey';
|
||||
$page_description = 'Log in or create a Stella Amor account. Your path to personalized online dating with advanced matchmaking starts here. Join now!';
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<div class="login-page">
|
||||
<div class="login">
|
||||
<img src="/rss/img/logo.png" alt="Stella Amor" class="logo">
|
||||
<form method="POST" action="#" id="loginForm">
|
||||
<input type="text" placeholder="Username" id="username" class="input">
|
||||
<input type="password" placeholder="Password" id="password" class="input">
|
||||
<button type="submit" class="login-button">Log In</button>
|
||||
</form>
|
||||
<!-- <a href="#" class="forgot-password">Lost your password?</a> -->
|
||||
<div class="errors" id="loginError"></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');?>
|
||||
29
sitemap.xml
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<!-- Homepage -->
|
||||
<url>
|
||||
<loc>https://stellaamor.com/</loc>
|
||||
<lastmod>2024-12-15</lastmod>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
|
||||
<!-- Login/Sign-Up Page -->
|
||||
<url>
|
||||
<loc>https://stellaamor.com/login</loc>
|
||||
<lastmod>2024-12-15</lastmod>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
|
||||
<!-- About Us Page -->
|
||||
<url>
|
||||
<loc>https://stellaamor.com/about</loc>
|
||||
<lastmod>2024-12-15</lastmod>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://stellaamor.com/free-dating</loc>
|
||||
<lastmod>2025-01-09</lastmod>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
</urlset>
|
||||