Files
daveadmin 7df3b7f8d3 Replace manifesto bar with compact context bar + add privacy page
- layout.php: replace large manifesto section (eyebrow/title/sub/4 stats) with
  a slim dbn-context-bar strip linking to why-ours, pricing, MCP, and privacy
- i18n.php: add context_bar_* + footer_privacy_link + privacy_page_title keys
  to all 4 language blocks (en, no, uk, pl)
- dbn-tools-redesign.css: add .dbn-context-bar styles with mobile wrap
- privacy.php: new standalone page in 4 languages covering in-memory processing,
  metadata-only logging, My Case opt-in storage, EU data locations, and HTTPS transport
- footer.php: add Privacy link to first footer column

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 14:44:44 +02:00

475 lines
31 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/bootstrap.php';
$uiLang = dbnToolsCurrentLanguage();
$isAuthed = dbnToolsIsAuthenticated();
$langPath = '/privacy.php';
$toolsLogin = 'https://dobetternorge.no/tools-login.php?return=' . urlencode('/privacy.php');
$registerUrl = 'https://dobetternorge.no/register.php';
$ctaUrl = $isAuthed ? '/dashboard.php' : $toolsLogin;
$translations = [
'en' => [
'page_title' => 'Privacy — Do Better Norge Tools',
'meta_desc' => 'How Do Better Norge Tools handles your documents and data. Free-plan processing is in-memory only; paid plans offer secure EU-hosted case storage.',
'nav_open' => 'Open tools →',
'nav_signin' => 'Sign in',
'hero_kicker' => 'Privacy & data handling',
'hero_title' => 'Your documents stay yours.',
'hero_sub' => 'Free-plan processing is in memory and discarded when your session ends. Paid plans let you choose to save your case — stored encrypted in the EU, visible only to you.',
// Legal disclaimer
'legal_h' => 'Legal information, not legal advice',
'legal_p' => 'These tools provide legal information and preparation support. They do not constitute legal advice. AI output may contain errors — always confirm next steps with a qualified Norwegian lawyer before acting.',
// In-memory processing
'memory_h' => 'How your text and files are processed',
'memory_p1' => 'When you paste text or upload a document (PDF, DOCX, TXT, audio), it is sent to our AI pipeline over an encrypted HTTPS connection, processed in memory, and the result is returned to you.',
'memory_p2' => 'By default, document content is not written to disk or retained after your session ends. This applies to all free-plan users and to any tool used outside the My Case feature.',
'memory_badge' => 'Free plan — always',
// What we do store
'store_h' => 'What we record (free plan)',
'store_p' => 'For all users we log only operational metadata to monitor service health and improve the tools:',
'store_li1' => 'Tool name used (e.g. "transcribe", "timeline")',
'store_li2' => 'Response time (latency)',
'store_li3' => 'UI language selected',
'store_li4' => 'Anonymous session ID (not linked to your name or email)',
'store_never' => 'We never log the content of your documents or pasted text.',
// Paid plan — My Case
'mycase_h' => 'My Case — paid plans only (opt-in)',
'mycase_p1' => 'Subscribers to Plus, Pro, or Pro+ Family who activate My Case choose to store their documents in a private, encrypted corpus. This is entirely opt-in — nothing is saved unless you upload to My Case explicitly.',
'mycase_list_title' => 'Your My Case corpus is:',
'mycase_li1' => 'Visible only to you (and team members you invite on Pro+)',
'mycase_li2' => 'Stored encrypted within the EU at all times',
'mycase_li3' => 'Deletable at any time — document by document or all at once',
'mycase_li4' => 'Retained for 90 days after subscription cancellation, then deleted',
'mycase_badge' => 'Plus · Pro · Pro+ Family',
// Data locations
'locations_h' => 'Where your data lives (EU only)',
'locations_p' => 'All processing and storage takes place within the European Union:',
'locations_li1' => 'Application servers: Hetzner Falkenstein (Germany DE) and Helsinki (Finland FI)',
'locations_li2' => 'AI services: Microsoft Azure West Europe (NL) and Norway East (NO)',
'locations_li3' => 'Payments: Stripe Ireland (IE) — we never see your card number',
'locations_li4' => 'Vector search and document indexing: Hetzner dedicated servers, Germany',
// Transport
'transport_h' => 'Secure transport',
'transport_p' => 'All connections use HTTPS/TLS 1.2 or higher. No data is ever transmitted over unencrypted channels. API calls between internal services use private VLAN channels within Hetzner infrastructure.',
// Contact
'contact_h' => 'Questions or deletion requests',
'contact_p' => 'To ask about your data or request deletion of your account and any stored documents, email us:',
'contact_email' => 'support@dobetternorge.no',
// Links back
'back_tools' => '← Back to tools',
'link_why' => 'Why our tools give different answers than ChatGPT →',
'link_pricing' => 'Plans & pricing →',
'link_mcp' => 'MCP for developers →',
],
'no' => [
'page_title' => 'Personvern — Do Better Norge verktøy',
'meta_desc' => 'Slik håndterer Do Better Norge verktøy dokumentene og dataene dine. Gratisnivå behandler alt i minnet; betalte planer tilbyr sikker EU-lagring.',
'nav_open' => 'Åpne verktøy →',
'nav_signin' => 'Logg inn',
'hero_kicker' => 'Personvern og datahåndtering',
'hero_title' => 'Dokumentene dine forblir dine.',
'hero_sub' => 'Behandling på gratisnivå skjer i minnet og slettes når økten avsluttes. Betalte planer lar deg velge å lagre saken din kryptert i EU, kun synlig for deg.',
'legal_h' => 'Juridisk informasjon, ikke juridisk rådgivning',
'legal_p' => 'Disse verktøyene gir juridisk informasjon og forberedelsesstøtte. De utgjør ikke juridisk rådgivning. AI-output kan inneholde feil kontroller alltid neste steg med en kvalifisert norsk advokat før du handler.',
'memory_h' => 'Slik behandles tekst og filer',
'memory_p1' => 'Når du limer inn tekst eller laster opp et dokument (PDF, DOCX, TXT, lyd), sendes det til vår AI-pipeline over en kryptert HTTPS-tilkobling, behandles i minnet og resultatet returneres til deg.',
'memory_p2' => 'Som standard skrives ikke dokumentinnhold til disk eller beholdes etter at økten avsluttes. Dette gjelder alle brukere på gratisnivå og alle verktøy brukt utenfor Min sak.',
'memory_badge' => 'Gratisnivå — alltid',
'store_h' => 'Hva vi lagrer (gratisnivå)',
'store_p' => 'For alle brukere logger vi bare operasjonelle metadata for å overvåke tjenestens helse og forbedre verktøyene:',
'store_li1' => 'Verktøynavn brukt (f.eks. «transkripsjon», «tidslinje»)',
'store_li2' => 'Responstid (latens)',
'store_li3' => 'Valgt grensesnittspråk',
'store_li4' => 'Anonym økt-ID (ikke knyttet til navn eller e-post)',
'store_never' => 'Vi logger aldri innholdet i dokumentene dine eller tekst du limer inn.',
'mycase_h' => 'Min sak — kun betalte planer (valgfritt)',
'mycase_p1' => 'Abonnenter på Pluss, Pro eller Pro+ Familie som aktiverer Min sak, velger å lagre dokumentene sine i et privat, kryptert korpus. Dette er helt valgfritt ingenting lagres med mindre du laster opp til Min sak eksplisitt.',
'mycase_list_title' => 'Ditt Min sak-korpus er:',
'mycase_li1' => 'Synlig kun for deg (og teammedlemmer du inviterer på Pro+)',
'mycase_li2' => 'Lagret kryptert i EU til enhver tid',
'mycase_li3' => 'Slettbart når som helst dokument for dokument eller alt på én gang',
'mycase_li4' => 'Beholdt i 90 dager etter avsluttet abonnement, deretter slettet',
'mycase_badge' => 'Pluss · Pro · Pro+ Familie',
'locations_h' => 'Hvor dataene dine befinner seg (kun EU)',
'locations_p' => 'All behandling og lagring skjer innenfor EU:',
'locations_li1' => 'Applikasjonsservere: Hetzner Falkenstein (Tyskland DE) og Helsinki (Finland FI)',
'locations_li2' => 'AI-tjenester: Microsoft Azure Vest-Europa (NL) og Norge Øst (NO)',
'locations_li3' => 'Betalinger: Stripe Irland (IE) vi ser aldri kortnummeret ditt',
'locations_li4' => 'Vektorsøk og dokumentindeksering: Hetzner dedikerte servere, Tyskland',
'transport_h' => 'Sikker transport',
'transport_p' => 'Alle tilkoblinger bruker HTTPS/TLS 1.2 eller høyere. Data overføres aldri over ukrypterte kanaler. API-kall mellom interne tjenester bruker private VLAN-kanaler i Hetzner-infrastrukturen.',
'contact_h' => 'Spørsmål eller slettingsforespørsler',
'contact_p' => 'For spørsmål om dataene dine eller for å be om sletting av konto og lagrede dokumenter, send e-post til:',
'contact_email' => 'support@dobetternorge.no',
'back_tools' => '← Tilbake til verktøy',
'link_why' => 'Hvorfor verktøyene gir andre svar enn ChatGPT →',
'link_pricing' => 'Planer og priser →',
'link_mcp' => 'MCP for utviklere →',
],
'uk' => [
'page_title' => 'Конфіденційність — Do Better Norge',
'meta_desc' => 'Як Do Better Norge обробляє ваші документи та дані. Безкоштовний план обробляє дані лише в пам\'яті; платні плани пропонують безпечне сховище в ЄС.',
'nav_open' => 'Відкрити інструменти →',
'nav_signin' => 'Увійти',
'hero_kicker' => 'Конфіденційність і обробка даних',
'hero_title' => 'Ваші документи залишаються вашими.',
'hero_sub' => 'Безкоштовний план обробляє дані в пам\'яті й видаляє їх після завершення сесії. Платні плани дозволяють зберігати справу — зашифровано в ЄС, доступно лише вам.',
'legal_h' => 'Юридична інформація, а не юридична консультація',
'legal_p' => 'Ці інструменти надають юридичну інформацію та підтримку у підготовці. Вони не є юридичною консультацією. Результати ШІ можуть містити помилки — завжди погоджуйте наступні кроки з кваліфікованим норвезьким юристом.',
'memory_h' => 'Як обробляється текст і файли',
'memory_p1' => 'Коли ви вставляєте текст або завантажуєте документ (PDF, DOCX, TXT, аудіо), він надсилається до нашого AI-конвеєра через зашифроване HTTPS-з\'єднання, обробляється в пам\'яті й результат повертається вам.',
'memory_p2' => 'За замовчуванням вміст документа не записується на диск і не зберігається після завершення сесії. Це стосується всіх користувачів безкоштовного плану та будь-якого інструменту поза функцією «Моя справа».',
'memory_badge' => 'Безкоштовний план — завжди',
'store_h' => 'Що ми зберігаємо (безкоштовний план)',
'store_p' => 'Для всіх користувачів ми логуємо лише операційні метадані для моніторингу стану сервісу та вдосконалення інструментів:',
'store_li1' => 'Назва використаного інструменту (напр. «транскрибування», «хронологія»)',
'store_li2' => 'Час відповіді (затримка)',
'store_li3' => 'Вибрана мова інтерфейсу',
'store_li4' => 'Анонімний ідентифікатор сесії (не пов\'язаний з вашим іменем або email)',
'store_never' => 'Ми ніколи не логуємо вміст ваших документів або вставленого тексту.',
'mycase_h' => 'Моя справа — лише платні плани (за вибором)',
'mycase_p1' => 'Підписники Plus, Pro або Pro+ Family, які активують «Мою справу», обирають зберігати документи в приватному зашифрованому корпусі. Це повністю за вашим вибором — нічого не зберігається без явного завантаження до «Моєї справи».',
'mycase_list_title' => 'Ваш корпус «Мої справи»:',
'mycase_li1' => 'Видимий лише вам (і запрошеним учасникам команди на Pro+)',
'mycase_li2' => 'Зберігається зашифрованим у ЄС постійно',
'mycase_li3' => 'Може бути видалений будь-коли — по одному документу або всі разом',
'mycase_li4' => 'Зберігається 90 днів після скасування підписки, потім видаляється',
'mycase_badge' => 'Plus · Pro · Pro+ Family',
'locations_h' => 'Де зберігаються ваші дані (лише ЄС)',
'locations_p' => 'Вся обробка та зберігання відбувається в межах Євросоюзу:',
'locations_li1' => 'Сервери додатків: Hetzner Falkenstein (Німеччина DE) та Гельсінкі (Фінляндія FI)',
'locations_li2' => 'AI-сервіси: Microsoft Azure Захід Європи (NL) та Норвегія Схід (NO)',
'locations_li3' => 'Платежі: Stripe Ірландія (IE) — ми ніколи не бачимо вашого номера картки',
'locations_li4' => 'Векторний пошук і індексування документів: виділені сервери Hetzner, Німеччина',
'transport_h' => 'Безпечна передача даних',
'transport_p' => 'Усі з\'єднання використовують HTTPS/TLS 1.2 або вище. Дані ніколи не передаються незашифрованими каналами. API-виклики між внутрішніми сервісами використовують приватні VLAN-канали в інфраструктурі Hetzner.',
'contact_h' => 'Запитання або запит на видалення',
'contact_p' => 'Щоб дізнатися про свої дані або запросити видалення облікового запису та збережених документів, напишіть нам:',
'contact_email' => 'support@dobetternorge.no',
'back_tools' => '← Назад до інструментів',
'link_why' => 'Чому наші інструменти дають інші відповіді, ніж ChatGPT →',
'link_pricing' => 'Плани та ціни →',
'link_mcp' => 'MCP для розробників →',
],
'pl' => [
'page_title' => 'Prywatność — Do Better Norge',
'meta_desc' => 'Jak Do Better Norge obsługuje Twoje dokumenty i dane. Plan bezpłatny przetwarza dane tylko w pamięci; płatne plany oferują bezpieczne przechowywanie w UE.',
'nav_open' => 'Otwórz narzędzia →',
'nav_signin' => 'Zaloguj się',
'hero_kicker' => 'Prywatność i zarządzanie danymi',
'hero_title' => 'Twoje dokumenty pozostają Twoje.',
'hero_sub' => 'Przetwarzanie w planie bezpłatnym odbywa się w pamięci i jest usuwane po zakończeniu sesji. Płatne plany pozwalają zapisać swoją sprawę — zaszyfrowaną w UE, widoczną tylko dla Ciebie.',
'legal_h' => 'Informacja prawna, nie porada prawna',
'legal_p' => 'Te narzędzia zapewniają informacje prawne i wsparcie w przygotowaniu. Nie stanowią porady prawnej. Wyniki AI mogą zawierać błędy — zawsze konsultuj kolejne kroki z wykwalifikowanym norweskim prawnikiem.',
'memory_h' => 'Jak przetwarzany jest tekst i pliki',
'memory_p1' => 'Gdy wklejasz tekst lub przesyłasz dokument (PDF, DOCX, TXT, audio), jest on wysyłany do naszego pipeline\'u AI przez szyfrowane połączenie HTTPS, przetwarzany w pamięci i wynik jest zwracany do Ciebie.',
'memory_p2' => 'Domyślnie treść dokumentu nie jest zapisywana na dysku ani przechowywana po zakończeniu sesji. Dotyczy to wszystkich użytkowników planu bezpłatnego i każdego narzędzia używanego poza funkcją Moja Sprawa.',
'memory_badge' => 'Plan bezpłatny — zawsze',
'store_h' => 'Co rejestrujemy (plan bezpłatny)',
'store_p' => 'Dla wszystkich użytkowników rejestrujemy tylko metadane operacyjne w celu monitorowania kondycji usługi i ulepszania narzędzi:',
'store_li1' => 'Nazwa użytego narzędzia (np. „transkrypcja", „oś czasu")',
'store_li2' => 'Czas odpowiedzi (opóźnienie)',
'store_li3' => 'Wybrany język interfejsu',
'store_li4' => 'Anonimowy identyfikator sesji (niepowiązany z Twoim imieniem ani adresem e-mail)',
'store_never' => 'Nigdy nie rejestrujemy treści Twoich dokumentów ani wklejonego tekstu.',
'mycase_h' => 'Moja Sprawa — tylko plany płatne (opcjonalnie)',
'mycase_p1' => 'Subskrybenci Plus, Pro lub Pro+ Family, którzy aktywują Moją Sprawę, wybierają przechowywanie dokumentów w prywatnym, zaszyfrowanym korpusie. Jest to całkowicie opcjonalne — nic nie jest zapisywane, jeśli nie prześlesz do Mojej Sprawy.',
'mycase_list_title' => 'Twój korpus Moja Sprawa:',
'mycase_li1' => 'Widoczny tylko dla Ciebie (i zaproszonych członków zespołu w Pro+)',
'mycase_li2' => 'Przechowywany w zaszyfrowanej postaci w UE przez cały czas',
'mycase_li3' => 'Możliwy do usunięcia w dowolnym momencie — dokument po dokumencie lub wszystko naraz',
'mycase_li4' => 'Przechowywany przez 90 dni po anulowaniu subskrypcji, a następnie usuwany',
'mycase_badge' => 'Plus · Pro · Pro+ Family',
'locations_h' => 'Gdzie przechowywane są Twoje dane (tylko UE)',
'locations_p' => 'Całe przetwarzanie i przechowywanie odbywa się w Unii Europejskiej:',
'locations_li1' => 'Serwery aplikacji: Hetzner Falkenstein (Niemcy DE) i Helsinki (Finlandia FI)',
'locations_li2' => 'Usługi AI: Microsoft Azure Europa Zachodnia (NL) i Norwegia Wschodnia (NO)',
'locations_li3' => 'Płatności: Stripe Irlandia (IE) — nigdy nie widzimy numeru Twojej karty',
'locations_li4' => 'Wyszukiwanie wektorowe i indeksowanie dokumentów: dedykowane serwery Hetzner, Niemcy',
'transport_h' => 'Bezpieczny transport',
'transport_p' => 'Wszystkie połączenia używają HTTPS/TLS 1.2 lub nowszego. Dane nigdy nie są przesyłane przez nieszyfrowane kanały. Wywołania API między wewnętrznymi usługami używają prywatnych kanałów VLAN w infrastrukturze Hetzner.',
'contact_h' => 'Pytania lub prośby o usunięcie',
'contact_p' => 'Aby zapytać o swoje dane lub poprosić o usunięcie konta i przechowywanych dokumentów, napisz do nas:',
'contact_email' => 'support@dobetternorge.no',
'back_tools' => '← Powrót do narzędzi',
'link_why' => 'Dlaczego nasze narzędzia dają inne odpowiedzi niż ChatGPT →',
'link_pricing' => 'Plany i cennik →',
'link_mcp' => 'MCP dla deweloperów →',
],
];
$t = $translations[$uiLang] ?? $translations['en'];
?>
<!doctype html>
<html lang="<?= htmlspecialchars($uiLang) ?>">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($t['page_title']) ?></title>
<meta name="description" content="<?= htmlspecialchars($t['meta_desc']) ?>">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://tools.dobetternorge.no/privacy.php">
<meta property="og:title" content="<?= htmlspecialchars($t['page_title']) ?>">
<meta property="og:description" content="<?= htmlspecialchars($t['meta_desc']) ?>">
<meta property="og:type" content="website">
<meta name="theme-color" content="#00205B">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@400;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap">
<link rel="stylesheet" href="assets/css/tools.css">
<link rel="stylesheet" href="assets/css/dbn-tools-redesign.css">
<style>
.priv-hero {
background: linear-gradient(135deg, #00205B 0%, #001840 100%);
padding: 3.5rem 1.5rem 3rem;
text-align: center;
color: #fff;
}
.priv-hero__kicker {
font-size: 0.8125rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: rgba(255,255,255,0.6);
margin: 0 0 0.75rem;
}
.priv-hero__title {
font-family: 'Crimson Pro', Georgia, serif;
font-size: clamp(1.75rem, 4vw, 2.75rem);
font-weight: 700;
line-height: 1.15;
margin: 0 0 1rem;
}
.priv-hero__sub {
font-size: 1.0625rem;
color: rgba(255,255,255,0.8);
max-width: 640px;
margin: 0 auto;
line-height: 1.6;
}
.priv-body {
max-width: 760px;
margin: 0 auto;
padding: 2.5rem 1.5rem 4rem;
}
.priv-section {
margin-bottom: 2.5rem;
padding-bottom: 2.5rem;
border-bottom: 1px solid #e8eaf0;
}
.priv-section:last-of-type {
border-bottom: none;
}
.priv-section__badge {
display: inline-block;
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.05em;
text-transform: uppercase;
background: #e8f0fe;
color: #1a3a7c;
border-radius: 3px;
padding: 0.15rem 0.55rem;
margin-bottom: 0.65rem;
}
.priv-section__badge--paid {
background: #fef3c7;
color: #7c5a00;
}
.priv-section h2 {
font-family: 'Crimson Pro', Georgia, serif;
font-size: 1.45rem;
font-weight: 700;
color: #00205B;
margin: 0 0 0.75rem;
}
.priv-section p {
color: #334;
line-height: 1.7;
margin: 0 0 0.85rem;
}
.priv-section ul {
color: #334;
line-height: 1.7;
padding-left: 1.4rem;
margin: 0.5rem 0 0.85rem;
}
.priv-section ul li {
margin-bottom: 0.35rem;
}
.priv-legal-box {
background: #fffbeb;
border-left: 3px solid #f59e0b;
padding: 1rem 1.25rem;
border-radius: 0 6px 6px 0;
}
.priv-legal-box h2 {
color: #92400e;
}
.priv-legal-box p {
color: #78350f;
}
.priv-locations-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 0.75rem;
margin-top: 0.75rem;
}
.priv-location-card {
background: #f0f4ff;
border-radius: 6px;
padding: 0.85rem 1rem;
font-size: 0.9rem;
color: #334;
line-height: 1.45;
}
.priv-location-card strong {
display: block;
color: #00205B;
font-weight: 600;
margin-bottom: 0.15rem;
}
.priv-contact-box {
background: #f6f8ff;
border-radius: 8px;
padding: 1.25rem 1.5rem;
text-align: center;
}
.priv-contact-box a {
color: #00205B;
font-weight: 600;
font-size: 1rem;
}
.priv-nav-links {
display: flex;
gap: 1rem 1.5rem;
flex-wrap: wrap;
padding: 1.5rem 0 0;
border-top: 1px solid #e8eaf0;
margin-top: 1rem;
}
.priv-nav-links a {
color: #00205B;
font-size: 0.9rem;
text-decoration: none;
}
.priv-nav-links a:hover { text-decoration: underline; }
</style>
</head>
<body class="kdoc-page">
<!-- Nav -->
<header class="lt-nav">
<a href="https://dobetternorge.no" class="lt-nav__brand">
<picture>
<source srcset="assets/images/logo-header.webp" type="image/webp">
<img class="lt-nav__logo" src="assets/images/logo-header.png" alt="Do Better Norge" width="140" height="36" loading="eager">
</picture>
<span class="lt-nav__badge">Legal Tools</span>
</a>
<div class="lt-nav__right">
<nav class="shell-lang-switcher" aria-label="Language">
<?php foreach (dbnToolsSupportedLanguages() as $langCode): ?>
<a href="<?= htmlspecialchars($langPath . '?lang=' . $langCode) ?>" class="<?= $langCode === $uiLang ? 'is-active' : '' ?>"><?= htmlspecialchars(dbnToolsLanguageLabel($langCode)) ?></a>
<?php endforeach; ?>
</nav>
<?php if ($isAuthed): ?>
<a href="/dashboard.php" class="lt-nav__cta lt-nav__cta--enter"><?= htmlspecialchars($t['nav_open']) ?></a>
<?php else: ?>
<a href="<?= htmlspecialchars($toolsLogin) ?>" class="lt-nav__cta"><?= htmlspecialchars($t['nav_signin']) ?></a>
<?php endif; ?>
</div>
</header>
<!-- Hero -->
<section class="priv-hero">
<p class="priv-hero__kicker"><?= htmlspecialchars($t['hero_kicker']) ?></p>
<h1 class="priv-hero__title"><?= htmlspecialchars($t['hero_title']) ?></h1>
<p class="priv-hero__sub"><?= htmlspecialchars($t['hero_sub']) ?></p>
</section>
<main class="priv-body">
<!-- Legal disclaimer -->
<div class="priv-section priv-legal-box">
<h2>⚖ <?= htmlspecialchars($t['legal_h']) ?></h2>
<p><?= htmlspecialchars($t['legal_p']) ?></p>
</div>
<!-- In-memory processing -->
<div class="priv-section">
<span class="priv-section__badge"><?= htmlspecialchars($t['memory_badge']) ?></span>
<h2><?= htmlspecialchars($t['memory_h']) ?></h2>
<p><?= htmlspecialchars($t['memory_p1']) ?></p>
<p><?= htmlspecialchars($t['memory_p2']) ?></p>
</div>
<!-- What we store -->
<div class="priv-section">
<h2><?= htmlspecialchars($t['store_h']) ?></h2>
<p><?= htmlspecialchars($t['store_p']) ?></p>
<ul>
<li><?= htmlspecialchars($t['store_li1']) ?></li>
<li><?= htmlspecialchars($t['store_li2']) ?></li>
<li><?= htmlspecialchars($t['store_li3']) ?></li>
<li><?= htmlspecialchars($t['store_li4']) ?></li>
</ul>
<p><strong><?= htmlspecialchars($t['store_never']) ?></strong></p>
</div>
<!-- My Case -->
<div class="priv-section">
<span class="priv-section__badge priv-section__badge--paid"><?= htmlspecialchars($t['mycase_badge']) ?></span>
<h2><?= htmlspecialchars($t['mycase_h']) ?></h2>
<p><?= htmlspecialchars($t['mycase_p1']) ?></p>
<p><?= htmlspecialchars($t['mycase_list_title']) ?></p>
<ul>
<li><?= htmlspecialchars($t['mycase_li1']) ?></li>
<li><?= htmlspecialchars($t['mycase_li2']) ?></li>
<li><?= htmlspecialchars($t['mycase_li3']) ?></li>
<li><?= htmlspecialchars($t['mycase_li4']) ?></li>
</ul>
</div>
<!-- Data locations -->
<div class="priv-section">
<h2><?= htmlspecialchars($t['locations_h']) ?></h2>
<p><?= htmlspecialchars($t['locations_p']) ?></p>
<div class="priv-locations-grid">
<div class="priv-location-card"><strong>🇩🇪 🇫🇮</strong><?= htmlspecialchars($t['locations_li1']) ?></div>
<div class="priv-location-card"><strong>🇳🇱 🇳🇴</strong><?= htmlspecialchars($t['locations_li2']) ?></div>
<div class="priv-location-card"><strong>🇮🇪</strong><?= htmlspecialchars($t['locations_li3']) ?></div>
<div class="priv-location-card"><strong>🇩🇪</strong><?= htmlspecialchars($t['locations_li4']) ?></div>
</div>
</div>
<!-- Transport -->
<div class="priv-section">
<h2><?= htmlspecialchars($t['transport_h']) ?></h2>
<p><?= htmlspecialchars($t['transport_p']) ?></p>
</div>
<!-- Contact -->
<div class="priv-section priv-contact-box">
<h2><?= htmlspecialchars($t['contact_h']) ?></h2>
<p><?= htmlspecialchars($t['contact_p']) ?></p>
<a href="mailto:<?= htmlspecialchars($t['contact_email']) ?>"><?= htmlspecialchars($t['contact_email']) ?></a>
</div>
<!-- Nav links -->
<nav class="priv-nav-links" aria-label="Related pages">
<a href="/<?= $uiLang !== 'en' ? '?lang=' . urlencode($uiLang) : '' ?>"><?= htmlspecialchars($t['back_tools']) ?></a>
<a href="/why-ours.php<?= $uiLang !== 'en' ? '?lang=' . urlencode($uiLang) : '' ?>"><?= htmlspecialchars($t['link_why']) ?></a>
<a href="/pricing.php<?= $uiLang !== 'en' ? '?lang=' . urlencode($uiLang) : '' ?>"><?= htmlspecialchars($t['link_pricing']) ?></a>
<a href="/mcp-tool.php<?= $uiLang !== 'en' ? '?lang=' . urlencode($uiLang) : '' ?>"><?= htmlspecialchars($t['link_mcp']) ?></a>
</nav>
</main>
<?php require_once __DIR__ . '/includes/footer.php'; ?>
<script src="assets/js/tools.js" defer></script>
</body>
</html>