PageSourceSearch

https://shoreedge.ai/

html shoreedge.ai collected 2026-10-05 15:14:06 UTC 5,957 bytes, 115 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <style data-vite-theme="" data-inject-first="">:root {
5      --background: 0 0% 100%;
6--foreground: 20 14.3% 4.1%;
7--muted: 60 4.8% 95.9%;
8--muted-foreground: 25 5.3% 44.7%;
9--popover: 0 0% 100%;
10--popover-foreground: 20 14.3% 4.1%;
11--card: 0 0% 100%;
12--card-foreground: 20 14.3% 4.1%;
13--border: 20 5.9% 90%;
14--input: 20 5.9% 90%;
15--primary: 142 76% 36%;
16--primary-foreground: 127 38% 98%;
17--secondary: 60 4.8% 95.9%;
18--secondary-foreground: 24 9.8% 10%;
19--accent: 60 4.8% 95.9%;
20--accent-foreground: 24 9.8% 10%;
21--destructive: 0 84.2% 60.2%;
22--destructive-foreground: 60 9.1% 97.8%;
23--ring: 20 14.3% 4.1%;
24--radius: 0.5rem;
25  }
26  .dark {
27      --background: 240 10% 3.9%;
28--foreground: 0 0% 98%;
29--muted: 240 3.7% 15.9%;
30--muted-foreground: 240 5% 64.9%;
31--popover: 240 10% 3.9%;
32--popover-foreground: 0 0% 98%;
33--card: 240 10% 3.9%;
34--card-foreground: 0 0% 98%;
35--border: 240 3.7% 15.9%;
36--input: 240 3.7% 15.9%;
37--primary: 142 76% 36%;
38--primary-foreground: 127 38% 98%;
39--secondary: 240 3.7% 15.9%;
40--secondary-foreground: 0 0% 98%;
41--accent: 240 3.7% 15.9%;
42--accent-foreground: 0 0% 98%;
43--destructive: 0 62.8% 30.6%;
44--destructive-foreground: 0 0% 98%;
45--ring: 240 4.9% 83.9%;
46--radius: 0.5rem;
47  }</style>
48
49    <meta charset="UTF-8" />
50    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
51    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
52    <title>ShoreEdge - Sustainable Shore Excursions</title>
53    <meta name="description" content="Connect cruise passengers and crew with sustainable shore excursions" />
54    
55    <!-- Security headers -->
56    <meta http-equiv="X-Content-Type-Options" content="nosniff" />
57    <meta http-equiv="X-Frame-Options" content="SAMEORIGIN" />
58    <meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin" />
59    
60    <!-- Permissions Policy for Camera and other device features -->
61    <meta http-equiv="Permissions-Policy" content="camera=*, microphone=*, geolocation=*, fullscreen=*, payment=*" />
62    
63    <!-- Content Security Policy configured for Google Maps and external services -->
64    <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' https: wss: data: blob:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https: blob: data: https://maps.googleapis.com https://maps.gstatic.com *.google.com *.googletagmanager.com; style-src 'self' 'unsafe-inline' https: blob: data: https://maps.googleapis.com https://fonts.googleapis.com; font-src 'self' https: data: blob: https://fonts.gstatic.com https://maps.gstatic.com; img-src 'self' https: data: blob: * https://maps.googleapis.com https://maps.gstatic.com *.google.com; connect-src 'self' https: wss: ws: data: blob: * https://maps.googleapis.com *.google.com; frame-src 'self' https: data: blob:; worker-src 'self' blob: data: https:; media-src 'self' https: data: blob:; object-src 'none';" />
65    
66    <!-- PWA and mobile support -->
67    <meta name="theme-color" content="#2F855A" />
68    <meta name="apple-mobile-web-app-capable" content="yes" />
69    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
70    <meta name="apple-mobile-web-app-title" content="ShoreEdge" />
71    
72    <!-- PWA support -->
73    <link rel="manifest" href="/manifest.json" />
74    <link rel="icon" type="image/png" href="/attached_assets/ShoreEDGE-icon.png" />
75    <link rel="apple-touch-icon" href="/attached_assets/appstore.png" />
76    
77    <!-- iOS splash screens -->
78    <link rel="apple-touch-startup-image" href="/attached_assets/appstore.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" />
79    <link rel="apple-touch-startup-image" href="/attached_assets/appstore.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" />
80    <link rel="apple-touch-startup-image" href="/attached_assets/appstore.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3)" />
81    <link rel="apple-touch-startup-image" href="/attached_assets/appstore.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)" />
82    <link rel="apple-touch-startup-image" href="/attached_assets/appstore.png" media="(min-device-width: 768px) and (max-device-width: 1024px)" />
83    
84    <!-- Fonts -->
85    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Montserrat:wght@600;700;
85800&family=Playfair+Display:wght@700&display=swap" rel="stylesheet">
86    
87    <!-- Preload the service worker file to ensure it's available -->
88    <link rel="preload" href="/sw.js" as="script" crossorigin="anonymous" />
89    
89<script type="module" crossorigin src="/assets/index-BFXWRnri.js"></script>
89
90    <link rel="stylesheet" crossorigin href="/assets/index-CpGKECRc.css">
91  </head>
92  <body>
93    <div id="root"></div>
94    
95    <!-- Service Worker registration fallback script -->
96    
96<script>
97      // Ensure service worker is registered even if the main bundle fails to load
98      if ('serviceWorker' in navigator && !navigator.serviceWorker.controller) {
99        window.addEventListener('load', function() {
100          console.log('Fallback service worker registration starting...');
101          navigator.serviceWorker.register('/sw.js', {scope: '/'})
102            .then(function(registration) {
103              console.log('Fallback SW registration successful with scope:', registration.scope);
104            })
105            .catch(function(error) {
106              console.error('Fallback SW registration failed:', error);
107            });
108        });
109      }
110    </script>
110
111    
112    <!-- This is a replit script which adds a banner on the top of the page when opened in development mode outside the replit environment -->
113    
113<script type="text/javascript" src="https://replit.com/public/js/replit-dev-banner.js"></script>
113
114  </body>
115</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.