:root{--bg: #e3fdfd;--bg-soft: #cbf1f5;--accent: #a6e3e9;--accent-strong: #71c9ce;--primary: #1a737a;--primary-hover: #125a61;--ink-strong: #0e2f32;--ink: #1f4447;--ink-muted: #557173;--surface: #ffffff;--border: rgba(14, 47, 50, .12);--border-strong: rgba(14, 47, 50, .26);--shadow-sm: 0 1px 2px rgba(14, 47, 50, .05);--shadow-md: 0 4px 16px rgba(14, 47, 50, .08);--radius: 12px;--radius-sm: 10px;color-scheme:light;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.55;color:var(--ink);background:var(--bg)}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;min-height:100vh;display:flex;flex-direction:column}.mono{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-weight:500}.site-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1.25rem 1.5rem;max-width:72rem;width:100%;margin:0 auto;border-bottom:1px solid var(--border)}.wordmark{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.125rem;color:var(--ink-strong);text-decoration:none;white-space:nowrap;flex-shrink:0;letter-spacing:-.01em}.site-header nav{display:flex;align-items:center;gap:1.25rem;flex-wrap:nowrap}.nav-link{color:var(--ink);text-decoration:none;font-size:.925rem;font-weight:500;white-space:nowrap;transition:color .15s ease-out}.nav-link:hover{color:var(--ink-strong)}.nav-link.github{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);flex-shrink:0}.nav-link.github:hover{background:var(--bg-soft);color:var(--ink-strong)}@media (max-width: 32rem){.site-header{padding:.875rem 1rem;gap:.5rem}.site-header nav{gap:.875rem}.nav-link:not(.github){font-size:.875rem}.nav-link[href="#how"]{display:none}}main{flex:1;max-width:44rem;width:100%;padding:2.5rem 1.5rem 4rem;margin:0 auto;display:grid;gap:2rem}.hero{text-align:center;padding:1rem 0 .5rem}.eyebrow{display:inline-block;margin:0 0 1rem;padding:.25rem .75rem;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);background:var(--bg-soft);border-radius:999px}.hero h1{font-size:clamp(2rem,5vw,2.75rem);font-weight:700;color:var(--ink-strong);letter-spacing:-.02em;line-height:1.15;margin:0 0 1rem}.hero .lead{font-size:1.0625rem;color:var(--ink);max-width:36rem;margin:0 auto}.hero .lead strong{color:var(--ink-strong);font-weight:600}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem;box-shadow:var(--shadow-sm)}.panel h2{margin:0 0 1rem;font-size:1.375rem;font-weight:600;color:var(--ink-strong);letter-spacing:-.01em}.panel p{margin:0 0 .75rem}.panel p:last-child{margin-bottom:0}.dropzone-panel{background:linear-gradient(180deg,var(--bg-soft) 0%,var(--surface) 100%)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);padding:2.5rem 1.5rem;text-align:center;background:var(--surface);transition:border-color .15s ease-out,background .15s ease-out;color:var(--ink)}.dropzone.is-hover{border-color:var(--primary);background:var(--bg-soft)}.dropzone p{margin:0 0 .5rem}.dropzone p:last-child{margin-bottom:0}.dropzone strong{color:var(--ink-strong);font-weight:600}.dropzone a{color:var(--primary);text-decoration:none;font-weight:600}.dropzone a:hover{color:var(--primary-hover);text-decoration:underline}.dropzone-status{margin-top:1rem!important;font-size:.875rem;color:var(--ink-muted);font-style:italic}.dropzone-progress{margin-top:1.25rem;display:grid;gap:.5rem;justify-items:center}.progress-bar{width:100%;max-width:24rem;height:.625rem;background:var(--bg-soft);border-radius:999px;overflow:hidden;border:1px solid var(--border)}.progress-fill{display:block;height:100%;width:0%;background:var(--primary);transition:width .12s ease-out}.progress-fill.is-indeterminate{width:40%!important;animation:progress-indeterminate 1.4s ease-in-out infinite;transition:none}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}.progress-label{margin:0;font-size:.8125rem;color:var(--ink-muted);font-variant-numeric:tabular-nums}.cancel-btn{font:inherit;padding:.375rem .875rem;background:transparent;color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer}.cancel-btn:hover{background:var(--bg-soft)}.qr-handoff{margin-top:1rem;text-align:center}.qr-toggle{font:inherit;padding:.5rem 1rem;background:transparent;color:var(--primary);border:1px solid var(--primary);border-radius:var(--radius-sm);cursor:pointer;font-weight:600}.qr-toggle:hover{background:var(--bg-soft)}.qr-panel{margin-top:1rem;padding:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:grid;gap:.75rem;justify-items:center}.qr-canvas svg{display:block;background:#fff;border-radius:var(--radius-sm);padding:.5rem;border:1px solid var(--border)}.qr-hint{margin:0;max-width:22rem;font-size:.9375rem;color:var(--ink);text-align:center}.qr-status{margin:0;font-size:.875rem;color:var(--ink-muted);font-variant-numeric:tabular-nums}.qr-cancel{font:inherit;padding:.375rem .875rem;background:transparent;color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer}.qr-cancel:hover{background:var(--bg-soft)}.receiver-page{padding:1.5rem}.receiver{max-width:32rem;margin:2rem auto;padding:1.5rem;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm);display:grid;gap:1rem}.receiver h2{margin:0;color:var(--ink-strong)}.receiver-file{display:block;padding:1.25rem;text-align:center;background:var(--bg-soft);border:2px dashed var(--border-strong);border-radius:var(--radius);cursor:pointer;font-weight:600;color:var(--primary)}.receiver-file input{display:none}.receiver-file:hover{background:var(--primary);color:var(--surface)}.receiver-status{margin:0;font-size:.9375rem;color:var(--ink-muted);text-align:center}.receiver-progress{width:100%}.results{margin-top:1.5rem;padding:1.25rem 1.5rem;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.results h2{margin:0 0 .75rem;font-size:1.125rem;font-weight:600;color:var(--ink-strong)}.results-list{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.375rem}.results-list a{color:var(--primary);font-weight:500;text-decoration:none}.results-list a:hover{color:var(--primary-hover);text-decoration:underline}.results-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;padding-top:.75rem;border-top:1px solid var(--border)}.download-bundle,.copy-bundle{font:inherit;padding:.5rem 1rem;background:var(--primary);color:var(--surface);border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:600}.download-bundle{text-decoration:none}.download-bundle:hover,.copy-bundle:hover{background:var(--primary-hover)}.privacy-banner{background:var(--primary);color:var(--surface);border-bottom:1px solid var(--primary-hover)}.privacy-banner-inner{max-width:72rem;width:100%;margin:0 auto;padding:.625rem 1.5rem;display:flex;align-items:center;justify-content:center;gap:.625rem;font-size:.875rem;line-height:1.4;text-align:center}.privacy-banner-inner p{margin:0}.privacy-banner-inner strong{color:var(--surface);font-weight:600}.privacy-banner-inner a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;font-weight:500}.privacy-banner-inner a:hover{text-decoration-thickness:2px}.privacy-icon{flex:0 0 auto;display:inline-flex;align-items:center;opacity:.9}@media (max-width: 40rem){.privacy-banner-inner{padding:.5rem 1rem;font-size:.8125rem}}.walkthrough-panel{padding-top:2rem;padding-bottom:2.75rem}.walkthrough-lead{font-size:1.0625rem;color:var(--ink-muted);margin:-.25rem 0 2rem;max-width:40rem}.walkthrough-lead em{font-style:normal;color:var(--ink-strong);font-weight:600;background:linear-gradient(180deg,transparent 60%,var(--accent) 60%);padding:0 .15em}.walkthrough{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2.5rem;align-items:start}@media (max-width: 44rem){.walkthrough{grid-template-columns:1fr;justify-items:center;gap:1.75rem}.walkthrough-side{width:100%}}.phone-frame{--phone-w: 280px;--phone-h: 570px;position:relative;width:var(--phone-w);height:var(--phone-h);margin:0;padding:10px;border-radius:48px;background:linear-gradient(155deg,#2b3237,#11161a 60%,#080c0f);box-shadow:inset 0 0 0 1.5px #ffffff0d,inset 0 0 0 3px #000,0 24px 48px -18px #080c0f8c,0 6px 18px -8px #1a737a4d;cursor:pointer;user-select:none;flex-shrink:0}.phone-screen{position:relative;width:100%;height:100%;border-radius:38px;overflow:hidden;background:#000;box-shadow:inset 0 0 0 1px #000c}.phone-island{position:absolute;top:18px;left:50%;transform:translate(-50%);width:90px;height:26px;background:#000;border-radius:999px;z-index:3;pointer-events:none}.phone-btn{position:absolute;background:linear-gradient(90deg,#0a0e11,#2a3136,#0a0e11);border-radius:2px;z-index:1}.phone-btn--silent{top:92px;left:-1px;width:3px;height:30px}.phone-btn--volup{top:132px;left:-1px;width:3px;height:54px}.phone-btn--voldown{top:196px;left:-1px;width:3px;height:54px}.phone-btn--power{top:150px;right:-1px;width:3px;height:80px}.phone-screen-img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover;opacity:0;transform:none;transition:opacity .45s cubic-bezier(.22,.61,.36,1),transform .45s cubic-bezier(.22,.61,.36,1);will-change:opacity,transform;pointer-events:none}.phone-frame[data-current="1"] .phone-screen-img[data-step="1"],.phone-frame[data-current="2"] .phone-screen-img[data-step="2"],.phone-frame[data-current="3"] .phone-screen-img[data-step="3"],.phone-frame[data-current="4"] .phone-screen-img[data-step="4"],.phone-frame[data-current="5"] .phone-screen-img[data-step="5"],.phone-frame[data-current="6"] .phone-screen-img[data-step="6"]{opacity:1;transform:none;z-index:2}.phone-frame[data-transition=push-right] .phone-screen-img{transform:translate(30%);opacity:0}.phone-frame[data-transition=scroll-down] .phone-screen-img{transform:translateY(12%);opacity:0}.phone-frame[data-transition=modal-up] .phone-screen-img{transform:translateY(20%) scale(.96);opacity:0}.phone-frame[data-transition=fade] .phone-screen-img{transform:none;opacity:0}.phone-frame[data-transition][data-current="1"] .phone-screen-img[data-step="1"],.phone-frame[data-transition][data-current="2"] .phone-screen-img[data-step="2"],.phone-frame[data-transition][data-current="3"] .phone-screen-img[data-step="3"],.phone-frame[data-transition][data-current="4"] .phone-screen-img[data-step="4"],.phone-frame[data-transition][data-current="5"] .phone-screen-img[data-step="5"],.phone-frame[data-transition][data-current="6"] .phone-screen-img[data-step="6"]{opacity:1;transform:none;z-index:2}.walkthrough-side{display:grid;gap:1.25rem;align-self:center}.walkthrough-steps{list-style:none;padding:0;margin:0;display:grid;gap:.625rem;counter-reset:step}.walkthrough-step{display:grid;grid-template-columns:1.875rem 1fr;gap:.75rem;align-items:start;padding:.75rem .875rem .75rem .75rem;background:transparent;border-radius:10px;cursor:pointer;opacity:.55;transition:opacity .25s ease-out,background .25s ease-out,transform .25s ease-out;outline:none}.walkthrough-step:hover{opacity:1;background:var(--bg-soft)}.walkthrough-step:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.walkthrough-step.is-active{opacity:1;background:var(--bg-soft);transform:translate(4px)}.walkthrough-step.is-active .walkthrough-num{background:var(--primary);color:var(--surface);box-shadow:0 2px 8px -2px #1a737a8c}.walkthrough-num{display:inline-flex;align-items:center;justify-content:center;width:1.875rem;height:1.875rem;border-radius:999px;background:var(--accent);color:var(--ink-strong);font-weight:700;font-size:.875rem;font-variant-numeric:tabular-nums;transition:background .25s ease-out,color .25s ease-out,box-shadow .25s ease-out}.walkthrough-step strong{display:block;margin-bottom:.125rem;color:var(--ink-strong);font-weight:600;font-size:.9375rem;line-height:1.3;letter-spacing:-.005em}.walkthrough-step strong em{font-style:normal;color:var(--primary)}.walkthrough-step p{margin:0;color:var(--ink);font-size:.8125rem;line-height:1.45}.walkthrough-step code{font-size:.9em;padding:.08em .35em;background:var(--surface);border-radius:4px;color:var(--ink-strong)}.walkthrough-progress{display:flex;gap:.5rem;padding-top:.5rem;justify-content:flex-start}.walkthrough-dot{appearance:none;-webkit-appearance:none;width:.625rem;height:.625rem;padding:0;border:1.5px solid var(--primary);border-radius:999px;background:transparent;cursor:pointer;transition:background .25s ease-out,transform .25s ease-out}.walkthrough-dot:hover{background:var(--accent)}.walkthrough-dot.is-active{background:var(--primary);transform:scale(1.15)}.walkthrough-dot:focus-visible{outline:2px solid var(--primary);outline-offset:2px}[data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .6s cubic-bezier(.2,.8,.2,1),transform .6s cubic-bezier(.2,.8,.2,1);will-change:opacity,transform}[data-reveal].is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){[data-reveal],[data-reveal].is-visible{opacity:1!important;transform:none!important;transition:none!important}.phone-screen-img{transition:none!important}.phone-frame[data-transition] .phone-screen-img:not([data-step="1"]){opacity:0!important;transform:none!important}.phone-frame[data-transition] .phone-screen-img[data-step="1"]{opacity:1!important;transform:none!important}.walkthrough-step,.walkthrough-step.is-active{transform:none!important}}.outputs{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.outputs li{padding:.5rem .75rem;background:var(--bg-soft);border-radius:var(--radius-sm);font-size:.9375rem}.outputs code{color:var(--ink-strong);margin-right:.25rem}.callout{background:var(--bg-soft);border:1px solid var(--accent);border-left:4px solid var(--primary);border-radius:var(--radius);padding:1.75rem}.callout h2{margin:0 0 .75rem;font-size:1.25rem;font-weight:600;color:var(--ink-strong);letter-spacing:-.01em}.callout p{margin:0 0 .75rem}.callout p:last-child{margin-bottom:0}.callout a{color:var(--primary);font-weight:600}.callout a:hover{color:var(--primary-hover)}.ollama-panel{padding:1.75rem 1.75rem 2rem}.ollama-lead{margin:-.25rem 0 1.5rem;color:var(--ink);font-size:1rem;line-height:1.55;max-width:44rem}.ollama-lead em{font-style:normal;color:var(--ink-strong);font-weight:600}.ollama-lead a{color:var(--primary);font-weight:500}.ollama-lead a:hover{color:var(--primary-hover)}.ollama-steps{list-style:none;padding:0;margin:0 0 1.25rem;display:grid;gap:1rem}.ollama-steps li{display:grid;grid-template-columns:2rem 1fr;gap:.875rem;padding:1rem 1.125rem;background:var(--bg-soft);border:1px solid var(--border);border-radius:12px}.ollama-num{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:999px;background:var(--primary);color:var(--surface);font-weight:700;font-size:.875rem;font-variant-numeric:tabular-nums;flex-shrink:0}.ollama-steps strong{display:block;margin-bottom:.375rem;color:var(--ink-strong);font-weight:600;font-size:.9375rem}.ollama-steps p{margin:0 0 .5rem;font-size:.875rem;color:var(--ink);line-height:1.5}.ollama-steps p:last-child{margin-bottom:0}.ollama-steps a{color:var(--primary);font-weight:500}.ollama-steps a:hover{color:var(--primary-hover)}.ollama-steps pre{margin:0 0 .5rem;padding:.75rem .875rem;background:var(--ink-strong);color:var(--bg);border-radius:8px;overflow-x:auto;font-size:.8125rem;line-height:1.5}.ollama-steps pre:last-child{margin-bottom:0}.ollama-steps pre code{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;background:transparent;padding:0;border-radius:0;color:inherit}.ollama-steps pre code a{color:var(--accent);text-decoration:underline}.ollama-steps pre code a:hover{color:var(--surface)}.ollama-steps code{font-size:.9em;padding:.08em .35em;background:var(--surface);border-radius:4px;color:var(--ink-strong)}.ollama-footnote{margin:0;padding:1rem 1.125rem;background:linear-gradient(120deg,var(--accent) 0%,var(--bg-soft) 100%);border-left:3px solid var(--primary);border-radius:8px;font-size:.875rem;color:var(--ink-strong);line-height:1.5}.ollama-footnote em{font-style:italic;font-weight:600}@media (max-width: 36rem){.ollama-panel{padding:1.25rem 1.125rem 1.5rem}.ollama-steps li{grid-template-columns:1.75rem 1fr;padding:.875rem 1rem;gap:.75rem}}.privacy-deep{padding:2.25rem 2rem;display:grid;gap:1.5rem}.privacy-deep h2{margin:0;font-size:1.75rem;letter-spacing:-.015em;line-height:1.15}.privacy-deep h3{margin:1rem 0 0;font-size:1.0625rem;font-weight:600;color:var(--ink-strong);letter-spacing:-.005em}.privacy-deep p{margin:0;color:var(--ink);line-height:1.6}.privacy-lead{font-size:1.0625rem;color:var(--ink);max-width:40rem}.privacy-lead em{font-style:normal;font-weight:600;color:var(--ink-strong);background:linear-gradient(180deg,transparent 60%,var(--accent) 60%);padding:0 .15em}.privacy-flow{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.privacy-flow li{display:grid;grid-template-columns:2rem 1fr;gap:.875rem;padding:1rem 1.125rem;background:var(--surface);border:1px solid var(--border);border-radius:12px}.flow-num{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:999px;background:var(--primary);color:var(--surface);font-weight:700;font-size:.875rem;font-variant-numeric:tabular-nums}.privacy-flow strong{display:block;color:var(--ink-strong);font-weight:600;margin-bottom:.25rem;font-size:.9375rem}.privacy-flow p{font-size:.875rem;color:var(--ink);line-height:1.5}.privacy-nope,.privacy-relay{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.privacy-nope li,.privacy-relay li{position:relative;padding-left:1.625rem;line-height:1.55;color:var(--ink);font-size:.9375rem}.privacy-nope li:before{content:"✕";position:absolute;left:0;top:.05em;color:var(--primary);font-weight:700;font-size:.875rem;width:1.25rem;text-align:center}.privacy-relay li:before{content:"→";position:absolute;left:0;top:0;color:var(--primary);font-weight:700;font-size:1rem;width:1.25rem;text-align:center}.privacy-nope strong{color:var(--ink-strong);font-weight:600}.privacy-verify{list-style:none;counter-reset:verify;padding:0;margin:0;display:grid;gap:.625rem}.privacy-verify li{counter-increment:verify;position:relative;padding-left:2.25rem;line-height:1.55;color:var(--ink);font-size:.9375rem}.privacy-verify li:before{content:counter(verify);position:absolute;left:0;top:.05em;display:inline-flex;align-items:center;justify-content:center;width:1.625rem;height:1.625rem;border-radius:999px;background:var(--accent);color:var(--ink-strong);font-weight:700;font-size:.8125rem;font-variant-numeric:tabular-nums}.privacy-verify strong{color:var(--ink-strong);font-weight:600}.privacy-verify em{font-style:italic;color:var(--ink-strong)}.privacy-source{margin-top:.5rem!important;padding-top:1rem;border-top:1px solid var(--border);font-size:.9375rem;color:var(--ink-muted)!important}.privacy-source a{color:var(--primary);font-weight:500}.privacy-source a:hover{color:var(--primary-hover)}.privacy-deep code{font-size:.9em;padding:.1em .4em;background:var(--bg-soft);border-radius:4px;color:var(--ink-strong)}@media (max-width: 44rem){.privacy-flow{grid-template-columns:1fr}.privacy-deep{padding:1.5rem 1.25rem}}.site-footer{background:var(--ink-strong);color:var(--bg);padding:2rem 1.5rem;margin-top:auto}.footer-inner{max-width:72rem;margin:0 auto;display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between;align-items:flex-start}.wordmark-small{display:inline-block;font-weight:700;font-size:1rem;margin-bottom:.25rem}.footer-tagline{margin:0;font-size:.875rem;opacity:.75}.footer-byline{margin:.5rem 0 0;font-size:.8125rem;opacity:.7}.footer-byline a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.footer-byline a:hover{opacity:1}.footer-links{display:flex;gap:1.25rem;flex-wrap:wrap}.footer-links a{color:var(--bg);text-decoration:none;font-size:.875rem;font-weight:500;transition:color .15s ease-out}.footer-links a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
