PageSourceSearch

https://www.viasummon.com/privacy

html viasummon.com collected 2026-10-02 01:47:45 UTC 35,364 bytes, 831 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4  <meta charset="utf-8" />
5  <meta name="viewport" content="width=device-width, initial-scale=1" />
6  <title>Privacy · Summon</title>
7  <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
8  <meta name="description" content="Summon keeps your browsing on your computer. Analytics only sees anonymous product usage, never what you browse or type." />
9  <link rel="canonical" href="https://viasummon.com/privacy" />
10  <meta property="og:type" content="website" />
11  <meta property="og:site_name" content="Summon" />
12  <meta property="og:url" content="https://viasummon.com/privacy" />
13  <meta property="og:title" content="Summon | One Shortcut for the Whole Browser" />
14  <meta property="og:description" content="Summon keeps your browsing on your computer. Analytics only sees anonymous product usage, never what you browse or type." />
15  <meta property="og:image" content="https://viasummon.com/og.png" />
16  <meta property="og:image:type" content="image/png" />
17  <meta property="og:image:width" content="1920" />
18  <meta property="og:image:height" content="1080" />
19  <meta property="og:image:alt" content="Summon | One Shortcut for the Whole Browser" />
20  <meta name="twitter:card" content="summary_large_image" />
21  <meta name="twitter:title" content="Summon | One Shortcut for the Whole Browser" />
22  <meta name="twitter:description" content="Summon keeps your browsing on your computer. Analytics only sees anonymous product usage, never what you browse or type." />
23  <meta name="twitter:image" content="https://viasummon.com/og.png" />
24  <meta name="twitter:image:alt" content="Summon | One Shortcut for the Whole Browser" />
25  
25<script src="./analytics.js"></script>
25
26  
26<script>
27    (function () {
28      try {
29        var t = localStorage.getItem('summon-demo-theme');
30        if (t === 'Light') document.documentElement.setAttribute('data-theme', 'light');
31        else if (t === 'Dark') document.documentElement.setAttribute('data-theme', 'dark');
32        else {
33          var old = localStorage.getItem('summon-placement-theme');
34          if (old === 'light' || old === 'dark') document.documentElement.setAttribute('data-theme', old);
35        }
36      } catch (e) {}
37    })();
38  </script>
38
39  <style>
40    html { background-color: #e9e2d8; }
41    @media (prefers-color-scheme: dark) {
42      html:not([data-theme="light"]) { background-color: #0b0b0f; }
43    }
44    html[data-theme="dark"] { background-color: #0b0b0f; }
45    html[data-theme="light"] { background-color: #e9e2d8; }
46  </style>
47  <link rel="stylesheet" href="fonts/fonts.css" />
48  <style>
49    /* Keep fallback metrics close to webfonts so refresh doesn’t jump when fonts swap in. */
50    @font-face {
51      font-family: 'Playfair Fallback';
52      src: local('Georgia');
53      size-adjust: 108%;
54      ascent-override: 92%;
55      descent-override: 22%;
56      line-gap-override: 0%;
57    }
58    @font-face {
59      font-family: 'DM Sans Fallback';
60      src: local('Helvetica Neue'), local('Arial');
61      size-adjust: 103%;
62      ascent-override: 95%;
63      descent-override: 25%;
64      line-gap-override: 0%;
65    }
66    @font-face {
67      font-family: 'Space Grotesk Fallback';
68      src: local('Helvetica Neue'), local('Arial');
69      size-adjust: 98%;
70      ascent-override: 95%;
71      descent-override: 25%;
72      line-gap-override: 0%;
73    }
74    :root {
75      --void: #e9e2d8;
76      --surface: #f7f3ed;
77      --ink: 32,28,25;
78      --active-text: #4338ca;
79      --indigo: #6366f1;
80      --periwinkle: #818cf8;
81      --ok: #1a7a45;
82      --ok-bg: rgba(26,122,69,0.08);
83      --ok-border: rgba(26,122,69,0.22);
84      --no: #9b2c2c;
85      --no-bg: rgba(155,44,44,0.07);
86      --no-border: rgba(155,44,44,0.2);
87      --border: rgba(var(--ink),0.1);
88      --sans: 'DM Sans', 'DM Sans Fallback', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
89      --label: 'Space Grotesk', 'Space Grotesk Fallback', 'DM Sans', system-ui, sans-serif;
90      --display: 'Playfair Display', 'Playfair Fallback', Georgia, 'Times New Roman', serif;
91    }
92    @media (prefers-color-scheme: dark) {
93      :root:not([data-theme="light"]) {
94        --void: #0b0b0f;
95        --surface: #18181b;
96        --ink: 255,255,255;
97        --active-text: #c7d2fe;
98        --ok: #6ee7a8;
99        --ok-bg: rgba(110,231,168,0.08);
100        --ok-border: rgba(110,231,168,0.22);
101        --no: #fca5a5;
102        --no-bg: rgba(248,113,113,0.1);
103        --no-border: rgba(248,113,113,0.28);
104      }
105    }
106    :root[data-theme="dark"] {
107      --void: #0b0b0f;
108      --surface: #18181b;
109      --ink: 255,255,255;
110      --active-text: #c7d2fe;
111      --ok: #6ee7a8;
112      --ok-bg: rgba(110,231,168,0.08);
113      --ok-border: rgba(110,231,168,0.22);
114      --no: #fca5a5;
115      --no-bg: rgba(248,113,113,0.1);
116      --no-border: rgba(248,113,113,0.28);
117    }
118    :root[data-theme="light"] {
119      --void: #e9e2d8;
120      --surface: #f7f3ed;
121      --ink: 32,28,25;
122      --active-text: #4338ca;
123      --ok: #1a7a45;
124      --ok-bg: rgba(26,122,69,0.08);
125      --ok-border: rgba(26,122,69,0.22);
126      --no: #9b2c2c;
127      --no-bg: rgba(155,44,44,0.07);
128      --no-border: rgba(155,44,44,0.2);
129    }
130
131    * { box-sizing: border-box; margin: 0; padding: 0; }
132    html {
133      color-scheme: light dark;
134      scrollbar-gutter: stable;
135      overflow-x: hidden;
136      background-color: var(--void);
137      background-image:
138        radial-gradient(ellipse 90% 55% at 12% -8%, rgba(99,102,241,0.11), transparent 58%),
139        radial-gradient(ellipse 70% 50% at 96% 108%, rgba(129,140,248,0.09), transparent 55%),
140        linear-gradient(165deg, rgba(99,102,241,0.03) 0%, transparent 42%, rgba(129,140,248,0.025) 100%);
141    }
142    @media (prefers-color-scheme: dark) {
143      html:not([data-theme="light"]) {
144        background-image:
145          radial-gradient(ellipse 90% 55% at 12% -8%, rgba(99,102,241,0.14), transparent 58%),
146          radial-gradient(ellipse 70% 50% at 96% 108%, rgba(129,140,248,0.1), transparent 55%),
147          linear-gradient(165deg, rgba(99,102,241,0.04) 0%, transparent 42%, rgba(129,140,248,0.03) 100%);
148      }
149    }
150    html[data-theme="dark"] {
151      background-image:
152        radial-gradient(ellipse 90% 55% at 12% -8%, rgba(99,102,241,0.14), transparent 58%),
153        radial-gradient(ellipse 70% 50% at 96% 108%, rgba(129,140,248,0.1), transparent 55%),
154        linear-gradient(165deg, rgba(99,102,241,0.04) 0%, transparent 42%, rgba(129,140,248,0.03) 100%);
155    }
156    html[data-theme="light"] {
157      background-image:
158        radial-gradient(ellipse 90% 55% at 12% -8%, rgba(99,102,241,0.11), transparent 58%),
159        radial-gradient(ellipse 70% 50% at 96% 108%, rgba(129,140,248,0.09), transparent 55%),
160        linear-gradient(165deg, rgba(99,102,241,0.03) 0%, transparent 42%, rgba(129,140,248,0.025) 100%);
161    }
162    body {
163      font-family: var(--sans);
164      background: transparent;
165      color: rgba(var(--ink),0.92);
166      line-height: 1.55;
167      -webkit-font-smoothing: antialiased;
168    }
169    @media (prefers-reduced-motion: reduce) {
170      * { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
171    }
172
173    .topbar {
174      display: flex;
175      align-items: center;
176      justify-content: space-between;
177      gap: 16px;
178      padding: 22px 28px 0;
179    }
180    .topbar-mark {
181      display: inline-flex;
182      align-items: center;
183      gap: 10px;
184      font-family: var(--display);
185      font-size: 28px;
186      font-weight: 700;
187      letter-spacing: -0.03em;
188      color: rgba(var(--ink),0.92);
189      text-decoration: none;
190      line-height: 1;
191    }
192    .topbar-mark:hover { color: var(--active-text); }
193    .topbar-mark .topbar-logo {
194      height: 26px;
195      width: auto;
196      display: block;
197      flex-shrink: 0;
198    }
199    @media (prefers-color-scheme: dark) {
200      html:not([data-theme="light"]) .topbar-mark .topbar-logo { filter: invert(1); }
201    }
202    html[data-theme="dark"] .topbar-mark .topbar-logo { filter: invert(1); }
203    html[data-theme="light"] .topbar-mark .topbar-logo { filter: none; }
204    .topbar-install {
205      display: inline-flex;
206      align-items: center;
207      gap: 8px;
208      font-family: var(--sans);
209      font-size: 14px;
210      font-weight: 600;
211      color: #fff;
212      background: linear-gradient(135deg, var(--indigo), var(--periwinkle));
213      padding: 10px 18px;
214      border-radius: 8px;
215      text-decoration: none;
216      box-shadow: 0 4px 12px rgba(99,102,241,0.28);
217      transition: transform 0.1s, box-shadow 0.1s;
218      flex-shrink: 0;
219    }
220    .topbar-install:hover {
221      transform: translateY(-1px);
222      box-shadow: 0 6px 16px rgba(99,102,241,0.36);
223    }
224    .topbar-install svg { flex-shrink: 0; }
225
226    .theme-toggle {
227      appearance: none;
228      -webkit-appearance: none;
229      position: fixed;
230      right: 20px;
231      bottom: 20px;
232      z-index: 50;
233      width: 48px;
234      height: 48px;
235      display: inline-flex;
236      align-items: center;
237      justify-content: center;
238      margin: 0;
239      padding: 0;
240      border: 1px solid var(--border);
241      border-radius: 12px;
242      background: var(--surface);
243      color: rgba(var(--ink),0.78);
244      box-shadow: 0 8px 24px rgba(55,42,30,0.14);
245      cursor: pointer;
246    }
247    .theme-toggle:hover {
248      color: rgba(var(--ink),0.95);
249      filter: brightness(1.03);
250    }
251    .theme-toggle:focus-visible {
252      outline: 2px solid var(--active-text);
253      outline-offset: 3px;
254    }
255    .theme-toggle svg {
256      width: 20px;
257      height: 20px;
258      display: block;
259    }
260    .theme-toggle .icon-sun { display: none; }
261    .theme-toggle .icon-moon { display: block; }
262    @media (prefers-color-scheme: dark) {
263      html:not([data-theme="light"]) .theme-toggle .icon-sun { display: block; }
264      html:not([data-theme="light"]) .theme-toggle .icon-moon { display: none; }
265      html:not([data-theme="light"]) .theme-toggle { box-shadow: 0 8px 24px rgba(0,0,0,0.6); }
266    }
267    html[data-theme="dark"] .theme-toggle .icon-sun { display: block; }
268    html[data-theme="dark"] .theme-toggle .icon-moon { display: none; }
269    html[data-theme="dark"] .theme-toggle { box-shadow: 0 8px 24px rgba(0,0,0,0.6); }
270    html[data-theme="light"] .theme-toggle .icon-sun { display: none; }
271    html[data-theme="light"] .theme-toggle .icon-moon { display: block; }
272    .back-link {
273      display: inline-block;
274      font-family: var(--label);
275      font-size: 13px;
276      font-weight: 500;
277      color: rgba(var(--ink),0.55);
278      text-decoration: none;
279      margin-bottom: 28px;
280    }
281    .back-link:hover { color: var(--active-text); }
282
283    .wrap {
284      max-width: 760px;
285      margin: 0 auto;
286      padding: 36px 24px 80px;
287    }
288
289    .eyebrow {
290      font-family: var(--label);
291      font-size: 11px;
292      font-weight: 500;
293      letter-spacing: 0.1em;
294      text-transform: uppercase;
295      color: rgba(var(--ink),0.5);
296      margin-bottom: 12px;
297    }
298    h1 {
299      font-family: var(--display);
300      font-size: clamp(26px, 4.6vw, 40px);
301      font-weight: 700;
302      letter-spacing: -0.03em;
303      line-height: 1.12;
304      margin-bottom: 14px;
305      white-space: nowrap;
306    }
307    @media (max-width: 540px) {
308      h1 { white-space: normal; }
309    }
310    h2.section-title {
311      font-family: var(--display);
312      font-size: clamp(26px, 4vw, 36px);
313      font-weight: 700;
314      letter-spacing: -0.03em;
315      line-height: 1.15;
316      margin: 40px 0 16px;
317    }
318    .lede {
319      font-size: 17px;
320      color: rgba(var(--ink),0.6);
321      margin-bottom: 12px;
322    }
323    .meta {
324      font-size: 13px;
325      color: rgba(var(--ink),0.42);
326      margin-bottom: 36px;
327    }
328
329    .split {
330      display: grid;
331      grid-template-columns: 1fr 1fr;
332      gap: 12px;
333      margin-bottom: 0;
334    }
335    .col.never {
336      background: var(--surface);
337      border-color: var(--border);
338      margin-bottom: 28px;
339    }
340    .col.never li {
341      display: flex;
342      align-items: flex-start;
343      gap: 8px;
344      padding-left: 0;
345    }
346    .col.never li::before {
347      content: none;
348      display: none;
349    }
350    /* Tabler Icons / x (MIT) https://tabler.io/icons/icon/x */
351    .never-x {
352      flex: 0 0 auto;
353      display: flex;
354      align-items: center;
355      justify-content: center;
356      width: 16px;
357      height: 1.4em; /* one text line box; svg centers inside */
358      color: var(--no);
359      line-height: 0;
360    }
361    .never-x svg {
362      display: block;
363      width: 16px;
364      height: 16px;
365    }
366    .never-text { flex: 1; min-width: 0; }
367    .col.capture {
368      background: var(--surface);
369      border-color: var(--border);
370      margin-bottom: 28px;
371    }
372    .col.capture .col-head { color: var(--active-text); }
373    .col.capture li::before { background: var(--active-text); }
374    .col.note {
375      background: var(--surface);
376      border-color: var(--border);
377      margin-bottom: 28px;
378    }
379    .col.note .col-head { color: rgba(var(--ink),0.55); }
380    .col.note li::before { background: rgba(var(--ink),0.35); }
381    .col.note p {
382      font-size: 14.5px;
383      color: rgba(var(--ink),0.78);
384      margin: 0;
385      line-height: 1.45;
386    }
387    .col.note p + p { margin-top: 10px; }
388    .id-copy {
389      display: flex;
390      flex-wrap: wrap;
391      align-items: center;
392      gap: 10px;
393      margin-top: 14px;
394    }
395    .id-copy code {
396      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
397      font-size: 12.5px;
398      color: rgba(var(--ink),0.78);
399      background: rgba(var(--ink),0.05);
400      border: 1px solid var(--border);
401      border-radius: 8px;
402      padding: 8px 10px;
403      max-width: 100%;
404      overflow: hidden;
405      text-overflow: ellipsis;
406      white-space: nowrap;
407      flex: 1 1 180px;
408    }
409    .id-copy button {
410      appearance: none;
411      -webkit-appearance: none;
412      font-family: var(--label);
413      font-size: 12.5px;
414      font-weight: 600;
415      color: #fff;
416      background: linear-gradient(135deg, #6366f1, #818cf8);
417      border: none;
418      border-radius: 8px;
419      padding: 8px 12px;
420      cursor: pointer;
421      flex: 0 0 auto;
422    }
423    .id-copy button:hover { filter: brightness(1.05); }
424    .id-copy button:focus-visible {
425      outline: 2px solid var(--active-text);
426      outline-offset: 2px;
427    }
428    .id-copy-status {
429      font-size: 13px;
430      color: rgba(var(--ink),0.5);
431      width: 100%;
432    }
433    .id-copy-status:empty {
434      display: none;
435    }
436    .section-lede {
437      font-size: 15px;
438      color: rgba(var(--ink),0.62);
439      margin: -4px 0 14px;
440      line-height: 1.45;
441    }
442    @media (max-width: 560px) {
443      .split { grid-template-columns: 1fr; }
444    }
445    .col {
446      border-radius: 14px;
447      padding: 20px;
448      border: 1px solid var(--border);
449    }
450    .col.yes { background: var(--ok-bg); border-color: var(--ok-border); }
451    .col.no { background: var(--no-bg); border-color: var(--no-border); }
452    .col-head {
453      font-family: var(--label);
454      font-size: 11px;
455      font-weight: 600;
456      letter-spacing: 0.08em;
457      text-transform: uppercase;
458      margin-bottom: 12px;
459    }
460    .col.yes .col-head { color: var(--ok); }
461    .col.no .col-head { color: var(--no); }
462    .col ul { list-style: none; }
463    .col li {
464      font-size: 14.5px;
465      color: rgba(var(--ink),0.78);
466      padding: 0 0 8px 14px;
467      position: relative;
468      line-height: 1.4;
469    }
470    .col li:last-child { padding-bottom: 0; }
471    .col li::before {
472      content: '';
473      position: absolute;
474      left: 0;
475      top: 0.5em;
476      width: 6px;
477      height: 6px;
478      border-radius: 50%;
479    }
480    .col.yes li::before { background: var(--ok); }
481    .col.no li::before { background: var(--no); }
482
483    p {
484      font-size: 15px;
485      color: rgba(var(--ink),0.68);
486      margin-bottom: 12px;
487    }
488    a { color: var(--active-text); }
489    strong { color: rgba(var(--ink),0.9); font-weight: 600; }
490
491    .foot {
492      margin-top: 36px;
493      padding-top: 20px;
494      border-top: 1px solid var(--border);
495      font-size: 13.5px;
496      color: rgba(var(--ink),0.48);
497    }
498    .foot a { color: rgba(var(--ink),0.62); }
499  </style>
500</head>
501<body>
502  <!-- Launch banner: comment out this tag (or set enabled:false in launch-banner.js) to hide it.
503       Must stay a blocking (non-defer) script as the first thing in <body>. -->
504  
504<script src="./launch-banner.js"></script>
504
505  <header class="topbar">
506    <a class="topbar-mark" href="./">
507      <img class="topbar-logo" src="./logo.svg" alt="" width="51" height="26" />
508      Summon
509    </a>
510    <a class="topbar-install" href="https://chromewebstore.google.com/detail/summon/bbnkgieghmcdedfggjmhkjinlkmcgnii" target="_blank" rel="noopener noreferrer" data-ph="cta_install_topbar">
511      <svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M12 3v14M5 10l7 7 7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
512      <span>Add to <span class="js-browser-name">Chrome</span></span>
513    </a>
514  </header>
515
516  <div class="wrap">
517    <a class="back-link" href="./" data-i18n="site.back">← Back</a>
518    <div class="eyebrow" data-i18n="privacy.eyebrow">Privacy</div>
519    <h1 data-i18n="privacy.title">Your browsing stays on your computer.</h1>
520    <p class="lede" data-i18n="privacy.lede"></p>
521    <p class="meta" data-i18n="privacy.updated">Last updated July 24, 2026</p>
522
523    <h2 class="section-title" data-i18n="privacy.who.title">Who we are</h2>
524    <div class="col note">
525      <p data-i18n="privacy.who.p1"></p>
526      <p><span data-i18n="privacy.who.p2">Privacy questions →</span>
527        <a href="/cdn-cgi/l/email-protection#1c74797070735c6a757d6f6971717372327f7371"><span class="__cf_email__" data-cfemail="8ce4e9e0e0e3ccfae5edfff9e1e1e3e2a2efe3e1">[email&#160;protected]</span></a>
528      </p>
529    </div>
530
531    <h2 class="section-title" data-i18n="privacy.never.title">We never capture</h2>
532    <div class="col never">
533      <ul>
534        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.1"></span></li>
535        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.2"></span></li>
536        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.3"></span></li>
537        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.4"></span></li>
538        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.5"></span></li>
539        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.6"></span></li>
540        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.7"></span></li>
541        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
541ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.8"></span></li>
542        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.9"></span></li>
543        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.10"></span></li>
544        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.never.11"></span></li>
545      </ul>
546    </div>
547
548    <h2 class="section-title" data-i18n="privacy.capture.title">Anonymous data we capture</h2>
549    <div class="col capture">
550      <ul>
551        <li data-i18n="privacy.capture.1"></li>
552        <li data-i18n="privacy.capture.2"></li>
553        <li data-i18n="privacy.capture.3"></li>
554        <li data-i18n="privacy.capture.4"></li>
555        <li data-i18n="privacy.capture.5"></li>
556        <li data-i18n="privacy.capture.6"></li>
557        <li data-i18n="privacy.capture.7"></li>
558        <li data-i18n="privacy.capture.8"></li>
559        <li data-i18n="privacy.capture.9"></li>
560        <li data-i18n="privacy.capture.10"></li>
561        <li data-i18n="privacy.capture.11"></li>
562        <li data-i18n="privacy.capture.12"></li>
563        <li data-i18n="privacy.capture.13"></li>
564      </ul>
565    </div>
566
567    <div class="col never">
568      <ul>
569        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.neverExtra.1"></span></li>
570        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.neverExtra.2"></span></li>
571        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.neverExtra.3"></span></li>
572      </ul>
573    </div>
574
575    <div class="col note">
576      <p data-i18n="privacy.posthog.p1"></p>
577      <p data-i18n="privacy.posthog.p2"></p>
578    </div>
579
580    <h2 class="section-title" data-i18n="privacy.where.title">Where data is processed</h2>
581    <div class="col capture">
582      <div class="col-head" data-i18n="privacy.where.device">On your device</div>
583      <ul>
584        <li data-i18n="privacy.where.d1"></li>
585        <li data-i18n="privacy.where.d2"></li>
586      </ul>
587    </div>
588    <div class="col capture">
589      <div class="col-head" data-i18n="privacy.where.providers">With service providers</div>
590      <ul>
591        <li data-i18n="privacy.where.p1"></li>
592        <li data-i18n="privacy.where.p2"></li>
593        <li data-i18n="privacy.where.p3"></li>
594        <li data-i18n="privacy.where.p4"></li>
595      </ul>
596    </div>
597
598    <h2 class="section-title" data-i18n="privacy.keep.title">
598How long we keep it</h2>
599    <div class="col capture">
600      <ul>
601        <li data-i18n="privacy.keep.1"></li>
602        <li data-i18n="privacy.keep.2"></li>
603      </ul>
604    </div>
605
606    <h2 class="section-title" data-i18n="privacy.gdpr.title">GDPR (EEA, UK, and similar)</h2>
607    <p class="section-lede" data-i18n="privacy.gdpr.lede"></p>
608    <div class="col capture">
609      <div class="col-head" data-i18n="privacy.gdpr.bases">Legal bases</div>
610      <ul>
611        <li data-i18n="privacy.gdpr.b1"></li>
612        <li data-i18n="privacy.gdpr.b2"></li>
613      </ul>
614    </div>
615    <div class="col capture">
616      <div class="col-head" data-i18n="privacy.gdpr.rights">Your rights</div>
617      <ul>
618        <li data-i18n="privacy.gdpr.r1"></li>
619        <li data-i18n="privacy.gdpr.r2"></li>
620        <li data-i18n="privacy.gdpr.r3"></li>
621        <li data-i18n="privacy.gdpr.r4"></li>
622        <li data-i18n="privacy.gdpr.r5"></li>
623        <li data-i18n="privacy.gdpr.r6"></li>
624        <li data-i18n="privacy.gdpr.r7"></li>
625      </ul>
626    </div>
627    <div class="col note">
628      <p data-i18n="privacy.gdpr.note"></p>
629    </div>
630
631    <h2 class="section-title" data-i18n="privacy.ccpa.title">CCPA / CPRA (California)</h2>
632    <div class="col never">
633      <ul>
634        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.ccpa.1"></span></li>
635        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.ccpa.2"></span></li>
636        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.ccpa.3"></span></li>
637      </ul>
638    </div>
639    <div class="col capture">
640      <div class="col-head" data-i18n="privacy.ccpa.cats">Categories collected (last 12 months)</div>
641      <ul>
642        <li data-i18n="privacy.ccpa.c1"></li>
643        <li data-i18n="privacy.ccpa.c2"></li>
644        <li data-i18n="privacy.ccpa.c3"></li>
645      </ul>
646    </div>
647    <div class="col note">
648      <p data-i18n="privacy.ccpa.n1"></p>
649      <p data-i18n="privacy.ccpa.n2"></p>
650      <p data-i18n="privacy.ccpa.n3"></p>
651    </div>
652
653    <h2 class="section-title" data-i18n="privacy.store.title">Chrome Web Store</h2>
654    <div class="col note">
655      <p data-i18n="privacy.store.p1"></p>
656    </div>
657
658    <h2 class="section-title" data-i18n="privacy.children.title">Children</h2>
659    <div class="col never">
660      <ul>
661        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.children.1"></span></li>
662        <li><span class="never-x" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6l-12 12"/><path d="M6 6l12 12"/></svg></span><span class="never-text" data-i18n="privacy.children.2"></span></li>
663      </ul>
664    </div>
665
666    <h2 class="section-title" data-i18n="privacy.changes.title">Changes</h2>
667    <div class="col note">
668      <p data-i18n="privacy.changes.p1"></p>
669    </div>
670
671    <h2 class="section-title" id="request-deletion" data-i18n="privacy.delete.title">
671Request deletion</h2>
672    <p class="section-lede" data-i18n="privacy.delete.lede"></p>
673    <div class="col capture">
674      <div class="col-head" data-i18n="privacy.delete.how">How to get your IDs</div>
675      <ul>
676        <li data-i18n="privacy.delete.ext"></li>
677        <li data-i18n="privacy.delete.web"></li>
678      </ul>
679      <div class="id-copy">
680        <code id="web-analytics-id" data-i18n-title="privacy.delete.idTitle" title="Website analytics ID" data-i18n="privacy.delete.loading">Loading…</code>
681        <button type="button" id="copy-web-analytics-id" data-i18n="privacy.delete.copyBtn">Copy website ID</button>
682        <div class="id-copy-status" id="web-analytics-id-status" aria-live="polite"></div>
683      </div>
684    </div>
685    <div class="col note">
686      <p data-i18n="privacy.delete.emailNote"></p>
687      <p data-i18n="privacy.delete.clearNote"></p>
688    </div>
689
690    <p class="foot">
691      <a href="./">Summon</a>
692    </p>
693  </div>
vendor: 112 bytes, lines 693-695
693
694
695  <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
695<script src="./locales/summon-i18n.js"></script>
695
696  
696<script src="./page-i18n.js"></script>
696
697  <button type="button" class="theme-toggle" id="theme-toggle" aria-label="Switch to dark mode">
698    <svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
699      <path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" />
700    </svg>
701    <svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
702      <circle cx="12" cy="12" r="4" />
703      <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" />
704    </svg>
705  </button>
706
707  
707<script>
708    (function () {
709      var ua = navigator.userAgent || '';
710      var name = 'Chrome';
711      if (/\bBrave\//i.test(ua) || (navigator.brave)) name = 'Brave';
712      else if (/Edg\//.test(ua)) name = 'Edge';
713      else if (/OPR\//.test(ua)) name = 'Opera';
714      else if (/Vivaldi/i.test(ua)) name = 'Vivaldi';
715      if (/^Chrome/.test(name)) name = 'Chrome';
716      Array.prototype.forEach.call(document.querySelectorAll('.js-browser-name'), function (el) {
717        el.textContent = name;
718      });
719    })();
720  </script>
720
721  
721<script>
722    (function () {
723      function tTheme(key) {
724        return (window.SummonPageI18n && SummonPageI18n.t) ? SummonPageI18n.t(key) : key;
725      }
726      var KEY = 'summon-demo-theme';
727      var btn = document.getElementById('theme-toggle');
728      function currentTheme() {
729        var attr = document.documentElement.getAttribute('data-theme');
730        if (attr === 'dark') return 'dark';
731        if (attr === 'light') return 'light';
732        return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
733      }
734      function syncToggle() {
735        if (!btn) return;
736        btn.setAttribute('aria-label', currentTheme() === 'dark' ? tTheme('site.themeToLight') : tTheme('site.themeToDark'));
737      }
738      function setTheme(theme) {
739        document.documentElement.setAttribute('data-theme', theme);
740        try {
741          localStorage.setItem(KEY, theme === 'dark' ? 'Dark' : 'Light');
742        } catch (e) { /* ignore */ }
743        syncToggle();
744      }
745      syncToggle();
746      if (btn) {
747        btn.addEventListener('click', function () {
748          var next = currentTheme() === 'dark' ? 'light' : 'dark';
749          setTheme(next);
750          if (window.SummonTrack) {
751            window.SummonTrack('theme_toggled', {
752              theme: next === 'dark' ? 'Dark' : 'Light',
753              source: 'privacy_toggle'
754            });
755          }
756        });
757      }
758    })();
759  </script>
759
760  
760<script>
761    (function () {
762      function t(key, vars) {
763        return (window.SummonPageI18n && SummonPageI18n.t) ? SummonPageI18n.t(key, vars) : key;
764      }
765      function themeIsDark() {
766        var attr = document.documentElement.getAttribute('data-theme');
767        if (attr === 'dark') return true;
768        if (attr === 'light') return false;
769        return !!(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches);
770      }
771      if (window.SummonPageI18n) SummonPageI18n.boot('privacy', { themeIsDark: themeIsDark() });
772      var el = document.getElementById('web-analytics-id');
773      var btn = document.getElementById('copy-web-analytics-id');
774      var status = document.getElementById('web-analytics-id-status');
775      if (!el || !btn) return;
776
777      function readId() {
778        try {
779          if (window.posthog && typeof window.posthog.get_distinct_id === 'function') {
780            return window.posthog.get_distinct_id() || '';
781          }
782        } catch (e) { /* ignore */ }
783        return '';
784      }
785
786      function showId() {
787        var id = readId();
788        el.textContent = id || t('privacy.delete.unavailable');
789        el.title = id || t('privacy.delete.idTitle');
790        return id;
791      }
792
793      if (window.SummonPageI18n && SummonPageI18n.onLanguageChange) {
794        SummonPageI18n.onLanguageChange(function () {
795          showId();
796          if (status) status.textContent = '';
797        });
798      }
799
800      // PostHog loads async; retry a few times.
801      showId();
802      var tries = 0;
803      var timer = setInterval(function () {
804        tries += 1;
805        if (showId() || tries >= 20) clearInterval(timer);
806      }, 250);
807
808      btn.addEventListener('click', function () {
809        var id = showId();
810        if (!id) {
811          if (status) status.textContent = t('privacy.delete.noId');
812          return;
813        }
814        function ok() {
815          if (status) status.textContent = t('privacy.delete.copied');
816          if (window.SummonTrack) window.SummonTrack('web_analytics_id_copied', {});
817        }
818        function fail() {
819          if (status) status.textContent = t('privacy.delete.copyFail');
820        }
821        if (navigator.clipboard && navigator.clipboard.writeText) {
822          navigator.clipboard.writeText(id).then(ok, fail);
823        } else {
824          fail();
825        }
826      });
827    })();
828  </script>
vendor: 1 bytes, line 828
828
829<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"de7918e311c346e0a73598e4c47b0fb9","r":1,"spa":2}' crossorigin="anonymous"></script>
829
830</body>
831</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.