/* Shared UX platform components: run-state strip, command palette, setup assistant, and toasts */ .run-state-strip { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 14px; margin: 6px 12px 0; border: 1px solid rgba(74, 163, 255, 0.32); border-radius: 8px; background: linear-gradient(180deg, rgba(19, 30, 44, 0.96), rgba(11, 18, 28, 0.97)); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.04); } .run-state-left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; } #runStateChips { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } .run-state-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-dim, #8697aa); font-weight: 600; } .run-state-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 7px; border-radius: 999px; border: 1px solid rgba(74, 163, 255, 0.25); background: linear-gradient(180deg, rgba(17, 26, 38, 0.82), rgba(12, 18, 28, 0.84)); font-size: 10px; color: var(--text-secondary, #b1c2d4); white-space: nowrap; } .run-state-chip .dot { width: 6px; height: 6px; border-radius: 50%; background: #667788; box-shadow: 0 0 0 0 rgba(102, 119, 136, 0.45); } .run-state-chip.running .dot { background: var(--accent-green, #28c27a); box-shadow: 0 0 0 4px rgba(40, 194, 122, 0.16), 0 0 12px rgba(40, 194, 122, 0.35); } .run-state-chip.active { border-color: rgba(74, 163, 255, 0.65); color: var(--text-primary, #e6edf5); box-shadow: inset 0 0 0 1px rgba(74, 163, 255, 0.18); } .run-state-right { display: inline-flex; align-items: center; gap: 8px; } .run-state-value { font-size: 10px; color: var(--text-dim, #8697aa); } .run-state-btn { background: linear-gradient(180deg, rgba(17, 27, 41, 0.9), rgba(10, 16, 25, 0.92)); color: var(--accent-cyan, #4aa3ff); border: 1px solid rgba(74, 163, 255, 0.45); border-radius: 6px; font-size: 10px; padding: 4px 8px; cursor: pointer; transition: background 0.16s ease, border-color 0.16s ease, transform 0.16s ease; } .run-state-btn:hover { background: rgba(74, 163, 255, 0.14); border-color: rgba(74, 163, 255, 0.7); transform: translateY(-1px); } .command-palette-overlay { position: fixed; inset: 0; display: none; align-items: flex-start; justify-content: center; padding: 10vh 18px 0; z-index: 25000; background: rgba(4, 8, 14, 0.65); backdrop-filter: blur(3px); } .command-palette-overlay.open { display: flex; } .command-palette { width: min(760px, 100%); border: 1px solid rgba(74, 163, 255, 0.32); border-radius: 12px; background: linear-gradient(180deg, rgba(16, 26, 39, 0.98), rgba(10, 17, 27, 0.98)); box-shadow: 0 26px 60px rgba(0, 0, 0, 0.56), inset 0 1px 0 rgba(255, 255, 255, 0.04); overflow: hidden; } .command-palette-header { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--border-color, #1e2d3d); } .command-palette-input { width: 100%; border: none; outline: none; background: transparent; color: var(--text-primary, #e6edf5); font-size: 14px; padding: 2px 0; } .command-palette-hint { font-size: 10px; color: var(--text-dim, #8697aa); white-space: nowrap; } .command-palette-list { max-height: min(62vh, 520px); overflow-y: auto; } .command-palette-item { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border: none; border-bottom: 1px solid rgba(255, 255, 255, 0.04); background: transparent; color: var(--text-secondary, #b1c2d4); cursor: pointer; text-align: left; } .command-palette-item:last-child { border-bottom: none; } .command-palette-item .meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .command-palette-item .title { color: var(--text-primary, #e6edf5); font-size: 12px; font-weight: 600; } .command-palette-item .desc { color: var(--text-dim, #8697aa); font-size: 10px; } .command-palette-item .kbd { font-size: 9px; color: var(--text-dim, #8697aa); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 4px; padding: 1px 5px; } .command-palette-item.active, .command-palette-item:hover, .command-palette-item:focus-visible { background: rgba(74, 163, 255, 0.12); outline: none; } .command-palette-empty { padding: 22px 16px; color: var(--text-dim, #8697aa); font-size: 11px; text-align: center; } .setup-overlay { position: fixed; inset: 0; display: none; align-items: center; justify-content: center; z-index: 26000; background: rgba(4, 8, 14, 0.72); backdrop-filter: blur(4px); padding: 14px; } .setup-overlay.open { display: flex; } .setup-modal { width: min(760px, 100%); max-height: 84vh; overflow-y: auto; border: 1px solid var(--border-color, #1e2d3d); border-radius: 12px; background: #101926; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6); } .setup-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; border-bottom: 1px solid var(--border-color, #1e2d3d); padding: 14px; } .setup-title { font-size: 16px; margin: 0; color: var(--text-primary, #e6edf5); } .setup-subtitle { margin: 4px 0 0; font-size: 11px; color: var(--text-dim, #8697aa); } .setup-close { background: transparent; border: none; color: var(--text-dim, #8697aa); font-size: 22px; cursor: pointer; line-height: 1; } .setup-content { padding: 14px; display: grid; gap: 10px; } .setup-step { border: 1px solid var(--border-color, #1e2d3d); border-radius: 8px; padding: 10px; background: rgba(255, 255, 255, 0.02); } .setup-step-header { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 6px; } .setup-step-title { font-size: 12px; color: var(--text-primary, #e6edf5); font-weight: 600; } .setup-step-status { font-size: 10px; color: var(--text-dim, #8697aa); } .setup-step-status.done { color: var(--accent-green, #28c27a); } .setup-step-desc { font-size: 11px; color: var(--text-secondary, #b1c2d4); margin: 0 0 8px; } .setup-step-actions { display: flex; gap: 8px; flex-wrap: wrap; } .setup-btn { padding: 6px 10px; border-radius: 6px; border: 1px solid var(--border-color, #1e2d3d); background: var(--bg-tertiary, #121f2d); color: var(--text-secondary, #b1c2d4); font-size: 11px; cursor: pointer; } .setup-btn.primary { color: var(--text-inverse); background: var(--accent-cyan, #4aa3ff); border-color: var(--accent-cyan, #4aa3ff); } .setup-footer { padding: 12px 14px; border-top: 1px solid var(--border-color, #1e2d3d); display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; align-items: center; } .setup-footer-note { color: var(--text-dim, #8697aa); font-size: 10px; } .app-toast-stack { position: fixed; right: 14px; bottom: 16px; z-index: 25500; display: flex; flex-direction: column; gap: 8px; max-width: min(380px, calc(100vw - 24px)); } .app-toast { border: 1px solid var(--border-color, #1e2d3d); border-left: 3px solid var(--accent-cyan, #4aa3ff); border-radius: 8px; background: rgba(15, 24, 35, 0.97); color: var(--text-secondary, #b1c2d4); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.35); padding: 8px 10px; font-size: 11px; } .app-toast.error { border-left-color: var(--accent-red, #e25d5d); } .app-toast.warning { border-left-color: var(--accent-orange, #d6a85e); } .app-toast-title { font-size: 11px; color: var(--text-primary, #e6edf5); font-weight: 600; margin-bottom: 4px; } .app-toast-msg { color: var(--text-secondary, #b1c2d4); } .app-toast-actions { margin-top: 7px; display: flex; gap: 6px; flex-wrap: wrap; } .app-toast-actions button { border: 1px solid var(--border-color, #1e2d3d); border-radius: 4px; background: var(--bg-tertiary, #132133); color: var(--text-secondary, #b1c2d4); font-size: 10px; padding: 3px 6px; cursor: pointer; } .app-toast-actions button:hover { border-color: rgba(74, 163, 255, 0.5); color: var(--text-primary, #e6edf5); } /* ---- Light theme overrides ---- */ [data-theme="light"] .run-state-chip { background: linear-gradient(180deg, rgba(233, 238, 245, 0.9), rgba(225, 232, 242, 0.92)); border-color: rgba(31, 95, 168, 0.18); color: var(--text-secondary); } [data-theme="light"] .run-state-chip.active { border-color: rgba(31, 95, 168, 0.4); color: var(--text-primary); } [data-theme="light"] .run-state-btn { background: linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(241, 244, 249, 0.97)); color: var(--accent-cyan); border-color: rgba(31, 95, 168, 0.25); } [data-theme="light"] .run-state-btn:hover { background: rgba(31, 95, 168, 0.08); border-color: rgba(31, 95, 168, 0.45); } @media (max-width: 1023px) { .run-state-strip { flex-direction: column; align-items: stretch; } .run-state-right { justify-content: space-between; } } @media (max-width: 768px) { .command-palette-overlay { padding: 8vh 10px 0; } .command-palette-item { padding: 9px 10px; } .setup-header, .setup-content, .setup-footer { padding: 10px; } .app-toast-stack { left: 10px; right: 10px; max-width: none; } }