diff --git a/frontend/src/features/admin/media/UploadSnackbar.tsx b/frontend/src/features/admin/media/UploadSnackbar.tsx index a386ed8..91d67e1 100644 --- a/frontend/src/features/admin/media/UploadSnackbar.tsx +++ b/frontend/src/features/admin/media/UploadSnackbar.tsx @@ -48,7 +48,7 @@ export function UploadSnackbar() { else header = t('admin.media.uploadedCount', { count: done }) return ( -
diff --git a/frontend/src/index.css b/frontend/src/index.css
index 3ebb4d1..133ced9 100644
--- a/frontend/src/index.css
+++ b/frontend/src/index.css
@@ -122,6 +122,19 @@
0 8px 30px rgba(0, 0, 0, 0.25);
}
+ /*
+ * Модальное окно. Тот же оттенок, что у карточки, но фон непрозрачный: диалог висит над сеткой
+ * и таблицами, и сквозь полупрозрачную панель чужой текст читался прямо поверх полей ввода.
+ * Тень глубже, чем у карточки, — окно должно отрываться от страницы, а не лежать на ней.
+ */
+ .crt-dialog {
+ background: color-mix(in srgb, var(--muted) 82%, var(--background));
+ border: 1px solid color-mix(in srgb, var(--primary) 25%, var(--border));
+ box-shadow:
+ 0 0 0 1px color-mix(in srgb, var(--primary) 15%, transparent) inset,
+ 0 24px 64px rgba(0, 0, 0, 0.7);
+ }
+
/*
* Всплывающая панель (поповер, автокомплит). Отдельный класс, а не crt-panel с правкой фона:
* фон там задан в этом же слое, и утилита вроде bg-muted его не перебивает — выигрывает то,
diff --git a/frontend/src/shared/ui/dialog.tsx b/frontend/src/shared/ui/dialog.tsx
index c7823b4..05a155e 100644
--- a/frontend/src/shared/ui/dialog.tsx
+++ b/frontend/src/shared/ui/dialog.tsx
@@ -12,7 +12,9 @@ const DialogOverlay = forwardRef<
>(({ className, ...props }, ref) => (