:root {
    --border-size: 4px;
    --border-style: var(--border-size) solid transparent;
    --border-color: var(--cimportant);
}

.border {
    background: none;
    border: 0;
    box-sizing: border-box;
    margin: 1em;
    padding: 1em 2em;
    /* box-shadow: inset 0 0 0 2px #f45e61; */
    /* color: #f45e61; */
    font-size: inherit;
    font-weight: 700;
    position: relative;
    vertical-align: middle;
    border: 0;
}

.border::before,
.border::after {
    box-sizing: inherit;
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
}

.border.draw {
    transition: color 0.25s;
}

.border.draw::before,
.border.draw::after {
    border: var(--border-style);
    width: 0;
    height: 0;
}

.border.draw::before {
    top: 0;
    left: 0;
}

.border.draw::after {
    bottom: 0;
    right: 0;
}

.border.draw:hover {
    /* color: #0eb7da; */
    color: inherit;
}

.border.draw:hover::before,
.border.draw:hover::after {
    width: 100%;
    height: 100%;
}

.border.draw:hover::before {
    /* border-top-color: #0eb7da; */
    /* border-right-color: #0eb7da; */
    border-top-color: var(--border-color);
    border-right-color: var(--border-color);
    transition: width 0.25s ease-out, height 0.25s ease-out 0.25s;
}

.border.draw:hover::after {
    /* border-bottom-color: #0eb7da; */
    /* border-left-color: #0eb7da; */
    border-bottom-color: var(--border-color);
    border-left-color: var(--border-color);
    transition: border-color 0s ease-out 0.5s, width 0.25s ease-out 0.5s, height 0.25s ease-out 0.75s;
}

.border.meet:hover {
    color: inherit;
}

.border.meet::after {
    top: 0;
    left: 0;
}

.border.meet:hover::before {
    border-top-color: var(--border-color);
    border-right-color: var(--border-color);
}

.border.meet:hover::after {
    border-bottom-color: var(--border-color);
    border-left-color: var(--border-color);
    transition: height 0.25s ease-out, width 0.25s ease-out 0.25s;
}

.border.center:hover {
    color: inherit;
}

.border.center::before,
.border.center::after {
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    transform-origin: center;
}

.border.center::before {
    border-top: var(--border-size) solid var(--border-color);
    border-bottom: var(--border-size) solid var(--border-color);
    transform: scale3d(0, 1, 1);
}

.border.center::after {
    border-left: var(--border-size) solid var(--border-color);
    border-right: var(--border-size) solid var(--border-color);
    transform: scale3d(1, 0, 1);
}

.border.center:hover::before,
.border.center:hover::after {
    transform: scale3d(1, 1, 1);
    transition: transform 0.5s;
}

.border.spin {
    width: 5em;
    height: 5em;
    padding: 0;
}

.border.spin:hover {
    color: inherit;
}

.border.spin::before,
.border.spin::after {
    top: 0;
    left: 0;
}

.border.spin::before {
    border: var(--border-size) solid transparent;
}

.border.spin:hover::before {
    border-top-color: var(--border-color);
    border-right-color: var(--border-color);
    border-bottom-color: var(--border-color);
    transition: border-top-color 0.15s linear, border-right-color 0.15s linear 0.1s, border-bottom-color 0.15s linear 0.2s;
}

.border.spin::after {
    border: 0 solid transparent;
}

.border.spin:hover::after {
    border-top: var(--border-size) solid var(--border-color);
    border-left-width: var(--border-size);
    border-right-width: var(--border-size);
    transform: rotate(270deg);
    transition: transform 0.4s linear 0s, border-left-width 0s linear 0.35s;
}

.border.circle {
    border-radius: 100%;
    box-shadow: none;
}

.border.circle::before,
.border.circle::after {
    border-radius: 100%;
}
