.saki-container {
    --size: min(400px,80vw,80vh);
    --border-width: calc(var(--size) / 100);
    --border-radius: calc(var(--size) / 20);
    --padding: calc(var(--size) / 20);
    --shadow-offset: calc(var(--size) / 40);

    position: relative;
    margin: calc(var(--size) / 10) auto;
    border: var(--border-width) solid #000;
    border-radius: var(--border-radius);
    padding: 0;
    box-sizing: border-box;
    width: var(--size);
    height: var(--size);

    background: #fff;
    color: #000 !important;
}

.saki-container::after {
    content: "";
    display: block;
    position: absolute;
    left: calc(var(--shadow-offset) - var(--border-width));
    top: calc(var(--shadow-offset) - var(--border-width));
    width: calc(100% + var(--border-width) * 2);
    height: calc(100% + var(--border-width) * 2);
    border-radius: var(--border-radius);
    background: repeating-linear-gradient(-45deg, #0008, #0008 10pt, #0002 10pt, #0002 20pt);
    z-index: -1;
}

.background,
.foreground {
    position: absolute;
    top: 0;
    left: 0;

    box-sizing: border-box;
    width: 100%;
    height: 100%;

    padding: var(--padding);
}

.ground-text {
    width: 100%;
    height: 10%;
    font-size: calc((var(--size) - var(--padding) * 2) / 10 - var(--border-width));
    line-height: calc((var(--size) - var(--padding) * 2) / 10);
    font-weight: bold;
    text-align: center;
    transform: translateY(calc(0pt - var(--border-width)));
}

.image-container {
    position: relative;
    width: 100%;
    height: 75%;
}

.image-container img {
    box-sizing: border-box;
    width: 100%;
    height: calc(100% - var(--border-width));
    object-fit: contain;

    border: var(--border-width) solid #808080;
    border-radius: var(--border-width);
}

.background .image-container img {
    background: #b0b0b0;
}

.slider-area {
    position: absolute;
    top: 0;
    left: 0;

    box-sizing: border-box;
    width: 100%;
    height: 100%;

    padding: var(--padding);

    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.flag-container {
    flex-grow: 1;
    box-sizing: border-box;
    position: relative;
    width: 100%;
    height: 15%;
    margin: calc(var(--size) * 0.1 - var(--border-width)) 0 var(--border-width) 0;
    border: transparent solid var(--border-width);
    border-radius: var(--border-width);
    background: transparent;
    overflow: hidden;
}

.flag {

    width: calc(var(--size) / 10 + var(--border-width) * 2);
    height: 100%;


    position: relative;
}

.flag img {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: calc(((var(--size) - var(--padding) * 2 - var(--border-width) * 2) * 0.75 - (var(--size) - var(--padding) * 2) * 1080 / 1920 - var(--border-width) * 0.75) / 2);

    box-sizing: border-box;
    max-width: unset !important;
    width: calc(81 / 480 * (var(--size) - var(--padding) * 2 - var(--border-width) * 4));
    height: auto;
    object-fit: contain;
}

.slider-container {
    box-sizing: border-box;
    position: relative;
    width: 100%;
    height: 15%;
    border: #000 solid var(--border-width);
    border-radius: calc(var(--border-width) * 2);
    background: transparent;

    overflow: hidden;

    z-index: 1;
}

.slider {
    box-sizing: border-box !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    -webkit-appearance: none !important;
    background: transparent !important;
}

.slider::-webkit-slider-thumb {
    appearance: none !important;
    -webkit-appearance: none !important;
    box-sizing: border-box !important;
    width: calc((var(--size) - var(--border-width) * 2 - var(--padding) * 2) * 0.15 - var(--border-width) * 2) !important;
    height: calc((var(--size) - var(--border-width) * 2 - var(--padding) * 2) * 0.15 - var(--border-width) * 2) !important;
    border: #808080 solid var(--border-width) !important;
    border-radius: var(--border-width) !important;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -2 14 24'%3E%3Cpath d='M 0 0 L 10 10 M 10 10 L 0 20' stroke='%23808080' stroke-width='3' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center center / auto 80% no-repeat #b0b0b0 !important;
    cursor: pointer !important;
}

.slider::-moz-range-thumb {
    appearance: none !important;
    -moz-appearance: none !important;
    box-sizing: border-box !important;
    width: calc((var(--size) - var(--border-width) * 2 - var(--padding) * 2) * 0.15 - var(--border-width) * 2) !important;
    height: calc((var(--size) - var(--border-width) * 2 - var(--padding) * 2) * 0.15 - var(--border-width) * 2) !important;
    border: #808080 solid var(--border-width) !important;
    border-radius: var(--border-width) !important;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -2 14 24'%3E%3Cpath d='M 0 0 L 10 10 M 10 10 L 0 20' stroke='%23808080' stroke-width='3' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center center / auto 80% no-repeat #b0b0b0 !important;
    cursor: pointer !important;
}

.slider-container::before {
    content: "";
    display: block;
    position: absolute;
    right: 0;
    top: 0;
    width: calc(100% - var(--size) / 10 - var(--border-width) * 2);
    height: 100%;
    background: transparent;

    z-index: 1;
}

.result {
    position: absolute;
    top: 50%;
    left: 50%;

    transform: translate(-50%, -50%);

    width: 100%;
    height: 100%;

    font-size: calc(var(--size) / 10);
    line-height: var(--size);
    text-align: center;

    border-radius: calc(var(--border-radius) - var(--border-width));
    background: #fffb;

    transition: all ease 0.4s;
}

.result.hidden {
    opacity: 0;
    z-index: -1;
}

.result.block {
    opacity: 1;
    z-index: 1000;
}