66 Commits

Author SHA1 Message Date
edsea
f5f3e97654 Update landing page
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 3s
2025-11-25 02:47:52 +01:00
edsea
e3091caf69 Fix comma
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-11-20 02:57:24 +01:00
edsea
5190c9b17c Fix comma
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-11-20 02:55:53 +01:00
edsea
392fc4497d Add cluster block
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-11-20 02:47:46 +01:00
edsea
9f1e1a8962 Merge branch 'main' of https://vault.corpintech.net/eddie/stellaamor.com
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 3s
2025-11-20 02:41:01 +01:00
edsea
61d3738b26 Add landing pages 2025-11-20 02:40:02 +01:00
Dr3amFury
3c9acc125e update text
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-10-11 21:48:37 +02:00
edsea
aeb1ecd50a Merge branch 'main' of https://vault.corpintech.net/eddie/stellaamor.com
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-10-09 00:36:01 +02:00
edsea
810b033a14 Fix ssl issue 2025-10-09 00:35:50 +02:00
c01baf44d9 Merge pull request 'Test new keywords' (#4) from feature/test123 into main
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
Reviewed-on: #4
2025-10-08 16:05:08 -04:00
edsea
70bde90792 Test new keywords 2025-10-08 22:04:07 +02:00
edsea
f7e691a24c Update keywords
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-10-08 22:02:57 +02:00
edsea
1b4adde2bb Fix htaccess for NPM
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-10-08 16:10:37 +02:00
edsea
9217a71d5a Fix build
All checks were successful
Deploy (stellaamor) / deploy (push) Successful in 2s
2025-10-08 12:04:59 +02:00
edsea
de11388a77 Fix build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 2s
2025-10-08 11:58:54 +02:00
edsea
9ab5fb67a6 Fix build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 1s
2025-10-08 11:55:22 +02:00
edsea
699caf348b Fix build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 1s
2025-10-08 11:41:07 +02:00
edsea
9abdf38a8a Fix build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 0s
2025-10-08 11:38:37 +02:00
edsea
0183f4d027 Fix build 2025-10-08 11:35:10 +02:00
edsea
9d2cb407ff Fix build 2025-10-08 11:33:42 +02:00
edsea
63ee007a48 Fix build
Some checks are pending
Deploy (stellaamor) / deploy (push) Waiting to run
2025-10-08 11:26:46 +02:00
edsea
adf6e3a5b2 First build
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-08 11:12:14 +02:00
edsea
936ff29f56 Fix merge conflict 2025-10-08 11:09:33 +02:00
edsea
5589ebc7b7 First build 2025-10-08 11:08:51 +02:00
929b9b3090 Update .gitea/workflows/deploy.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-08 04:56:18 -04:00
899bc2be76 Update .gitea/workflows/deploy.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-08 04:55:58 -04:00
6a3608fe1f Update .gitea/workflows/deploy.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-08 04:51:15 -04:00
edsea
c08f8a4cfe First build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 1s
2025-10-08 10:49:42 +02:00
edsea
542b62eaf2 First build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 4s
2025-10-08 10:47:09 +02:00
edsea
60131da7a0 First build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 4s
2025-10-08 10:46:08 +02:00
edsea
d08fdbbf64 First build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 3s
2025-10-08 10:43:15 +02:00
edsea
81f852669c First build
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-08 10:38:08 +02:00
edsea
acbda1e8e1 First build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 4s
2025-10-08 10:35:12 +02:00
edsea
18882365a0 Test build
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 4s
2025-10-08 10:30:15 +02:00
5c4de4eeb1 Update .gitea/workflows/deploy.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 4s
2025-10-08 04:22:25 -04:00
edsea
0594026785 Fix merge conflict
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 0s
2025-10-08 10:13:50 +02:00
295793ad7f Update .gitea/workflows/deploy.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Failing after 1s
2025-10-08 04:04:51 -04:00
edsea
420bf997cc remove home from search engines 2025-10-08 09:46:28 +02:00
2eeac785fb Update robots.txt
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-08 03:42:58 -04:00
57968fe74d Update .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:18:38 -04:00
c312697a6e Update .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:16:56 -04:00
33f3552dd8 Update .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:15:42 -04:00
c7e7013fce Update .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:14:22 -04:00
361e0cfb37 Update .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:11:30 -04:00
9be1311a37 Update .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:08:26 -04:00
e63b3cf525 Add .gitea/workflows/smoke.yml
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 18:07:53 -04:00
c9aa00d80f add build YML
Some checks failed
Deploy (stellaamor) / deploy (push) Has been cancelled
2025-10-07 17:55:18 -04:00
edsea
bbd74dade9 Update g-tag 2025-08-16 03:37:41 +02:00
edsea
e5702dd76e repair htaccess 2025-08-13 14:45:39 +02:00
edsea
4c85f23333 Duplicate image for the app 2025-08-13 14:40:54 +02:00
edsea
bccb39b021 Duplicate image for the app 2025-08-13 14:39:20 +02:00
edsea
082093e723 Duplicate image for the app 2025-08-13 14:37:47 +02:00
edsea
da2d882af5 Close properly 2025-08-07 02:11:21 +02:00
5c4f68e7a7 Update gtag 2025-08-06 11:34:58 +00:00
edsea
a8341f43f1 Google 2025-08-06 05:28:07 +02:00
edsea
349d8433d9 Update username from email in login 2025-08-06 05:24:30 +02:00
edsea
54b83c126d Update username from email in login 2025-08-06 05:18:31 +02:00
edsea
a2660be9c0 Update username from email in login 2025-08-06 05:14:00 +02:00
edsea
7dfe83f837 Update username from email in login 2025-08-06 05:11:24 +02:00
edsea
8ec1ba9756 New stella design 2025-08-06 05:09:22 +02:00
edsea
24c3640f05 Merge branch 'main' of github.com:Corpintech/stellaamor.com 2025-08-03 03:59:04 +02:00
edsea
14b3732039 Fix mobile menu 2025-08-03 03:58:52 +02:00
edsea
4a4fa5308e Fix conflicts 2025-08-03 02:50:41 +02:00
edsea
20b56efd31 Fix htaccess 2025-08-03 02:48:35 +02:00
ae966a540e Merge pull request #2 from Corpintech/login-page-update
Add blurred background image
2025-08-03 01:58:31 +02:00
2479570028 Merge pull request #1 from Corpintech/login-page-update
Update login.php layout and content
2025-08-03 00:48:00 +02:00
116 changed files with 3842 additions and 588 deletions

View File

@@ -0,0 +1,86 @@
name: Deploy (stellaamor)
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: [ mainhost ] # must match your runner label (e.g. mainhost:host)
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_OPTS: >-
-F /dev/null
-o IdentitiesOnly=yes
-o IdentityAgent=none
-o PreferredAuthentications=publickey
-o PubkeyAuthentication=yes
-o PasswordAuthentication=no
-o NumberOfPasswordPrompts=0
-o BatchMode=yes
-o ServerAliveInterval=15
-o ServerAliveCountMax=3
-o ConnectTimeout=20
-o StrictHostKeyChecking=no
APP_ROOT: /var/www/stellaamor
UPLOADS_DIR: uploads
KEEP_N: "5"
HEALTH_URL: https://stellaamor.com/
SERVICE_RELOAD: "systemctl reload apache2 || true"
SSH_KEY_PATH: /home/gitea-runner/.ssh/id_ed25519
steps:
- name: Checkout (pure git)
run: |
git init
git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
git fetch --depth=1 origin "$GITHUB_SHA"
git checkout -q "$GITHUB_SHA"
- name: SSH smoke test
run: ssh $SSH_OPTS -i "$SSH_KEY_PATH" ${SSH_USER}@${SSH_HOST} true
- name: Upload & activate atomically
run: |
set -euo pipefail
REL="$(date -u +%Y%m%d-%H%M%SZ)-${{ github.sha }}"
echo "REL=$REL" >> $GITHUB_ENV
TAR="/tmp/${REL}.tar.gz"
APP="${{ env.APP_ROOT }}"
SHARED="${APP}/shared"
RELEASES="${APP}/releases"
CUR="${APP}/current"
UPLOADS="${{ env.UPLOADS_DIR }}"
tar -czf "$TAR" --exclude-vcs --exclude='./node_modules' --exclude="./${UPLOADS}" --exclude='./release' .
mkdir -p release && mv "$TAR" "release/${REL}.tar.gz"
ssh $SSH_OPTS -i "$SSH_KEY_PATH" ${SSH_USER}@${SSH_HOST} \
"set -e; install -d -m 755 ${RELEASES} ${SHARED} ${SHARED}/${UPLOADS}"
scp -O $SSH_OPTS -vvv -i "$SSH_KEY_PATH" "release/${REL}.tar.gz" ${SSH_USER}@${SSH_HOST}:/tmp/${REL}.tar.gz
ssh $SSH_OPTS -i "$SSH_KEY_PATH" ${SSH_USER}@${SSH_HOST} '
set -euo pipefail
REL="'${REL}'"; APP="'${APP}'"; SHARED="'${SHARED}'"; RELEASES="'${RELEASES}'"; CUR="'${CUR}'"; UPLOADS="'${UPLOADS}'";
NEW="${RELEASES}/${REL}"
mkdir -p "${NEW}"
tar -xzf "/tmp/${REL}.tar.gz" -C "${NEW}" && rm -f "/tmp/${REL}.tar.gz"
rm -rf "${NEW}/${UPLOADS}" && ln -s "${SHARED}/${UPLOADS}" "${NEW}/${UPLOADS}"
[ -f "${SHARED}/.env" ] && ln -sf "${SHARED}/.env" "${NEW}/.env" || true
printf "sha=%s\nbuilt_at=%s\n" "'${{ github.sha }}'" "$(date -u +%FT%TZ)" > "${NEW}/RELEASE"
PREV="$(readlink -f "${CUR}" || true)"
ln -sfn "${NEW}" "${CUR}"
'"${{ env.SERVICE_RELOAD }}"' >/dev/null 2>&1 || true
if command -v curl >/dev/null 2>&1; then
curl -fsS --max-time 5 "'"${{ env.HEALTH_URL }}"'" >/dev/null || {
echo "Health check failed, rolling back..."
[ -n "${PREV}" ] && ln -sfn "${PREV}" "${CUR}" && '"${{ env.SERVICE_RELOAD }}"' >/dev/null 2>&1 || true
exit 1
}
fi
cd "${RELEASES}" && ls -1tr | head -n -'${{ env.KEEP_N }}' | xargs -r -I{} rm -rf "{}"
'

View File

@@ -0,0 +1,47 @@
# manual rollback
on:
workflow_dispatch:
inputs:
steps:
description: "How many releases to roll back (1 = previous)"
default: "1"
jobs:
rollback:
runs-on: [ mainhost ]
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_KEY_PATH: /home/gitea-runner/.ssh/id_ed25519
SSH_OPTS: >-
-F /dev/null -o IdentitiesOnly=yes -o IdentityAgent=none
-o PreferredAuthentications=publickey -o PubkeyAuthentication=yes
-o PasswordAuthentication=no -o NumberOfPasswordPrompts=0 -o BatchMode=yes
-o ServerAliveInterval=15 -o ServerAliveCountMax=3 -o ConnectTimeout=20
-o StrictHostKeyChecking=no
APP_ROOT: /var/www/stellaamor
SERVICE_RELOAD: "systemctl reload apache2 || true"
steps:
- name: Roll back symlink to an older release
run: |
set -euo pipefail
APP="${{ env.APP_ROOT }}"
RELEASES="${APP}/releases"
CUR="${APP}/current"
N="${{ github.event.inputs.steps || '1' }}"
# pick target release (1=previous)
TARGET="$(ls -1tr "${RELEASES}" | tail -n +"$((N+1))" | tail -n 1)"
if [ -z "${TARGET}" ]; then
echo "No release found to roll back to."; exit 1
fi
echo "Rolling back to: ${TARGET}"
ssh $SSH_OPTS -i "$SSH_KEY_PATH" ${SSH_USER}@${SSH_HOST} "
set -euo pipefail
APP='${APP}'; RELEASES='${RELEASES}'; CUR='${CUR}'; TARGET='${TARGET}';
[ -d \"\${RELEASES}/\${TARGET}\" ] || { echo 'Target release missing'; exit 1; }
ln -sfn \"\${RELEASES}/\${TARGET}\" \"\${CUR}\"
${SERVICE_RELOAD} >/dev/null 2>&1 || true
"

View File

@@ -0,0 +1,51 @@
name: Smoke (SSH + layout)
on:
workflow_dispatch:
push:
branches: [ "ci/smoke" ]
jobs:
smoke:
runs-on: [ mainhost, docker ]
env:
APP_ROOT: /var/www/stellaamor
UPLOADS_DIR: uploads
steps:
- name: Checkout (pure git)
run: |
git init
git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
git fetch --depth=1 origin "$GITHUB_SHA"
git checkout -q "$GITHUB_SHA"
- name: Write SSH key
run: |
set -eu
install -d -m 700 ~/.ssh
printf '%s\n' "${{ secrets.SSH_KEY }}" > ~/.ssh/id_ed25519
# normalize (fix CRLF)
sed -i 's/\r$//' ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
if [ -n "${{ secrets.SSH_KNOWN_HOSTS }}" ]; then
printf '%s\n' "${{ secrets.SSH_KNOWN_HOSTS }}" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
else
printf 'StrictHostKeyChecking no\n' >> ~/.ssh/config
fi
- name: Ping server
run: ssh -i ~/.ssh/id_ed25519 ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} 'echo ok'
- name: Ensure layout (no deploy yet)
run: |
ssh -i ~/.ssh/id_ed25519 ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "
set -e
install -d -m 755 ${APP_ROOT}/releases ${APP_ROOT}/shared ${APP_ROOT}/shared/${UPLOADS_DIR}
echo smoke-$(date -u +%FT%TZ) > ${APP_ROOT}/shared/ci-smoke.txt
ls -la ${APP_ROOT} ${APP_ROOT}/shared
"

View File

@@ -1,39 +1,63 @@
# Enable RewriteEngine
RewriteEngine On
RewriteBase /
# Force HTTPS (redirect HTTP to HTTPS)
#RewriteCond %{HTTPS} off
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Do NOT rewrite existing files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Redirect www to non-www (if you want to remove www)
RewriteCond %{HTTP_HOST} ^www\.(example\.com)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
# Add trailing slash only to extensionless URLs
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpe?g|gif|svg|webp|ico|woff2?|ttf|eot|json|xml|html|php)$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.+)$ $1/ [L,R=301]
# Handle 404 errors
ErrorDocument 404 /404
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/index\.php[\s?/] [NC]
RewriteRule ^index\.php$ / [R=301,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]
# Rewrite pretty URLs to index.php?page=
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ index.php?page=$1 [L,QSA]
# Enable GZip compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css text/javascript application/javascript
AddOutputFilterByType DEFLATE application/x-javascript application/json
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE application/font-woff application/font-woff2
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/svg+xml image/webp
</IfModule>
# Enable browser caching for static assets
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
</IfModule>
# Security headers
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "DENY"
Header set X-XSS-Protection "1; mode=block"
</IfModule>
# Prevent directory listing
Options -Indexes
# BEGIN cPanel-generated php ini directives, do not edit
# Manual editing of this file may result in unexpected behavior.
# To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
# For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
<IfModule php8_module>
php_value output_buffering Off
</IfModule>
<IfModule lsapi_module>
php_value output_buffering Off
</IfModule>
# END cPanel-generated php ini directives, do not edit
# END cPanel-generated php ini directives, do not edit

