. A hardcoded title renders first and, since the HTML spec uses the first , would override every page's title in the initial SSR HTML. --> <script> // Desktop-only gate — runs before SvelteKit hydrates. // Spec: BROWSER_SUPPORT_POLICY.md §6 (function () { try { var path = window.location.pathname; // Only the interactive document tools are desktop-only; the marketing // landing, pricing, license, and legal pages are viewable on any device. var isToolRoute = path === '/app' || path.indexOf('/app/') === 0 || path === '/merge' || path.indexOf('/merge/') === 0; if (!isToolRoute) return; if (window.location.search.indexOf('force-desktop=true') !== -1) { try { sessionStorage.setItem('aegis-force-desktop', '1'); } catch (_) {} return; } if (sessionStorage.getItem('aegis-force-desktop') === '1') return; var ua = navigator.userAgent; var isMobileOrTablet = /Mobi|Android|iPhone|iPad|iPod/i.test(ua) || (window.matchMedia('(pointer: coarse)').matches && window.innerWidth < 1024) || (navigator.maxTouchPoints > 1 && window.innerWidth < 1280); if (isMobileOrTablet) { window.location.replace('/desktop-required'); } } catch (_) { // If detection throws, fail open — let the app load. } })(); </script> <script> // Theme (no-flash). Tool + activation pages are always light; elsewhere // honor the saved choice, falling back to the OS preference. (function () { try { var path = window.location.pathname; var isLightOnly = path === '/app' || path.indexOf('/app/') === 0 || path === '/merge' || path.indexOf('/merge/') === 0 || path === '/license' || path.indexOf('/license/') === 0; var el = document.documentElement; if (isLightOnly) { el.classList.add('light'); return; } var saved = localStorage.getItem('aegis-theme'); var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; if (saved === 'dark' || (!saved && prefersDark)) el.classList.add('dark'); else if (saved === 'light') el.classList.add('light'); } catch (e) {} })(); </script> %sveltekit.head% </head> <body data-sveltekit-preload-data="hover"> <div style="display: contents"><!--[--><!--[0--><!--[--><!--[-1--><div class="flex min-h-screen flex-col"><nav class="sticky top-0 z-40 border-b backdrop-blur" style="background-color: color-mix(in srgb, var(--color-bg) 82%, transparent); border-color: var(--color-border)"><div class="mx-auto max-w-6xl px-4 sm:px-6"><div class="flex h-16 items-center justify-between gap-4"><a href="/" class="flex items-center gap-2.5 no-underline" style="color: var(--color-text)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="30" height="30" role="img" aria-label="AegisPDF"><title>AegisPDF AegisPDF

Merge PDFs

Combine multiple PDFs into one. Your files never leave your device. Back to viewer

Pick two or more PDFs to combine in the order shown.

No files yet. Use “Add PDFs” to select two or more.

Pages are merged entirely in your browser — fonts, images, and links carry over.