diff --git a/web/gr-delete-repo.ts b/web/gr-delete-repo.ts
index 55995fd..0bad785 100644
--- a/web/gr-delete-repo.ts
+++ b/web/gr-delete-repo.ts
@@ -20,15 +20,9 @@
   ConfigInfo,
   RepoName,
 } from '@gerritcodereview/typescript-api/rest-api';
-import {css, html, LitElement} from 'lit';
+import {css, CSSResult, html, LitElement} from 'lit';
 import {customElement, property, query, state} from 'lit/decorators.js';
 
-// TODO: This should be defined and exposed by @gerritcodereview/typescript-api
-type GrOverlay = Element & {
-  open(): void;
-  close(): void;
-};
-
 declare global {
   interface HTMLElementTagNameMap {
     'gr-delete-repo': GrDeleteRepo;
@@ -40,8 +34,8 @@
 
 @customElement('gr-delete-repo')
 export class GrDeleteRepo extends LitElement {
-  @query('#deleteRepoOverlay')
-  deleteRepoOverlay?: GrOverlay;
+  @query('#deleteRepoModal')
+  deleteRepoModal?: HTMLDialogElement;
 
   @query('#preserveGitRepoCheckBox')
   preserveGitRepoCheckBox?: HTMLInputElement;
@@ -64,20 +58,26 @@
   @state()
   private error?: string;
 
-  static override styles = css`
-    :host {
-      display: block;
-      margin-bottom: var(--spacing-xxl);
-    }
-    /* TODO: Find a way to use shared styles in lit elements in plugins. */
-    h3 {
-      font: inherit;
-      margin: 0;
-    }
-    .error {
-      color: red;
-    }
-  `;
+  static override get styles() {
+    return [
+      window.Gerrit.styles.font as CSSResult,
+      window.Gerrit.styles.modal as CSSResult,
+      css`
+        :host {
+          display: block;
+          margin-bottom: var(--spacing-xxl);
+        }
+        /* TODO: Find a way to use shared styles in lit elements in plugins. */
+        h3 {
+          font: inherit;
+          margin: 0;
+        }
+        .error {
+          color: red;
+        }
+      `,
+    ];
+  }
 
   get action(): ActionInfo | undefined {
     return this.config.actions?.[this.actionId];
@@ -101,18 +101,18 @@
         ?disabled="${!this.action.enabled}"
         @click="${() => {
           this.error = undefined;
-          this.deleteRepoOverlay?.open();
+          this.deleteRepoModal?.showModal();
         }}"
       >
         ${this.action.label}
       </gr-button>
       ${this.renderError()}
-      <gr-overlay id="deleteRepoOverlay" with-backdrop>
+      <dialog id="deleteRepoModal">
         <gr-dialog
           id="deleteRepoDialog"
           confirm-label="Delete"
           @confirm="${this.deleteRepo}"
-          @cancel="${() => this.deleteRepoOverlay?.close()}"
+          @cancel="${() => this.deleteRepoModal?.close()}"
         >
           <div class="header" slot="header">
             Are you really sure you want to delete the repo: "${this.repoName}"?
@@ -136,19 +136,19 @@
             </div>
           </div>
         </gr-dialog>
-      </gr-overlay>
+      </dialog>
     `;
   }
 
   private deleteRepo() {
     if (!this.action) {
       this.error = 'delete action undefined';
-      this.deleteRepoOverlay?.close();
+      this.deleteRepoModal?.close();
       return;
     }
     if (!this.action.method) {
       this.error = 'delete action does not have a HTTP method set';
-      this.deleteRepoOverlay?.close();
+      this.deleteRepoModal?.close();
       return;
     }
     this.error = undefined;
@@ -165,12 +165,12 @@
       .send(this.action.method, endpoint, json)
       .then(_ => {
         this.plugin.restApi().invalidateReposCache();
-        this.deleteRepoOverlay?.close();
+        this.deleteRepoModal?.close();
         window.location.href = `${this.getBaseUrl()}/admin/repos`;
       })
       .catch(e => {
         this.error = e;
-        this.deleteRepoOverlay?.close();
+        this.deleteRepoModal?.close();
       });
   }
 
