diff --git a/apps/website/assets/css/voyage-layout.css b/apps/website/assets/css/voyage-layout.css index 5e81b26..639ca59 100644 --- a/apps/website/assets/css/voyage-layout.css +++ b/apps/website/assets/css/voyage-layout.css @@ -229,10 +229,13 @@ html { background: rgba(255, 255, 255, 0); backdrop-filter: blur(0); transition: background 0.3s ease, color 0.3s ease, box-shadow 0.3s ease, backdrop-filter 0.3s ease; - --nav-safe-area-top: var(--safe-area-cover-top); --nav-padding-top-base: var(--space-md); --nav-padding-bottom-base: var(--space-md); - padding: calc(var(--nav-padding-top-base) + var(--nav-safe-area-top)) 0 var(--nav-padding-bottom-base) 0; + /* Use env() directly for safe area padding */ + padding-top: calc(var(--nav-padding-top-base) + env(safe-area-inset-top)); + padding-left: env(safe-area-inset-left); + padding-right: env(safe-area-inset-right); + padding-bottom: var(--nav-padding-bottom-base); } /* iOS-specific navigation stabilization to prevent bobbing */ @@ -242,14 +245,7 @@ html { } } -@supports (top: constant(safe-area-inset-top)) { - :root { - --safe-area-top: constant(safe-area-inset-top); - --safe-area-bottom: constant(safe-area-inset-bottom); - --safe-area-cover-top: constant(safe-area-inset-top); - --safe-area-cover-bottom: constant(safe-area-inset-bottom); - } -} +/* Deprecated constant() syntax removed - using env() directly */ .voyage-nav.scrolled { background: rgba(255, 255, 255, 0.95); @@ -452,26 +448,7 @@ html { /* Safe areas will be applied to content only */ } -.hero-video-container { - position: fixed; - left: 0; - right: 0; - /* Pull up by safe-area to extend under notch */ - top: calc(-1 * env(safe-area-inset-top)); - /* Grow height to compensate */ - height: calc(100lvh + env(safe-area-inset-top)); - transform: translate3d(0, var(--parallax-offset, 0px), 0); - background: #ffffff; - z-index: 0; /* Behind content */ - pointer-events: none; -} - -/* Fallback for browsers without lvh support */ -@supports not (height: 100lvh) { - .hero-video-container { - height: calc(100vh + env(safe-area-inset-top)); - } -} +/* Video container styles moved to HeroSection.vue component for better encapsulation */ .hero-video, .hero-image-fallback, diff --git a/apps/website/components/HeroSection.vue b/apps/website/components/HeroSection.vue index 928fb3a..d77804e 100644 --- a/apps/website/components/HeroSection.vue +++ b/apps/website/components/HeroSection.vue @@ -237,9 +237,9 @@ onMounted(() => { pointer-events: none; } -/* Container to prevent horizontal overflow */ +/* Container for hero section */ .hero-voyage { - overflow-x: hidden !important; + /* Allow video to extend into safe area - no overflow clipping */ max-width: 100vw !important; position: relative; min-height: 100vh; diff --git a/apps/website/public/safe-area-test.html b/apps/website/public/safe-area-test.html new file mode 100644 index 0000000..2908867 --- /dev/null +++ b/apps/website/public/safe-area-test.html @@ -0,0 +1,157 @@ + + + + + + Safe Area Test - Harbor Smith + + + +
+
+

Safe Area Test

+
+

If the gradient extends into the notch/Dynamic Island:

+

✅ You should see RED color in the notch area

+

✅ This text should be BELOW the notch

+

✅ The gradient should fill the entire screen

+

Debug Info:

+

Safe Area Top: checking...

+

Viewport Height: checking...

+

Screen Height: checking...

+
+
+ Testing safe area extension... +
+
+ + + + \ No newline at end of file