diff --git a/src/workspaces/officerdev/src/components/Workspace/PanelSlot.tsx b/src/workspaces/officerdev/src/components/Workspace/PanelSlot.tsx index c45cd433..79bce366 100644 --- a/src/workspaces/officerdev/src/components/Workspace/PanelSlot.tsx +++ b/src/workspaces/officerdev/src/components/Workspace/PanelSlot.tsx @@ -546,10 +546,13 @@ export const PanelSlot = ({ // control — is black throughout, so the old near-opaque dark fill left every one of them unreadable. // This is the nav Header's exact recipe (`rgba(255,255,255,0.25)` over a 0.35 border), which is the // app's established "raised above the rest" surface and is already proven to carry black text. - const fullscreenStyle = { backgroundColor: 'rgba(255, 255, 255, 0.25)', borderColor: 'rgba(255, 255, 255, 0.35)' }; + // Fullscreen is DENSER glass, not darker: panel chrome is dark text throughout, and a heavy dark fill + // made every icon unreadable. A panel with no header takes a harder edge, having nothing else to + // separate it from what it sits on. Both were literal rgba pairs and are now the theme's to decide. + const fullscreenStyle = { backgroundColor: 'var(--panel-raised-bg)', borderColor: 'var(--panel-raised-border)' }; const normalStyle = noHeader - ? { backgroundColor: 'rgba(255, 255, 255, 0.12)', borderColor: 'rgba(0, 0, 0, 0.25)' } - : { backgroundColor: 'rgba(255, 255, 255, 0.12)', borderColor: 'rgba(255, 255, 255, 0.2)' }; + ? { backgroundColor: 'var(--panel-bg)', borderColor: 'var(--panel-border-bare)' } + : { backgroundColor: 'var(--panel-bg)', borderColor: 'var(--panel-border)' }; const panelStyle = { ...(isFullscreen ? fullscreenStyle : normalStyle), ...(transitioningPanelId === panel.id ? { viewTransitionName: `panel-${panel.id}` } : {}), @@ -560,8 +563,8 @@ export const PanelSlot = ({
diff --git a/src/workspaces/theme/css/chrome.css b/src/workspaces/theme/css/chrome.css index 2948a0b8..9dee830f 100644 --- a/src/workspaces/theme/css/chrome.css +++ b/src/workspaces/theme/css/chrome.css @@ -83,3 +83,9 @@ .header-ink-border { border-color: color-mix(in srgb, var(--header-fg) 40%, transparent); } + +/* Panel glass. `backdrop-blur-xl` was a fixed 24px, so a flat theme still paid for a blur it did not want — + and on a solid panel the browser composites it for nothing. */ +.panel-blur { + backdrop-filter: blur(var(--panel-blur)); +} diff --git a/src/workspaces/theme/css/themes/duck-dark.css b/src/workspaces/theme/css/themes/duck-dark.css index 31626edf..30d59d75 100644 --- a/src/workspaces/theme/css/themes/duck-dark.css +++ b/src/workspaces/theme/css/themes/duck-dark.css @@ -67,8 +67,12 @@ --glass-bg: rgba(0, 0, 0, 0.2); --glass-border: rgba(255, 255, 255, 0.1); - --panel-bg: rgba(0, 0, 0, 0.2); - --panel-border: rgba(255, 255, 255, 0.1); + --panel-bg: rgba(255, 255, 255, 0.12); + --panel-border: rgba(255, 255, 255, 0.2); + --panel-border-bare: rgba(0, 0, 0, 0.25); + --panel-raised-bg: rgba(255, 255, 255, 0.25); + --panel-raised-border: rgba(255, 255, 255, 0.35); + --panel-blur: 24px; --panel-radius: 0.75rem; --panel-header-bg: rgba(0, 0, 0, 0.15); --panel-header-fg: hsl(var(--foreground)); diff --git a/src/workspaces/theme/css/themes/duck-light.css b/src/workspaces/theme/css/themes/duck-light.css index 4577d0b1..3cf8b288 100644 --- a/src/workspaces/theme/css/themes/duck-light.css +++ b/src/workspaces/theme/css/themes/duck-light.css @@ -72,8 +72,14 @@ --glass-bg: rgba(255, 255, 255, 0.1); --glass-border: rgba(255, 255, 255, 0.2); - --panel-bg: rgba(255, 255, 255, 0.1); + --panel-bg: rgba(255, 255, 255, 0.12); --panel-border: rgba(255, 255, 255, 0.2); + /* A panel with no header has nothing to separate it from what it sits on, so it takes a harder edge. */ + --panel-border-bare: rgba(0, 0, 0, 0.25); + /* Fullscreen is DENSER glass, not darker: panel chrome is dark text, and a heavy dark fill hid it. */ + --panel-raised-bg: rgba(255, 255, 255, 0.25); + --panel-raised-border: rgba(255, 255, 255, 0.35); + --panel-blur: 24px; --panel-radius: 0.75rem; --panel-header-bg: rgba(0, 0, 0, 0.05); --panel-header-fg: hsl(var(--foreground)); diff --git a/src/workspaces/theme/css/themes/plain.css b/src/workspaces/theme/css/themes/plain.css index 680ae117..4232848b 100644 --- a/src/workspaces/theme/css/themes/plain.css +++ b/src/workspaces/theme/css/themes/plain.css @@ -72,6 +72,10 @@ --panel-bg: #ffffff; --panel-border: #000000; + --panel-border-bare: #000000; + --panel-raised-bg: #ffffff; + --panel-raised-border: #000000; + --panel-blur: 0px; --panel-radius: 0; --panel-header-bg: #f2f2f2; --panel-header-fg: #000000;