$animation_timing: cubic-bezier(0.16, 1, 0.3, 1); $default_animation_duration: 0.2s; :host { display: block; --animation-duration: calc(#{$default_animation_duration} * var(--motion-duration-multiplier)); } .popup-backdrop { position: fixed; inset: 0; background-color: transparent; z-index: 100; &.center { display: flex; justify-content: center; align-items: center; } } .popup-container { border-radius: 12px; box-shadow: 0 0 40px oklch(0 0 0 / 15%); min-width: 40px; max-width: 90vw; max-height: 90vh; display: flex; flex-direction: column; overflow: visible; animation: popup-enter var(--animation-duration) $animation_timing; outline: light-dark(oklch(0 0 0 / 20%), oklch(1 0 0 / 20%)) 2px solid; gap: 16px; &.variant-glass { background-color: light-dark(oklch(1 0 0 / 60%), oklch(0 0 0 / 60%)); backdrop-filter: blur(20px); } &.variant-solid { background-color: white; backdrop-filter: none; } &.custom-pos { position: absolute; } } @keyframes popup-enter { from { transform: scale(0.95) translateY(8px); pointer-events: none; opacity: 0; } to { transform: scale(1) translateY(0); pointer-events: auto; opacity: 1; } } .popup-header { display: flex; justify-content: space-between; align-items: center; padding: 0 12px; height: 40px; box-shadow: 0 1px 0 oklch(0 0 0 / 20%); .header-left { display: flex; align-items: center; gap: 12px; } .header-right { .close-btn { background: none; border: none; padding: 4px; cursor: pointer; border-radius: 50%; color: oklch(0.4 0 0); transition: background-color 0.2s, color 0.2s; &:hover { background-color: oklch(0 0 0 / 5%); color: oklch(0 0 0); } } } } .popup-body { padding: 0 12px; overflow-y: visible; flex-grow: 1; }