.themeDark { --background: #0d0d0d; --foreground: #fafafa; --muted: #161616; --muted-foreground: #808598; --secondary: #1e1e1e; --border: #2a2a2a; --agent-blue-500: #6785ff; /* Chart series colors — mirror App.module.css .themeDark. DialogShell portals to document.body, outside the app root that defines these, so the dialog's own theme scope must carry them or SVG strokes resolve to `none`. */ --agent-blue-400: #8aa0ff; --primary: #fafafa; --success-color: #48bb78; --warning-color: #ecc94b; --error-color: #fc8181; --font-mono: 'SF Mono', 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace; --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; --radius: 6px; --dialog-overlay: rgba(0, 0, 0, 0.62); } .themeLight { --background: #ffffff; --foreground: #0a0a0b; --muted: #f3f3f5; --muted-foreground: #a3a3a5; --secondary: #f3f3f5; --border: #e3e4e6; --agent-blue-500: #0033ff; /* Chart series colors — mirror App.module.css .themeLight (see .themeDark). */ --agent-blue-400: #335cff; --primary: #151517; --success-color: #1f7a3a; --warning-color: #9a6a00; --error-color: #c0362c; --font-mono: 'SF Mono', 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace; --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; --radius: 6px; --dialog-overlay: rgba(10, 10, 11, 0.52); } .backdrop { position: fixed; inset: 0; z-index: var(--web-shell-dialog-backdrop-z-index, 3000); display: flex; align-items: center; justify-content: center; padding: 24px; background: var(--dialog-overlay); color: var(--foreground); font-family: var(--font-mono); font-size: 14px; line-height: 1.5; } .backdrop, .backdrop * { box-sizing: border-box; } .panel { display: flex; flex-direction: column; width: min(100%, 560px); max-height: min(80vh, calc(100vh - 48px)); overflow: hidden; border: 1px solid color-mix(in srgb, var(--border) 90%, transparent); border-radius: 10px; background: var(--background); box-shadow: 0 18px 60px rgba(0, 0, 0, 0.24); } /* The panel receives focus programmatically for keyboard management; suppress the container outline since selection is shown via a roving row highlight. */ .panel:focus { outline: none; } .sizeSm { width: min(100%, 420px); } .sizeMd { width: min(100%, 560px); } .sizeLg { width: min(100%, 720px); } .sizeXl { width: min(100%, 900px); } .header { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 10px 14px; border-bottom: 1px solid var(--border); } .titleWrap { min-width: 0; flex: 1 1 auto; } .title { color: var(--foreground); font-size: 14px; font-weight: 600; line-height: 1.35; } .subtitle { margin-top: 2px; color: var(--muted-foreground); font-size: 12px; line-height: 1.35; } .close { position: relative; display: inline-flex; width: 26px; height: 26px; flex: 0 0 auto; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--muted-foreground); cursor: pointer; } .close:hover, .close:focus-visible { background: var(--muted); color: var(--foreground); } .close::before, .close::after { content: ''; position: absolute; width: 13px; height: 1.5px; border-radius: 999px; background: currentColor; } .close::before { transform: rotate(45deg); } .close::after { transform: rotate(-45deg); } /* Shared header icon-button styling (fullscreen toggle); mirrors .close's hover treatment without the ::before/::after "X". */ .iconButton { display: inline-flex; width: 26px; height: 26px; flex: 0 0 auto; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--muted-foreground); cursor: pointer; } .iconButton:hover, .iconButton:focus-visible { background: var(--muted); color: var(--foreground); } .body { display: flex; flex-direction: column; flex: 0 1 auto; max-height: calc(min(80vh, calc(100vh - 48px)) - 46px); min-height: 0; overflow-y: auto; padding: 14px; } /* Fullscreen: expand to (near) the whole viewport, overriding the size width and the 80vh caps on the panel and its scrolling body. */ .panelFullscreen { width: calc(100vw - 32px); max-width: none; max-height: calc(100vh - 32px); } .panelFullscreen .body { max-height: calc(100vh - 32px - 46px); } @media (max-width: 560px) { .backdrop { align-items: center; padding: 16px; } .panel { max-height: min(80vh, calc(100vh - 32px)); } /* Keep fullscreen dominant on mobile: `.panel` above has equal specificity and comes later in source order than the base `.panelFullscreen`, so without this it clamps fullscreen back to 80vh on narrow screens. */ .panelFullscreen { max-height: calc(100vh - 32px); } .body { max-height: calc(min(80vh, calc(100vh - 32px)) - 46px); } }