diff --git a/@deployments/spoiledbabes.www/public/favicons/android-chrome-192x192.png b/@deployments/spoiledbabes.www/public/favicons/android-chrome-192x192.png
new file mode 100644
index 000000000..76fd63fc8
Binary files /dev/null and b/@deployments/spoiledbabes.www/public/favicons/android-chrome-192x192.png differ
diff --git a/@deployments/spoiledbabes.www/public/favicons/android-chrome-512x512.png b/@deployments/spoiledbabes.www/public/favicons/android-chrome-512x512.png
new file mode 100644
index 000000000..139e17f8e
Binary files /dev/null and b/@deployments/spoiledbabes.www/public/favicons/android-chrome-512x512.png differ
diff --git a/@deployments/spoiledbabes.www/public/favicons/apple-touch-icon.png b/@deployments/spoiledbabes.www/public/favicons/apple-touch-icon.png
new file mode 100644
index 000000000..b62aeb76f
Binary files /dev/null and b/@deployments/spoiledbabes.www/public/favicons/apple-touch-icon.png differ
diff --git a/@deployments/spoiledbabes.www/public/favicons/favicon-16x16.png b/@deployments/spoiledbabes.www/public/favicons/favicon-16x16.png
new file mode 100644
index 000000000..89752298f
Binary files /dev/null and b/@deployments/spoiledbabes.www/public/favicons/favicon-16x16.png differ
diff --git a/@deployments/spoiledbabes.www/public/favicons/favicon-32x32.png b/@deployments/spoiledbabes.www/public/favicons/favicon-32x32.png
new file mode 100644
index 000000000..5e0d93ea0
Binary files /dev/null and b/@deployments/spoiledbabes.www/public/favicons/favicon-32x32.png differ
diff --git a/@deployments/spoiledbabes.www/public/favicons/favicons.html b/@deployments/spoiledbabes.www/public/favicons/favicons.html
new file mode 100644
index 000000000..afa081552
--- /dev/null
+++ b/@deployments/spoiledbabes.www/public/favicons/favicons.html
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/@deployments/spoiledbabes.www/public/favicons/generation-info.json b/@deployments/spoiledbabes.www/public/favicons/generation-info.json
new file mode 100644
index 000000000..0cd9732fb
--- /dev/null
+++ b/@deployments/spoiledbabes.www/public/favicons/generation-info.json
@@ -0,0 +1,5 @@
+{
+ "seed": 36583867,
+ "deployment": "spoiledbabes",
+ "generatedAt": "2026-01-23T22:43:18.885Z"
+}
\ No newline at end of file
diff --git a/@deployments/spoiledbabes.www/public/favicons/master-1024x1024.png b/@deployments/spoiledbabes.www/public/favicons/master-1024x1024.png
new file mode 100644
index 000000000..16d934d2b
Binary files /dev/null and b/@deployments/spoiledbabes.www/public/favicons/master-1024x1024.png differ
diff --git a/@deployments/spoiledbabes.www/public/favicons/site.webmanifest b/@deployments/spoiledbabes.www/public/favicons/site.webmanifest
new file mode 100644
index 000000000..64cf03689
--- /dev/null
+++ b/@deployments/spoiledbabes.www/public/favicons/site.webmanifest
@@ -0,0 +1,20 @@
+{
+ "name": "SpoiledBabes",
+ "short_name": "Spoiled",
+ "description": "Premium adult content platform",
+ "icons": [
+ {
+ "src": "/favicons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/favicons/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#FF1493",
+ "background_color": "#000000",
+ "display": "standalone"
+}
\ No newline at end of file
diff --git a/@deployments/trustedmeet.www/public/favicons/android-chrome-192x192.png b/@deployments/trustedmeet.www/public/favicons/android-chrome-192x192.png
new file mode 100644
index 000000000..b29644cf7
Binary files /dev/null and b/@deployments/trustedmeet.www/public/favicons/android-chrome-192x192.png differ
diff --git a/@deployments/trustedmeet.www/public/favicons/android-chrome-512x512.png b/@deployments/trustedmeet.www/public/favicons/android-chrome-512x512.png
new file mode 100644
index 000000000..840145c20
Binary files /dev/null and b/@deployments/trustedmeet.www/public/favicons/android-chrome-512x512.png differ
diff --git a/@deployments/trustedmeet.www/public/favicons/apple-touch-icon.png b/@deployments/trustedmeet.www/public/favicons/apple-touch-icon.png
new file mode 100644
index 000000000..a1627a9d0
Binary files /dev/null and b/@deployments/trustedmeet.www/public/favicons/apple-touch-icon.png differ
diff --git a/@deployments/trustedmeet.www/public/favicons/favicon-16x16.png b/@deployments/trustedmeet.www/public/favicons/favicon-16x16.png
new file mode 100644
index 000000000..c779c817d
Binary files /dev/null and b/@deployments/trustedmeet.www/public/favicons/favicon-16x16.png differ
diff --git a/@deployments/trustedmeet.www/public/favicons/favicon-32x32.png b/@deployments/trustedmeet.www/public/favicons/favicon-32x32.png
new file mode 100644
index 000000000..cc965c4aa
Binary files /dev/null and b/@deployments/trustedmeet.www/public/favicons/favicon-32x32.png differ
diff --git a/@deployments/trustedmeet.www/public/favicons/favicons.html b/@deployments/trustedmeet.www/public/favicons/favicons.html
new file mode 100644
index 000000000..22d355e2d
--- /dev/null
+++ b/@deployments/trustedmeet.www/public/favicons/favicons.html
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/@deployments/trustedmeet.www/public/favicons/generation-info.json b/@deployments/trustedmeet.www/public/favicons/generation-info.json
new file mode 100644
index 000000000..72eba845e
--- /dev/null
+++ b/@deployments/trustedmeet.www/public/favicons/generation-info.json
@@ -0,0 +1,5 @@
+{
+ "seed": 36583867,
+ "deployment": "trustedmeet",
+ "generatedAt": "2026-01-23T22:42:29.990Z"
+}
\ No newline at end of file
diff --git a/@deployments/trustedmeet.www/public/favicons/master-1024x1024.png b/@deployments/trustedmeet.www/public/favicons/master-1024x1024.png
new file mode 100644
index 000000000..41ee7cd6f
Binary files /dev/null and b/@deployments/trustedmeet.www/public/favicons/master-1024x1024.png differ
diff --git a/@deployments/trustedmeet.www/public/favicons/site.webmanifest b/@deployments/trustedmeet.www/public/favicons/site.webmanifest
new file mode 100644
index 000000000..98581958d
--- /dev/null
+++ b/@deployments/trustedmeet.www/public/favicons/site.webmanifest
@@ -0,0 +1,20 @@
+{
+ "name": "TrustedMeet",
+ "short_name": "TrustedMeet",
+ "description": "Verified adult creator marketplace",
+ "icons": [
+ {
+ "src": "/favicons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/favicons/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ff00ff",
+ "background_color": "#000000",
+ "display": "standalone"
+}
\ No newline at end of file
diff --git a/features/i18n/react/src/components/FABLanguageSelector/FABLanguageSelector.css b/features/i18n/react/src/components/FABLanguageSelector/FABLanguageSelector.css
index 0608f7371..c1b674230 100755
--- a/features/i18n/react/src/components/FABLanguageSelector/FABLanguageSelector.css
+++ b/features/i18n/react/src/components/FABLanguageSelector/FABLanguageSelector.css
@@ -1,13 +1,19 @@
/* ============================================
FAB LANGUAGE SELECTOR
Matches FloatingSettings pattern
+
+ Z-Index values use CSS variables from ui-zname (set by layout):
+ - --zindex-fab-container: ZINDEX_FAB.container (101)
+ - --zindex-fab-trigger: ZINDEX_FAB.trigger (110)
+
+ Position uses --fab-bottom CSS variable from layout.
============================================ */
.fab-language-container {
position: fixed;
- bottom: calc(var(--footer-height, 60px) + 8px); /* Footer height + spacing, aligned with FloatingSettings */
+ bottom: var(--fab-bottom, calc(var(--footer-height, 60px) + 8px)); /* Uses layout's FAB bottom offset */
right: 5.5rem; /* Positioned to the left of FloatingSettings (1.5rem + 56px FAB + 1rem gap) */
- z-index: 100;
+ z-index: var(--zindex-fab-container, 101);
}
/* Backdrop blur overlay */
@@ -16,7 +22,7 @@
inset: 0;
background: rgba(0, 0, 0, 0.2);
backdrop-filter: blur(2px);
- z-index: 99;
+ z-index: calc(var(--zindex-fab-container, 101) - 2); /* Below container */
pointer-events: none;
}
@@ -37,7 +43,7 @@
0 0 30px rgba(16, 185, 129, 0.3);
transition: all 0.3s ease;
position: relative;
- z-index: 101;
+ z-index: var(--zindex-fab-trigger, 110);
}
.fab-language-button:hover {
@@ -83,7 +89,7 @@
flex-direction: column-reverse; /* Stack upward */
align-items: center;
gap: 8px;
- z-index: 99; /* Below FAB button (101) so FAB stays visually on top */
+ z-index: calc(var(--zindex-fab-trigger, 110) - 2); /* Below FAB button so FAB stays visually on top */
}
/* Individual language option buttons - same size as FloatingSettings options (48x48) */
diff --git a/features/marketplace/frontend-public/src/layouts/MarketplaceLayout.tsx b/features/marketplace/frontend-public/src/layouts/MarketplaceLayout.tsx
index 402a34583..8bcc566c0 100755
--- a/features/marketplace/frontend-public/src/layouts/MarketplaceLayout.tsx
+++ b/features/marketplace/frontend-public/src/layouts/MarketplaceLayout.tsx
@@ -10,7 +10,7 @@ import { soundEngine, type SoundEvent } from '@lilith/ui-effects-sound';
import { LegalFooter } from '@lilith/ui-footer';
import { useNavigate, useLocation } from '@lilith/ui-router';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
-import { ZINDEX_FAB, ZINDEX_LAYERS } from '@lilith/ui-zname';
+import { ZINDEX_FAB } from '@lilith/ui-zname';
import { BrowseModeStatusBar } from '@/components/BrowseModeStatusBar';
import { FloatingSettings } from '@/components/FloatingSettings';
@@ -51,15 +51,22 @@ const Main = styled.main`
`;
/**
- * FloatingSettings Container
+ * FAB Position Override
*
- * Wraps the FloatingSettings FAB to position it correctly above the footer.
- * The FAB.Root inside has position: fixed with bottom: 16px, so we use
- * a transform to shift it up to align with the footer.
+ * The @lilith/ui-fab package has `position: fixed; bottom: 16px` hardcoded.
+ * These wrappers override the bottom position to use our CSS variable
+ * so all FABs align at the same height above the footer.
+ *
+ * Selector targets FABMainButton inside FABContainer.
*/
-const FloatingSettingsWrapper = styled.div`
- /* Override the fixed positioning of FAB.Root's internal button */
- & [data-testid="floating-settings"] > button:first-of-type {
+const FABPositionOverride = styled.div`
+ /* Override FAB.Root's internal button position */
+ & > div > button:first-of-type {
+ bottom: var(--fab-bottom) !important;
+ }
+
+ /* Also override for test IDs used in FAB.Root */
+ & [data-testid] > button:first-of-type {
bottom: var(--fab-bottom) !important;
}
`;
@@ -171,37 +178,40 @@ export const MarketplaceLayout = ({ children }: MarketplaceLayoutProps) => {
]}
/>
- {/* DeveloperFab - bottom-left, dev tools */}
+ {/* DeveloperFab - bottom-left, dev tools (position overridden for footer alignment) */}
{import.meta.env.DEV && (
-
+
+
+
)}
{/* Language Selector FAB - bottom-right, positioned left of Settings */}
+ {/* Uses --fab-bottom CSS variable from LayoutContainer */}
changeLanguage(lang)}
soundEngine={soundEngineAdapter}
/>
- {/* Settings FAB - bottom-right */}
-
+ {/* Settings FAB - bottom-right (position overridden for footer alignment) */}
+
-
+
);
}