= ({
title={t('ssh.remote.title') || 'SSH Remote'}
size="medium"
showCloseButton
+ closeOnOverlayClick={false}
+ overlayClassName="ssh-connection-dialog__modal-overlay"
contentClassName="modal__content--fill-flex"
>
diff --git a/src/web-ui/src/flow_chat/components/ChatInput.scss b/src/web-ui/src/flow_chat/components/ChatInput.scss
index d23dd56f..01dc915d 100644
--- a/src/web-ui/src/flow_chat/components/ChatInput.scss
+++ b/src/web-ui/src/flow_chat/components/ChatInput.scss
@@ -145,8 +145,7 @@
&:empty::before {
display: block;
- color: var(--color-text-primary);
- opacity: 0.6;
+ color: color-mix(in srgb, var(--color-text-muted) 52%, transparent);
font-size: var(--flowchat-font-size-base);
line-height: 24px;
text-align: center;
@@ -164,8 +163,7 @@
width: 100%;
font-size: var(--flowchat-font-size-sm);
line-height: 24px;
- color: var(--color-text-muted);
- opacity: 0.62;
+ color: color-mix(in srgb, var(--color-text-muted) 48%, transparent);
white-space: nowrap;
pointer-events: none;
letter-spacing: 0.01em;
@@ -220,7 +218,7 @@
}
&:hover .bitfun-chat-input__space-hint {
- opacity: 0.9;
+ color: color-mix(in srgb, var(--color-text-muted) 62%, transparent);
}
&.bitfun-chat-input--pet-visible {
@@ -238,7 +236,8 @@
}
&:hover .bitfun-chat-input__space-hint {
- opacity: 0.88;
+ opacity: 1;
+ color: color-mix(in srgb, var(--color-text-muted) 58%, transparent);
}
&.bitfun-chat-input--pet-split-send.bitfun-chat-input--processing {
diff --git a/src/web-ui/src/flow_chat/components/RichTextInput.scss b/src/web-ui/src/flow_chat/components/RichTextInput.scss
index dccb87f8..83697a8d 100644
--- a/src/web-ui/src/flow_chat/components/RichTextInput.scss
+++ b/src/web-ui/src/flow_chat/components/RichTextInput.scss
@@ -27,7 +27,7 @@
&:empty::before {
content: attr(data-placeholder);
- color: var(--color-text-muted);
+ color: color-mix(in srgb, var(--color-text-muted) 52%, transparent);
pointer-events: none;
animation: rich-text-placeholder-fade-in 0.25s ease-out;
}
@@ -54,12 +54,12 @@
}
-// Improve placeholder contrast in light theme.
+// Light theme: placeholder slightly softer than body text.
:root[data-theme="light"] .rich-text-input,
:root[data-theme-type="light"] .rich-text-input,
.light .rich-text-input {
&:empty::before {
- color: var(--color-text-secondary, #6b7280);
+ color: color-mix(in srgb, var(--color-text-secondary, #6b7280) 48%, transparent);
}
}
diff --git a/src/web-ui/src/infrastructure/theme/presets/slate-theme.ts b/src/web-ui/src/infrastructure/theme/presets/slate-theme.ts
index f8fe069c..2aabcea7 100644
--- a/src/web-ui/src/infrastructure/theme/presets/slate-theme.ts
+++ b/src/web-ui/src/infrastructure/theme/presets/slate-theme.ts
@@ -10,7 +10,10 @@ export const bitfunSlateTheme: ThemeConfig = {
description: 'Slate gray geometric theme - Deep immersion, high contrast grayscale aesthetics',
author: 'BitFun Team',
version: '1.3.0',
-
+
+ layout: {
+ sceneViewportBorder: false,
+ },
colors: {
background: {
diff --git a/src/web-ui/src/tools/editor/meditor/components/EditArea.scss b/src/web-ui/src/tools/editor/meditor/components/EditArea.scss
index 90f658b9..7e3f9d27 100644
--- a/src/web-ui/src/tools/editor/meditor/components/EditArea.scss
+++ b/src/web-ui/src/tools/editor/meditor/components/EditArea.scss
@@ -14,7 +14,8 @@
background: transparent;
color: inherit;
- &:focus {
+ &:focus,
+ &:focus-visible {
border: none !important;
outline: none !important;
box-shadow: none !important;
diff --git a/src/web-ui/src/tools/editor/meditor/components/MEditor.scss b/src/web-ui/src/tools/editor/meditor/components/MEditor.scss
index 48cfcdda..cb72d985 100644
--- a/src/web-ui/src/tools/editor/meditor/components/MEditor.scss
+++ b/src/web-ui/src/tools/editor/meditor/components/MEditor.scss
@@ -3,7 +3,7 @@
.m-editor {
display: flex;
flex-direction: column;
- border-radius: $size-radius-base;
+ border-radius: 0;
overflow: hidden;
&-toolbar {
@@ -17,6 +17,7 @@
flex: 1;
display: flex;
overflow: hidden;
+ border-radius: 0;
}
&-edit-panel,
@@ -24,6 +25,7 @@
&-ir-panel {
flex: 1;
overflow: hidden;
+ border-radius: 0;
}
&-mode-split {
diff --git a/src/web-ui/src/tools/editor/meditor/components/TiptapEditor.scss b/src/web-ui/src/tools/editor/meditor/components/TiptapEditor.scss
index 70d56231..5d2572f3 100644
--- a/src/web-ui/src/tools/editor/meditor/components/TiptapEditor.scss
+++ b/src/web-ui/src/tools/editor/meditor/components/TiptapEditor.scss
@@ -11,6 +11,15 @@
height: 100%;
overflow-y: auto;
padding: $size-gap-4;
+ border-radius: 0;
+
+ /* Single contenteditable surface: suppress global :focus-visible ring on the whole editor */
+ [contenteditable='true']:focus,
+ [contenteditable='true']:focus-visible {
+ outline: none !important;
+ outline-offset: 0 !important;
+ box-shadow: none !important;
+ }
.ProseMirror {
min-height: 100%;
@@ -23,7 +32,7 @@
> [data-block-id]:not(hr) {
margin-bottom: $size-gap-2;
padding: $size-gap-2;
- border-radius: $size-radius-base;
+ border-radius: 0;
transition: background $motion-base $easing-standard;
&:hover {