diff --git a/web/modals/chat/sidebar-list-modal.react.js b/web/modals/chat/sidebar-list-modal.react.js
--- a/web/modals/chat/sidebar-list-modal.react.js
+++ b/web/modals/chat/sidebar-list-modal.react.js
@@ -115,7 +115,7 @@
   }
 
   return (
-    <Modal name="Sidebars" onClose={popModal} fixedHeight={false}>
+    <Modal name="Sidebars" onClose={popModal}>
       <div
         className={classNames(
           globalCSS['modal-body'],
diff --git a/web/modals/modal.css b/web/modals/modal.css
--- a/web/modals/modal.css
+++ b/web/modals/modal.css
@@ -1,79 +1,60 @@
-div.modal-overlay {
+div.modalOverlay {
   position: fixed;
   left: 0;
   top: 0;
-  bottom: 0;
+  height: 100%;
   z-index: 4;
   width: 100%;
-  background-color: rgba(0, 0, 0, 0.4);
+  background-color: rgba(0, 0, 0, 0.9);
   display: flex;
   flex-direction: column;
   align-items: center;
   justify-content: center;
-  overflow: auto;
-}
-div.resizable-modal-overlay {
-  min-height: 60px;
 }
-div.modal-container {
-  background: var(--bg);
-  background-size: 3000px 2000px;
-  max-width: 330px;
+
+div.modalContainer {
   border-radius: 15px;
   display: flex;
-  min-height: 0;
-  max-height: 500px;
-}
-div.large-modal-container {
-  max-width: 500px;
-}
-div.modal {
-  position: relative;
-  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(0, 0, 0, 0.1);
   background-color: var(--modal-bg);
-  border-radius: 15px;
-  flex: 1;
-  display: flex;
+  border-radius: 8px;
   flex-direction: column;
+  margin: 20px;
+  overflow: hidden;
 }
-div.large-modal-container div.modal {
-  width: 500px;
+
+div.modalContainerSmall {
+  width: 330px;
+  max-height: 500px;
 }
-div.fixed-height-modal {
-  height: 100%;
+
+div.modalContainerLarge {
+  width: 500px;
+  max-height: 500px;
 }
-span.modal-close {
-  float: right;
-  font-size: 32px;
-  font-weight: 300;
-  line-height: 30px;
-  color: var(--fg);
+
+span.modalClose {
+  display: flex;
+  color: var(--modal-close-color);
 }
-span.modal-close:hover {
+
+span.modalClose:hover {
   cursor: pointer;
+  color: var(--modal-close-color-hover);
 }
-div.modal-header {
-  padding: 32px 40px 16px 40px;
-}
-div.modal-header > h2 {
-  font-size: var(--xl-font-20);
-  font-weight: var(--bold);
-  color: var(--fg);
+
+div.modalHeader {
   display: flex;
+  justify-content: space-between;
   align-items: center;
-}
-div.modal-header > h2 svg {
-  padding-right: 8px;
-  display: flex;
+  padding: 32px 32px 0px 32px;
 }
 
-@media only screen and (-webkit-min-device-pixel-ratio: 2),
-  only screen and (min--moz-device-pixel-ratio: 2),
-  only screen and (-o-min-device-pixel-ratio: 2/1),
-  only screen and (min-device-pixel-ratio: 2),
-  only screen and (min-resolution: 320dpi),
-  only screen and (min-resolution: 2dppx) {
-  div.modal-container {
-    background: var(--bg);
-  }
+h2.title {
+  font-size: 20px;
+  font-weight: 500;
+  line-height: 32px;
+  color: var(--fg);
+  display: flex;
+  align-items: center;
+  column-gap: 8px;
 }
diff --git a/web/modals/modal.react.js b/web/modals/modal.react.js
--- a/web/modals/modal.react.js
+++ b/web/modals/modal.react.js
@@ -6,15 +6,14 @@
 import SWMansionIcon, { type Icon } from '../SWMansionIcon.react';
 import css from './modal.css';
 
-export type ModalSize = 'small' | 'large';
+export type ModalSize = 'small' | 'large' | 'fit-content';
 type Props = {
-  +name: React.Node,
+  +name: string,
   +icon?: Icon,
   +onClose: () => void,
   +withCloseButton?: boolean,
   +children?: React.Node,
   +size?: ModalSize,
-  +fixedHeight?: boolean,
 };
 
 function Modal(props: Props): React.Node {
@@ -22,7 +21,6 @@
     size = 'small',
     children,
     onClose,
-    fixedHeight,
     name,
     icon,
     withCloseButton = true,
@@ -53,34 +51,21 @@
     }
   }, []);
 
-  const overlayClasses = React.useMemo(
-    () =>
-      classNames(css['modal-overlay'], {
-        [css['resizable-modal-overlay']]: !fixedHeight,
-      }),
-    [fixedHeight],
-  );
   const modalContainerClasses = React.useMemo(
     () =>
-      classNames(css['modal-container'], {
-        [css['large-modal-container']]: size === 'large',
+      classNames(css.modalContainer, {
+        [css.modalContainerLarge]: size === 'large',
+        [css.modalContainerSmall]: size === 'small',
       }),
     [size],
   );
-  const modalClasses = React.useMemo(
-    () =>
-      classNames(css['modal'], {
-        [css['fixed-height-modal']]: fixedHeight,
-      }),
-    [fixedHeight],
-  );
 
   const cornerCloseButton = React.useMemo(() => {
     if (!withCloseButton) {
       return null;
     }
     return (
-      <span className={css['modal-close']} onClick={onClose}>
+      <span className={css.modalClose} onClick={onClose}>
         <SWMansionIcon size={24} icon="cross" />
       </span>
     );
@@ -95,23 +80,21 @@
 
   return (
     <div
-      className={overlayClasses}
+      className={css.modalOverlay}
       ref={overlayRef}
       onClick={onBackgroundClick}
       tabIndex={0}
       onKeyDown={onKeyDown}
     >
       <div className={modalContainerClasses}>
-        <div className={modalClasses}>
-          <div className={css['modal-header']}>
-            {cornerCloseButton}
-            <h2>
-              {headerIcon}
-              {name}
-            </h2>
-          </div>
-          {children}
+        <div className={css.modalHeader}>
+          <h2 className={css.title}>
+            {headerIcon}
+            {name}
+          </h2>
+          {cornerCloseButton}
         </div>
+        {children}
       </div>
     </div>
   );
diff --git a/web/theme.css b/web/theme.css
--- a/web/theme.css
+++ b/web/theme.css
@@ -143,4 +143,6 @@
   --color-selector-active-bg: var(--shades-black-80);
   --relationship-modal-color: var(--shades-black-60);
   --arrow-extension-color: var(--shades-black-60);
+  --modal-close-color: var(--shades-black-60);
+  --modal-close-color-hover: var(--shades-white-100);
 }