Spaces:
Running
Running
| /* ββ Menu primitive βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .ui-menu { | |
| /* Position is set by Radix via inline styles β declaring `position` here | |
| * (especially `fixed`) fights its anchored placement and can cause the | |
| * popover to render against the viewport edge instead of the trigger. */ | |
| z-index: var(--z-overlay); | |
| min-width: 160px; | |
| max-width: 320px; | |
| padding: 4px; | |
| background: linear-gradient(160deg, rgba(47, 41, 39, 0.98) 0%, rgba(32, 28, 27, 0.98) 100%); | |
| backdrop-filter: var(--glass-blur-md); | |
| -webkit-backdrop-filter: var(--glass-blur-md); | |
| border: 1px solid var(--color-border-strong); | |
| border-radius: var(--radius-lg); | |
| box-shadow: var(--shadow-xl); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1px; | |
| animation-duration: var(--dur-fast); | |
| animation-timing-function: var(--ease-out); | |
| animation-fill-mode: both; | |
| } | |
| .ui-menu--below { animation-name: ui-menu-pop-down; transform-origin: top; } | |
| .ui-menu--above { animation-name: ui-menu-pop-up; transform-origin: bottom; } | |
| @keyframes ui-menu-pop-down { | |
| from { opacity: 0; transform: translateY(-4px) scale(0.98); } | |
| to { opacity: 1; transform: translateY(0) scale(1); } | |
| } | |
| @keyframes ui-menu-pop-up { | |
| from { opacity: 0; transform: translateY( 4px) scale(0.98); } | |
| to { opacity: 1; transform: translateY(0) scale(1); } | |
| } | |
| .ui-menu__item { | |
| display: flex; | |
| align-items: center; | |
| gap: var(--space-3); | |
| padding: 6px 10px; | |
| background: transparent; | |
| border: 0; | |
| border-radius: var(--radius-sm); | |
| color: var(--color-fg); | |
| font-family: var(--font-sans); | |
| font-size: var(--text-md); | |
| font-weight: var(--weight-medium); | |
| cursor: pointer; | |
| text-align: left; | |
| white-space: nowrap; | |
| transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); | |
| } | |
| .ui-menu__item:focus { | |
| outline: none; | |
| background: rgba(211, 134, 155, 0.15); | |
| color: var(--color-fg); | |
| } | |
| .ui-menu__item:hover:not(.is-disabled):not(.is-destructive) { | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| .ui-menu__item.is-destructive { color: var(--color-danger); } | |
| .ui-menu__item.is-destructive:focus, | |
| .ui-menu__item.is-destructive:hover { background: rgba(251, 73, 52, 0.15); } | |
| .ui-menu__item.is-disabled { | |
| opacity: 0.4; | |
| cursor: not-allowed; | |
| } | |
| .ui-menu__icon { color: var(--color-fg-muted); flex-shrink: 0; } | |
| .ui-menu__label { flex: 1; } | |
| .ui-menu__shortcut { | |
| margin-left: var(--space-5); | |
| font-size: var(--text-xs); | |
| color: var(--color-fg-subtle); | |
| font-family: var(--font-mono); | |
| letter-spacing: 0.04em; | |
| } | |
| .ui-menu__separator { | |
| height: 1px; | |
| margin: 4px 2px; | |
| background: var(--color-border); | |
| } | |