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 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.