diff --git a/package-lock.json b/package-lock.json
index 657a4fe..2c23260 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
       "version": "2.10.0",
       "dependencies": {
         "@angular/animations": "^18.1.0",
-        "@angular/cdk": "^17.3.10",
+        "@angular/cdk": "^18.1.0",
         "@angular/common": "^18.1.0",
         "@angular/compiler": "^18.1.0",
         "@angular/core": "^18.1.0",
@@ -27,7 +27,7 @@
         "hammerjs": "^2.0.8",
         "intersection-observer": "^0.5.0",
         "nanoid": "^4.0.0",
-        "ng2-date-picker": "^17.0.0",
+        "ng2-date-picker": "^18.0.0",
         "popper.js": "^1.12.9",
         "reflect-metadata": "^0.1.9",
         "rxjs": "~7.5.0",
@@ -722,9 +722,9 @@
       }
     },
     "node_modules/@angular/cdk": {
-      "version": "17.3.10",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.10.tgz",
-      "integrity": "sha512-b1qktT2c1TTTe5nTji/kFAVW92fULK0YhYAvJ+BjZTPKu2FniZNe8o4qqQ0pUuvtMu+ZQxp/QqFYoidIVCjScg==",
+      "version": "18.1.0",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.1.0.tgz",
+      "integrity": "sha512-GWUyJQ7KdOS0WwQPp7UKnRd7lUKvOrMvktqNWfSxBy/VEdyEeKlXfghk6GQ4u1RXFZ2RU0m1KhX8rY9srYJOwA==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -732,8 +732,8 @@
         "parse5": "^7.1.2"
       },
       "peerDependencies": {
-        "@angular/common": "^17.0.0 || ^18.0.0",
-        "@angular/core": "^17.0.0 || ^18.0.0",
+        "@angular/common": "^18.0.0 || ^19.0.0",
+        "@angular/core": "^18.0.0 || ^19.0.0",
         "rxjs": "^6.5.3 || ^7.4.0"
       }
     },
@@ -10471,16 +10471,16 @@
       "dev": true
     },
     "node_modules/ng2-date-picker": {
-      "version": "17.0.0",
-      "resolved": "https://registry.npmjs.org/ng2-date-picker/-/ng2-date-picker-17.0.0.tgz",
-      "integrity": "sha512-crT9X71CYGhU7k5oyjRZHhjyoeTxcM6LIQzJrIde5d4iyzIPA7pZJ8B3wrET1qjbsHKJGrVoiMSuH2YBsIwM0g==",
+      "version": "18.0.0",
+      "resolved": "https://registry.npmjs.org/ng2-date-picker/-/ng2-date-picker-18.0.0.tgz",
+      "integrity": "sha512-5uYwNRxRY5duDlWNuMSz+1u5BUWprZgn9Ythkqx/aJ/PfE2c7SqutfFCQbPGMJcGDcN3coD6EY02suxbubMf3g==",
       "dependencies": {
         "tslib": "^2.4.0"
       },
       "peerDependencies": {
-        "@angular/cdk": "^17.0.0",
-        "@angular/common": "^17.0.2",
-        "@angular/core": "^17.0.2",
+        "@angular/cdk": "^18.0.0",
+        "@angular/common": "^18.0.0",
+        "@angular/core": "^18.0.0",
         "dayjs": "^1.11.4"
       }
     },
