Index: src/views/pages/guardian.ejs
===================================================================
--- src/views/pages/guardian.ejs	(revision 318d0c2548c03158eca4abe63ba513685acf84f0)
+++ src/views/pages/guardian.ejs	(revision 318d0c2548c03158eca4abe63ba513685acf84f0)
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="<%= lang %>">
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <title>Klonkt Guardian</title>
+  <link rel="manifest" href="/guardian/manifest.webmanifest">
+  <link rel="icon" href="/guardian/icon.svg" type="image/svg+xml">
+  <meta name="theme-color" content="#ff6b35">
+  <link rel="stylesheet" href="/assets/css/guardian.css">
+</head>
+<body>
+  <header class="g-head">
+    <span class="g-buoy">🛟</span>
+    <h1>Guardian</h1>
+    <% if (sites.length > 1) { %>
+    <select id="site-picker" aria-label="Account">
+      <% for (const s of sites) { %>
+      <option value="<%= s.slug %>" <%= s.slug === state.site ? 'selected' : '' %>>@<%= s.slug %></option>
+      <% } %>
+    </select>
+    <% } else { %>
+    <span class="g-me">@<%= state.site %></span>
+    <% } %>
+  </header>
+
+  <main>
+    <!-- Berichtencentrum: hulpverzoeken eerst, dat is waar dit voor bestaat. -->
+    <section id="help-section">
+      <h2><%= t('guardian.help_title') %></h2>
+      <div id="help-list" class="g-list"></div>
+      <p id="help-empty" class="g-empty" hidden><%= t('guardian.help_empty') %></p>
+    </section>
+
+    <section id="wards-section">
+      <h2><%= t('guardian.wards_title') %></h2>
+      <form id="adopt-form" autocomplete="off">
+        <input id="adopt-handle" type="text" inputmode="email"
+               placeholder="@kind@server.eu" aria-label="<%= t('guardian.adopt_label') %>">
+        <button type="submit"><%= t('guardian.adopt_btn') %></button>
+      </form>
+      <p id="adopt-msg" class="g-msg" hidden></p>
+      <div id="wards-list" class="g-list"></div>
+      <div id="offers-list" class="g-list"></div>
+      <p id="wards-empty" class="g-empty" hidden><%= t('guardian.wards_empty') %></p>
+    </section>
+
+    <section id="push-section">
+      <h2><%= t('guardian.push_title') %></h2>
+      <p class="g-sub"><%= t('guardian.push_sub') %></p>
+      <button id="push-toggle" data-on-label="<%= t('guardian.push_off') %>"
+              data-off-label="<%= t('guardian.push_on') %>"><%= t('guardian.push_on') %></button>
+      <p id="push-msg" class="g-msg" hidden></p>
+    </section>
+  </main>
+
+  <script type="application/json" id="guardian-state"><%- JSON.stringify(state) %></script>
+  <script src="/assets/js/guardian.js" defer></script>
+</body>
+</html>
