:root {
    --page-background: #fafafa;
    --sudoku-background: #fff;
    --sudoku-border: rgba(62, 62, 62, 0.701);
    --numbers-color: #0072e3;
    --elem-active: blue;
    --active-cell: #9ecfff;
    --highlight-color: rgb(220, 236, 239);
    --item-mistake: rgb(221, 0, 0);
    --item-intersected: rgb(254, 219, 219);
    --note-color: rgb(91, 91, 91);
}

html {
    font-size: 18px;
    font-family: 'Noto Sans', sans-serif;
    background-color: var(--page-background);
}

.wrapper {
    margin: 0 auto;
    max-width: 500px;
    -webkit-user-select: none;
    user-select: none;
}

.wrapper > *:not(:last-child) {
    margin: 0px 0px 12px 0px;
}

.wrapper h1 {
    font-size: 1.5rem;
}

.complexity {
    display: flex;
    justify-content: space-around;
    font-size: 1.2rem;
}

.complexity__item {
    padding: 2px 5px 2px 5px;
    border-radius: 4px;
}

.complexity__item:hover {
    cursor: pointer;
}

.complexity__item.active {
    color: var(--elem-active);
}

.info {
    display: flex;
    justify-content: space-around;
    font-size: 0.7rem;
}

.info__item {
    width: 100%;
    text-align: center;
}

.sudoku {
    display: grid;
    grid-template: repeat(3, 1fr) / repeat(3, 1fr);
    aspect-ratio: 1 / 1;
    border: 1px solid var(--sudoku-border);
    background-color: var(--sudoku-background);
}

.sudoku__square {
    display: grid;
    grid-template: repeat(3, 1fr) / repeat(3, 1fr);
    border-top: 1px solid var(--sudoku-border);
    border-left: 1px solid var(--sudoku-border);
}

.sudoku__item {
    display: grid;
    justify-content: center;
    align-content: center;
    border-bottom: 1px solid var(--sudoku-border);
    border-right: 1px solid var(--sudoku-border);
}

.sudoku__item.highlight {
    background-color: var(--highlight-color);
}

.sudoku__item.active {
    background-color: var(--active-cell);
}

.sudoku__item.editable {
    color: var(--elem-active);
}

.sudoku__item.wrong {
    color: var(--item-mistake);
}

.sudoku__item.intersected {
    background-color: var(--item-intersected);
}

.sudoku__item:hover {
    cursor: default;
}

.sudoku__item_note {
    grid-template: repeat(3, 1fr) / repeat(3, 1fr);
}

.sudoku__note {
    justify-self: center;
    align-self: center;
    font-size: 0.4rem;
    color: var(--note-color);
}

.tools {
    display: flex;
    justify-content: space-around;
    font-size: 1.25rem;
}

.tools__item {
    padding: 0 5px;
    border-radius: 4px;
    text-transform: uppercase;
}

.tools__item:hover {
    cursor: pointer;
    background-color: var(--highlight-color);
}

.tools__item.active {
    color: var(--elem-active);
}

.tools__undo:active {
    color: var(--elem-active);
}

.tools__erase:active {
    color: var(--elem-active);
}

.numbers {
    display: flex;
    justify-content: space-around;
    font-size: 1.5rem;
}

.numbers__item {
    width: 100%;
    padding: 0 7px;
    text-align: center;
    border-radius: 4px;
    color: var(--numbers-color);
}

.numbers__item:hover {
    cursor: pointer;
    background-color: var(--highlight-color);
}

@media (min-width: 340px) {
    html {
        font-size: 20px;
    }
}

@media (min-width: 400px) {
    html {
        font-size: 24px;
    }
}

@media (min-width: 470px) {
    html {
        font-size: 28px;
    }
}