@@ -14466,9 +14466,9 @@
       }
     },
     "@angular/cdk": {
-      "version": "17.3.10",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.10.tgz",
-      "integrity": "sha512-b1qktT2c1TTTe5nTji/kFAVW92fULK0YhYAvJ+BjZTPKu2FniZNe8o4qqQ0pUuvtMu+ZQxp/QqFYoidIVCjScg==",
+      "version": "18.1.0",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.1.0.tgz",
+      "integrity": "sha512-GWUyJQ7KdOS0WwQPp7UKnRd7lUKvOrMvktqNWfSxBy/VEdyEeKlXfghk6GQ4u1RXFZ2RU0m1KhX8rY9srYJOwA==",
       "requires": {
         "parse5": "^7.1.2",
         "tslib": "^2.3.0"
@@ -21507,9 +21507,9 @@
       "dev": true
     },
     "ng2-date-picker": {
-      "version": "17.0.0",
-      "resolved": "https://registry.npmjs.org/ng2-date-picker/-/ng2-date-picker-17.0.0.tgz",
-      "integrity": "sha512-crT9X71CYGhU7k5oyjRZHhjyoeTxcM6LIQzJrIde5d4iyzIPA7pZJ8B3wrET1qjbsHKJGrVoiMSuH2YBsIwM0g==",
+      "version": "18.0.0",
+      "resolved": "https://registry.npmjs.org/ng2-date-picker/-/ng2-date-picker-18.0.0.tgz",
+      "integrity": "sha512-5uYwNRxRY5duDlWNuMSz+1u5BUWprZgn9Ythkqx/aJ/PfE2c7SqutfFCQbPGMJcGDcN3coD6EY02suxbubMf3g==",
       "requires": {
         "tslib": "^2.4.0"
       }
diff --git a/package.json b/package.json
index 00b51fb..412f47a 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
   "private": true,
   "dependencies": {
     "@angular/animations": "^18.1.0",
-    "@angular/cdk": "^17.3.10",
+    "@angular/cdk": "^18.1.0",
     "@angular/common": "^18.1.0",
     "@angular/compiler": "^18.1.0",
     "@angular/core": "^18.1.0",
@@ -29,7 +29,7 @@
     "hammerjs": "^2.0.8",
     "intersection-observer": "^0.5.0",
     "nanoid": "^4.0.0",
-    "ng2-date-picker": "^17.0.0",
+    "ng2-date-picker": "^18.0.0",
     "popper.js": "^1.12.9",
     "reflect-metadata": "^0.1.9",
     "rxjs": "~7.5.0",
diff --git a/src/app/admin/admin-navbar/admin-navbar.less b/src/app/admin/admin-navbar/admin-navbar.less
index 83bb325..e162db5 100644
--- a/src/app/admin/admin-navbar/admin-navbar.less
+++ b/src/app/admin/admin-navbar/admin-navbar.less
@@ -1,4 +1,4 @@
-@import "admin-navbar.dark";
+@import "admin-navbar.dark.less";
 
 .nav-admin {
   position: fixed;
diff --git a/src/app/admin/bangumi-card/bangumi-card.less b/src/app/admin/bangumi-card/bangumi-card.less
index 125b71d..daea945 100644
--- a/src/app/admin/bangumi-card/bangumi-card.less
+++ b/src/app/admin/bangumi-card/bangumi-card.less
@@ -1,4 +1,4 @@
-@import "bangumi-card.dark";
+@import "bangumi-card.dark.less";
 @image-width: 10rem;
 
 bangumi-card {
diff --git a/src/app/admin/list-bangumi/list-bangumi.less b/src/app/admin/list-bangumi/list-bangumi.less
index 55522a3..dc08c9e 100644
--- a/src/app/admin/list-bangumi/list-bangumi.less
+++ b/src/app/admin/list-bangumi/list-bangumi.less
@@ -1,4 +1,4 @@
-@import 'list-bangumi.dark';
+@import 'list-bangumi.dark.less';
 
 .search-action {
   width: 20rem;
diff --git a/src/app/home/bangumi-account-binding/bangumi-account-binding.less b/src/app/home/bangumi-account-binding/bangumi-account-binding.less
index 4940868..d50d5d5 100644
--- a/src/app/home/bangumi-account-binding/bangumi-account-binding.less
+++ b/src/app/home/bangumi-account-binding/bangumi-account-binding.less
@@ -1,6 +1,6 @@
-@import '../../_dark-theme-helpers';
-@import '../web-hook/web-hook.dark';
-@import 'bangumi-account-binding.dark';
+@import '../../_dark-theme-helpers.less';
+@import '../web-hook/web-hook.dark.less';
+@import 'bangumi-account-binding.dark.less';
 
 :host {
   background-color: #f0f0f0;
diff --git a/src/app/home/bangumi-card/bangumi-card.less b/src/app/home/bangumi-card/bangumi-card.less
index 6dc05fa..c984fab 100644
--- a/src/app/home/bangumi-card/bangumi-card.less
+++ b/src/app/home/bangumi-card/bangumi-card.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import 'bangumi-card.dark';
+@import '../../_dark-theme-helpers.less';
+@import 'bangumi-card.dark.less';
 
 @image-width: 10rem;
 
diff --git a/src/app/home/bangumi-detail/bangumi-detail.less b/src/app/home/bangumi-detail/bangumi-detail.less
index ad667bf..5f60766 100644
--- a/src/app/home/bangumi-detail/bangumi-detail.less
+++ b/src/app/home/bangumi-detail/bangumi-detail.less
@@ -1,4 +1,4 @@
-@import 'bangumi-detail.dark';
+@import 'bangumi-detail.dark.less';
 
 .loading-wrapper {
   position: static !important;
diff --git a/src/app/home/bangumi-extra-info/bangumi-character/bangumi-character.less b/src/app/home/bangumi-extra-info/bangumi-character/bangumi-character.less
index 90eac07..5e79aa6 100644
--- a/src/app/home/bangumi-extra-info/bangumi-character/bangumi-character.less
+++ b/src/app/home/bangumi-extra-info/bangumi-character/bangumi-character.less
@@ -1,4 +1,4 @@
-@import '../bangumi-extra-info.dark';
+@import '../bangumi-extra-info.dark.less';
 
 :host {
   display: block;
diff --git a/src/app/home/bangumi-extra-info/bangumi-staff-info/bangumi-staff-info.less b/src/app/home/bangumi-extra-info/bangumi-staff-info/bangumi-staff-info.less
index 1b18571..4e4ac40 100644
--- a/src/app/home/bangumi-extra-info/bangumi-staff-info/bangumi-staff-info.less
+++ b/src/app/home/bangumi-extra-info/bangumi-staff-info/bangumi-staff-info.less
@@ -1,4 +1,4 @@
-@import '../bangumi-extra-info.dark';
+@import '../bangumi-extra-info.dark.less';
 :host {
   display: block;
   width: 100%;
diff --git a/src/app/home/bangumi-list/bangumi-list.less b/src/app/home/bangumi-list/bangumi-list.less
index 48df334..d73cb93 100644
--- a/src/app/home/bangumi-list/bangumi-list.less
+++ b/src/app/home/bangumi-list/bangumi-list.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import 'bangumi-list.dark';
+@import '../../_dark-theme-helpers.less';
+@import 'bangumi-list.dark.less';
 
 :host {
   position: fixed;
diff --git a/src/app/home/favorite-list/favorite-list.less b/src/app/home/favorite-list/favorite-list.less
index 8521358..44492b0 100644
--- a/src/app/home/favorite-list/favorite-list.less
+++ b/src/app/home/favorite-list/favorite-list.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import 'favorite-list.dark';
+@import '../../_dark-theme-helpers.less';
+@import 'favorite-list.dark.less';
 
 :host {
   position: fixed;
diff --git a/src/app/home/home.less b/src/app/home/home.less
index fd3e7a2..19ed8fe 100644
--- a/src/app/home/home.less
+++ b/src/app/home/home.less
@@ -1,5 +1,5 @@
-@import '../_dark-theme-helpers';
-@import 'home.dark';
+@import '../_dark-theme-helpers.less';
+@import 'home.dark.less';
 
 @navbarHeight: 3.5rem;
 @footerHeight: 8em;
diff --git a/src/app/home/my-history/history-card/history-card.less b/src/app/home/my-history/history-card/history-card.less
index 02e5d72..61a57d7 100644
--- a/src/app/home/my-history/history-card/history-card.less
+++ b/src/app/home/my-history/history-card/history-card.less
@@ -1,5 +1,5 @@
-@import '../../../_dark-theme-helpers';
-@import 'history-card.dark';
+@import '../../../_dark-theme-helpers.less';
+@import 'history-card.dark.less';
 
 @image-width: 8rem;
 @image-height: 4.5rem;
diff --git a/src/app/home/my-history/my-history.less b/src/app/home/my-history/my-history.less
index a70329e..6c3a920 100644
--- a/src/app/home/my-history/my-history.less
+++ b/src/app/home/my-history/my-history.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import './history.dark';
+@import '../../_dark-theme-helpers.less';
+@import './history.dark.less';
 
 :host {
   position: fixed;
diff --git a/src/app/home/play-episode/comment/comment.less b/src/app/home/play-episode/comment/comment.less
index e579a67..f0f68ec 100644
--- a/src/app/home/play-episode/comment/comment.less
+++ b/src/app/home/play-episode/comment/comment.less
@@ -1,5 +1,5 @@
-@import '../../../_dark-theme-helpers';
-@import 'comment.dark';
+@import '../../../_dark-theme-helpers.less';
+@import 'comment.dark.less';
 
 bangumi-comment {
   display: block;
diff --git a/src/app/home/play-episode/play-episode.less b/src/app/home/play-episode/play-episode.less
index 7078b79..0d600a3 100644
--- a/src/app/home/play-episode/play-episode.less
+++ b/src/app/home/play-episode/play-episode.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import 'play-episode.dark';
+@import '../../_dark-theme-helpers.less';
+@import 'play-episode.dark.less';
 
 :host.dark-theme {
   .dark-dropdown();
diff --git a/src/app/home/rating/edit-review-dialog/edit-review-dialog.less b/src/app/home/rating/edit-review-dialog/edit-review-dialog.less
index 4c22b33..83ed0a6 100644
--- a/src/app/home/rating/edit-review-dialog/edit-review-dialog.less
+++ b/src/app/home/rating/edit-review-dialog/edit-review-dialog.less
@@ -1,5 +1,5 @@
-@import '../../../_dark-theme-helpers';
-@import 'edit-review-dialog.dark';
+@import '../../../_dark-theme-helpers.less';
+@import 'edit-review-dialog.dark.less';
 
 :host {
   display: block;
diff --git a/src/app/home/rating/my-review/my-review.less b/src/app/home/rating/my-review/my-review.less
index c8deef1..290bb0e 100644
--- a/src/app/home/rating/my-review/my-review.less
+++ b/src/app/home/rating/my-review/my-review.less
@@ -1,5 +1,5 @@
-@import '../../../_dark-theme-helpers';
-@import 'my-review.dark';
+@import '../../../_dark-theme-helpers.less';
+@import 'my-review.dark.less';
 
 :host {
   display: block;
diff --git a/src/app/home/rating/rating.less b/src/app/home/rating/rating.less
index 74cdeea..a3c6c50 100644
--- a/src/app/home/rating/rating.less
+++ b/src/app/home/rating/rating.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import 'rating.dark';
+@import '../../_dark-theme-helpers.less';
+@import 'rating.dark.less';
 
 :host {
   display: block;
diff --git a/src/app/home/user-center/user-center.less b/src/app/home/user-center/user-center.less
index f70085d..b9a6edb 100644
--- a/src/app/home/user-center/user-center.less
+++ b/src/app/home/user-center/user-center.less
@@ -1,5 +1,5 @@
-@import '../../_dark-theme-helpers';
-@import '../web-hook/web-hook.dark';
+@import '../../_dark-theme-helpers.less';
+@import '../web-hook/web-hook.dark.less';
 
 :host {
   background-color: #f0f0f0;
diff --git a/src/app/home/web-hook/web-hook.less b/src/app/home/web-hook/web-hook.less
index dac00cf..2e1c516 100644
--- a/src/app/home/web-hook/web-hook.less
+++ b/src/app/home/web-hook/web-hook.less
@@ -1,5 +1,5 @@
 @import '../../_dark-theme-helpers';
-@import 'web-hook.dark';
+@import 'web-hook.dark.less';
 
 :host {
   background-color: #f0f0f0;
diff --git a/src/app/static-content/developers/developers.component.ts b/src/app/static-content/developers/developers.component.ts
index 5b7f7e0..f827919 100644
--- a/src/app/static-content/developers/developers.component.ts
+++ b/src/app/static-content/developers/developers.component.ts
@@ -4,7 +4,7 @@ import { Component } from '@angular/core';
     selector: 'developers',
     templateUrl: './developers.html',
     styles: [`
-        @import "../static-content.dark";
+        @import "../static-content.dark.less";
         .parent-dark-theme();
     `]
 })
diff --git a/src/app/static-content/privacy/privacy.component.ts b/src/app/static-content/privacy/privacy.component.ts
index 87a0c28..84c2680 100644
--- a/src/app/static-content/privacy/privacy.component.ts
+++ b/src/app/static-content/privacy/privacy.component.ts
@@ -4,7 +4,7 @@ import { Component } from '@angular/core';
     selector: 'privacy',
     templateUrl: './privacy.html',
     styles: [`
-        @import "../static-content.dark";
+        @import "../static-content.dark.less";
         .parent-dark-theme();
     `]
 })
diff --git a/src/app/static-content/static-content.less b/src/app/static-content/static-content.less
index 1330df9..357f3d5 100644
--- a/src/app/static-content/static-content.less
+++ b/src/app/static-content/static-content.less
@@ -1,4 +1,4 @@
-@import "static-content.dark";
+@import "static-content.dark.less";
 @navbarHeight: 3.5rem;
 @footerHeight: 8em;
 
diff --git a/src/app/static-content/tos/tos.component.ts b/src/app/static-content/tos/tos.component.ts
index 795ce03..c4cfd73 100644
--- a/src/app/static-content/tos/tos.component.ts
+++ b/src/app/static-content/tos/tos.component.ts
@@ -5,7 +5,7 @@ import { environment } from '../../../environments/environment';
     selector: 'tos',
     templateUrl: './tos.html',
     styles: [`
-        @import "../static-content.dark";
+        @import "../static-content.dark.less";
         .parent-dark-theme();
     `]
 })