* {
    font-family: "Arial Rounded MT Bold", Arial, sans-serif;
    box-sizing: border-box;
    margin: 0;
    touch-action: manipulation;
}

body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 16px 8px;
    height: 100dvh;
}

h1 {
    font-size: 40px;
    color: #333;
}

p {
    font-size: 16px;
}

#time {
    color: #888;
}

.grid {
    width: 400px;
    aspect-ratio: 1;
    background-color: #000;
    display: grid;
    grid-template-rows: repeat(3, 1fr);
    grid-template-columns: repeat(3, 1fr);
    gap: 2px;
    padding: 2px;
    .box {
        background-color: #ccc;
        display: grid;
        grid-template-rows: repeat(3, 1fr);
        grid-template-columns: repeat(3, 1fr);
        gap: 1px;
        .cell {
            color: rgb(60, 89, 169);
            background-color: #fff;
            font-size: 22px;
            display: flex;
            justify-content: center;
            align-items: center;
            -webkit-user-select: none;
            user-select: none;
            cursor: pointer;
            &.readonly {
                color: #000;
            }
            &.group {
                background-color: rgb(227 235 243);
            }
            &.same {
                background-color: rgb(196 215 234);
            }
            &.invalid {
                color: rgb(215, 46, 63);
                background-color: rgb(247, 205, 213);
            }
            &.selected {
                background-color: rgb(178 223 254);
            }
        }
    }
}

#controls {
    display: flex;
    .button {
        text-align: center;
        font-size: 28px;
        line-height: 40px;
        width: 40px;
        -webkit-user-select: none;
        user-select: none;
        cursor: pointer;
        &.hidden {
            visibility: hidden;
        }
        &.disabled {
            color: #888;
            pointer-events: none;
        }
    }
    #candidates {
        display: flex;
    }
}
