Dark Overlay Architecture
Dark overlays create depth and separation in the UI. They are used for:- Shadows cast by elevated elements
- Modal backdrops (scrims)
- Dimming effects on inactive areas
- Depth indicators in layered interfaces
/* Dark overlays (using color-mix in oklab) */
--color-overlay-dark-1: color-mix(in oklab, black, transparent 95%);
--color-overlay-dark-2: color-mix(in oklab, black, transparent 90%);
--color-overlay-dark-3: color-mix(in oklab, black, transparent 80%);
--color-overlay-dark-4: color-mix(in oklab, black, transparent 70%);
Dark Overlay Visual Hierarchy
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DARK OVERLAY VISUAL HIERARCHY β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ELEVATION SYSTEM β
β ββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β Level 4 (30%) β MODAL DIALOG β β
β Topmost β ββββββββββββββββββββββββ β β
β β β Dialog Content β β β
β β β β β β
β β ββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β β --color-overlay-dark-4 (30% black) β
β β β
β ββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββ β
β Level 3 (20%) β DROPDOWN MENU β β
β High elevation β ββββββββββββββββββββββ β β
β β β Option 1 β β β
β β β Option 2 β β β
β β ββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β β --color-overlay-dark-3 (20% black) β
β β β
β ββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββ β
β Level 2 (10%) β SIDEBAR β β
β Medium β File Explorer β β
β elevation β Project Files β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β β --color-overlay-dark-2 (10% black) β
β β β
β ββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββ β
β Level 1 (5%) β CONTENT β β
β Base elevation β Main editor/terminal area β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β β --color-overlay-dark-1 (5% black) or no shadow β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Why Black for Dark Overlays?
Unlike light overlays which derive from--color-text-primary (theme-dependent), dark overlays use a fixed black value because:
- Universal darkening: Black works to darken any background
- No hue shift: Pure black does not introduce unwanted color
- Predictable behavior: Same shadow appearance across themes
- Performance: No variable resolution needed
Dialog Shadow System
Dialog shadows create the illusion of elevation, making dialogs appear to float above the content./* Dialog Shadows & Overlay */
--dialog-shadow: 0 12px 48px rgba(0, 0, 0, 0.4);
--dialog-shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.15);
--overlay-backdrop: rgba(0, 0, 0, 0.7);
Multi-Layer Shadow Analysis
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DIALOG SHADOW LAYER ANALYSIS β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β --dialog-shadow: 0 12px 48px rgba(0, 0, 0, 0.4) β
β β
β Breakdown: β
β βββ offset-x: 0 No horizontal offset (centered shadow) β
β βββ offset-y: 12px 12px below element (downward light source) β
β βββ blur-radius: 48px Large blur for soft ambient shadow β
β βββ color: rgba(0,0,0,0.4) 40% black (heavy but not solid) β
β β
β Visual Effect: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β DIALOG CONTENT β β β
β β β β β β
β β β β β β
β β βββββββββββββββββββββββββββββββββββββ β β
β β .................................... β β
β β .................................. β β
β β .............................. β β
β β .......................... β β
β β .................... β β
β β .......... β β
β β β β
β β . = Shadow blur area (48px radius, 40% opacity) β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β --dialog-shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.15) β
β β
β Breakdown: β
β βββ offset-x: 0 Centered β
β βββ offset-y: 4px Small offset (subtle elevation) β
β βββ blur-radius: 12px Tight blur (crisp edges) β
β βββ color: rgba(0,0,0,0.15) 15% black (subtle) β
β β
β Use case: Tooltips, dropdowns, small popovers β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Dialog Component Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DIALOG COMPONENT ARCHITECTURE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β FULL VIEWPORT β β
β β background: var(--overlay-backdrop) = rgba(0,0,0,0.7) β β
β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββ β β
β β β DIALOG CONTAINER β β β
β β β box-shadow: var(--dialog-shadow) β β β
β β β width: var(--dialog-width-md) = 520px β β β
β β β β β β
β β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β DIALOG HEADER β β β β
β β β β Title + Close Button β β β β
β β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β β β
β β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β DIALOG BODY β β β β
β β β β β β β β
β β β β max-height: 70vh β β β β
β β β β (scrollable if needed) β β β β
β β β β β β β β
β β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β β β
β β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β DIALOG FOOTER β β β β
β β β β Cancel β Confirm β β β β
β β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββ β β
β β .................................... β β
β β ........ dialog-shadow ........ β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β LAYERING: β
β 1. --overlay-backdrop (70% black) dims everything behind β
β 2. Dialog container sits on top with large shadow β
β 3. Shadow creates depth perception (12px offset, 48px blur) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Modal Backdrop System
The modal backdrop dims the content behind a dialog, focusing user attention on the modal content.--overlay-backdrop: rgba(0, 0, 0, 0.7);
Backdrop Purpose and Psychology
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MODAL BACKDROP PSYCHOLOGY β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β rgba(0, 0, 0, 0.7) = 70% black opacity β
β β
β PURPOSE: β
β ββββββββ β
β β
β 1. FOCUS ATTENTION β
β Darkening the background directs user focus to the modal β
β 70% is dark enough to clearly separate layers β
β β
β 2. INDICATE MODAL STATE β
β Users understand they must interact with the dialog β
β Background becomes "unreachable" β
β β
β 3. REDUCE VISUAL NOISE β
β Complex UI behind modal becomes muted β
β Dialog content stands out β
β β
β 4. CONSISTENT EXPERIENCE β
β Same backdrop across all modals β
β Users develop expectations β
β β
β WHY 70%? β
β βββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β 50%: Too light - background still distracting β β
β β 60%: Borderline - works but not strong β β
β β 70%: OPTIMAL - clear separation without total blackout β β
β β 80%: Acceptable - almost too dark β β
β β 90%: Too dark - feels oppressive, hard to see context β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 70% black is the industry standard for modal backdrops β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Backdrop vs Dark Overlay Comparison
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BACKDROP VS DARK OVERLAY COMPARISON β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β --overlay-backdrop vs --color-overlay-dark-4 β
β βββββββββββββββββββ βββββββββββββββββββββββ β
β β
β rgba(0, 0, 0, 0.7) color-mix(in oklab, black, transparent 70%) β
β 70% opacity 30% opacity β
β Fixed rgba() value Uses color-mix() β
β β
β Used for: Used for: β
β β’ Full-screen modal backdrops β’ Heavy shadows β
β β’ Blocking overlays β’ Strong dimming effects β
β β’ Focus lock indicators β’ Card elevation shadows β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β 70% backdrop 30% overlay-dark-4 10% overlay-dark-2 β β
β β ################ ========........ ...................... β β
β β β β
β β Modal backdrop Card shadow Subtle shadow β β
β β (blocks content) (elevation cue) (light depth) β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Element Background Elevation
Element backgrounds create subtle elevation differences between UI components./* Element Background (UI elements like buttons, badges, dropdowns) */
/* Falls back to border colors if not defined in theme */
--color-element-bg-1: var(--color-border-primary);
--color-element-bg-2: var(--color-border-secondary);
--color-element-bg-3: var(--color-border-light);
Element Elevation System
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ELEMENT BACKGROUND ELEVATION β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Dark Theme Values: β
β ββββββββββββββββββ β
β β
β --color-border-primary: #151d26; (L ~ 8%) β
β --color-border-secondary: #1f2a35; (L ~ 12%) β
β --color-border-light: #2a3540; (L ~ 17%) β
β β
β Elevation Levels: β
β βββββββββββββββββ β
β β
β BASE LEVEL 1 LEVEL 2 LEVEL 3 β
β #000000 #151d26 #1f2a35 #2a3540 β
β β
β ########### ############## ################# #################### β
β Pure Black Slight lift Medium lift Higher lift β
β Terminal BG Input fields Buttons Dropdowns β
β β
β Each level increases lightness by ~4-5% in dark theme β
β This creates subtle but perceivable depth β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Light Theme Values: β
β βββββββββββββββββββ β
β β
β --color-border-primary: #e0e0e0; (L ~ 88%) β
β --color-border-secondary: #d0d0d0; (L ~ 82%) β
β --color-border-light: #c0c0c0; (L ~ 75%) β
β β
β INVERTED: Light theme element backgrounds are DARKER than base β
β This provides proper elevation perception on light backgrounds β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Border Color Transparency
Transparent borders adapt to any background while providing consistent visual separation./* Border Colors (OKLCH + color-mix, ACSS pattern) */
--oklch-border-dark: color-mix(in oklch, black 20%, transparent);
--oklch-border-light: color-mix(in oklch, white 20%, transparent);
--oklch-divider: color-mix(in oklch, var(--color-text-primary) 15%, transparent);
Transparent Border Analysis
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TRANSPARENT BORDER SYSTEM β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β --oklch-border-dark: color-mix(in oklch, black 20%, transparent) β
β β
β Interpretation: β
β β’ Mix black at 20% with transparent at 80% β
β β’ Result: 20% black semi-transparent border β
β β’ Adapts to ANY background - darkens by 20% β
β β
β Visual Effect: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β On light background: ................ (visible as light gray) β β
β β On dark background: ################ (visible as dark line) β β
β β Always visible, always appropriate β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β --oklch-border-light: color-mix(in oklch, white 20%, transparent) β
β β
β Interpretation: β
β β’ Mix white at 20% with transparent at 80% β
β β’ Result: 20% white semi-transparent border β
β β’ Adapts to ANY background - lightens by 20% β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β --oklch-divider: color-mix(in oklch, var(--color-text-primary) 15%, ...) β
β β
β Interpretation: β
β β’ Uses theme's text color as base β
β β’ 15% opacity - very subtle β
β β’ Automatically adapts to dark/light theme β
β β
β Dark theme: 15% of #93a1a1 (light gray) on dark background β
β Light theme: 15% of #1a1a1a (near black) on light background β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Scrollbar Transparency
Scrollbars use semi-transparent colors to remain visible without dominating the UI./* Scrollbar */
--color-scrollbar-thumb: rgba(100, 100, 100, 0.2);
--color-scrollbar-thumb-hover: rgba(100, 100, 100, 0.4);
Scrollbar Transparency Pattern
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCROLLBAR TRANSPARENCY SYSTEM β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Default State: rgba(100, 100, 100, 0.2) = 20% neutral gray β
β Hover State: rgba(100, 100, 100, 0.4) = 40% neutral gray β
β β
β Color Choice: rgb(100, 100, 100) = #646464 β
β β’ Mid-gray value (neither too dark nor too light) β
β β’ Works on both dark and light backgrounds β
β β’ Neutral - does not compete with content colors β
β β
β State Transition: β
β βββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β DEFAULT (20%) HOVER (40%) DIFFERENCE β β
β β ................ ================ +20% opacity β β
β β β β
β β Subtle presence Clear visibility 2x opacity β β
β β Non-distracting Interactive cue Smooth β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β WHY DIRECT RGBA (not color-mix)? β
β βββββββββββββββββββββββββββββββββ β
β β
β 1. Performance: Scrollbars update frequently β
β 2. Simplicity: Fixed neutral gray works universally β
β 3. Cross-browser: rgba() has better support than color-mix() β
β 4. No theme dependency: Same scrollbar in all themes β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Light Theme Shadow Adjustments
Light themes require different shadow intensities because dark elements on white backgrounds are more visible.[data-theme="light"] {
/* Overlay/Transparency - Light Theme */
--color-overlay-light-1: rgba(0, 0, 0, 0.03);
--color-overlay-light-2: rgba(0, 0, 0, 0.05);
--color-overlay-light-3: rgba(0, 0, 0, 0.08);
--color-overlay-light-4: rgba(0, 0, 0, 0.12);
--color-overlay-dark-1: rgba(0, 0, 0, 0.05);
--color-overlay-dark-2: rgba(0, 0, 0, 0.1);
--color-overlay-dark-3: rgba(0, 0, 0, 0.15);
--color-overlay-dark-4: rgba(0, 0, 0, 0.2);
}
Theme-Specific Shadow Comparison
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β THEME-SPECIFIC SHADOW COMPARISON β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β DARK THEME LIGHT THEME β
β βββββββββββ βββββββββββ β
β β
β "Light overlays" use "Light overlays" use BLACK β
β --color-text-primary (dark on light background) β
β (light gray on dark background) β
β β
β Overlay Light-1: 8% Overlay Light-1: 3% β
β Overlay Light-2: 12% Overlay Light-2: 5% β
β Overlay Light-3: 16% Overlay Light-3: 8% β
β Overlay Light-4: 20% Overlay Light-4: 12% β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β DARK THEME VISUAL LIGHT THEME VISUAL β β
β β β β
β β Background: #000000 Background: #ffffff β β
β β β β
β β #################### .................... β β
β β #################### .................... β β
β β ####..........###### ....==========.... β β
β β #### Hover ...###### ....= Hover =.... β β
β β ####..........###### ....==========.... β β
β β #################### .................... β β
β β β β
β β Light overlay (8%) Dark overlay (3%) β β
β β adds brightness removes brightness β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β KEY INSIGHT: The name "light overlay" is semantic, not literal β
β In dark theme: adds light (brightens) β
β In light theme: adds darkness (same UX effect) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
THE CENTER
How Shadows Communicate Information Flow
Connection to Core-Flow:
βββ Elevation = information priority
βββ Higher elements (more shadow) = more important
βββ Modal backdrops block lower-priority content
βββ Shadow intensity guides user attention
- No shadow: Base content, part of the flow
- Light shadow (5-10%): Slightly elevated, interactive elements
- Medium shadow (20%): Important UI components, dropdowns
- Heavy shadow (40%): Critical dialogs, high-priority interruptions
- Backdrop (70%): Modal state, blocking content
State Changes
Learn how colors flow through hover, active, and disabled states