1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,72520,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",0,t],72520)},97958,e=>{"use strict";var t=e.i(43476),i=e.i(61745),n=e.i(48148),s=e.i(72520),a=e.i(44705),r=e.i(9305),o=e.i(25138);let l={de:["Das Internet wurde gebaut, um Menschen zu verbinden. Nicht um sie auszuspionieren. Nicht um sie zu manipulieren. Nicht um sie zu kontrollieren.","Jeder Mensch hat das Recht auf Anonymität. Nicht weil er etwas zu verbergen hätte, sondern weil Privatsphäre zur Würde gehört. Wer ständig beobachtet wird, verhält sich anders. Wer ständig überwacht wird, denkt anders. Eine freie Gesellschaft braucht freie, unbeobachtete Räume.","Jeder Mensch hat das Recht, sich auszutauschen. Frei, unzensiert, ohne Angst. Meinungen zu teilen, Fragen zu stellen, andere Perspektiven zu hören. Das Internet hat diese Möglichkeit wie kein Medium zuvor geschaffen. Und wie kein Medium zuvor steht sie unter Beschuss.","Jeder Mensch hat das Recht auf Sicherheit. Vor Betrügern. Vor Phishing. Vor Datendiebstahl. Vor Stalking. Vor allem was das Internet in ein Minenfeld verwandelt. Sicherheit sollte nicht teuer sein, nicht kompliziert sein, nicht ein Premium Feature sein. Sicherheit sollte Standard sein.","Meine Werkzeuge verfolgen ein einziges Ziel: Diese drei Rechte konkret im Alltag zu verteidigen. Ein Phishing Link wird blockiert bevor er dich erreicht. Eine Datei wird konvertiert ohne auf einen Server hochgeladen zu werden. Ein Dokument wird von Metadaten befreit bevor du es teilst. Kleine Dinge, die in Summe einen Unterschied machen."],en:["The internet was built to connect people. Not to spy on them. Not to manipulate them. Not to control them.","Every person has the right to anonymity. Not because they have something to hide, but because privacy belongs to human dignity. Those who are constantly watched behave differently. Those who are constantly surveilled think differently. A free society needs free, unobserved spaces.","Every person has the right to communicate. Freely, uncensored, without fear. To share opinions, ask questions, hear other perspectives. The internet has created this possibility like no medium before. And like no medium before, it is under attack.","Every person has the right to security. From scammers. From phishing. From data theft. From stalking. From everything that turns the internet into a minefield. Security should not be expensive, not complicated, not a premium feature. Security should be the default.","My tools pursue a single goal: to defend these three rights in everyday life. A phishing link is blocked before it reaches you. A file is converted without being uploaded to a server. A document is stripped of metadata before you share it. Small things that add up to make a difference."]},c={de:["Angefangen hat alles Ende 2025 mit einer Reihe kleiner Online Tools. Konverter, Rechner, Nachschlagewerke. Einfache Werkzeuge, die ich selbst im Alltag brauchte und die es in guter Qualität nicht kostenlos gab.","Je mehr ich gebaut habe, desto klarer wurde die gemeinsame Richtung: Tools die ich selbst nutzen würde, mit dem Respekt vor der Privatsphäre der Nutzer als Grundregel. Anfang 2026 kamen die ersten SaaS Projekte dazu. FixCosts, weil ich selbst den Ãberblick über meine Abos verloren hatte. CompanysControll für Selbstständige. ClicksLeft für zeitlich begrenzte Links.","Mit LinkSentry kam das erste Tool mit einer klaren Schutz Mission. Ãber 157.000 Betrugsseiten blockiert, mehr als 70 IP Logger Dienste erkannt, 14 Schutz Layer aktiv. Kostenlos. Lokal im Browser. Ohne dass deine Daten irgendwo landen.","Heute umfasst mein Portfolio eine wachsende Sammlung digitaler Projekte. Was sie alle verbindet: Sie lösen ein konkretes Problem, sie respektieren die Privatsphäre und sie behandeln dich als Menschen, nicht als Produkt.","Aktuell entwickle ich ein neues Projekt, das bald live geht. Pervigilo ist eine Monitoring Plattform für Solo Entwickler und kleine Teams, inspiriert von Edward Snowdens Heartbeat System. Es folgt denselben Prinzipien: Lokal wo möglich, etablierte Infrastruktur Anbieter wo nötig, ehrliche Kommunikation über die Architektur."],en:["It all started in late 2025 with a series of small online tools. Converters, calculators, reference tools. Simple tools I needed myself in everyday life, and which were not available in good quality for free.","The more I built, the clearer the common direction became: tools I would use myself, with respect for user privacy as a basic rule. In early 2026 the first SaaS projects came along. FixCosts, because I had lost track of my own subscriptions. CompanysControll for freelancers. ClicksLeft for time-limited links.","With LinkSentry came the first tool with a clear protection mission. Over 157,000 scam sites blocked, more than 70 IP logger services detected, 14 protection layers active. Free. Local in the browser. Without your data ever landing anywhere.","Today my portfolio includes a growing collection of digital projects. What they all have in common: they solve a concrete problem, they respect privacy, and they treat you as a human being, not a product.","I am currently developing a new project that will go live soon. Pervigilo is a monitoring platform for solo developers and small teams, inspired by Edward Snowden's Heartbeat system. It follows the same principles: local where possible, established infrastru
1cture providers where necessary, honest communication about the architecture."]},d=[{num:"01",title:{de:"Lokal zuerst",en:"Local First"},body:{de:"Wenn ein Tool im Browser funktionieren kann, soll es das auch tun. Kein Server. Keine Datenbank. Kein Upload. Was auf deinem Gerät bleibt, kann dir niemand wegnehmen.",en:"If a tool can work in the browser, it should. No server. No database. No upload. What stays on your device cannot be taken from you."}},{num:"02",title:{de:"Kein Zwang",en:"No Coercion"},body:{de:"Keine erzwungene Anmeldung. Keine Kreditkarte zum Testen. Keine Dark Patterns. Wenn ein Tool nützlich ist, nutzen die Leute es freiwillig.",en:"No forced signup. No credit card for trials. No dark patterns. If a tool is useful, people will use it voluntarily."}},{num:"03",title:{de:"Transparenz",en:"Transparency"},body:{de:"Keine versteckten Funktionen. Keine Tracker, die erst im Quelltext auffallen. Was in meinen Tools drin ist, ist offen dokumentiert.",en:"No hidden features. No trackers that only surface in the source code. What's in my tools is openly documented."}},{num:"04",title:{de:"Zugänglichkeit",en:"Accessibility"},body:{de:"Tools sollten für alle funktionieren. In Deutsch und Englisch. Auf Desktop und Mobile. Mit Maus, Tastatur und Screenreader. Barrierefreiheit ist kein Nachgedanke.",en:"Tools should work for everyone. In German and English. On desktop and mobile. With mouse, keyboard and screen reader. Accessibility is not an afterthought."}},{num:"05",title:{de:"Ehrlichkeit",en:"Honesty"},body:{de:"Wenn ein Tool etwas nicht kann, sage ich das. Wenn ein Feature geplant ist aber noch nicht fertig, steht es auf Coming Soon. Keine Marketing Versprechen die später nicht gehalten werden. Auch bei Datenschutz: Wenn ein Tool eine Datenbank braucht, steht das klar dort. Kein Greenwashing, keine Schönfärberei.",en:"If a tool cannot do something, I say so. If a feature is planned but not ready, it says Coming Soon. No marketing promises that don't hold up later. Same for privacy: if a tool needs a database, it says so clearly. No greenwashing, no sugarcoating."}}],h={de:["Ich möchte ehrlich sein: Es gibt keinen hundertprozentigen Schutz im Internet. Kein System ist absolut sicher. Keine Software ist fehlerfrei. Wer das Gegenteil verspricht, lügt.","Was ich versprechen kann: Ich minimiere das Risiko überall dort wo es möglich ist. Bei den meisten meiner Tools bedeutet das: Keine Server, keine Datenbanken, keine Datensammlung. Was nicht auf einem Server liegt, kann auch nicht gehackt oder geleakt werden.","Bei einigen Projekten geht das nicht. FixCosts, CompanysControll, LicenseGate, ClipToss und weitere servergestützte SaaS Projekte brauchen Authentifizierung, Realtime Funktionen oder eine Datenbank um zu funktionieren. Diese Dienste liegen bei professionellen Anbietern wie Supabase und werden über Vercel bereitgestellt. Die Daten sind technisch getrennt und werden auf das reduziert, was für die Funktion nötig ist.","Aber: Im Cloud Zeitalter kann niemand garantieren dass Server ausschliesslich in einem bestimmten Land stehen. Vercel ist ein globales CDN, Supabase bietet verschiedene Regionen. Ich wähle europäische Regionen wo möglich, aber das ist kein unumstössliches Versprechen.","Was ich versprechen kann: Ich sammle nur Daten die ich für die Funktionalität brauche. Ich verkaufe keine Daten. Ich schaue nicht ohne Grund in Nutzerdaten. Aber ich habe als Betreiber technischen Zugriff auf die Infrastruktur, das ist Realität bei jedem SaaS Produkt. Wer das nicht akzeptieren kann, für den sind meine lokalen Tools die bessere Wahl (BrowserCut, MetaDataGone, OfficeToAI, Gridomus, SafeCodeScan, Piktokoli, Summatio und weitere, soweit jeweils beschrieben ohne eigenes Nutzer Backend).","Auf jeder Projektseite findest du einen eigenen Datenschutz Abschnitt der beschreibt, wie das jeweilige Tool mit Daten umgeht. Kein Marketing Text, sondern eine ehrliche Einschätzung. Was lokal läuft, wird als lokal markiert. Was auf Servern läuft, wird als serverbasiert markiert.","Das ist mein Ansatz: Datensicherheit und wenig Server Architektur als Ideal, aber ehrliche Kommunikation wenn ein Projekt dieses Ideal nicht hundertprozentig erreichen kann."],en:["I want to be honest: There is no one hundred percent protection on the internet. No system is absolutely secure. No software is flawless. Anyone who promises the opposite is lying.","What I can promise: I minimize risk wherever possible. For most of my tools, that means no servers, no databases, no data collection. What is not on a server cannot be hacked or leaked.","For some projects, this is not possible. FixCosts, CompanysControll, LicenseGate, ClipToss and other server-assisted SaaS projects need authentication, realtime features or a database to function. These services live with professional providers like Supabase and are delivered through Vercel. Data is technically separated and reduced to what the feature needs.","But: in the cloud era, no one can guarantee that servers are exclusively in a specific country. Vercel is a global CDN, Supabase offers various regions. I choose European regions where possible, but that is not an unshakeable promise.","What I can promise: I only collect data I need for the functionality. I do n
1ot sell data. I do not look into user data without reason. But as operator I have technical access to the infrastructure, that is reality for any SaaS product. For anyone who cannot accept this, my local tools are the better choice (BrowserCut, MetaDataGone, OfficeToAI, Gridomus, SafeCodeScan, Piktokoli, Summatio and more, without a custom user backend where described).","On every project page you will find a dedicated privacy section that describes how the specific tool handles data. No marketing text, but an honest assessment. What runs locally is marked as local. What runs on servers is marked as server based.","This is my approach: data security and minimal server architecture as the ideal, but honest communication when a project cannot reach this ideal one hundred percent."]},u={de:["Ein groÃer Teil meiner Tools ist dauerhaft kostenlos nutzbar. Das hat einen Grund: Sicherheit und Privatsphäre sind keine Luxusgüter. Wer sich nur teure Tools leisten kann, ist nicht geschützter als jemand der sie nicht hat. Deshalb sind die Schutz Features von LinkSentry, die Konverter von BrowserCut und OfficeToAI, die Entscheidungs Tools von Piktokoli und die meisten anderen Werkzeuge kostenlos.","Wer mehr Funktionen braucht oder die Arbeit unterstützen möchte, kann eine Pro Version kaufen oder mich auf Ko-fi unterstützen. Die Basis bleibt frei."],en:["A large part of my tools is permanently free to use. There is a reason for this: security and privacy are not luxury goods. Those who can only afford expensive tools are not more protected than someone who does not have them. That's why the protection features of LinkSentry, the converters of BrowserCut and OfficeToAI, the decision tools of Piktokoli and most other tools are free.","Those who need more features or want to support the work can buy a Pro version or support me on Ko-fi. The base stays free."]},m={de:["Next.js, TypeScript, Tailwind CSS für die meisten Web Apps. Supabase wenn ein Backend nötig ist. Stripe und LemonSqueezy für Zahlungen. Vercel für Hosting.","Für Browser Extensions Manifest V3 mit TypeScript. Für 3D Grafik Three.js und Manifold WASM. Für Video Verarbeitung WebCodecs und FFmpeg.wasm. Für Dokumentenverarbeitung mammoth.js, SheetJS und pdf.js.","Entwickelt wird mit Claude Code in VS Code. Jedes Projekt durchläuft Qualitätskontrolle: TypeScript Strict Mode, ESLint, automatisierte Tests, sowie manuelle Audits für DSGVO, WCAG AA Barrierefreiheit und Security."],en:["Next.js, TypeScript, Tailwind CSS for most web apps. Supabase when a backend is needed. Stripe and LemonSqueezy for payments. Vercel for hosting.","For browser extensions Manifest V3 with TypeScript. For 3D graphics Three.js and Manifold WASM. For video processing WebCodecs and FFmpeg.wasm. For document processing mammoth.js, SheetJS and pdf.js.","Development happens with Claude Code in VS Code. Every project goes through quality control: TypeScript Strict Mode, ESLint, automated tests, plus manual audits for GDPR, WCAG AA accessibility and security."]};e.s(["AboutPageContent",0,function(){let e=(0,i.useLocale)(),p=(0,n.useTranslations)("about"),x=(0,n.useTranslations)("nav");return(0,t.jsxs)("main",{id:"main-content",className:"pb-16 sm:pb-24",children:[(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 pt-6 sm:px-6 lg:px-8",children:(0,t.jsx)(o.Breadcrumbs,{items:[{label:"de"===e?"Startseite":"Home",href:"/"},{label:x("about")}]})}),(0,t.jsxs)("section",{className:"relative overflow-hidden py-12 sm:py-20",children:[(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 opacity-[0.08]","aria-hidden":"true",style:{background:"radial-gradient(ellipse at 50% 0%, var(--color-accent) 0%, transparent 60%)"}}),(0,t.jsx)("div",{className:"relative mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsxs)(r.AnimatedSection,{children:[(0,t.jsx)("p",{className:"font-mono text-xs font-bold uppercase tracking-wider text-[var(--color-accent)]",children:p("title")}),(0,t.jsx)("h1",{className:"mt-4 text-3xl font-bold leading-tight tracking-tight text-[var(--color-text)] sm:text-4xl md:text-5xl",children:p("mission")})]})})})]}),(0,t.jsx)("section",{"aria-labelledby":"philosophy-heading",className:"py-10 sm:py-16 bg-[var(--color-section-alt)]",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsxs)(r.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"philosophy-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:p("philosophy")}),(0,t.jsx)("div",{className:"mt-6 space-y-4 text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:l[e].map((e,i)=>(0,t.jsx)("p",{children:e},i))})]})})})}),(0,t.jsx)("section",{"aria-labelledby":"story-heading",className:"py-10 sm:py-16",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsxs)(r.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"story-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:p("story")}),(0,t.jsx)("div",{className:"mt-6 space-y-4 text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:c[e].map((e,i)=>(0,t.jsx)("p",{children:e},i))})]})})})}),(0,t.jsx)("section",{"aria-labelledby":"principles-heading",className:"py-10 sm:py-16 bg-[var(--color-section-alt)]",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsxs)("div",{className:"max-w-3xl",children:[(0,t.jsx)(r.AnimatedSection,{children:(0,t.jsx)("h2",{id:"principles-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:p("principles")})}),(0,t.jsx)("ol",{className:"mt-8 space-y-6 list-none p-0",children:d.map((i,n)=>(0,t.jsx)(r.AnimatedSection,{delay:.05*n,children:(0,t.jsxs)("li",{className:"surface-card surface-card--compact flex gap-4 p-4 sm:p-6",children:[(0,t.jsx)("span",{className:"shrink-0 font-mono text-lg font-bold text-[var(--color-accent)] sm:text-xl","aria-hidden":"true",children:i.num}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-base font-bold text-[var(--color-text)] sm:text-lg",children:i.title[e]}),(0,t.jsx)("p",{className:"mt-2 text-sm leading-relaxed text-[var(--color-muted)]",children:i.body[e]})]})]})},i.num))})]})})}),(0,t.jsx)("section",{"aria-labelledby":"limits-heading",className:"py-10 sm:py-16",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsxs)(r.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"limits-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:p("limits")}),(0,t.jsx)("div",{className:"mt-6 space-y-4 text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:h[e].map((e,i)=>(0,t.jsx)("p",{children:e},i))})]})})})}),(0,t.jsx)("section",{"aria-labelledby":"whyfree-heading",className:"py-10 sm:py-16 bg-[var(--color-section-alt)]",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsxs)(r.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"whyfree-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:p("whyFree")}),(0,t.jsx)("div",{className:"mt-6 space-y-4 text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:u[e].map((e,i)=>(0,t.jsx)("p",{children:e},i))})]})})})}),(0,t.jsx)("section",{"aria-labelledby":"tech-heading",className:"py-10 sm:py-16",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsxs)(r.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"tech-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:p("techStack")}),(0,t.jsx)("div",{className:"mt-6 space-y-4 text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:m[e].map((e,i)=>(0,t.jsx)("p",{children:e},i))})]})})})}),(0,t.jsx)("section",{className:"py-12 sm:py-20",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-3xl",children:(0,t.jsx)(r.AnimatedSection,{children:(0,t.jsxs)(a.Link,{href:"/projects",className:"group inline-flex items-center gap-2 rounded-small border border-[var(--color-accent-fill)] bg-[var(--color-accent-fill)] px-5 py-3 min-h-[44px] text-sm font-semibold text-[var(--color-on-accent)] transition-all hover:opacity-90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]",children:[p("cta"),(0,t.jsx)(s.ArrowRight,{className:"h-4 w-4 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})})})})})]})}])},9305,71737,49005,e=>{"use strict";var t=e.i(43476),i=e.i(46932),n=e.i(71645),s=e.i(30747);function a({rootMargin:e="0px",threshold:t=0}={}
1){let i=(0,n.useRef)(null),[r,o]=(0,n.useState)("visible");(0,n.useEffect)(()=>{let n=i.current;if(!n||(0,s.prefersReducedMotion)())return;let a=n.getBoundingClientRect();if(a.top<window.innerHeight&&a.bottom>0)return;o("hidden");let r=new IntersectionObserver(([e])=>{e.isIntersecting&&(o("revealed"),r.disconnect())},{rootMargin:e,threshold:t});return r.observe(n),()=>r.disconnect()},[e,t]);let l=(0,n.useCallback)((e,t={})=>{let i={...s.REVEAL_TRANSITION,...t},n={opacity:0,...void 0!==e.x&&{x:e.x},...void 0!==e.y&&{y:e.y},...void 0!==e.scale&&{scale:e.scale}},a={opacity:1,...void 0!==e.x&&{x:0},...void 0!==e.y&&{y:0},...void 0!==e.scale&&{scale:1}};return{initial:!1,animate:"hidden"===r?n:a,transition:"hidden"===r?{duration:0}:i}},[r]);return{ref:i,phase:r,itemProps:l}}e.s(["useScrollReveal",0,a],71737);let r={div:i.motion.div,li:i.motion.li};function o({as:e="div",from:i={y:20},transition:n,rootMargin:s,threshold:l,children:c,...d}){let{ref:h,itemProps:u}=a({rootMargin:s,threshold:l}),m=r[e];return(0,t.jsx)(m,{ref:h,...d,...u(i,n),children:c})}e.s(["Reveal",0,o],49005);var l=e.i(75157);let c={up:{x:0,y:30},left:{x:-30,y:0},right:{x:30,y:0}};e.s(["AnimatedSection",0,function({children:e,className:i,delay:n=0,duration:a=s.MOTION.slow,direction:r="up"}){return(0,t.jsx)(o,{from:c[r],transition:{duration:a,delay:n},threshold:.1,className:(0,l.cn)(i),children:e})}],9305)},25138,e=>{"use strict";var t=e.i(43476),i=e.i(61745);let n=(0,e.i(75254).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var s=e.i(44705),a=e.i(75157);e.s(["Breadcrumbs",0,function({items:e}){let r=(0,i.useLocale)(),o="de"===r?"":`/${r}`,l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.map((e,t)=>({"@type":"ListItem",position:t+1,name:e.label,...e.href?{item:`https://tommsel.com${o}${"/"===e.href?"":e.href}`}:{}}))};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:(0,a.serializeJsonLd)(l)}}),(0,t.jsx)("nav",{"aria-label":"Breadcrumb",className:"flex items-center gap-1 text-xs text-[var(--color-muted)]",children:e.map((e,i)=>(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[i>0&&(0,t.jsx)(n,{className:"h-3 w-3 shrink-0","aria-hidden":"true"}),e.href?(0,t.jsx)(s.Link,{href:e.href,className:(0,a.cn)("hover:text-[var(--color-text)] transition-colors","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)] rounded"),children:e.label}):(0,t.jsx)("span",{className:"text-[var(--color-text)] font-medium truncate max-w-[200px]",children:e.label})]},i))})]})}],25138)}]);
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.