diff --git a/ZeroSpace/ZeroSpace.Web/Pages/SystemMasteryDetail.razor b/ZeroSpace/ZeroSpace.Web/Pages/SystemMasteryDetail.razor
new file mode 100644
index 0000000..ce3f1dd
--- /dev/null
+++ b/ZeroSpace/ZeroSpace.Web/Pages/SystemMasteryDetail.razor
@@ -0,0 +1,79 @@
+@page "/SystemMastery/{Id}"
+
+@(mastery?.Name ?? "System Mastery")
+
+@if (mastery is null)
+{
+
+}
+else
+{
+
+
+ Levels
+
+ @for (var i = 0; i < mastery.Levels.Count; i++)
+ {
+ - Level @(i + 1): @mastery.Levels[i]
+ }
+
+
+ @if (mastery.Stats.Count > 0)
+ {
+ Totals
+
+
+ @foreach (var stat in mastery.Stats)
+ {
+
+ | @ZeroSpaceLinks.Humanize(stat.Key) |
+ @stat.Value |
+
+ }
+
+
+ }
+
+ Available on
+
+ @foreach (var name in mastery.AvailableSystems.OrderBy(n => n))
+ {
+ -
+ @{
+ var url = ZeroSpaceLinks.UrlFor(name);
+ }
+ @if (url is null)
+ {
+ @name
+ }
+ else
+ {
+ @name
+ }
+
+ }
+
+
+ @if (!string.IsNullOrWhiteSpace(mastery.Body))
+ {
+ Notes
+
+ }
+}
+
+@code {
+ [Parameter]
+ public string Id { get; set; } = string.Empty;
+
+ private SystemMasteryData? mastery;
+
+ protected override void OnParametersSet()
+ {
+ mastery = SystemMasteries.All.FirstOrDefault(m => m.Id.Equals(Id, StringComparison.OrdinalIgnoreCase));
+ }
+}