.custom_ckbox {
    display: inline-grid;
    align-items: center;
    position: relative;
    cursor: pointer;
    grid-template-columns: auto 1fr;
}

.custom_ckbox > div {
    position: relative;
    grid-area: 1 / 2;
    justify-self: center;
}

.custom_ckbox.lbl_right > div {
    grid-area: 1 / 1;
}

.custom_ckbox.lbl_right .lbl {
    position: relative;
    grid-area: 1 / 2;
    justify-self: center;
}

.custom_ckbox .box_fill {
    display: grid;
    place-items: center;
    width: 12px;
    height: 12px;
    background: var(--pl-primary-blue);
    transform: scale(0);
    transition: transform 0.1s ease-in;
}

.custom_ckbox.sml .box_fill {
    width: 8px;
    height: 8px;
}

.custom_ckbox.selected .box_fill {
    transition: transform 0.1s ease-out;
    transform: scale(1);
}

.custom_ckbox .box_check {
    width: 100%;
    height: 100%;
    stroke: white;
    stroke-width: 60px;
    fill: none;
}

.custom_ckbox.sml .box_check {
    stroke-width: 50px;
}

.custom_ckbox .box_edge {
    width: 16px;
    height: 16px;
    border: 2px solid var(--pl-primary-blue);
}

.custom_ckbox.sml .box_edge {
    width: 10px;
    height: 10px;
    border-width: 1px;
}

.custom_ckbox .hover_shadow {
    width: 30px;
    height: 30px;
    background: rgba(5, 56, 107, 0.1);
    transition: opacity 0.2s ease-in;
    opacity: 0;
    border-radius: 50%;
}

.custom_ckbox.sml .hover_shadow {
    width: 22px;
    height: 22px;
}

.custom_ckbox .active_shadow {
    width: 30px;
    height: 30px;
    background: var(--pl-primary-blue-20);
    transform: scale(1);
    opacity: 0;
    border-radius: 50%;
}

.custom_ckbox.sml .active_shadow {
    width: 22px;
    height: 22px;
}

.custom_ckbox:hover .hover_shadow {
    transition: opacity 0.2s ease-out;
    opacity: 1;
}

.custom_ckbox:active .active_shadow {
    animation: active_shadow 0.15s ease-out;
    animation-fill-mode: forwards;
}

.custom_ckbox.scalable .box_fill{
    height: 2.5vw;
    width: 2.5vw;
}

.custom_ckbox.scalable .box_check{
    stroke-width: 15.625vw;
}

.custom_ckbox.scalable .box_edge {
    width: 3.125vw;
    height: 3.125vw;
}

.custom_ckbox.scalable .hover_shadow,
.custom_ckbox.scalable .active_shadow {
    width: 6.875vw;
    height: 6.875vw;
}

.custom_ckbox.light .box_fill {
    background: white;
}

.custom_ckbox.light .box_check {
    stroke: var(--pl-primary-blue);
}

.custom_ckbox.light .box_edge {
    border-color: white;
}

.custom_ckbox.light .hover_shadow {
    background: rgba(255, 255, 255, 0.1);
}

.custom_ckbox.light .active_shadow {
    background: rgba(255, 255, 255, 0.3);
}

.custom_ckbox.progression .box_fill {
    background: var(--gf-primary);
}

.custom_ckbox.progression .box_edge {
    border-color: var(--gf-primary);
}

.custom_ckbox.regression .box_fill {
    background: tomato;
}

.custom_ckbox.regression .box_edge {
    border-color: tomato;
}

@keyframes active_shadow {
    from {
        transform: scale(0);
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}

.custom_ckbox.disabled {
    opacity: .5;
    pointer-events: none;
}