body {
    display: grid;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    min-width: 100vw;
    margin: 0;
}

.hamburger {
    width: 2.5em;
    height: .5em;
    background-color: black;
    border-radius: 10000px;
    transition: transform 500ms;
}

.hamburger::after,
.hamburger::before {
    content: "";
    position: absolute;
    width: 2.5em;
    height: .5em;
    background-color: black;
    border-radius: 10000px;
    transition:
        height 150ms ease-in-out 150ms,
        transform 150ms ease-in-out 150ms,
        margin 150ms ease-in-out 250ms,
        width 150ms ease-in-out 250ms;
}

.hamburger::before {
    transform: translateY(-1em);
}

.hamburger::after {
    transform: translateY(1em);
}

.hamburger.on {
    transition: transform 500ms 200ms;
    transform: rotate(225deg);
}

.hamburger.on::before {
    transition:
        width 150ms ease-in-out,
        margin 150ms ease-in-out,
        height 150ms ease-in-out 250ms;

    width: .5em;
    height: 1.5em;
    margin-left: 1em;
}

.hamburger.on::after {
    transition:
        width 150ms ease-in-out,
        margin 150ms ease-in-out,
        height 150ms ease-in-out 250ms,
        transform 150ms ease-in-out 250ms;
    width: .5em;
    height: 2.5em;
    margin-left: 1em;
    transform: translateY(-1em);
}