PageSourceSearch

https://app.stoqui.com.br/auth/phone-login?referrerUrl=www.stoqui.com.br%2Findex

html stoqui.com.br collected 2026-09-24 11:56:36 UTC 7,526 bytes, 188 lines download raw bytes

1<!doctype html>
2<html lang="pt-BR">
3
4<head>
5  <meta charset="UTF-8" />
6  <meta name="robots" content="noindex, nofollow" />
7
8  <link rel="icon" type="image/x-icon" href="/favicon.ico">
9  <meta name="viewport"
10    content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
11  <title>Stoqui</title>
12
13  <!-- Google Fonts - loaded async to not block rendering. Weights 400/500/700
14       so storefront font previews render the regular + bold roles authentically
15       (font-synthesis: none in index.css, so missing weights would silently
16       render at the wrong thickness). -->
17  <link rel="preconnect" href="https://fonts.googleapis.com">
18  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
19  <link rel="preload" as="style"
20    href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;700&family=Outfit:wght@400;500;700&family=Bitter:wght@400;500;700&family=Quicksand:wght@400;500;700&display=swap"
21    onload="this.onload=null;this.rel='stylesheet'">
22  <noscript>
23    <link
24      href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;700&family=Outfit:wght@400;500;700&family=Bitter:wght@400;500;700&family=Quicksand:wght@400;500;700&display=swap"
25      rel="stylesheet">
26  </noscript>
27
28  <!-- Polyfill for older browsers -->
29
30  <!-- Pre-React layer. Paints before a single module is parsed and depends on
31       nothing: no React, no MUI, no bundle code. It shows the spinner and
32       nothing else, for as long as the boot takes, and hides it once React
33       commits. It never removes a node, so it cannot leave a blank screen the
34       way the old 5s loader.remove() timer did. -->
35  <style>
36    body {
37      margin: 0;
38      background-color: #F6F6FA;
39    }
40
41    /* #root deliberately gets NO position/z-index rule.
42       Giving it `position: relative; z-index: 1` (to lift it over the shell
43       below) turned it into a STACKING CONTEXT, and every fixed overlay
44       rendered inside it was then trapped in a layer painted at z-index 1 of
45       the root. MUI modals portal to document.body at z-index 1300, so they
46       started covering in-tree overlays that used to win - ClockSkewBanner
47       asks for 2147483647 and is the only way to reach /clock-skew, which is
48       exactly the screen a merchant needs when a wrong device clock is
49       breaking their JWT. It has to be able to sit above a dialog.
50
51       The shell is pushed behind with a NEGATIVE z-index instead. It still
52       paints (negative-z children sit above the canvas background, which is
53       where body's #F6F6FA ends up), and any real in-flow content in #root
54       paints over it without #root needing to be positioned at all. */
55    #app-shell {
56      position: fixed;
57      inset: 0;
58      z-index: -1;
59      display: flex;
60      align-items: center;
61      justify-content: center;
62      background: #F6F6FA;
63      pointer-events: none;
64      -webkit-touch-callout: none;
65      -webkit-user-select: none;
66      user-select: none;
67    }
68
69    .shell-spinner {
70      width: 48px;
71      height: 48px;
72      border: 5px solid #8865FE66;
73      border-radius: 50%;
74      border-top-color: #8865FE;
75      animation: spin 1s ease-in-out infinite;
76    }
77
78    @keyframes spin {
79      to {
80        transform: rotate(360deg);
81      }
82    }
83
84    /* React committed - stop drawing ENTIRELY: hide the spinner AND drop the
85       background.
86
87       Dropping the background matters. #root is not a stacking context, so
88       in-app elements using `z-index: -1` (the decorative gradients on
89       onboarding, login and the registration flow, plus FabHint and
90       BirthdayHomeCard) share the root's negative layer with #app-shell - and
91       #app-shell comes LATER in the DOM, so it paints on top of them. Left
92       opaque, it would quietly cover every one of those backgrounds for the
93       whole session. Transparent, the shell contributes no paint at all once
94       React is up. */
95    html.react-up .shell-spinner {
96      display: none;
97    }
98
99    html.react-up #app-shell {
100      background: transparent;
101    }
102
103    /* React committed and then emptied #root. Put the spinner and the backdrop
104       back rather than show a blank screen. The load-bearing net is
105       RootErrorBoundary; this is a bonus layer. Re-verify on every React
106       upgrade. */
107    html.react-up #root:empty~#app-shell {
108      background: #F6F6FA;
109    }
110
111    html.react-up #root:empty~#app-shell .shell-spinner {
112      display: block;
113    }
114  </style>
115  
115<script type="module" crossorigin src="/assets/index-TALscxEc.js"></script>
115
116  <link rel="modulepreload" crossorigin href="/assets/vendor-Dwao9eNC.js">
117  <link rel="modulepreload" crossorigin href="/assets/mui-CRsYZxVY.js">
118  <link rel="modulepreload" crossorigin href="/assets/query-8ViTdhdk.js">
119  <link rel="modulepreload" crossorigin href="/assets/datePickers-BIJXYOKG.js">
120  <link rel="modulepreload" crossorigin href="/assets/icons-D8aatgQ4.js">
121  <link rel="modulepreload" crossorigin href="/assets/lab-DSem1Osk.js">
122  <link rel="stylesheet" crossorigin href="/assets/index-TuPg2doO.css">
123</head>
124
125<body>
126  <!-- #root MUST come first: the #root:empty sibling selector above depends on it. -->
127  <div id="root"></div>
128
129  <!-- Painted before any JS module executes. Never removed, only hidden. -->
130  <div id="app-shell">
131    <div class="shell-spinner" aria-hidden="true"></div>
132  </div>
133
134
135  <!-- Handshake with React. MUST stay at the end of <body>: it reads elements
136       above it, and being a classic script it runs before the deferred module
137       above ever evaluates, so window.__stoquiBoot always exists by the time
138       main.tsx calls it. Fully guarded - if this throws, the app still boots. -->
139  
139<script>
140    (function () {
141      try {
142        var html = document.documentElement;
143        var BOOT_START = Date.now();
144        var settled = false;
145
146        window.__stoquiBoot = {
147          ready: function () {
148            if (settled) return;
149            settled = true;
150            html.classList.add('react-up');
151            // Time from "index.html parsed" to "React's first commit". The only
152            // place this can be read on a real device - visible in the Xcode /
153            // Android Studio console.
154            var ms = Date.now() - BOOT_START;
155            window.__stoquiBoot.readyMs = ms;
156            try { console.log('[boot] React up in ' + ms + 'ms'); } catch (e) { }
157          }
158        };
159
160        // Nothing may DEPEND on bundle code to hide the spinner, so watch #root
161        // directly. signalReactUp() from the bundle is an earlier, additional
162        // signal; whichever fires first wins and ready() is idempotent.
163        var rootEl = document.getElementById('root');
164        var settleIfPainted = function () {
165          if (!rootEl || !rootEl.firstElementChild) return false;
166          window.__stoquiBoot.ready();
167          return true;
168        };
169
170        if (!settleIfPainted()) {
171          if (rootEl && window.MutationObserver) {
172            var obs = new MutationObserver(function () {
173              if (settleIfPainted()) obs.disconnect();
174            });
175            obs.observe(rootEl, { childList: true });
176          } else {
177            var poll = setInterval(function () {
178              if (settleIfPainted()) clearInterval(poll);
179            }, 100);
180            setTimeout(function () { clearInterval(poll); }, 30000);
181          }
182        }
183      } catch (e) { /* bonus layer, never a dependency */ }
184    })();
185  </script>
185
186</body>
187
188</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.