PageSourceSearch

https://app.nottana.com/login

html nottana.com collected 2026-10-02 01:37:27 UTC 18,291 bytes, 534 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5    <meta
6      name="viewport"
7      content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no"
8    />
9    <title>Nottana - Zero-knowledge password manager on decentralized storage</title>
10    <meta name="application-version" content="1.38.0" />
11    <!-- Smart App Banner: when an iOS Safari user lands on any
12         app.nottana.com page (e.g. via a share-invite or
13         finalize email link), Apple renders a native banner at
14         the top offering "Open" if the iOS app is installed or
15         "Get" to install from the App Store. This pairs with
16         the Universal Links setup in
17         public/.well-known/apple-app-site-association so users
18         with the app already have it open directly via
19         deep-link, while those without it see this banner. -->
20    <meta name="apple-itunes-app" content="app-id=6758984474" />
21    <!-- Pre-paint the page in the stored theme before the JS bundle loads,
22         so cold starts don't flash white for dark-mode users. Mirrors
23         ThemeModeContext (localStorage key + system resolution). -->
24    
24<script>
25      (function () {
26        try {
27          var mode = localStorage.getItem('nottana_theme_mode');
28          var dark =
29            mode === 'dark' ||
30            (mode === 'system' &&
31              window.matchMedia &&
32              window.matchMedia('(prefers-color-scheme: dark)').matches);
33          if (dark) {
34            document.documentElement.style.backgroundColor = '#0f172a';
35          }
36        } catch (e) {}
37      })();
38    </script>
38
39
40    <!-- Keep application-version in sync with src/config/app-version.js -->
41    
41<script>
42      (function () {
43        var meta = document.querySelector('meta[name="application-version"]');
44        window.__NOTTANA_APP_VERSION__ = meta && meta.getAttribute('content');
45      })();
46    </script>
46
47
48    <!-- Android-specific CSS fixes -->
49    <style>
50      /* Fix for Android viewport height issues */
51      html,
52      body {
53        height: 100%;
54        overflow-x: hidden;
55        /* Prevent double-tap zoom on Android */
56        touch-action: manipulation;
57        /* Fix for Android scrolling issues */
58        -webkit-overflow-scrolling: touch;
59        overscroll-behavior: contain;
60      }
61
62      /* Fix for Android Chrome address bar issues */
63      @media screen and (max-width: 768px) {
64        html {
65          height: -webkit-fill-available;
66          height: 100vh; /* Fallback for older browsers */
67        }
68        body {
69          min-height: -webkit-fill-available;
70          min-height: 100vh; /* Fallback for older browsers */
71          /* Prevent page-level scrolling on mobile */
72          overflow-x: hidden;
73          overflow-y: hidden;
74          /* Fix for keyboard issues */
75          position: relative;
76        }
77
78        /* Ensure proper height calculation for mobile containers */
79        .mobile-container {
80          height: calc(100vh - 64px - env(safe-area-inset-bottom));
81          min-height: calc(100vh - 64px - env(safe-area-inset-bottom));
82          max-height: calc(100vh - 64px - env(safe-area-inset-bottom));
83        }
84
85        /* Fix for mobile keyboard issues */
86        .keyboard-open {
87          position: fixed;
88          top: 0;
89          left: 0;
90          right: 0;
91          bottom: 0;
92          overflow-y: auto;
93          -webkit-overflow-scrolling: touch;
94        }
95
96        /* Prevent zoom on input focus for iOS */
97        input[type="text"],
98        input[type="email"],
99        input[type="password"],
100        textarea,
101        select {
102          font-size: 16px;
103        }
104
105        /* Smooth transitions for keyboard state changes */
106        .login-form-container {
107          transition: all 0.3s ease-in-out;
108        }
109      }
110
111      /* Prevent multiple scrollbars on Android */
112      * {
113        box-sizing: border-box;
114      }
115
116      /* Fix for Android drawer positioning */
117      .MuiDrawer-paper {
118        position: fixed !important;
119      }
120
121      /* iOS-specific scroll containment for settings page */
122      @media screen and (max-width: 768px) {
123        /* Prevent whole app scrolling on iOS when touching settings header/tabs */
124        .settings-container {
125          touch-action: none !important;
126          overscroll-behavior: none !important;
127          -webkit-overflow-scrolling: auto !important;
128          isolation: isolate !important;
129        }
130
131        .settings-header {
132          touch-action: none !important;
133          overscroll-behavior: none !important;
134          -webkit-overflow-scrolling: auto !important;
135        }
136
137        .settings-tabs {
138          touch-action: pan-x !important; /* Allow horizontal scrolling only */
139          overscroll-behavior: none !important;
140          -webkit-overflow-scrolling: touch !important;
141        }
142
143        .settings-content {
144          touch-action: pan-y !important;
145          overscroll-behavior: contain !important;
146          -webkit-overflow-scrolling: touch !important;
147          isolation: isolate !important;
148          overflow: auto !important; /* Allow scrolling for tab content */
149        }
150      }
151
152      /* PWA-specific drawer: scroll containment only; position/safe area from layout.jsx */
153      @media (display-mode: standalone) {
154        .MuiDrawer-paper {
155          touch-action: pan-y !important;
156          overscroll-behavior: contain !important;
157          -webkit-overflow-scrolling: touch !important;
158          isolation: isolate !important;
159        }
160
161        .MuiDrawer-paper[data-pwa="true"] {
162          touch-action: pan-y !important;
163          overscroll-behavior: contain !important;
164          -webkit-overflow-scrolling: touch !important;
165          isolation: isolate !important;
166        }
167
168        /* Prevent page scrolling when drawer is open in PWA */
169        .MuiDrawer-paper[data-pwa="true"] ~ * {
170          touch-action: none !important;
171          overscroll-behavior: none !important;
172        }
173
174        /* Aggressive scroll prevention for PWA when drawer is open */
175        body[data-drawer-open="true"] {
176          overflow: hidden !important;
177          position: fixed !important;
178          width: 100% !important;
179          height: 100% !important;
180          touch-action: none !important;
181          overscroll-behavior: none !important;
182        }
183
184        /* Prevent scroll gestures on page content when drawer is open in PWA */
185        body[data-drawer-open="true"] * {
186          overscroll-behavior: none !important;
187        }
188
189        /* Allow clicks but prevent scroll on page content */
190        body[data-drawer-open="true"]
191          *:not(.MuiDrawer-paper):not(.MuiBackdrop-root) {
192          touch-action: manipulation !important;
193        }
194
195        /* Allow backdrop clicks while preventing scroll */
196        body[data-drawer-open="true"] .MuiBackdrop-root {
197          touch-action: manipulation !important;
198          overscroll-behavior: none !important;
199          pointer-events: auto !important;
200        }
201
202        /* Allow touch events only within the drawer */
203        body[data-drawer-open="true"] .MuiDrawer-paper {
204          touch-action: pan-y !important;
205          overscroll-behavior: contain !important;
206        }
207      }
208    </style>
209
210    <!-- Primary Meta Tags -->
211    <meta
212      name="title"
213      content="Nottana - Zero-knowledge password manager on decentralized storage"
214    />
215    <meta
216      name="description"
217      content="Encrypted vault for your personal, family and team data — passwords, notes, files, payment methods, IDs. Stored on a decentralized network. Always private, always yours."
218    />
219    <meta
220      name="keywords"
221      content="password manager, end-to-end encryption, zero-knowledge, decentralized storage, IPFS, privacy, family, team"
222    />
223    <meta name="author" content="Nottana" />
224
225    <!-- Open Graph / Facebook -->
226    <meta property="og:type" content="website" />
227    <meta property="og:url" content="https://app.nottana.com/" />
228    <!-- <meta property="fb:app_id" content="123456789" /> -->
229    <meta
230      property="og:title"
231      content="Nottana - Zero-knowledge password manager on decentralized storage"
232    />
233    <meta
234      property="og:description"
235      content="Encrypted vault for your personal, family and team data, stored on a decentralized network. Always private, always yours."
236    />
237    <meta
238      property="og:image"
239      content="https://app.nottana.com/nottana-logo-og.png"
240    />
241    <meta property="og:image:width" content="1200" />
242    <meta property="og:image:height" content="630" />
243    <meta property="og:site_name" content="Nottana" />
244    <meta property="og:locale" content="en_US" />
245
246    <!-- Twitter -->
247    <meta property="twitter:card" content="summary_large_image" />
248    <meta property="twitter:url" content="https://app.nottana.com/" />
249    <meta
250      property="twitter:title"
251      content="Nottana - Zero-knowledge password manager on decentralized storage"
252    />
253    <meta
254      property="twitter:description"
255      content="Encrypted vault for your personal, family and team data, stored on a decentralized network. Always private, always yours."
256    />
257    <meta
258      property="twitter:image"
259      content="https://app.nottana.com/nottana-logo-og.png"
260    />
261
262    <!-- Additional Meta Tags -->
263    <meta name="theme-color" content="#1976d2" />
264    <meta name="msapplication-TileColor" content="#1976d2" />
265    <meta name="apple-mobile-web-app-capable" content="yes" />
266    <meta
267      name="apple-mobile-web-app-status-bar-style"
268      content="black-translucent"
269    />
270    <meta name="apple-mobile-web-app-title" content="Nottana" />
271    <meta name="mobile-web-app-capable" content="yes" />
272    <meta name="apple-touch-fullscreen" content="yes" />
273    <meta name="format-detection" content="telephone=no" />
274
275    <!-- iOS Safe Area CSS - Global Solution -->
276    <style>
277      /* iOS Safe Area Support - Only for PWA mode, top safe area only */
278      @media (display-mode: standalone) {
279        html,
280        body {
281          padding-top: env(safe-area-inset-top);
282          /* Don't add bottom padding here - handled by individual components */
283          /* Make entire background transparent in non-safe areas */
284          background: transparent;
285          min-height: 100vh;
286        }
287
288        /* Ensure the root container takes full height in PWA mode */
289        #root {
290          min-height: 100vh;
291          min-height: calc(100vh + env(safe-area-inset-bottom));
292          /* --app-body-bg is published by the MUI theme (see
293             src/assets/styles/theme.js). This file runs before React, so the
294             literal below is only the pre-hydration paint; once the theme
295             mounts, the variable wins and dark mode stops showing a white
296             band where app content does not reach the viewport edge. */
297          background: var(--app-body-bg, white);
298          /* Make bottom non-safe area transparent */
299          background: linear-gradient(
300            to bottom,
301            var(--app-body-bg, white) 0%,
302            var(--app-body-bg, white) calc(100% - env(safe-area-inset-bottom)),
303            transparent calc(100% - env(safe-area-inset-bottom))
304          );
305        }
306      }
307
308      /* Fallback for devices without safe area support */
309      @supports not (padding: env(safe-area-inset-top)) {
310        html,
311        body {
312          padding-top: 0;
313        }
314      }
315    </style>
316
317    <!-- Poppins (5 weights) — src/app.css sets font-family: Poppins
318         globally, but without this <link> the browser would fall
319         back to the system font and intermediate weights (500/600)
320         would round to 400/700. Keep in sync with the weights this
321         app actually uses in Typography sx={{ fontWeight }}. -->
322    <link rel="preconnect" href="https://fonts.googleapis.com" />
323    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
324    <link
325      rel="stylesheet"
326      href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"
327    />
328
329    <!-- App Icons for Mobile Shortcuts - HIGH PRIORITY -->
330    <!-- Default apple-touch-icon for browsers that look for the default path -->
331    <link
332      rel="apple-touch-icon"
333      href="https://app.nottana.com/assets/manifest-icon-192.png"
334      data-nottana="true"
335    />
336    <link
337      rel="apple-touch-icon"
338      sizes="180x180"
339      href="https://app.nottana.com/assets/manifest-icon-192.png"
340      data-nottana="true"
341    />
342    <link
343      rel="apple-touch-icon"
344      sizes="152x152"
345      href="https://app.nottana.com/assets/manifest-icon-192.png"
346      data-nottana="true"
347    />
348    <link
349      rel="apple-touch-icon"
350      sizes="144x144"
351      href="https://app.nottana.com/assets/manifest-icon-192.png"
352      data-nottana="true"
353    />
354    <link
355      rel="apple-touch-icon"
356      sizes="120x120"
357      href="https://app.nottana.com/assets/manifest-icon-192.png"
358      data-nottana="true"
359    />
360    <link
361      rel="apple-touch-icon"
362      sizes="114x114"
363      href="https://app.nottana.com/assets/manifest-icon-192.png"
364      data-nottana="true"
365    />
366    <link
367      rel="apple-touch-icon"
368      sizes="76x76"
369      href="https://app.nottana.com/assets/manifest-icon-192.png"
370      data-nottana="true"
371    />
372    <link
373      rel="apple-touch-icon"
374      sizes="72x72"
375      href="https://app.nottana.com/assets/manifest-icon-192.png"
376      data-nottana="true"
377    />
378    <link
379      rel="apple-touch-icon"
380      sizes="60x60"
381      href="https://app.nottana.com/assets/manifest-icon-192.png"
382      data-nottana="true"
383    />
384    <link
385      rel="apple-touch-icon"
386      sizes="57x57"
387      href="https://app.nottana.com/assets/manifest-icon-192.png"
388      data-nottana="true"
389    />
390
391    <!-- Android App Icons - HIGH PRIORITY -->
392    <link
393      rel="icon"
394      type="image/png"
395      sizes="192x192"
396      href="https://app.nottana.com/assets/manifest-icon-192.png"
397      data-nottana="true"
398    />
399    <link
400      rel="icon"
401      type="image/png"
402      sizes="96x96"
403      href="https://app.nottana.com/assets/manifest-icon-192.png"
404      data-nottana="true"
405    />
406    <link
407      rel="icon"
408      type="image/png"
409      sizes="32x32"
410      href="https://app.nottana.com/assets/manifest-icon-192.png"
411      data-nottana="true"
412    />
413    <link
414      rel="icon"
415      type="image/png"
416      sizes="16x16"
417      href="https://app.nottana.com/assets/manifest-icon-192.png"
418      data-nottana="true"
419    />
420
421    <!-- Windows Tiles - HIGH PRIORITY -->
422    <meta
423      name="msapplication-TileImage"
424      content="https://app.nottana.com/assets/manifest-icon-192.png"
425      data-nottana="true"
426    />
427    <meta
428      name="msapplication-TileColor"
429      content="#1976d2"
430      data-nottana="true"
431    />
432
433    <!-- PWA Manifest -->
434    <link
435      rel="manifest"
436      href="https://app.nottana.com/manifest.json"
437      data-nottana="true"
438    />
439
440    <!-- Standard Favicon - HIGH PRIORITY (Browser Tabs Only) -->
441    <link
442      rel="icon"
443      type="image/x-icon"
444      href="https://app.nottana.com/assets/favicon1.ico"
445      data-nottana="true"
446    />
447    <link
448      rel="shortcut icon"
449      href="https://app.nottana.com/assets/favicon1.ico"
450      data-nottana="true"
451    />
452
453    <!-- Force Override WordPress Icons with JavaScript -->
454    
454<script>
455      // Immediately override any WordPress icon overrides
456      (function () {
457        "use strict";
458
459        // Function to force our icons
460        function forceNottanaIcons() {
461          // Remove any WordPress-added icon links
462          const allIconLinks = document.querySelectorAll(
463            'link[rel*="icon"], link[rel*="apple-touch-icon"]',
464          );
465          allIconLinks.forEach((link) => {
466            if (!link.hasAttribute("data-nottana")) {
467              link.remove();
468            }
469          });
470
471          // Force our favicon (browser tabs only)
472          let favicon = document.querySelector(
473            'link[rel="icon"][data-nottana="true"]',
474          );
475          if (!favicon) {
476            favicon = document.createElement("link");
477            favicon.rel = "icon";
478            favicon.type = "image/x-icon";
479            favicon.href = "https://app.nottana.com/assets/favicon1.ico";
480            favicon.setAttribute("data-nottana", "true");
481            document.head.appendChild(favicon);
482          }
483
484          // Force our apple touch icons
485          const appleIconSizes = [57, 60, 72, 76, 114, 120, 144, 152, 180];
486          appleIconSizes.forEach((size) => {
487            let appleIcon = document.querySelector(
488              `link[rel="apple-touch-icon"][sizes="${size}x${size}"][data-nottana="true"]`,
489            );
490            if (!appleIcon) {
491              appleIcon = document.createElement("link");
492              appleIcon.rel = "apple-touch-icon";
493              appleIcon.sizes = `${size}x${size}`;
494              appleIcon.href =
495                "https://app.nottana.com/assets/manifest-icon-192.png";
496              appleIcon.setAttribute("data-nottana", "true");
497              document.head.appendChild(appleIcon);
498            }
499          });
500        }
501
502        // Run immediately
503        forceNottanaIcons();
504
505        // Also run when DOM is ready
506        if (document.readyState === "loading") {
507          document.addEventListener("DOMContentLoaded", forceNottanaIcons);
508        }
509
510        // Run periodically to catch any late WordPress overrides
511        setInterval(forceNottanaIcons, 1000);
512      })();
513    </script>
513
514    
514<script type="module" crossorigin src="/assets/DNA11vdE.js"></script>
514
515    <link rel="modulepreload" crossorigin href="/assets/UqzzAnT4.js">
516    <link rel="modulepreload" crossorigin href="/assets/DYw7LMfG.js">
517    <link rel="modulepreload" crossorigin href="/assets/DXvvCRrN.js">
518    <link rel="modulepreload" crossorigin href="/assets/BFMbySPq.js">
519    <link rel="stylesheet" crossorigin href="/assets/Cgshjk_g.css">
520  </head>
521  <body>
522    
522<script>
523      globalThis.__process_shim__ = {
524        env: { NODE_ENV: "development" },
525        browser: true,
526        nextTick: function (fn) {
527          setTimeout(fn, 0);
528        },
529      };
530    </script>
530
531    <div id="root"></div>
532    <!-- The script tag points to your main entry file in the src directory -->
533  </body>
534</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.