9
home/.htaccess Normal file
View File

@@ -0,0 +1,9 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

View File

@@ -0,0 +1 @@
@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}

File diff suppressed because one or more lines are too long

BIN
home/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
home/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
home/img/logo2.9f656f3d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
home/img/logo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

5
home/index.html Normal file
View File

@@ -0,0 +1,5 @@
<!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>

5
home/index.html.bck Normal file
View File

@@ -0,0 +1,5 @@
<!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>

2
home/js/app.eb118890.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
home/rss/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
img/logo2.9f656f3d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
img/logo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

4
robots.txt Normal file
View File

@@ -0,0 +1,4 @@
User-agent: *
Disallow: /404
Disallow: /home
Sitemap: https://stellaamor.com/sitemap.xml

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

23
rss/3rd-party/mdi/package.json vendored Normal file
View File

@@ -0,0 +1,23 @@
{
"name": "mdi-icons",
"version": "1.0.1",
"description": "This is a library which contains all the material design icons.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"css",
"material",
"mdi",
"design",
"icons",
"vue"
],
"author": "Jatin kamboj",
"repository": "jatin-maropost/mdi-icons",
"license": "ISC",
"devDependencies": {
"@mdi/font": "4.9.95"
}
}

38
rss/3rd-party/mdi/readme.md vendored Normal file
View File

