.drawer-overlay { position: fixed; top: 0; left: 0; width: 0; height: 0; z-index: 1000; box-sizing: border-box; pointer-events: none; background: rgba(10, 10, 10, 0.76); outline: none; opacity: 0; display: flex; flex-direction: column; justify-content: flex-end; .overlay-mask { position: absolute; top: 0; left: 0; bottom: 0; right: 0; z-index: 1; } .overlay-body { display: flex; flex-direction: column; width: 100%; height: 100%; max-width: 100%; max-height: 100%; z-index: 2; .overlay-close { flex-shrink: 0; display: flex; align-items: flex-end; justify-content: flex-end; > a { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; color: #dbdbde; &:hover { color: #fff } .icon { width: 24px; height: 24px } } } .overlay-resize { width: 100%; height: 5px; margin-bottom: -5px; z-index: 1; } .overlay-content { flex: 1; position: relative; background: #fff; border-radius: 18px 18px 0 0; transform: translate(0, 15%) scale(0.98); cursor: default; opacity: 0; } } &.overlay-visible { pointer-events: auto; opacity: 1; width: 100%; height: 100%; transition: opacity 0.2s ease; .overlay-body { .overlay-content { opacity: 1; transform: translate(0, 0) scale(1); transition: opacity 0.2s ease, transform 0.3s ease; } } } &.overlay-hide { width: 100%; height: 100%; transition: opacity 0.2s ease; .overlay-body { .overlay-content { transform: translate(0, 15%) scale(0.98); transition: opacity 0.2s ease, transform 0.2s ease } } } &.right { flex-direction: row; justify-content: flex-end; .overlay-body { flex-direction: row; .overlay-close { align-items: flex-start; } .overlay-resize { width: 5px; height: 100%; margin-right: -5px; z-index: 1; } .overlay-content { transform: translate(15%, 0) scale(0.98); border-radius: 18px 0 0 18px; } } &.overlay-visible { .overlay-body { .overlay-content { transform: translate(0, 0) scale(1); } } } &.overlay-hide { .overlay-body { .overlay-content { transform: translate(15%, 0) scale(0.98); } } } } }