diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e5f1e71d8989b49ef1df57b4f7991d86227a3616..cec7d07e922c0f402729cd0e77d301ea35c61379 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,7 @@ stages:
   - 'deploy'
 
 .pnpm-tests:
-  image: node:23-alpine
+  image: node:24-alpine
   before_script:
     - corepack enable
     - corepack prepare pnpm@latest-10 --activate
diff --git a/Dockerfile b/Dockerfile
index e0b9b699d181987b49359522007d1336a0d0c92b..b6a037ab97dff1cf761282154f302ebd46c68944 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
 # syntax=docker/dockerfile:1
-FROM node:23-alpine AS base
+FROM node:24-alpine AS base
 
 
 
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 00e7db447d669530e8da74f0c71d9685db2700d1..dcf4ea8855b75b7951fa7fe6d83b52cf310e6008 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -13,7 +13,7 @@ importers:
         version: 14.1.2
       '@types/node':
         specifier: ^22.10.10
-        version: 22.15.12
+        version: 22.15.16
       bootstrap:
         specifier: 5.3.6
         version: 5.3.6(@popperjs/core@2.11.8)
@@ -70,7 +70,7 @@ importers:
         version: 3.5.3
       vitest:
         specifier: ^3.0.0
-        version: 3.1.3(@types/node@22.15.12)
+        version: 3.1.3(@types/node@22.15.16)
 
 packages:
 
@@ -342,8 +342,8 @@ packages:
   '@types/mdurl@2.0.0':
     resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
 
-  '@types/node@22.15.12':
-    resolution: {integrity: sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw==}
+  '@types/node@22.15.16':
+    resolution: {integrity: sha512-3pr+KjwpVujqWqOKT8mNR+rd09FqhBLwg+5L/4t0cNYBzm/yEiYGCxWttjaPBsLtAo+WFNoXzGJfolM1JuRXoA==}
 
   '@vitest/expect@3.1.3':
     resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==}
@@ -855,7 +855,7 @@ snapshots:
 
   '@types/mdurl@2.0.0': {}
 
-  '@types/node@22.15.12':
+  '@types/node@22.15.16':
     dependencies:
       undici-types: 6.21.0
 
@@ -866,13 +866,13 @@ snapshots:
       chai: 5.2.0
       tinyrainbow: 2.0.0
 
-  '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.12))':
+  '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.16))':
     dependencies:
       '@vitest/spy': 3.1.3
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 6.3.5(@types/node@22.15.12)
+      vite: 6.3.5(@types/node@22.15.16)
 
   '@vitest/pretty-format@3.1.3':
     dependencies:
@@ -1132,13 +1132,13 @@ snapshots:
 
   undici-types@6.21.0: {}
 
-  vite-node@3.1.3(@types/node@22.15.12):
+  vite-node@3.1.3(@types/node@22.15.16):
     dependencies:
       cac: 6.7.14
       debug: 4.4.0
       es-module-lexer: 1.7.0
       pathe: 2.0.3
-      vite: 6.3.5(@types/node@22.15.12)
+      vite: 6.3.5(@types/node@22.15.16)
     transitivePeerDependencies:
       - '@types/node'
       - jiti
@@ -1153,7 +1153,7 @@ snapshots:
       - tsx
       - yaml
 
-  vite@6.3.5(@types/node@22.15.12):
+  vite@6.3.5(@types/node@22.15.16):
     dependencies:
       esbuild: 0.25.4
       fdir: 6.4.4(picomatch@4.0.2)
@@ -1162,13 +1162,13 @@ snapshots:
       rollup: 4.40.1
       tinyglobby: 0.2.13
     optionalDependencies:
-      '@types/node': 22.15.12
+      '@types/node': 22.15.16
       fsevents: 2.3.3
 
-  vitest@3.1.3(@types/node@22.15.12):
+  vitest@3.1.3(@types/node@22.15.16):
     dependencies:
       '@vitest/expect': 3.1.3
-      '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.12))
+      '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.16))
       '@vitest/pretty-format': 3.1.3
       '@vitest/runner': 3.1.3
       '@vitest/snapshot': 3.1.3
@@ -1185,11 +1185,11 @@ snapshots:
       tinyglobby: 0.2.13
       tinypool: 1.0.2
       tinyrainbow: 2.0.0
-      vite: 6.3.5(@types/node@22.15.12)
-      vite-node: 3.1.3(@types/node@22.15.12)
+      vite: 6.3.5(@types/node@22.15.16)
+      vite-node: 3.1.3(@types/node@22.15.16)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.15.12
+      '@types/node': 22.15.16
     transitivePeerDependencies:
       - jiti
       - less
diff --git a/src/index.ts b/src/index.ts
index 203cc1b5b3a603ec68536b0a553d969c5abd5b1e..dec245353b5f93a865bd3a38aaa88432db459112 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -101,14 +101,19 @@ async function run(inputDir: string, outputDir: string, options: CliOptions) {
 
                     function getNum(x: Resolution) {
                         return parseInt(
-                            x.number.match(/\.(\d+)[PFB]?$/)?.[1],
+                            x.number.match(/\d+\.(\d+)[PBF]?/)?.[1],
                             10,
                         );
                     }
 
+                    function getType(x: Resolution) {
+                        return x.number.match(/\d+\.\d+([PBF]?)/)?.[1];
+                    }
+
                     // This works because `0` and `NaN` are falsy. :)
                     return (
-                        tOrder[b.type] - tOrder[a.type] || getNum(b) - getNum(a)
+                        tOrder[getType(b)] - tOrder[getType(a)]
+                        || getNum(b) - getNum(a)
                     );
                 }),
             },