| 2.1 | Landing page -- Dark Hacker theme | Build the default landing page theme with a dark background, terminal-style typography, neon green accents, and glitch/matrix animations. Sections: hero, features, pricing, footer. | Page loads at app.redactedworld.com with the dark hacker visual treatment; all sections render correctly on desktop and mobile. |
| 2.2 | Landing page -- Clean Professional theme | Create an alternate light/corporate theme with the same layout structure but muted colors, sans-serif typography, and subtle transitions. | Switching to this theme re-renders the page with the professional look; layout and content remain identical. |
| 2.3 | Landing page -- Hybrid theme | Create a third theme that blends dark backgrounds with clean typography and selective neon highlights. | Theme renders correctly and sits visually between the other two; no style conflicts or missing tokens. |
| 2.4 | Theme switcher component | Add a floating or nav-bar-embedded toggle that cycles through the three themes, persists the choice in localStorage, and applies it instantly without a page reload. | Clicking the toggle cycles themes; refreshing the page retains the selected theme; there is no flash of unstyled content. |
| 2.5 | Registration flow via Keycloak | Integrate the Angular frontend with Keycloak OIDC for self-service registration: sign-up form, email verification, and account activation. | A new user can register, receive a verification email, activate, and land on the login screen. |
| 2.6 | Login redirect to admin.redactedworld.com | After a successful Keycloak login from the landing page, redirect the user to admin.redactedworld.com with a valid access token stored in an HTTP-only cookie or Authorization header. | Logging in redirects to the admin portal; the admin portal receives a valid JWT; unauthenticated access to admin redirects back to login. |