Index: src/views/pages/ward.ejs
===================================================================
--- src/views/pages/ward.ejs	(revision 303bfc4daeb122010e84e14370b612f2e7e286f4)
+++ src/views/pages/ward.ejs	(revision 303bfc4daeb122010e84e14370b612f2e7e286f4)
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="<%= lang %>">
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
+  <title><%= state.strings.title %></title>
+  <link rel="manifest" href="/ward/manifest.webmanifest">
+  <link rel="icon" href="/ward/icon.svg" type="image/svg+xml">
+  <meta name="theme-color" content="#5a32e6">
+  <link rel="stylesheet" href="/ward/app.css">
+</head>
+<body>
+  <main id="app">
+    <h1><%= state.strings.title %></h1>
+
+    <!-- De hulpknop staat BOVENAAN en niet onderaan bij de instellingen.
+         Als je hem nodig hebt, moet je niet hoeven zoeken. -->
+    <section class="help">
+      <button id="help-btn" type="button"><%= state.strings.help %></button>
+      <p class="hint" id="help-hint"></p>
+    </section>
+
+    <section id="guardians">
+      <h2><%= state.strings.guardians %></h2>
+      <ul class="list" id="guardian-list"></ul>
+      <p class="empty" id="guardians-empty" hidden><%= state.strings.noGuardians %></p>
+    </section>
+
+    <section id="offers" hidden>
+      <h2><%= state.strings.offers %></h2>
+      <ul class="list" id="offer-list"></ul>
+    </section>
+
+    <section id="waiting" hidden>
+      <h2><%= state.strings.waiting %></h2>
+      <ul class="list" id="waiting-list"></ul>
+    </section>
+  </main>
+
+  <!-- De begintoestand reist als JSON mee, zodat de pagina meteen compleet is
+       en niet eerst leeg staat te wachten op een fetch. Geen inline script:
+       CSP staat dat niet toe, dus het gaat als data door een script-tag met
+       een type dat de browser niet uitvoert. -->
+  <script type="application/json" id="ward-state"><%- JSON.stringify(state) %></script>
+  <script src="/ward/app.js" defer></script>
+</body>
+</html>
