OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      c5537602b46f
DATE      2025-11-16
SUBJECT   web: fmt
FILES     21 CHANGED
HASH      c5537602b46f
DATE      2025-11-16
SUBJECT   web: fmt
FILES     21 CHANGED
 

diff --git a/web/.astro/data-store.json b/web/.astro/data-store.json
index ea0aeae..e1bcd99 100644
--- a/web/.astro/data-store.json
+++ b/web/.astro/data-store.json
@@ -1 +1 @@
-[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.12.0","astro-config-
digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{}
,\"site\":\"https://wowsimstats.com\",\"compressHTML\":true,\"base\":\"/\",\"trail
ingSlash\":\"ignore\",\"output\":\"server\",\"scopedStyleStrategy\":\"attribute\",
\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astr
o\",\"serverEntry\":\"entry.mjs\",\"redirects\":false,\"inlineStylesheets\":\"auto
\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":37831,\"s
treaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"r
oute\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"
config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"de
vToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\
",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"th
eme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPl
ugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":t
rue},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\
":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false
,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\
":false,\"csp\":false,\"rawEnvValues\":false},\"legacy\":{\"collections\":false}}"
]
\ No newline at end of file
+[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.12.0","astro-config-
digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{}
,\"site\":\"https://wowsimstats.com\",\"compressHTML\":true,\"base\":\"/\",\"trail
ingSlash\":\"ignore\",\"output\":\"server\",\"scopedStyleStrategy\":\"attribute\",
\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astr
o\",\"serverEntry\":\"entry.mjs\",\"redirects\":false,\"inlineStylesheets\":\"auto
\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":23159,\"s
treaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"r
oute\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"
config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"de
vToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\
",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"th
eme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPl
ugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":t
rue},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\
":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false
,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\
":false,\"csp\":false,\"rawEnvValues\":false},\"legacy\":{\"collections\":false}}"
]
\ No newline at end of file

diff --git a/web/.astro/data-store.json b/we
b/.astro/data-store.json
index ea0aeae..e1bcd99 100644
--- a/web/.astro/data-store.json
+++ b/web/.astro/data-store.json
@@ -1 +1 @@
-[["Map",1,2],"meta::meta",["Map",3,4,5,6],"
astro-version","5.12.0","astro-config-digest
","{\"root\":{},\"srcDir\":{},\"publicDir\":
{},\"outDir\":{},\"cacheDir\":{},\"site\":\"
https://wowsimstats.com\",\"compressHTML\":t
rue,\"base\":\"/\",\"trailingSlash\":\"ignor
e\",\"output\":\"server\",\"scopedStyleStrat
egy\":\"attribute\",\"build\":{\"format\":\"
directory\",\"client\":{},\"server\":{},\"as
sets\":\"_astro\",\"serverEntry\":\"entry.mj
s\",\"redirects\":false,\"inlineStylesheets\
":\"auto\",\"concurrency\":1},\"server\":{\"
open\":false,\"host\":false,\"port\":37831,\
"streaming\":true,\"allowedHosts\":[]},\"red
irects\":{},\"image\":{\"endpoint\":{\"route
\":\"/_image\"},\"service\":{\"entrypoint\":
\"astro/assets/services/sharp\",\"config\":{
}},\"domains\":[],\"remotePatterns\":[],\"re
sponsiveStyles\":false},\"devToolbar\":{\"en
abled\":true},\"markdown\":{\"syntaxHighligh
t\":{\"type\":\"shiki\",\"excludeLangs\":[\"
math\"]},\"shikiConfig\":{\"langs\":[],\"lan
gAlias\":{},\"theme\":\"github-dark\",\"them
es\":{},\"wrap\":false,\"transformers\":[]},
\"remarkPlugins\":[],\"rehypePlugins\":[],\"
remarkRehype\":{},\"gfm\":true,\"smartypants
\":true},\"security\":{\"checkOrigin\":true}
,\"env\":{\"schema\":{},\"validateSecrets\":
false},\"experimental\":{\"clientPrerender\"
:false,\"contentIntellisense\":false,\"headi
ngIdCompat\":false,\"preserveScriptOrder\":f
alse,\"liveContentCollections\":false,\"csp\
":false,\"rawEnvValues\":false},\"legacy\":{
\"collections\":false}}"]
\ No newline at end of file
+[["Map",1,2],"meta::meta",["Map",3,4,5,6],"
astro-version","5.12.0","astro-config-digest
","{\"root\":{},\"srcDir\":{},\"publicDir\":
{},\"outDir\":{},\"cacheDir\":{},\"site\":\"
https://wowsimstats.com\",\"compressHTML\":t
rue,\"base\":\"/\",\"trailingSlash\":\"ignor
e\",\"output\":\"server\",\"scopedStyleStrat
egy\":\"attribute\",\"build\":{\"format\":\"
directory\",\"client\":{},\"server\":{},\"as
sets\":\"_astro\",\"serverEntry\":\"entry.mj
s\",\"redirects\":false,\"inlineStylesheets\
":\"auto\",\"concurrency\":1},\"server\":{\"
open\":false,\"host\":false,\"port\":23159,\
"streaming\":true,\"allowedHosts\":[]},\"red
irects\":{},\"image\":{\"endpoint\":{\"route
\":\"/_image\"},\"service\":{\"entrypoint\":
\"astro/assets/services/sharp\",\"config\":{
}},\"domains\":[],\"remotePatterns\":[],\"re
sponsiveStyles\":false},\"devToolbar\":{\"en
abled\":true},\"markdown\":{\"syntaxHighligh
t\":{\"type\":\"shiki\",\"excludeLangs\":[\"
math\"]},\"shikiConfig\":{\"langs\":[],\"lan
gAlias\":{},\"theme\":\"github-dark\",\"them
es\":{},\"wrap\":false,\"transformers\":[]},
\"remarkPlugins\":[],\"rehypePlugins\":[],\"
remarkRehype\":{},\"gfm\":true,\"smartypants
\":true},\"security\":{\"checkOrigin\":true}
,\"env\":{\"schema\":{},\"validateSecrets\":
false},\"experimental\":{\"clientPrerender\"
:false,\"contentIntellisense\":false,\"headi
ngIdCompat\":false,\"preserveScriptOrder\":f
alse,\"liveContentCollections\":false,\"csp\
":false,\"rawEnvValues\":false},\"legacy\":{
\"collections\":false}}"]
\ No newline at end of file
 