@@ -0,0 +1,38 @@
# Mdi Icons
[![npm (scoped)](https://img.shields.io/badge/npm-v1.0.0-green)](https://www.npmjs.com/package/mdi-icons)
```
npm install --save @mdi-icons
```
> Package is built with [@mdi/font version 4.9.95](https://github.com/Templarian/MaterialDesign-Webfont).
### Useage
Import material design icons css in the **main.js** or root file
```
import "mdi-icons/css/materialdesignicons.min.css";
```
#### Folder Structure
```text
/css
materialdesignicons.min.css
fonts/
materialdesignicons-webfont.eot
materialdesignicons-webfont.ttf
materialdesignicons-webfont.woff
materialdesignicons-webfont.woff2
...
```
## Related Mdi Packages
[NPM @MDI Organization](https://npmjs.com/org/mdi)
- [MaterialDesignIcons.com](https://materialdesignicons.com)
- https://github.com/Templarian/MaterialDesign

View File

@@ -24,12 +24,13 @@ body {
font-family: "Nunito", sans-serif;
font-size: 1.1rem;
line-height: 1.3;
color: #212529;
color: #242627;
background-color: #ffffff;
}
a {
all: inherit;
cursor: pointer;
}
h1, h2, h3, h4, h5, h6 {
@@ -295,11 +296,11 @@ h6, .h6 {
}
.text-dark {
color: #212529 !important;
color: #242627 !important;
}
.bg-dark {
background-color: #212529 !important;
background-color: #242627 !important;
}
.text-white {
@@ -350,6 +351,46 @@ h6, .h6 {
background-color: transparent !important;
}
.text-purple {
color: #540f89 !important;
}
.bg-purple {
background-color: #540f89 !important;
}
.text-dark-red {
color: #1e1717 !important;
}
.bg-dark-red {
background-color: #1e1717 !important;
}
.text-dark-red-alt {
color: rgba(30, 23, 23, 0.6235294118) !important;
}
.bg-dark-red-alt {
background-color: rgba(30, 23, 23, 0.6235294118) !important;
}
.text-dark-purple {
color: #0F172A !important;
}
.bg-dark-purple {
background-color: #0F172A !important;
}
.text-dark-purple-alt {
color: rgba(15, 23, 42, 0.6235294118) !important;
}
.bg-dark-purple-alt {
background-color: rgba(15, 23, 42, 0.6235294118) !important;
}
/* Margin and padding utilities */
.m-0 {
margin: 0 !important;
@@ -1883,7 +1924,7 @@ h6, .h6 {
padding: 0.4rem;
}
.card .card-header.theme-header {
background-color: #212529 !important;
background-color: #242627 !important;
color: rgba(170, 11, 61, 0.6588235294);
}
.card .card-body {
@@ -2114,16 +2155,16 @@ h6, .h6 {
}
.btn-dark {
background-color: #212529;
background-color: #242627;
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-dark:hover {
background-color: rgb(14.8054054054, 16.6, 18.3945945946);
background-color: rgb(16.416, 17.328, 17.784);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-dark:focus-visible {
box-shadow: 0 0 0 3px rgba(33, 37, 41, 0.4);
box-shadow: 0 0 0 3px rgba(36, 38, 39, 0.4);
}
.btn-dark:disabled {
opacity: 0.6;
@@ -2239,6 +2280,96 @@ h6, .h6 {
pointer-events: none;
}
.btn-purple {
background-color: #540f89;
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-purple:hover {
background-color: rgb(61.4526315789, 10.9736842105, 100.2263157895);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-purple:focus-visible {
box-shadow: 0 0 0 3px rgba(84, 15, 137, 0.4);
}
.btn-purple:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-dark-red {
background-color: #1e1717;
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-dark-red:hover {
background-color: rgb(6.9056603774, 5.2943396226, 5.2943396226);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-dark-red:focus-visible {
box-shadow: 0 0 0 3px rgba(30, 23, 23, 0.4);
}
.btn-dark-red:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-dark-red-alt {
background-color: rgba(30, 23, 23, 0.6235294118);
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-dark-red-alt:hover {
background-color: rgba(6.9056603774, 5.2943396226, 5.2943396226, 0.6235294118);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-dark-red-alt:focus-visible {
box-shadow: 0 0 0 3px rgba(30, 23, 23, 0.4);
}
.btn-dark-red-alt:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-dark-purple {
background-color: #0F172A;
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-dark-purple:hover {
background-color: rgb(4.2631578947, 6.5368421053, 11.9368421053);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-dark-purple:focus-visible {
box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.4);
}
.btn-dark-purple:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-dark-purple-alt {
background-color: rgba(15, 23, 42, 0.6235294118);
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-dark-purple-alt:hover {
background-color: rgba(4.2631578947, 6.5368421053, 11.9368421053, 0.6235294118);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-dark-purple-alt:focus-visible {
box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.4);
}
.btn-dark-purple-alt:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
/* Outline buttons */
.btn-outline-primary {
background-color: transparent;
@@ -2413,16 +2544,16 @@ h6, .h6 {
.btn-outline-dark {
background-color: transparent;
border: 2px solid #212529;
color: #212529;
border: 2px solid #242627;
color: #242627;
}
.btn-outline-dark:hover {
background-color: #212529;
background-color: #242627;
color: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-outline-dark:focus-visible {
box-shadow: 0 0 0 3px rgba(33, 37, 41, 0.4);
box-shadow: 0 0 0 3px rgba(36, 38, 39, 0.4);
}
.btn-outline-dark:disabled {
opacity: 0.6;
@@ -2544,6 +2675,101 @@ h6, .h6 {
pointer-events: none;
}
.btn-outline-purple {
background-color: transparent;
border: 2px solid #540f89;
color: #540f89;
}
.btn-outline-purple:hover {
background-color: #540f89;
color: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-outline-purple:focus-visible {
box-shadow: 0 0 0 3px rgba(84, 15, 137, 0.4);
}
.btn-outline-purple:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-outline-dark-red {
background-color: transparent;
border: 2px solid #1e1717;
color: #1e1717;
}
.btn-outline-dark-red:hover {
background-color: #1e1717;
color: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-outline-dark-red:focus-visible {
box-shadow: 0 0 0 3px rgba(30, 23, 23, 0.4);
}
.btn-outline-dark-red:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-outline-dark-red-alt {
background-color: transparent;
border: 2px solid rgba(30, 23, 23, 0.6235294118);
color: rgba(30, 23, 23, 0.6235294118);
}
.btn-outline-dark-red-alt:hover {
background-color: rgba(30, 23, 23, 0.6235294118);
color: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-outline-dark-red-alt:focus-visible {
box-shadow: 0 0 0 3px rgba(30, 23, 23, 0.4);
}
.btn-outline-dark-red-alt:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-outline-dark-purple {
background-color: transparent;
border: 2px solid #0F172A;
color: #0F172A;
}
.btn-outline-dark-purple:hover {
background-color: #0F172A;
color: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-outline-dark-purple:focus-visible {
box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.4);
}
.btn-outline-dark-purple:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-outline-dark-purple-alt {
background-color: transparent;
border: 2px solid rgba(15, 23, 42, 0.6235294118);
color: rgba(15, 23, 42, 0.6235294118);
}
.btn-outline-dark-purple-alt:hover {
background-color: rgba(15, 23, 42, 0.6235294118);
color: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.btn-outline-dark-purple-alt:focus-visible {
box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.4);
}
.btn-outline-dark-purple-alt:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
/* Ghost buttons */
.btn-ghost-primary {
background-color: transparent;
@@ -2709,15 +2935,15 @@ h6, .h6 {
.btn-ghost-dark {
background-color: transparent;
color: #212529;
color: #242627;
border: none;
}
.btn-ghost-dark:hover {
background-color: rgba(33, 37, 41, 0.1);
background-color: rgba(36, 38, 39, 0.1);
box-shadow: none;
}
.btn-ghost-dark:focus-visible {
box-shadow: 0 0 0 3px rgba(33, 37, 41, 0.4);
box-shadow: 0 0 0 3px rgba(36, 38, 39, 0.4);
}
.btn-ghost-dark:disabled {
opacity: 0.6;
@@ -2833,6 +3059,96 @@ h6, .h6 {
pointer-events: none;
}
.btn-ghost-purple {
background-color: transparent;
color: #540f89;
border: none;
}
.btn-ghost-purple:hover {
background-color: rgba(84, 15, 137, 0.1);
box-shadow: none;
}
.btn-ghost-purple:focus-visible {
box-shadow: 0 0 0 3px rgba(84, 15, 137, 0.4);
}
.btn-ghost-purple:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-ghost-dark-red {
background-color: transparent;
color: #1e1717;
border: none;
}
.btn-ghost-dark-red:hover {
background-color: rgba(30, 23, 23, 0.1);
box-shadow: none;
}
.btn-ghost-dark-red:focus-visible {
box-shadow: 0 0 0 3px rgba(30, 23, 23, 0.4);
}
.btn-ghost-dark-red:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-ghost-dark-red-alt {
background-color: transparent;
color: rgba(30, 23, 23, 0.6235294118);
border: none;
}
.btn-ghost-dark-red-alt:hover {
background-color: rgba(30, 23, 23, 0.1);
box-shadow: none;
}
.btn-ghost-dark-red-alt:focus-visible {
box-shadow: 0 0 0 3px rgba(30, 23, 23, 0.4);
}
.btn-ghost-dark-red-alt:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-ghost-dark-purple {
background-color: transparent;
color: #0F172A;
border: none;
}
.btn-ghost-dark-purple:hover {
background-color: rgba(15, 23, 42, 0.1);
box-shadow: none;
}
.btn-ghost-dark-purple:focus-visible {
box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.4);
}
.btn-ghost-dark-purple:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.btn-ghost-dark-purple-alt {
background-color: transparent;
color: rgba(15, 23, 42, 0.6235294118);
border: none;
}
.btn-ghost-dark-purple-alt:hover {
background-color: rgba(15, 23, 42, 0.1);
box-shadow: none;
}
.btn-ghost-dark-purple-alt:focus-visible {
box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.4);
}
.btn-ghost-dark-purple-alt:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.border-0 {
border: 0 solid currentColor;
}
@@ -4733,6 +5049,10 @@ h6, .h6 {
text-decoration: none;
}
.fs-italic {
font-style: italic;
}
.img-w-100 {
width: 100%;
}
@@ -5060,7 +5380,7 @@ input[type=number]:disabled {
.spinner {
height: 1rem;
width: 1rem;
border: 2px solid #212529;
border: 2px solid #242627;
border-left-color: transparent !important;
border-radius: 50%;
display: inline-block;

File diff suppressed because one or more lines are too long

View File

@@ -27,6 +27,7 @@ body {
a{
all: inherit;
cursor: pointer;
}
h1, h2, h3, h4, h5, h6{
@@ -549,6 +550,9 @@ body {
.text-line-through { text-decoration: line-through; }
.text-no-decoration { text-decoration: none; }
// Font styles
.fs-italic{font-style: italic;}
// Image sizing utilities
.img-w-100 { width: 100%; }
.img-w-auto { width: auto; }

View File

@@ -10,18 +10,21 @@
header {
display: flex;
justify-content: space-between;
padding: 0.7rem 2rem;
padding: 1.3rem 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;
background-color: #fff;
}
header .logo {
width: 100px;
display: flex;
z-index: 999;
cursor: pointer;
background-color: #fff;
}
header .logo img {
width: 100%;
@@ -30,18 +33,58 @@ header .logo img {
header nav {
display: flex;
position: relative;
z-index: -1;
}
@media (max-width: 768px) {
header nav {
top: -200%;
display: flex;
flex-direction: column;
position: absolute;
opacity: 0;
transition: all 0.3s;
}
header nav.open {
top: 99%;
left: 0;
width: 100%;
transition: all 0.3s;
background-color: #fff;
height: auto;
z-index: -1;
opacity: 1;
transition: all 0.3s;
box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.12);
}
header nav.open a {
padding: 7px 10px;
font-size: 16px;
}
}
header nav .menu-item {
color: #000000;
font-weight: 500;
font-weight: 600;
margin-right: 15px;
display: inline-block;
position: relative;
transition: color 0.3s;
font-size: 16px;
font-size: 18px;
}
header nav .menu-item.active {
font-weight: bold;
color: #aa0b3d;
}
header nav .menu-item.active::after {
content: "";
position: absolute;
top: 120%;
left: 0;
height: 2px;
width: 100%;
background: #aa0b3d;
transform: scaleX(1);
transform-origin: left;
transition: transform 0.3s;
}
header nav .menu-item::after {
content: "";
@@ -50,18 +93,28 @@ header nav .menu-item::after {
left: 0;
height: 2px;
width: 100%;
background: #B54418;
background: #aa0b3d;
transform: scaleX(0);
transform-origin: left;
transition: transform 0.3s;
}
header nav .menu-item:hover {
color: #B54418;
color: #aa0b3d;
cursor: pointer;
}
header nav .menu-item:hover::after {
transform: scaleX(1);
}
header .mobile-toggler {
background-color: #fff;
border: none;
font-size: 18px;
}
@media (min-width: 769px) {
header .mobile-toggler {
display: none;
}
}
.home-banner {
height: calc(100vh - 55px);
@@ -71,6 +124,9 @@ header nav .menu-item:hover::after {
opacity: 0;
animation: slideUp 1s ease-in-out forwards;
}
.home-banner.no-height {
height: auto !important;
}
@media (max-width: 768px) {
.home-banner {
height: 100vh;
@@ -171,6 +227,7 @@ header nav .menu-item:hover::after {
height: 100%;
z-index: 1;
opacity: 0.1;
width: 100%;
}
}
.home-banner .home-banner-inner .image-wrapper img {
@@ -191,6 +248,19 @@ header nav .menu-item:hover::after {
background-position: center center;
background-size: cover;
}
.display-banner.fitness-banner {
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url("/rss/img/fitness.jpg");
padding: 180px 0px;
background-position: center center;
background-size: cover;
overflow: hidden;
}
.display-banner.kissing-banner {
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url("/rss/img/couple-kissing.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%;
@@ -199,7 +269,7 @@ header nav .menu-item:hover::after {
}
footer {
background-color: #212529;
background-color: #242627;
color: #fff;
display: flex;
padding: 25px 0px;
@@ -216,7 +286,7 @@ footer ul {
.features-section h2 {
font-size: 1.8rem;
color: #212529;
color: #242627;
}
.features-section .theme-card {
border-radius: 0.25rem;
@@ -228,8 +298,8 @@ footer ul {
text-align: center;
}
.features-section .theme-card .card-header img {
width: 125px;
height: 125px;
width: 170px;
height: 170px;
border-radius: 50%;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.16);
-o-object-fit: cover;
@@ -288,7 +358,7 @@ footer ul {
font-size: 1.3rem;
font-weight: 500;
margin-bottom: 0.5rem;
color: #212529;
color: #242627;
}
.filter-text {
@@ -369,9 +439,9 @@ section .bolder {
}
.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 */
opacity: 0;
transform: translateY(50px);
transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.section-animation.visible {
@@ -379,7 +449,213 @@ section .bolder {
transform: translateY(0);
}
/* Accessibility for reduced motion */
.user-container {
width: 100%;
height: calc(100vh - 110px);
background-position: center;
background-repeat: no-repeat;
background-size: cover;
display: flex;
justify-content: center;
align-items: center;
}
@media (max-width: 768px) {
.user-container {
height: auto;
padding: 20px 0px;
}
}
@media (max-width: 768px) {
.user-container.alt .user-card {
display: flex;
flex-direction: column-reverse;
}
}
.user-container .user-card {
border-radius: 12px;
background-color: rgba(255, 255, 255, 0.9058823529);
display: flex;
width: 100%;
flex-direction: row;
}
@media (max-width: 768px) {
.user-container .user-card {
flex-direction: column;
height: auto;
}
}
.user-container .user-card .form {
background-color: #FFF;
padding: 20px 0px;
flex: 40%;
max-width: 40%;
display: flex;
align-items: center;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.18);
border-radius: 12px;
}
@media (max-width: 768px) {
.user-container .user-card .form {
flex: 100%;
max-width: 100%;
border-radius: 12px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.16);
}
}
.user-container .user-card .form .user-form {
padding: 10px 15px;
width: 100%;
}
.user-container .user-card .text-col {
flex: 60%;
max-width: 60%;
padding: 30px 20px;
}
@media (max-width: 768px) {
.user-container .user-card .text-col {
flex: 100%;
max-width: 100%;
}
}
.user-container .user-card .text-col .logo {
display: flex;
flex-direction: row;
justify-content: center;
}
.user-container .user-card .text-col .logo img {
width: 180px;
}
.user-container .user-card .text-col .text {
margin-top: 20px;
}
/* PROMO BLOCKS */
.promo-cover {
height: calc(100vh - 60px);
width: 100%;
background-repeat: no-repeat;
background-size: cover;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.promo-cover.fetish-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url("/rss/img/promo-images/bdsm-background.jpeg");
background-position: 50% 35%;
}
.promo-cover.sugar-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url("/rss/img/promo-images/sugar-couple.jpeg");
background-position: 50% 35%;
}
.promo-cover.foot-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url("/rss/img/promo-images/foot1.jpg");
background-position: 50% 35%;
}
.promo-cover.app-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url("/rss/img/promo-images/couple1.jpg");
background-position: 50% 35%;
}
.promo-cover .title-bar {
padding: 20px;
text-align: center;
color: #fff;
width: 100%;
border-radius: 12px;
position: relative;
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);
}
@media (min-width: 769px) {
.promo-cover .title-bar {
width: 45%;
}
}
.promo-cover .title-bar h1 {
opacity: 1;
font-weight: 700;
font-size: 2.2rem;
display: inline-block;
}
.promo-cover .title-bar h1::after {
content: "";
display: block;
width: 80%;
height: 1px;
background: #fff;
margin: 2px auto 20px;
border-radius: 2px;
}
.promo-cover .title-bar p {
opacity: 1;
font-weight: 500;
font-size: 1.4rem;
}
.promo-cover .title-bar .cta-btn {
padding: 10px 20px;
background-color: #0F172A;
}
.promo-cover .title-bar .cta-btn:hover {
background-color: rgb(28.4210526316, 43.5789473684, 79.5789473684);
}
.content-section {
padding: 40px 0px;
color: #e2e8f0 !important;
}
.content-section h2 {
font-weight: 700;
font-size: 2rem;
}
.content-section p {
font-size: 1.2rem;
font-weight: 400;
}
.content-section ul {
padding: 0px 40px;
padding-bottom: 10px;
}
.promo-feature-icon {
font-size: 2rem;
display: block;
text-align: center;
color: #ffffff;
}
.video-background {
position: relative;
overflow: hidden;
height: 65vh;
width: 100%;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.16);
margin-top: 50px;
}
.video-background video {
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
transform: translate(-50%, -50%);
z-index: -1;
-o-object-fit: cover;
object-fit: cover;
}
.video-background .content {
position: absolute;
z-index: 1;
color: white;
text-align: center;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: rgba(0, 0, 0, 0.4862745098);
border-radius: 12px;
padding: 25px 45px;
}
@media (prefers-reduced-motion: reduce) {
.section-animation {
opacity: 1;

File diff suppressed because one or more lines are too long

View File

@@ -3,18 +3,25 @@
header {
display: flex;
justify-content: space-between;
padding: 0.7rem 2rem;
padding: 1.3rem 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;
background-color: #fff;
@media(max-width:768px) {
// height: 48px;
}
.logo {
width: 100px;
display: flex;
z-index: 999;
cursor: pointer;
background-color: #fff;
img {
width: 100%;
@@ -25,19 +32,61 @@ header {
nav {
display: flex;
position: relative;
z-index: -1;
@media(max-width:768px) {
top: -200%;
display: flex;
flex-direction: column;
position: absolute;
opacity: 0;
transition: all 0.3s;
&.open {
top: 99%;
left: 0;
width: 100%;
transition: all 0.3s;
// padding: 5px 10px;
background-color: #fff;
height: auto;
z-index: -1;
opacity: 1;
transition: all 0.3s;
box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.12);
a {
padding: 7px 10px;
font-size: 16px;
}
}
}
.menu-item {
color: #000000;
font-weight: 500;
font-weight: 600;
margin-right: 15px;
display: inline-block;
position: relative;
transition: color 0.3s;
font-size: 16px;
font-size: 18px;
&.active {
font-weight: bold;
// color: #your-brand-color;
color: #{map-get($colors, primary)};
&::after {
content: "";
position: absolute;
top: 120%;
left: 0;
height: 2px;
width: 100%;
background: #{map-get($colors, primary)};
transform: scaleX(1);
transform-origin: left;
transition: transform 0.3s;
}
}
&::after {
@@ -47,14 +96,14 @@ header {
left: 0;
height: 2px;
width: 100%;
background: #B54418;
background: #{map-get($colors, primary)};
transform: scaleX(0);
transform-origin: left;
transition: transform 0.3s;
}
&:hover {
color: #B54418;
color: #{map-get($colors, primary)};
cursor: pointer;
}
@@ -63,131 +112,147 @@ header {
}
}
}
.mobile-toggler {
background-color: #fff;
border: none;
font-size: 18px;
@media(min-width: 769px) {
display: none;
}
}
}
.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;
height: calc(100vh - 55px);
padding: 50px 0;
display: flex;
align-items: center;
width: 100%;
background-color: #{map-get($colors, white)};
opacity: 0;
animation: slideUp 1s ease-in-out forwards;
// animation-delay: 0.2s;
.container {
height: 100%;
&.no-height {
height: auto !important;
}
.inner-row {
@media(max-width:768px) {
height: 100vh;
}
.home-banner-inner {
flex: 1;
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%;
align-items: center;
width: 100%;
object-fit: cover;
display: block;
}
.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;
width: 100%;
}
img {
height: 100%;
width: 100%;
object-fit: cover;
display: block;
}
}
}
}
}
@@ -205,6 +270,23 @@ header {
background-size: cover;
}
&.fitness-banner {
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
url('/rss/img/fitness.jpg');
padding: 180px 0px;
background-position: center center;
background-size: cover;
overflow: hidden;
}
&.kissing-banner {
background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
url('/rss/img/couple-kissing.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');
@@ -250,20 +332,22 @@ footer {
text-align: center;
img {
width: 125px;
height: 125px;
width: 170px;
height: 170px;
border-radius: 50%;
box-shadow: map-get($shadows, 2);
object-fit: cover;
margin: 0 auto;
&.object-left{
&.object-left {
object-position: left center;
}
&.object-center{
&.object-center {
object-position: center center;
}
&.object-bottom{
&.object-bottom {
object-position: bottom center;
}
}
@@ -278,64 +362,66 @@ footer {
// Fix before release
// Theme fonts
.styled-title{
.styled-title {
font-family: "Nunito", sans-serif;
&.fw-900{
&.fw-900 {
font-weight: 900;
}
&.fw-600{
&.fw-600 {
font-weight: 600;
}
}
.filter-section {
padding: 2rem 0;
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;
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)};
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);
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;
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;
}
.filter-card {
margin-bottom: 1.5rem;
}
.filter-icon {
font-size: 2rem;
}
.filter-title {
font-size: 1.1rem;
}
}
@@ -347,7 +433,7 @@ footer {
// Images
// Rounded col images
.rounded-col-image{
.rounded-col-image {
height: 450px;
width: 450px;
border-radius: 50%;
@@ -357,17 +443,17 @@ footer {
align-items: center;
position: relative;
@media(max-width:1200px){
@media(max-width:1200px) {
width: 300px;
height:300px;
height: 300px;
}
@media(max-width:920px){
width:225px;
@media(max-width:920px) {
width: 225px;
height: 225px;
}
&:before{
&:before {
content: '';
position: absolute;
top: 0;
@@ -383,7 +469,7 @@ footer {
}
img{
img {
object-fit: cover;
object-position: right;
width: 100%;
@@ -391,54 +477,290 @@ footer {
}
}
section{
h2{
section {
h2 {
font-size: 1.8rem;
font-weight: 500;
}
h3{
h3 {
font-size: 1.6rem;
font-weight: 500;
}
p{
p {
font-size: 1.2rem;
font-weight: 400;
line-height: 1.4;
font-weight: 400;
line-height: 1.4;
}
.bolder{
.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 */
opacity: 0;
transform: translateY(50px);
transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.section-animation.visible {
opacity: 1;
transform: translateY(0);
opacity: 1;
transform: translateY(0);
}
.user-container {
width: 100%;
height: calc(100vh - 110px);
// background-image: url('/rss/img/happy-kissing.jpg');
background-position: center;
background-repeat: no-repeat;
background-size: cover;
display: flex;
justify-content: center;
align-items: center;
@media(max-width: 768px) {
height: auto;
padding: 20px 0px;
}
&.alt {
// background-image: url('/rss/img/happy-kissing-2.jpg') !important;
.user-card {
@media(max-width: 768px) {
display: flex;
flex-direction: column-reverse;
}
}
}
.user-card {
border-radius: 12px;
background-color: #ffffffe7;
// box-shadow: #{map-get($shadows, 3)};
display: flex;
// min-height: 60vh;
// height: 60vh;
width: 100%;
flex-direction: row;
// overflow: hidden;
@media(max-width: 768px) {
flex-direction: column;
height: auto;
}
.form {
background-color: #FFF;
padding: 20px 0px;
// height: 100%;
flex: 40%;
max-width: 40%;
display: flex;
align-items: center;
box-shadow: #{map-get($shadows, 3)};
border-radius: 12px;
@media(max-width: 768px) {
flex: 100%;
max-width: 100%;
border-radius: 12px;
box-shadow: #{map-get($shadows, 2)};
}
.user-form {
padding: 10px 15px;
width: 100%;
}
}
.text-col {
flex: 60%;
max-width: 60%;
padding: 30px 20px;
@media(max-width: 768px) {
flex: 100%;
max-width: 100%;
}
.logo {
display: flex;
flex-direction: row;
justify-content: center;
img {
width: 180px;
}
}
.text {
margin-top: 20px;
}
}
}
}
/* PROMO BLOCKS */
.promo-cover {
height: calc(100vh - 60px);
width: 100%;
background-repeat: no-repeat;
background-size: cover;
position: relative;
display: flex;
align-items: center;
justify-content: center;
&.fetish-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url('/rss/img/promo-images/bdsm-background.jpeg');
background-position: 50% 35%;
}
&.sugar-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url('/rss/img/promo-images/sugar-couple.jpeg');
background-position: 50% 35%;
}
&.foot-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url('/rss/img/promo-images/foot1.jpg');
background-position: 50% 35%;
}
&.app-cover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.7)), url('/rss/img/promo-images/couple1.jpg');
background-position: 50% 35%;
}
.title-bar {
padding: 20px;
text-align: center;
color: #fff;
width: 100%;
border-radius: 12px;
position: relative;
// background-color: #{map-get($colors, dark-purple-alt)};
box-shadow: #{map-get($shadows, 5)};
@media(min-width:769px) {
width: 45%;
}
h1 {
opacity: 1;
font-weight: 700;
font-size: 2.2rem;
display: inline-block; // necessary to allow width-based pseudo-element
&::after {
content: "";
display: block;
width: 80%;
height: 1px;
background: #fff;
margin: 2px auto 20px;
border-radius: 2px;
}
}
p {
opacity: 1;
font-weight: 500;
font-size: 1.4rem;
}
.cta-btn{
padding: 10px 20px;
background-color: #{map-get($colors, dark-purple)};
&:hover{
background-color: lighten(map-get($colors, dark-purple), 10%);
}
}
}
}
.content-section {
padding: 40px 0px;
color: #e2e8f0 !important;
h2{
font-weight: 700;
font-size:2rem;
}
p{
font-size: 1.2rem;
font-weight: 400;
}
ul {
padding: 0px 40px;
padding-bottom: 10px;
}
}
.promo-feature-icon{
font-size: 2rem;
display: block;
text-align: center;
color: #{map-get($colors, white)};
}
.video-background{
position: relative;
overflow: hidden;
height: 65vh;
width: 100%;
box-shadow: #{map-get($shadows, 2)};
margin-top: 50px;
video{
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
transform: translate(-50%, -50%);
z-index: -1;
object-fit: cover;
}
.content{
position: absolute;
z-index: 1;
color: white;
text-align: center;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: #0000007c;
border-radius: 12px;
padding: 25px 45px;
}
}
/* Accessibility for reduced motion */
@media (prefers-reduced-motion: reduce) {
.section-animation {
opacity: 1;
transform: none;
transition: none;
}
.section-animation {
opacity: 1;
transform: none;
transition: none;
}
}
@keyframes slideUp {
from {
transform: translateY(50px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
from {
transform: translateY(50px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}

View File

@@ -1 +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"}
{"version":3,"sources":["variables.scss"],"names":[],"mappings":"AAAA,gBAAA;AAIA,gBAAA;AAmBA,kBAAA;AAGA,kBAAA;AA2BA,kBAAA;AAGA,2BAAA;AAoBA,mBAAA;AAyBA,+BAAA;AAQA,eAAA","file":"variables.css"}

View File

@@ -35,13 +35,20 @@ $colors: (
danger: #dc3545,
info: #0dcaf0,
light: #e5e5e5,
dark: #212529,
dark: #242627,
white: #ffffff,
black: #000000,
muted: #C7C7C7,
accent-white: #f7f7f7,
accent: #08bbbb,
transparent: transparent
transparent: transparent,
// Other colors
purple:#540f89,
dark-red: #1e1717,
dark-red-alt: #1e17179f,
dark-purple: #0F172A,
dark-purple-alt: #0F172A9f,
);
/* Spacing scale */

BIN
rss/img/app-code.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
rss/img/app-date.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
rss/img/app-search.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
rss/img/church.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

BIN
rss/img/couple-elder.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

BIN
rss/img/couple-ice.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

BIN
rss/img/couple-kissing.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
rss/img/favicon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,21 @@
{
"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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
rss/img/fitness.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

BIN
rss/img/girl-face.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
rss/img/happy-kissing-2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

BIN
rss/img/happy-kissing.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

BIN
rss/img/kink2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

BIN
rss/img/logo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
rss/img/man-browsing.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
rss/img/people-couple.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
rss/img/senior.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

BIN
rss/img/stella.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 KiB

BIN
rss/img/sweden.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

BIN
rss/img/vegan.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
rss/img/yacht2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

View File

@@ -0,0 +1,22 @@
document.addEventListener('DOMContentLoaded', () => {
const video = document.getElementById('first-video');
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
const source = document.createElement('source');
source.src = '/rss/videos/couple.mp4';
source.type = 'video/mp4';
video.appendChild(source);
video.load();
video.play();
video.playbackRate = 0.7; // Set after loading
observer.disconnect();
}
});
});
observer.observe(video);
});

View File

@@ -0,0 +1,81 @@
document.addEventListener('DOMContentLoaded', async (v) =>{
await isAuth();
const 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;
document.getElementById('loginError').innerText = '';
document.getElementById('loginError').classList.add('d-none');
// Get form data
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
const 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',
body: JSON.stringify(postFields)
});
const data = await response.json();
if (data.status === 'fail') {
loginError = true;
document.getElementById('loginError').innerText = data.message;
document.getElementById('loginError').classList.remove('d-none');
loginRunning = false;
} else {
loginRunning = false;
setTimeout(() => {
window.location.href = '/home';
document.getElementById('username').value = '';
document.getElementById('password').value = '';
document.getElementById('loginError').innerText = '';
loginRunning = false;
}, 1500);
}
} catch (error) {
loginError = true;
loginRunning = false;
}
}
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;
}
}

View File

@@ -73,4 +73,30 @@ async function removeAlert(){
alert.remove();
}
}
}
}
document.addEventListener('DOMContentLoaded', () =>{
document.getElementById('menu-toggler').addEventListener('pointerdown', () =>{
document.getElementById('mainMenu').classList.toggle('open');
})
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);
}
});
}, {
threshold: 0.05,
rootMargin: '0px 0px -50px 0px'
}
);
sections.forEach(section => {
section.classList.add('section-animation');
observer.observe(section);
});
});

View File

@@ -1,21 +0,0 @@
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;
}

100
rss/js/register.js Normal file
View File

@@ -0,0 +1,100 @@
document.addEventListener('DOMContentLoaded', async (v) => {
const countries = await fetchCountries();
// Handlers
const countrySelector = document.getElementById('userCountry');
for(country of countries){
countrySelector.innerHTML += `<option value="${country.text}">${country.text}</option>`;
}
const signupForm = document.getElementById('signupForm');
signupForm.addEventListener('submit', (e) => {
e.preventDefault();
document.getElementById('errors').innerText = '';
document.getElementById('errors').classList.add('d-none');
// Extract form data
const username = signupForm.querySelector('#username').value;
const dob = signupForm.querySelector('#u_dob').value;
const country = signupForm.querySelector('#userCountry').value;
const gender = signupForm.querySelector('#gender').value;
const email = signupForm.querySelector('#email').value;
const password = signupForm.querySelector('#password').value;
const password2 = signupForm.querySelector('#password2').value;
const tosInput = signupForm.querySelector('#tos');
const tos = tosInput.checked;
// Remove errors
document.getElementById('errors').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);
// document.getElementById('spinner').classList.remove('show');
if (msg && msg.status === 'fail') {
document.getElementById('errors').innerText = msg.message;
document.getElementById('errors').classList.remove('d-none');
} else {
setTimeout(() => {
window.location.href = '/login/';
}, 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 [];
}
}

View File

@@ -1,8 +1,9 @@
{
"title": "Not found",
"long_desc": "Page or property was not found",
"short_desc": "Page or property was not found",
"title": "404 - Page Not Found",
"long_desc": "Oops! The page youre looking for isnt here. Join Stella Amors free HBTQ-friendly dating platform with advanced filters for kinks, wealth, and lifestyle instead!",
"short_desc": "404 error. Try our free HBTQ-friendly dating filters!",
"template": "404",
"restricted": false,
"redirect_login": false
"redirect_login": false,
"robots": "noindex"
}

View File

@@ -0,0 +1,9 @@
{
"title": "About Our Dating Mission",
"long_desc": "Learn about Stella Amors HBTQ-friendly dating platform. Free advanced filters for kinks, wealth, and lifestyle help you find love. Contact support@stellaamor.com!",
"short_desc": "About Stella Amors free HBTQ-friendly dating mission.",
"template": "about-us",
"restricted": false,
"redirect_login": false,
"robots": "index, follow"
}

View File

@@ -1,8 +1,16 @@
{
"title": "Create account",
"long_desc": "Testing the description!",
"short_desc": "Test desc",
"title": "Join For Free Today",
"long_desc": "Create your free Stella Amor account today! Join our HBTQ-friendly platform with advanced filters for kinks, wealth, and lifestyle to find your perfect match.",
"short_desc": "Create a free HBTQ-friendly dating account.",
"template": "create-account",
"restricted": false,
"redirect_login": true
"redirect_login": false,
"robots": "index, follow",
"rich_service_type": "Online Dating Service",
"rich_offers": {
"name": "Free Membership",
"price": "0",
"description": "Create your profile and access all compatibility filters for free"
}
}

9
rss/json/pages/faq.json Normal file
View File

@@ -0,0 +1,9 @@
{
"title": "Dating FAQs",
"long_desc": "Find answers to questions about Stella Amors free HBTQ-friendly dating platform, advanced filters for kinks and lifestyle, and privacy.",
"short_desc": "FAQs for free HBTQ-friendly dating.",
"template": "faq",
"restricted": false,
"redirect_login": false,
"robots": "index, follow"
}

View File

@@ -0,0 +1,26 @@
{
"title": "Free BDSM & Kink Dating with Detailed Filters",
"long_desc": "Join for free and use detailed BDSM and kink filters to find compatible partners. Match on bondage, dominance, submission, pet play, role-play and 50+ preferences.",
"short_desc": "Free signup. Detailed filters for BDSM, fetish and kink compatibility including dominance/submission, bondage, pet play and 50+ more.",
"template": "dating/fetish-dating",
"restricted": false,
"redirect_login": false,
"robots": "index, follow",
"rich_service_type": "BDSM and Kink Dating",
"rich_faq": [
{
"question": "Is signup and using the BDSM filters free?",
"answer": "Yes. Creating your profile and using all kink and fetish filters is completely free."
},
{
"question": "How private are my kink preferences?",
"answer": "You control visibility. Set any preference to private until you have a mutual match."
},
{
"question": "What specific BDSM and fetish filters are available?",
"answer": "Bondage, dominance/submission roles, impact play, pet play, leather/latex, 24/7 dynamics, safe words, aftercare, role-play and 50+ additional preferences."
}
]
}

View File

@@ -0,0 +1,9 @@
{
"title": "Advanced Dating Filters",
"long_desc": "Explore Stella Amors free HBTQ-friendly dating filters for kinks, wealth, lifestyle, and faith. Find your perfect match with precision and ease!",
"short_desc": "Free HBTQ-friendly filters for kinks, wealth, and lifestyle.",
"template": "filters",
"restricted": false,
"redirect_login": false,
"robots": "index, follow"
}

View File

@@ -0,0 +1,31 @@
{
"title": "Free Foot Fetish Dating with Detailed Filters",
"long_desc": "Join for free and connect with foot lovers worldwide. Use precise filters for foot size, shoe size, pedicure style, worship preferences, and 30+ foot-related interests.",
"short_desc": "Free foot fetish dating with detailed foot size, style and worship filters.",
"template": "dating/foot-fetish-dating",
"restricted": false,
"redirect_login": false,
"robots": "index, follow",
"rich_service_type": "Foot Fetish Dating",
"rich_offers": {
"name": "Free Membership",
"price": "0",
"description": "Create your profile and access all foot fetish filters for free"
},
"rich_faq": [
{
"question": "Is foot fetish dating on Stella Amor free?",
"answer": "Yes. Creating your profile and using all foot-related filters is completely free."
},
{
"question": "How private are my foot preferences?",
"answer": "You control visibility. Keep foot pics and worship preferences private until mutual match."
},
{
"question": "What foot fetish filters are available?",
"answer": "Foot size, shoe size, high arches, pedicure color, nylons vs bare, worship style (massage, kissing, licking), trampling, tickling, and 30+ more."
}
]
}

View File

@@ -0,0 +1,31 @@
{
"title": "Top Free Dating App",
"long_desc": "Stella Amor is a completely free dating app with advanced filters for lifestyle, kinks, wealth, faith, height, and more. No hidden fees, full access from day one.",
"short_desc": "100% free dating app with powerful filters. No credit card required.",
"template": "dating/free-dating-app",
"restricted": false,
"redirect_login": false,
"robots": "index, follow",
"rich_service_type": "Free Dating App",
"rich_offers": {
"name": "Completely Free Membership",
"price": "0",
"description": "Unlimited messaging and all advanced filters"
},
"rich_faq": [
{
"question": "Is Stella Amor really 100% free?",
"answer": "Yes. Registration, messaging, and all filters are completely free with no premium upgrades required."
},
{
"question": "Are there any hidden fees or paywalls?",
"answer": "No. You get full access to every feature from the moment you sign up. No credit card needed."
},
{
"question": "Do I need to pay to message or see matches?",
"answer": "Never. Unlimited messaging and profile viewing are always free."
}
]
}

View File

@@ -0,0 +1,9 @@
{
"title": "How It Works: Free Dating Guide",
"long_desc": "Learn how Stella Amors HBTQ-friendly platform works. Use free advanced filters for kinks, wealth, and lifestyle to find your perfect match in three easy steps!",
"short_desc": "Guide to free HBTQ-friendly dating with advanced filters.",
"template": "how-it-works",
"restricted": false,
"redirect_login": false,
"robots": "index, follow"
}

View File

@@ -1,8 +1,16 @@
{
"title": "Home",
"long_desc": "Testing the description!",
"short_desc": "Test desc",
"title": "Free Dating with Advanced Filters",
"long_desc": "Join Stella Amor for free online dating with advanced filters for kinks, wealth, lifestyle, and faith. Our HBTQ-friendly platform helps you find your perfect match effortlessly!",
"short_desc": "Free HBTQ-friendly dating with filters for kinks and lifestyle.",
"template": "index",
"restricted": false,
"redirect_login": false
"redirect_login": false,
"robots": "index, follow",
"rich_service_type": "Online Dating Service",
"rich_offers": {
"name": "Free Membership",
"price": "0",
"description": "Create your profile and access all compatibility filters for free"
}
}

View File

@@ -1,8 +1,9 @@
{
"title": "Login",
"long_desc": "Testing the description!",
"short_desc": "Test desc",
"title": "Sign In to Free Dating",
"long_desc": "Log in to Stella Amors free HBTQ-friendly dating platform. Access advanced filters for kinks, wealth, and lifestyle to find your perfect match today!",
"short_desc": "Sign in to free HBTQ-friendly dating with advanced filters.",
"template": "login",
"restricted": false,
"redirect_login": true
"redirect_login": true,
"robots": "index, follow"
}

View File

@@ -0,0 +1,9 @@
{
"title": "Join Free Dating",
"long_desc": "Sign up for Stella Amors free HBTQ-friendly dating platform. Use advanced filters for kinks, wealth, and lifestyle to start finding your perfect match today!",
"short_desc": "Join free HBTQ-friendly dating with advanced filters.",
"template": "register",
"restricted": false,
"redirect_login": false,
"robots": "index, follow"
}

View File

@@ -0,0 +1,9 @@
{
"title": "Love Stories: Find Your Match",
"long_desc": "Discover Stella Amors success stories from HBTQ-friendly dating. Users found love with free filters for kinks, wealth, and lifestyle. Join free today!",
"short_desc": "HBTQ-friendly love stories with free dating filters.",
"template": "success-stories",
"restricted": false,
"redirect_login": false,
"robots": "index, follow"
}

View File

@@ -0,0 +1,31 @@
{
"title": "Free Sugar Daddy & Sugar Baby Dating with Financial Filters",
"long_desc": "Join for free and meet generous sugar daddies or attractive sugar babies. Use detailed filters for allowance expectations, net worth, lifestyle, and relationship style.",
"short_desc": "Free sugar daddy and sugar baby dating with precise financial and lifestyle filters.",
"template": "dating/sugar-dating",
"restricted": false,
"redirect_login": false,
"robots": "index, follow",
"rich_service_type": "Sugar Daddy & Sugar Baby Dating",
"rich_offers": {
"name": "Free Membership",
"price": "0",
"description": "Create your profile and access all financial & lifestyle filters for free"
},
"rich_faq": [
{
"question": "Is sugar dating on Stella Amor free to join?",
"answer": "Yes. Creating your profile and using all sugar daddy & sugar baby filters is completely free."
},
{
"question": "How private are my financial preferences and allowance expectations?",
"answer": "You control visibility. Set income, net worth, and allowance details to private until mutual match."
},
{
"question": "What sugar dating filters are available?",
"answer": "Monthly allowance range, net worth, income level, lifestyle budget, relationship type (mentor, travel companion, traditional, platonic, etc.), and 30+ more."
}
]
}

View File

@@ -1,7 +1,7 @@
<?php
global $pageInfo;
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/js/' . $pageInfo['template'] .'.js')){
echo '<script src="/rss/js/' . $pageInfo['template'] .'.js"></script>';
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/js/' . $pageInfo['template'] . '.js')) {
echo '<script src="/rss/js/' . $pageInfo['template'] . '.js"></script>';
}
?>
@@ -14,15 +14,20 @@ if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/rss/js/' . $pageInfo['template'] .
<div class="col-sm-12 col-md-3">
<h4>Links</h4>
<ul>
<li>Home</li>
<?php foreach ($links as $label => $url): ?>
<li class="mb-2"><a href="<?php echo $url; ?>" class="menu-item<?php echo $label === $currentPage ? ' active" aria-current="page' : ''; ?>"><?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<div class="col-sm-12 col-md-3">
<h4>Contact</h4>
<ul>
<li>Info</li>
<li><a href="mailto:info@stellaamor.com">info@stellaamor.com</a></li>
<li><a href="mailto:support@stellaamor.com">support@stellaamor.com</a></li>
</ul>
</div>
</div>
</div>
</footer>
</footer>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More