diff --git a/web/.astro/types.d.ts b/web/.astro/types.d.ts
index f964fe0..03d7cc4 100644
--- a/web/.astro/types.d.ts
+++ b/web/.astro/types.d.ts
@@ -1 +1,2 @@
 /// <reference types="astro/client" />
+/// <reference path="content.d.ts" />
\ No newline at end of file

diff --git a/web/.astro/types.d.ts b/web/.as
tro/types.d.ts
index f964fe0..03d7cc4 100644
--- a/web/.astro/types.d.ts
+++ b/web/.astro/types.d.ts
@@ -1 +1,2 @@
 /// <reference types="astro/client" />
+/// <reference path="content.d.ts" />
\ No newline at end of file
 

diff --git a/web/src/client/sim-chart/render/charts.ts b/web/src/client/sim-chart/
render/charts.ts
index b62d360..0a0c942 100644
--- a/web/src/client/sim-chart/render/charts.ts
+++ b/web/src/client/sim-chart/render/charts.ts
@@ -53,7 +53,12 @@ export function renderRankingsChartHTML(
           ? it.stdev
           : it.value;
   const max = Math.max(...items.map(metric), 0);
-  const min = String(sortBy) === "dps" || String(sortBy) === "max" || String(sort
By) === "min" ? 0 : Math.min(...items.map(metric), max);
+  const min =
+    String(sortBy) === "dps" ||
+    String(sortBy) === "max" ||
+    String(sortBy) === "min"
+      ? 0
+      : Math.min(...items.map(metric), max);
 
   const bars = items
     .map((it, idx) => {
@@ -170,14 +175,20 @@ export function renderComparisonChartHTML(
     String(effectiveSort) === "percent"
       ? (it.percent ?? 0)
       : String(effectiveSort) === "max"
-        ? (it as any).maxIncrease ?? 0
+        ? ((it as any).maxIncrease ?? 0)
         : String(effectiveSort) === "min"
-          ? (it as any).minIncrease ?? 0
+          ? ((it as any).minIncrease ?? 0)
           : String(effectiveSort) === "stdev"
             ? it.stdev
-            : (it as any).dpsIncrease ?? 0;
+            : ((it as any).dpsIncrease ?? 0);
   const max = Math.max(...items.map(metric), 0);
-  const min = String(effectiveSort) === "percent" || String(effectiveSort) === "d
ps" || String(effectiveSort) === "max" || String(effectiveSort) === "min" ? 0 : Ma
th.min(...items.map(metric), max);
+  const min =
+    String(effectiveSort) === "percent" ||
+    String(effectiveSort) === "dps" ||
+    String(effectiveSort) === "max" ||
+    String(effectiveSort) === "min"
+      ? 0
+      : Math.min(...items.map(metric), max);
 
   const bars = items
     .map((it, idx) => {

diff --git a/web/src/client/sim-chart/render
/charts.ts b/web/src/client/sim-chart/render
/charts.ts
index b62d360..0a0c942 100644
--- a/web/src/client/sim-chart/render/charts
.ts
+++ b/web/src/client/sim-chart/render/charts
.ts
@@ -53,7 +53,12 @@ export function renderRan
kingsChartHTML(
           ? it.stdev
           : it.value;
   const max = Math.max(...items.map(metric)
, 0);
-  const min = String(sortBy) === "dps" || S
tring(sortBy) === "max" || String(sortBy) ==
= "min" ? 0 : Math.min(...items.map(metric),
 max);
+  const min =
+    String(sortBy) === "dps" ||
+    String(sortBy) === "max" ||
+    String(sortBy) === "min"
+      ? 0
+      : Math.min(...items.map(metric), max)
;
 
   const bars = items
     .map((it, idx) => {
@@ -170,14 +175,20 @@ export function render
ComparisonChartHTML(
     String(effectiveSort) === "percent"
       ? (it.percent ?? 0)
       : String(effectiveSort) === "max"
-        ? (it as any).maxIncrease ?? 0
+        ? ((it as any).maxIncrease ?? 0)
         : String(effectiveSort) === "min"
-          ? (it as any).minIncrease ?? 0
+          ? ((it as any).minIncrease ?? 0)
           : String(effectiveSort) === "stde
v"
             ? it.stdev
-            : (it as any).dpsIncrease ?? 0;
+            : ((it as any).dpsIncrease ?? 0
);
   const max = Math.max(...items.map(metric)
, 0);
-  const min = String(effectiveSort) === "pe
rcent" || String(effectiveSort) === "dps" ||
 String(effectiveSort) === "max" || String(e
ffectiveSort) === "min" ? 0 : Math.min(...it
ems.map(metric), max);
+  const min =
+    String(effectiveSort) === "percent" ||
+    String(effectiveSort) === "dps" ||
+    String(effectiveSort) === "max" ||
+    String(effectiveSort) === "min"
+      ? 0
+      : Math.min(...items.map(metric), max)
;
 
   const bars = items
     .map((it, idx) => {
 

diff --git a/web/src/client/sim-chart/sorting.ts b/web/src/client/sim-chart/sortin
g.ts
index 269c6dc..28e3829 100644
--- a/web/src/client/sim-chart/sorting.ts
+++ b/web/src/client/sim-chart/sorting.ts
@@ -1,6 +1,11 @@
 export type SortBy = "dps" | "max" | "min" | "stdev" | "percent" | string;
 
-export function calculateBarWidth(value: number, max: number, min: number, sortBy
?: SortBy) {
+export function calculateBarWidth(
+  value: number,
+  max: number,
+  min: number,
+  sortBy?: SortBy,
+) {
   const valueRange = max - min;
   if (valueRange <= 0) return 100;
   return ((value - min) / valueRange) * 100;

diff --git a/web/src/client/sim-chart/sortin
g.ts b/web/src/client/sim-chart/sorting.ts
index 269c6dc..28e3829 100644
--- a/web/src/client/sim-chart/sorting.ts
+++ b/web/src/client/sim-chart/sorting.ts
@@ -1,6 +1,11 @@
 export type SortBy = "dps" | "max" | "min" 
| "stdev" | "percent" | string;
 
-export function calculateBarWidth(value: nu
mber, max: number, min: number, sortBy?: Sor
tBy) {
+export function calculateBarWidth(
+  value: number,
+  max: number,
+  min: number,
+  sortBy?: SortBy,
+) {
   const valueRange = max - min;
   if (valueRange <= 0) return 100;
   return ((value - min) / valueRange) * 100
;
 

diff --git a/web/src/components/Leaderboard/LeaderboardScopeFilter/LeaderboardScop
eFilter.scss b/web/src/components/Leaderboard/LeaderboardScopeFilter/LeaderboardSc
opeFilter.scss
index f1ee7f1..fd5a67d 100644
--- a/web/src/components/Leaderboard/LeaderboardScopeFilter/LeaderboardScopeFilter
.scss
+++ b/web/src/components/Leaderboard/LeaderboardScopeFilter/LeaderboardScopeFilter
.scss
@@ -6,4 +6,3 @@
   gap: 16px;
   flex-wrap: wrap;
 }
-

diff --git a/web/src/components/Leaderboard/
LeaderboardScopeFilter/LeaderboardScopeFilte
r.scss b/web/src/components/Leaderboard/Lead
erboardScopeFilter/LeaderboardScopeFilter.sc
ss
index f1ee7f1..fd5a67d 100644
--- a/web/src/components/Leaderboard/Leaderb
oardScopeFilter/LeaderboardScopeFilter.scss
+++ b/web/src/components/Leaderboard/Leaderb
oardScopeFilter/LeaderboardScopeFilter.scss
@@ -6,4 +6,3 @@
   gap: 16px;
   flex-wrap: wrap;
 }
-
 

diff --git a/web/src/components/Leaderboard/RegionRealmFilterSelect/RegionRealmFil
terSelect.scss b/web/src/components/Leaderboard/RegionRealmFilterSelect/RegionReal
mFilterSelect.scss
index 3d5b0bc..4623d9f 100644
--- a/web/src/components/Leaderboard/RegionRealmFilterSelect/RegionRealmFilterSele
ct.scss
+++ b/web/src/components/Leaderboard/RegionRealmFilterSelect/RegionRealmFilterSele
ct.scss
@@ -6,4 +6,3 @@
   gap: 16px;
   flex-wrap: wrap;
 }
-

diff --git a/web/src/components/Leaderboard/
RegionRealmFilterSelect/RegionRealmFilterSel
ect.scss b/web/src/components/Leaderboard/Re
gionRealmFilterSelect/RegionRealmFilterSelec
t.scss
index 3d5b0bc..4623d9f 100644
--- a/web/src/components/Leaderboard/RegionR
ealmFilterSelect/RegionRealmFilterSelect.scs
s
+++ b/web/src/components/Leaderboard/RegionR
ealmFilterSelect/RegionRealmFilterSelect.scs
s
@@ -6,4 +6,3 @@
   gap: 16px;
   flex-wrap: wrap;
 }
-
 

diff --git a/web/src/components/PlayerProfile/ClassFilterSelect/ClassFilterSelect.
scss b/web/src/components/PlayerProfile/ClassFilterSelect/ClassFilterSelect.scss
index 0a3794f..cdd00f7 100644
--- a/web/src/components/PlayerProfile/ClassFilterSelect/ClassFilterSelect.scss
+++ b/web/src/components/PlayerProfile/ClassFilterSelect/ClassFilterSelect.scss
@@ -20,7 +20,9 @@
     font-size: $font-size-md;
     cursor: pointer;
     min-width: 180px;
-    transition: border-color 0.2s ease, box-shadow 0.2s ease;
+    transition:
+      border-color 0.2s ease,
+      box-shadow 0.2s ease;
 
     &:hover {
       border-color: var(--highlight-color);

diff --git a/web/src/components/PlayerProfil
e/ClassFilterSelect/ClassFilterSelect.scss b
/web/src/components/PlayerProfile/ClassFilte
rSelect/ClassFilterSelect.scss
index 0a3794f..cdd00f7 100644
--- a/web/src/components/PlayerProfile/Class
FilterSelect/ClassFilterSelect.scss
+++ b/web/src/components/PlayerProfile/Class
FilterSelect/ClassFilterSelect.scss
@@ -20,7 +20,9 @@
     font-size: $font-size-md;
     cursor: pointer;
     min-width: 180px;
-    transition: border-color 0.2s ease, box
-shadow 0.2s ease;
+    transition:
+      border-color 0.2s ease,
+      box-shadow 0.2s ease;
 
     &:hover {
       border-color: var(--highlight-color);
 

diff --git a/web/src/components/PlayerProfile/PlayerBestRuns/PlayerBestRuns.scss b
/web/src/components/PlayerProfile/PlayerBestRuns/PlayerBestRuns.scss
index 32a8c56..4c1b23c 100644
--- a/web/src/components/PlayerProfile/PlayerBestRuns/PlayerBestRuns.scss
+++ b/web/src/components/PlayerProfile/PlayerBestRuns/PlayerBestRuns.scss
@@ -34,7 +34,6 @@
 // Mobile layout
 @media (max-width: 1024px) {
   .player-best-runs {
-
     .table-container[data-mode="best-runs"] {
       .table-row {
         display: grid;

diff --git a/web/src/components/PlayerProfil
e/PlayerBestRuns/PlayerBestRuns.scss b/web/s
rc/components/PlayerProfile/PlayerBestRuns/P
layerBestRuns.scss
index 32a8c56..4c1b23c 100644
--- a/web/src/components/PlayerProfile/Playe
rBestRuns/PlayerBestRuns.scss
+++ b/web/src/components/PlayerProfile/Playe
rBestRuns/PlayerBestRuns.scss
@@ -34,7 +34,6 @@
 // Mobile layout
 @media (max-width: 1024px) {
   .player-best-runs {
-
     .table-container[data-mode="best-runs"]
 {
       .table-row {
         display: grid;
 

diff --git a/web/src/components/PlayerProfile/PlayerHeader/PlayerHeader.astro b/we
b/src/components/PlayerProfile/PlayerHeader/PlayerHeader.astro
index ab7d353..76ad81f 100644
--- a/web/src/components/PlayerProfile/PlayerHeader/PlayerHeader.astro
+++ b/web/src/components/PlayerProfile/PlayerHeader/PlayerHeader.astro
@@ -2,7 +2,10 @@
 import { formatDurationMMSS } from "../../../lib/utils";
 import { formatRankingWithBracket } from "../../../lib/ranking-utils";
 import { getClassTextClass } from "../../../lib/wow-constants";
-import { getEffectiveRealmSlug, getRealmDisplayName } from "../../../lib/realms";
+import {
+  getEffectiveRealmSlug,
+  getRealmDisplayName,
+} from "../../../lib/realms";
 import "./PlayerHeader.scss";
 
 interface SeasonData {
@@ -80,7 +83,9 @@ const avatarUrl = player.avatar_url
   </div>
 
   <div class="player-info-column">
-    <h1 class={`player-name ${getClassTextClass(player.class_name || "common")}`}
>
+    <h1
+      class={`player-name ${getClassTextClass(player.class_name || "common")}`}
+    >
       {player.name}
     </h1>
     {
@@ -136,7 +141,9 @@ const avatarUrl = player.avatar_url
   </div>
 
   <div class="ranking-column">
-    <div class="stat-label">{leaderboardRealmLabel || player.realm_name || player
.realm_slug} Rank</div>
+    <div class="stat-label">
+      {leaderboardRealmLabel || player.realm_name || player.realm_slug} Rank
+    </div>
     <div
       class="stat-value"
       set:html={formatRankingWithBracket(

diff --git a/web/src/components/PlayerProfil
e/PlayerHeader/PlayerHeader.astro b/web/src/
components/PlayerProfile/PlayerHeader/Player
Header.astro
index ab7d353..76ad81f 100644
--- a/web/src/components/PlayerProfile/Playe
rHeader/PlayerHeader.astro
+++ b/web/src/components/PlayerProfile/Playe
rHeader/PlayerHeader.astro
@@ -2,7 +2,10 @@
 import { formatDurationMMSS } from "../../.
./lib/utils";
 import { formatRankingWithBracket } from ".
./../../lib/ranking-utils";
 import { getClassTextClass } from "../../..
/lib/wow-constants";
-import { getEffectiveRealmSlug, getRealmDis
playName } from "../../../lib/realms";
+import {
+  getEffectiveRealmSlug,
+  getRealmDisplayName,
+} from "../../../lib/realms";
 import "./PlayerHeader.scss";
 
 interface SeasonData {
@@ -80,7 +83,9 @@ const avatarUrl = player.a
vatar_url
   </div>
 
   <div class="player-info-column">
-    <h1 class={`player-name ${getClassTextC
lass(player.class_name || "common")}`}>
+    <h1
+      class={`player-name ${getClassTextCla
ss(player.class_name || "common")}`}
+    >
       {player.name}
     </h1>
     {
@@ -136,7 +141,9 @@ const avatarUrl = player
.avatar_url
   </div>
 
   <div class="ranking-column">
-    <div class="stat-label">{leaderboardRea
lmLabel || player.realm_name || player.realm
_slug} Rank</div>
+    <div class="stat-label">
+      {leaderboardRealmLabel || player.real
m_name || player.realm_slug} Rank
+    </div>
     <div
       class="stat-value"
       set:html={formatRankingWithBracket(
 

diff --git a/web/src/components/PlayerSearch/PlayerSearch.scss b/web/src/component
s/PlayerSearch/PlayerSearch.scss
index 813f04c..781bcd0 100644
--- a/web/src/components/PlayerSearch/PlayerSearch.scss
+++ b/web/src/components/PlayerSearch/PlayerSearch.scss
@@ -4,7 +4,6 @@
   margin-bottom: 24px;
 }
 
-
 .search-input-wrapper {
   position: relative;
   display: flex;

diff --git a/web/src/components/PlayerSearch
/PlayerSearch.scss b/web/src/components/Play
erSearch/PlayerSearch.scss
index 813f04c..781bcd0 100644
--- a/web/src/components/PlayerSearch/Player
Search.scss
+++ b/web/src/components/PlayerSearch/Player
Search.scss
@@ -4,7 +4,6 @@
   margin-bottom: 24px;
 }
 
-
 .search-input-wrapper {
   position: relative;
   display: flex;
 

diff --git a/web/src/components/Table/Table.scss b/web/src/components/Table/Table.
scss
index e51a080..f28e911 100644
--- a/web/src/components/Table/Table.scss
+++ b/web/src/components/Table/Table.scss
@@ -51,7 +51,6 @@
 
 // Grid Templates for different table modes
 .table-container[data-mode="status"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 200px 120px 2fr 200px 220px 90px;
@@ -59,7 +58,6 @@
 }
 
 .table-container[data-mode="leaderboard"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 80px 120px 2fr 120px;
@@ -67,7 +65,6 @@
 }
 
 .table-container[data-mode="players"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 80px 2fr 1.5fr 140px;
@@ -75,7 +72,6 @@
 }
 
 .table-container[data-mode="best-runs"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 200px 120px 2fr 100px 100px 100px;
@@ -105,7 +101,6 @@
 // Responsive
 @media (max-width: 920px) {
   .table-container[data-mode="status"] {
-
     .table-header,
     .table-row {
       grid-template-columns: 1fr 0.6fr 1.2fr 0.8fr 0.6fr 0.5fr;
@@ -247,5 +242,4 @@
       margin-top: 4px;
     }
   }
-
 }

diff --git a/web/src/components/Table/Table.
scss b/web/src/components/Table/Table.scss
index e51a080..f28e911 100644
--- a/web/src/components/Table/Table.scss
+++ b/web/src/components/Table/Table.scss
@@ -51,7 +51,6 @@
 
 // Grid Templates for different table modes
 .table-container[data-mode="status"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 200px 120px 2fr 
200px 220px 90px;
@@ -59,7 +58,6 @@
 }
 
 .table-container[data-mode="leaderboard"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 80px 120px 2fr 1
20px;
@@ -67,7 +65,6 @@
 }
 
 .table-container[data-mode="players"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 80px 2fr 1.5fr 1
40px;
@@ -75,7 +72,6 @@
 }
 
 .table-container[data-mode="best-runs"] {
-
   .table-header,
   .table-row {
     grid-template-columns: 200px 120px 2fr 
100px 100px 100px;
@@ -105,7 +101,6 @@
 // Responsive
 @media (max-width: 920px) {
   .table-container[data-mode="status"] {
-
     .table-header,
     .table-row {
       grid-template-columns: 1fr 0.6fr 1.2f
r 0.8fr 0.6fr 0.5fr;
@@ -247,5 +242,4 @@
       margin-top: 4px;
     }
   }
-
 }
 

diff --git a/web/src/lib/api.ts b/web/src/lib/api.ts
index c70680e..db9d666 100644
--- a/web/src/lib/api.ts
+++ b/web/src/lib/api.ts
@@ -115,11 +115,32 @@ export async function fetchLeaderboard(
   seasonId: number = 1,
 ): Promise<LeaderboardData> {
   if (region === "global") {
-    return fetchGlobalLeaderboard(dungeonId, page, teamFilter, origin, seasonId);
+    return fetchGlobalLeaderboard(
+      dungeonId,
+      page,
+      teamFilter,
+      origin,
+      seasonId,
+    );
   } else if (realm === "all") {
-    return fetchRegionalLeaderboard(region, dungeonId, page, teamFilter, origin, 
seasonId);
+    return fetchRegionalLeaderboard(
+      region,
+      dungeonId,
+      page,
+      teamFilter,
+      origin,
+      seasonId,
+    );
   } else {
-    return fetchRealmLeaderboard(region, realm, dungeonId, page, teamFilter, orig
in, seasonId);
+    return fetchRealmLeaderboard(
+      region,
+      realm,
+      dungeonId,
+      page,
+      teamFilter,
+      origin,
+      seasonId,
+    );
   }
 }
 

diff --git a/web/src/lib/api.ts b/web/src/li
b/api.ts
index c70680e..db9d666 100644
--- a/web/src/lib/api.ts
+++ b/web/src/lib/api.ts
@@ -115,11 +115,32 @@ export async function 
fetchLeaderboard(
   seasonId: number = 1,
 ): Promise<LeaderboardData> {
   if (region === "global") {
-    return fetchGlobalLeaderboard(dungeonId
, page, teamFilter, origin, seasonId);
+    return fetchGlobalLeaderboard(
+      dungeonId,
+      page,
+      teamFilter,
+      origin,
+      seasonId,
+    );
   } else if (realm === "all") {
-    return fetchRegionalLeaderboard(region,
 dungeonId, page, teamFilter, origin, season
Id);
+    return fetchRegionalLeaderboard(
+      region,
+      dungeonId,
+      page,
+      teamFilter,
+      origin,
+      seasonId,
+    );
   } else {
-    return fetchRealmLeaderboard(region, re
alm, dungeonId, page, teamFilter, origin, se
asonId);
+    return fetchRealmLeaderboard(
+      region,
+      realm,
+      dungeonId,
+      page,
+      teamFilter,
+      origin,
+      seasonId,
+    );
   }
 }
 
 

diff --git a/web/src/lib/bracket-colors.ts b/web/src/lib/bracket-colors.ts
index e31139d..9f2f8fc 100644
--- a/web/src/lib/bracket-colors.ts
+++ b/web/src/lib/bracket-colors.ts
@@ -37,7 +37,9 @@ export function getBracketClass(bracket: string | null | undefin
ed): string {
 
 // Check if bracket is high tier (excellent, legendary or artifact)
 export function isHighTierBracket(bracket: string | null | undefined): boolean {
-  return bracket === "artifact" || bracket === "excellent" || bracket === "legend
ary";
+  return (
+    bracket === "artifact" || bracket === "excellent" || bracket === "legendary"
+  );
 }
 
 // Get bracket rank priority (lower number = higher priority)

diff --git a/web/src/lib/bracket-colors.ts b
/web/src/lib/bracket-colors.ts
index e31139d..9f2f8fc 100644
--- a/web/src/lib/bracket-colors.ts
+++ b/web/src/lib/bracket-colors.ts
@@ -37,7 +37,9 @@ export function getBracket
Class(bracket: string | null | undefined): s
tring {
 
 // Check if bracket is high tier (excellent
, legendary or artifact)
 export function isHighTierBracket(bracket: 
string | null | undefined): boolean {
-  return bracket === "artifact" || bracket 
=== "excellent" || bracket === "legendary";
+  return (
+    bracket === "artifact" || bracket === "
excellent" || bracket === "legendary"
+  );
 }
 
 // Get bracket rank priority (lower number 
= higher priority)
 

diff --git a/web/src/lib/utils.ts b/web/src/lib/utils.ts
index c27a7c1..4c6c386 100644
--- a/web/src/lib/utils.ts
+++ b/web/src/lib/utils.ts
@@ -182,16 +182,23 @@ export function buildPlayerProfileURL(
 // Build Players tab URL path from filters
 export function buildPlayersLeaderboardURL(
   scope: "global" | "regional" | "realm",
-  opts?: { region?: string; realmSlug?: string; classKey?: string; page?: number 
},
+  opts?: {
+    region?: string;
+    realmSlug?: string;
+    classKey?: string;
+    page?: number;
+  },
 ): string {
   const cls = (opts?.classKey || "").toLowerCase();
   const reg = (opts?.region || "").toLowerCase();
   const realm = (opts?.realmSlug || "").toLowerCase();
   let path = "/challenge-mode/players";
   if (scope === "global") {
-    if (cls) path += `/global/${cls}`; else path += `/global`;
+    if (cls) path += `/global/${cls}`;
+    else path += `/global`;
   } else if (scope === "regional") {
-    if (reg) path += `/${reg}`; else path += `/us`;
+    if (reg) path += `/${reg}`;
+    else path += `/us`;
     if (cls) path += `/${cls}`;
   } else if (scope === "realm") {
     if (reg) path += `/${reg}`;
@@ -383,7 +390,9 @@ export function filterByRegion<T extends { region?: string }>(
 ): T[] {
   if (!region) return items;
   const normalized = region.toLowerCase();
-  return items.filter((item) => (item.region || "").toLowerCase() === normalized)
;
+  return items.filter(
+    (item) => (item.region || "").toLowerCase() === normalized,
+  );
 }
 
 export function safeArray<T>(value: any): T[] {

diff --git a/web/src/lib/utils.ts b/web/src/
lib/utils.ts
index c27a7c1..4c6c386 100644
--- a/web/src/lib/utils.ts
+++ b/web/src/lib/utils.ts
@@ -182,16 +182,23 @@ export function buildP
layerProfileURL(
 // Build Players tab URL path from filters
 export function buildPlayersLeaderboardURL(
   scope: "global" | "regional" | "realm",
-  opts?: { region?: string; realmSlug?: str
ing; classKey?: string; page?: number },
+  opts?: {
+    region?: string;
+    realmSlug?: string;
+    classKey?: string;
+    page?: number;
+  },
 ): string {
   const cls = (opts?.classKey || "").toLowe
rCase();
   const reg = (opts?.region || "").toLowerC
ase();
   const realm = (opts?.realmSlug || "").toL
owerCase();
   let path = "/challenge-mode/players";
   if (scope === "global") {
-    if (cls) path += `/global/${cls}`; else
 path += `/global`;
+    if (cls) path += `/global/${cls}`;
+    else path += `/global`;
   } else if (scope === "regional") {
-    if (reg) path += `/${reg}`; else path +
= `/us`;
+    if (reg) path += `/${reg}`;
+    else path += `/us`;
     if (cls) path += `/${cls}`;
   } else if (scope === "realm") {
     if (reg) path += `/${reg}`;
@@ -383,7 +390,9 @@ export function filterBy
Region<T extends { region?: string }>(
 ): T[] {
   if (!region) return items;
   const normalized = region.toLowerCase();
-  return items.filter((item) => (item.regio
n || "").toLowerCase() === normalized);
+  return items.filter(
+    (item) => (item.region || "").toLowerCa
se() === normalized,
+  );
 }
 
 export function safeArray<T>(value: any): T
[] {
 

diff --git a/web/src/pages/challenge-mode/[season]/[...slug].astro b/web/src/pages
/challenge-mode/[season]/[...slug].astro
index 7f7fa7d..4414cf9 100644
--- a/web/src/pages/challenge-mode/[season]/[...slug].astro
+++ b/web/src/pages/challenge-mode/[season]/[...slug].astro
@@ -26,8 +26,7 @@ const pathSegments = Astro.url.pathname.split("/").filter(Boolea
n);
 const seasonIdx = pathSegments.findIndex((segment) =>
   /^season\d+$/i.test(segment),
 );
-const slugParts =
-  seasonIdx >= 0 ? pathSegments.slice(seasonIdx + 1) : [];
+const slugParts = seasonIdx >= 0 ? pathSegments.slice(seasonIdx + 1) : [];
 
 // defaults
 let regionParam = "global";

diff --git a/web/src/pages/challenge-mode/[s
eason]/[...slug].astro b/web/src/pages/chall
enge-mode/[season]/[...slug].astro
index 7f7fa7d..4414cf9 100644
--- a/web/src/pages/challenge-mode/[season]/
[...slug].astro
+++ b/web/src/pages/challenge-mode/[season]/
[...slug].astro
@@ -26,8 +26,7 @@ const pathSegments = Astro
.url.pathname.split("/").filter(Boolean);
 const seasonIdx = pathSegments.findIndex((s
egment) =>
   /^season\d+$/i.test(segment),
 );
-const slugParts =
-  seasonIdx >= 0 ? pathSegments.slice(seaso
nIdx + 1) : [];
+const slugParts = seasonIdx >= 0 ? pathSegm
ents.slice(seasonIdx + 1) : [];
 
 // defaults
 let regionParam = "global";
 

diff --git a/web/src/pages/player/[...slug].astro b/web/src/pages/player/[...slug]
.astro
index 16cbec2..292686e 100644
--- a/web/src/pages/player/[...slug].astro
+++ b/web/src/pages/player/[...slug].astro
@@ -18,7 +18,12 @@ let error: string | null = null;
 if (region && realmSlug && playerName) {
   try {
     const origin = Astro.url?.origin || Astro.site || "";
-    playerData = await fetchPlayerProfile(region, realmSlug, playerName, origin);
+    playerData = await fetchPlayerProfile(
+      region,
+      realmSlug,
+      playerName,
+      origin,
+    );
   } catch (err: any) {
     console.error("[PlayerPage] Error fetching player data:", err);
     error = err.message || "Failed to load player data";

diff --git a/web/src/pages/player/[...slug].
astro b/web/src/pages/player/[...slug].astro
index 16cbec2..292686e 100644
--- a/web/src/pages/player/[...slug].astro
+++ b/web/src/pages/player/[...slug].astro
@@ -18,7 +18,12 @@ let error: string | null 
= null;
 if (region && realmSlug && playerName) {
   try {
     const origin = Astro.url?.origin || Ast
ro.site || "";
-    playerData = await fetchPlayerProfile(r
egion, realmSlug, playerName, origin);
+    playerData = await fetchPlayerProfile(
+      region,
+      realmSlug,
+      playerName,
+      origin,
+    );
   } catch (err: any) {
     console.error("[PlayerPage] Error fetch
ing player data:", err);
     error = err.message || "Failed to load 
player data";
 

diff --git a/web/src/styles/abstracts/_index.scss b/web/src/styles/abstracts/_inde
x.scss
index 7011938..5811af4 100644
--- a/web/src/styles/abstracts/_index.scss
+++ b/web/src/styles/abstracts/_index.scss
@@ -1 +1 @@
-@forward 'colors';
+@forward "colors";

diff --git a/web/src/styles/abstracts/_index
.scss b/web/src/styles/abstracts/_index.scss
index 7011938..5811af4 100644
--- a/web/src/styles/abstracts/_index.scss
+++ b/web/src/styles/abstracts/_index.scss
@@ -1 +1 @@
-@forward 'colors';
+@forward "colors";
 

diff --git a/web/src/styles/components.scss b/web/src/styles/components.scss
index f0c16f2..f111ad6 100644
--- a/web/src/styles/components.scss
+++ b/web/src/styles/components.scss
@@ -430,7 +430,6 @@
 }
 
 @keyframes dots {
-
   0%,
   20% {
     content: "";
@@ -484,7 +483,6 @@
   }
 }
 
-
 .leaderboard-table {
   display: table;
   width: 100%;
@@ -631,7 +629,6 @@
     }
   }
 
-
   .mobile-card-header {
     display: flex;
     justify-content: space-between;

diff --git a/web/src/styles/components.scss 
b/web/src/styles/components.scss
index f0c16f2..f111ad6 100644
--- a/web/src/styles/components.scss
+++ b/web/src/styles/components.scss
@@ -430,7 +430,6 @@
 }
 
 @keyframes dots {
-
   0%,
   20% {
     content: "";
@@ -484,7 +483,6 @@
   }
 }
 
-
 .leaderboard-table {
   display: table;
   width: 100%;
@@ -631,7 +629,6 @@
     }
   }
 
-
   .mobile-card-header {
     display: flex;
     justify-content: space-between;
 

diff --git a/web/src/styles/core/_utilities.scss b/web/src/styles/core/_utilities.
scss
index e275356..b03fc73 100644
--- a/web/src/styles/core/_utilities.scss
+++ b/web/src/styles/core/_utilities.scss
@@ -472,7 +472,9 @@
   border: 1px solid var(--border-color);
   border-radius: $radius-sm;
   font-size: $font-size-md;
-  transition: border-color 0.2s ease, box-shadow 0.2s ease;
+  transition:
+    border-color 0.2s ease,
+    box-shadow 0.2s ease;
 
   &:focus {
     outline: none;
@@ -518,7 +520,9 @@
   min-width: 140px;
   font-size: 0.95em;
   cursor: pointer;
-  transition: border-color 0.2s ease, box-shadow 0.2s ease;
+  transition:
+    border-color 0.2s ease,
+    box-shadow 0.2s ease;
 
   &:hover {
     border-color: var(--text-secondary);
@@ -547,7 +551,10 @@
   border: 1px solid transparent;
   font-weight: $font-weight-semibold;
   cursor: pointer;
-  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease
;
+  transition:
+    background-color 0.2s ease,
+    color 0.2s ease,
+    border-color 0.2s ease;
   text-decoration: none;
 }
 

diff --git a/web/src/styles/core/_utilities.
scss b/web/src/styles/core/_utilities.scss
index e275356..b03fc73 100644
--- a/web/src/styles/core/_utilities.scss
+++ b/web/src/styles/core/_utilities.scss
@@ -472,7 +472,9 @@
   border: 1px solid var(--border-color);
   border-radius: $radius-sm;
   font-size: $font-size-md;
-  transition: border-color 0.2s ease, box-s
hadow 0.2s ease;
+  transition:
+    border-color 0.2s ease,
+    box-shadow 0.2s ease;
 
   &:focus {
     outline: none;
@@ -518,7 +520,9 @@
   min-width: 140px;
   font-size: 0.95em;
   cursor: pointer;
-  transition: border-color 0.2s ease, box-s
hadow 0.2s ease;
+  transition:
+    border-color 0.2s ease,
+    box-shadow 0.2s ease;
 
   &:hover {
     border-color: var(--text-secondary);
@@ -547,7 +551,10 @@
   border: 1px solid transparent;
   font-weight: $font-weight-semibold;
   cursor: pointer;
-  transition: background-color 0.2s ease, c
olor 0.2s ease, border-color 0.2s ease;
+  transition:
+    background-color 0.2s ease,
+    color 0.2s ease,
+    border-color 0.2s ease;
   text-decoration: none;
 }
 
 

diff --git a/web/src/styles/utilities/_ui.scss b/web/src/styles/utilities/_ui.scss
index 43ea29b..b045e26 100644
--- a/web/src/styles/utilities/_ui.scss
+++ b/web/src/styles/utilities/_ui.scss
@@ -1,4 +1,4 @@
-@use 'abstracts/colors' as *;
+@use "abstracts/colors" as *;
 
 .border-solid {
   border: 1px solid $border-active;

diff --git a/web/src/styles/utilities/_ui.sc
ss b/web/src/styles/utilities/_ui.scss
index 43ea29b..b045e26 100644
--- a/web/src/styles/utilities/_ui.scss
+++ b/web/src/styles/utilities/_ui.scss
@@ -1,4 +1,4 @@
-@use 'abstracts/colors' as *;
+@use "abstracts/colors" as *;
 
 .border-solid {
   border: 1px solid $border-active;
 

diff --git a/web/src/styles/variables/_colors.scss b/web/src/styles/variables/_col
ors.scss
index c80bfde..516cee4 100644
--- a/web/src/styles/variables/_colors.scss
+++ b/web/src/styles/variables/_colors.scss
@@ -1,6 +1,7 @@
-@use 'abstracts/colors' as *;
+@use "abstracts/colors" as *;
 
 :root {
   --color-bg-primary: $bg-primary;
-  --color-bg-secondary:
+  --color-bg-secondary: 
+;
 }

diff --git a/web/src/styles/variables/_color
s.scss b/web/src/styles/variables/_colors.sc
ss
index c80bfde..516cee4 100644
--- a/web/src/styles/variables/_colors.scss
+++ b/web/src/styles/variables/_colors.scss
@@ -1,6 +1,7 @@
-@use 'abstracts/colors' as *;
+@use "abstracts/colors" as *;
 
 :root {
   --color-bg-primary: $bg-primary;
-  --color-bg-secondary:
+  --color-bg-secondary: 
+;
 }
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET