:root {
    --main-font-family: 'Varela', sans-serif;
    --main-background-color: #a0522d;
    --main-background-color-light: #bd5727;
    --cell-background-color: bisque;
    --cell-background-color--disabled: #fff8ef;
    --cell-background-color--disabled--dark: #89543b;
    --font-colot-light: #feffe9;
    --cell-background-color--hover: rgb(250, 212, 165);
    --cell-background-color--hint: rgb(250, 148, 24);
    --cell-background-color--hint--light: rgb(118, 186, 0);

    --cell-size: 40px;
    --font-size-after: 9px;
    --tools-after-size: 12px;
}

body {
    margin: 0;
}

body.dark {
    background-color: var(--main-background-color);
}

.game-field__grid {
    box-sizing: border-box;
    border: 2px solid var(--main-background-color);
    display: grid;
    grid-template-columns: repeat(9, var(--cell-size));
    grid-auto-rows: var(--cell-size);
    gap: 2px;
    background-color: var(--main-background-color);
    width: fit-content;
    transition: all ease-in-out 0.5s;
}

.grid.dark {
    border-color: var(--cell-background-color);
    background-color: var(--cell-background-color);
}

.grid__cell {
    display: flex;
    justify-content: center;
    align-items: center;
    box-sizing: border-box;
    padding: 10px;
    font-family: var(--main-font-family);
    font-weight: 600;
    background-color: var(--cell-background-color);
    border-radius: 2px;
    transition: all 0.5s ease-in-out;
}

.grid__cell.dark {
    color: var(--font-colot-light);
    background-color: var(--main-background-color);
}

.grid__cell:hover {
    cursor: pointer;
    background-color: var(--cell-background-color--hover);
}

.grid__cell.dark:hover {
    cursor: pointer;
    background-color: var(--main-background-color-light);
}

.grid__cell--clicked {
    transition: background-color 0.3s;
    background-color: red !important;
}

.game-field {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}

.game-field__pair-em-up {
    margin: 0;
}

.pair-em-up {
    font-family: var(--main-font-family);
    text-transform: uppercase;
    transition: all ease-in-out 0.5s;
}

.pair-em-up.dark {
    color: var(--font-colot-light);
}

.score-cont {
    display: flex;
    column-gap: 10px;
    font-family: var(--main-font-family);
}

.score-cont__score {
    transition: all ease-in-out 0.5s;
}

.score-cont__score.dark {
    color: var(--font-colot-light);
}

.tools {
    width: 380px;
    display: flex;
    flex-direction: row;
    justify-content: space-around;
}

.tools__button {
    position: relative;
    box-sizing: border-box;
    border: 2px, solid, var(--main-background-color);
    border-radius: 5px;
    width: var(--cell-size);
    height: var(--cell-size);
    transition: all ease-in-out 0.5s;
}

.tools__button::after {
    transition: all ease-in-out 0.5s;
}

.tools__button.dark {
    border-color: var(--cell-background-color);
}

.tools__button.dark::after {
    color: var(--font-colot-light);
}

.tools__button.dark:hover {
    background-color: var(--main-background-color-light);
}

.tools__button.dark::after {
    background-color: inherit;
    border: 1px solid var(--cell-background-color);
}

.revert-button {
    background: url(./src/images/svg/backup.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.revert-button.dark {
    background: url(./src/images/svg/backup-light.svg);
    background-color: var(--main-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.revert-button::after {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    content: attr(data-after-content);
    font-family: var(--main-font-family);
    font-size: var(--font-size-after);
    width: var(--tools-after-size);
    height: var(--tools-after-size);
    background-color: inherit;
    border: 1px solid var(--main-background-color);
    border-radius: 2px;
    top: -5px;
    right: -5px;
}

.plus-button {
    background: url(./src/images/svg/plus.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.plus-button.dark {
    background: url(./src/images/svg/plus-light.svg);
    background-color: var(--main-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.plus-button::after {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    content: attr(data-after-content);
    font-family: var(--main-font-family);
    font-size: var(--font-size-after);
    width: var(--tools-after-size);
    height: var(--tools-after-size);
    background-color: inherit;
    border: 1px solid var(--main-background-color);
    border-radius: 2px;
    top: -5px;
    right: -5px;
}

.shuffle-button {
    background: url(./src/images/svg/cards.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.shuffle-button.dark {
    background: url(./src/images/svg/cards-light.svg);
    background-color: var(--main-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.shuffle-button::after {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    content: attr(data-after-content);
    font-family: var(--main-font-family);
    font-size: var(--font-size-after);
    width: var(--tools-after-size);
    height: var(--tools-after-size);
    background-color: inherit;
    border: 1px solid var(--main-background-color);
    border-radius: 2px;
    top: -5px;
    right: -5px;
}

.trash-button {
    background: url(./src/images/svg/trash-can.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.trash-button.dark {
    background: url(./src/images/svg/trash-can-light.svg);
    background-color: var(--main-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.trash-button::after {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    content: attr(data-after-content);
    font-family: var(--main-font-family);
    font-size: var(--font-size-after);
    width: var(--tools-after-size);
    height: var(--tools-after-size);
    background-color: inherit;
    border: 1px solid var(--main-background-color);
    border-radius: 2px;
    top: -5px;
    right: -5px;
}

.hint-button {
    background: url(./src/images/svg/magnifying-glass.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 33px;
}

.hint-button.dark {
    background: url(./src/images/svg/magnifying-glass-light.svg);
    background-color: var(--main-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 33px;
}

.hint-button::after {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    content: attr(data-after-content);
    font-family: var(--main-font-family);
    font-size: var(--font-size-after);
    width: var(--tools-after-size);
    height: var(--tools-after-size);
    background-color: inherit;
    border: 1px solid var(--main-background-color);
    border-radius: 2px;
    top: -5px;
    right: -5px;
}

.tools__button:hover {
    cursor: pointer;
    background-color: var(--cell-background-color--hover);
}

.disabled {
    cursor: default !important;
    background-color: var(--cell-background-color--disabled) !important;
}

.dark.disabled {
    cursor: default !important;
    background-color: var(--cell-background-color--disabled--dark) !important;
}

.cell-hint {
    transition: background-color 0.5s ease-in-out;
    background-color: var(--cell-background-color--hint);
}

.cell-hint.dark {
    transition: background-color 0.5s ease-in-out;
    background-color: var(--cell-background-color--hint--light);
}

.select-container {
    width: 70px;
    height: 30px;
}

.time {
    font-family: var(--main-font-family);
    transition: all ease-in-out 0.5s;
}

.time.dark {
    color: var(--font-colot-light);
}

.select {
    width: 100%;
    height: 100%;
    font-family: var(--main-font-family);
    font-weight: 900;
    font-size: 100%;
    appearance: none;
    background-color: var(--cell-background-color);
    border: 2px, solid, var(--main-background-color);
    border-radius: 5px;
    transition: all ease-in-out 0.5s;
}

.select.dark {
    font-weight: 500;
    color: var(--font-colot-light);
    background-color: var(--main-background-color);
    border-color: var(--cell-background-color);
}

.options {
    width: 380px;
    display: flex;
    flex-direction: row;
    justify-content: space-evenly;
}

.options__button {
    box-sizing: border-box;
    width: var(--cell-size);
    height: var(--cell-size);
    background-color: var(--cell-background-color);
    border: 2px, solid, var(--main-background-color);
    border-radius: 5px;
    transition: all ease-in-out 0.5s;
}

.options__button.dark {
    background-color: var(--main-background-color);
    border-color: var(--cell-background-color);
}

.options__button:hover {
    cursor: pointer;
    background-color: var(--cell-background-color--hover);
}

.options__button.dark:hover {
    cursor: pointer;
    background-color: var(--main-background-color-light);
}

.restart {
    background: url(./src/images/svg/restart.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.restart.dark {
    background: url(./src/images/svg/restart-light.svg);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.save {
    background: url(./src/images/svg/save.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.save.dark {
    background: url(./src/images/svg/save-light.svg);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.load {
    background: url(./src/images/svg/load.svg);
    background-color: var(--cell-background-color);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.load.dark {
    background: url(./src/images/svg/load-light.svg);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
}

.settings-bar {
    max-width: 200px;
    display: flex;
    flex-direction: row;
    gap: 20px;
    align-items: center;
}

.settings {
    box-sizing: border-box;
    width: var(--cell-size);
    height: var(--cell-size);
    background: url(./src/images/svg/setting.svg);
    background-color: var(--cell-background-color);
    border: 2px, solid, var(--main-background-color);
    border-radius: 40px;
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
    transition: all ease-in-out 0.5s;
}

.settings.dark {
    background: url(./src/images/svg/setting-light.svg);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 30px;
    background-color: var(--main-background-color) !important;
    border-color: var(--cell-background-color);
}

.settings:hover {
    cursor: pointer;
    background-color: var(--cell-background-color--hover);
    transform: rotate(45deg);
}

.settings.clicked {
    background-color: var(--cell-background-color--hover);
    transform: rotate(90deg);
}

.modal {
    box-sizing: border-box;
    position: absolute;
    width: 300px;
    padding: 15px;
    top: 55px;
    left: 100px;
    transform: translateX(0px);
    display: flex;
    flex-direction: column;
    row-gap: 10px;
    justify-content: space-between;
    background-color: var(--cell-background-color--hover);
    border: 2px, solid, var(--main-background-color);
    border-radius: 5px;
    transition: all ease-in-out 0.5s;
}

.modal.dark {
    background-color: var(--main-background-color);
    border-color: var(--cell-background-color--hover);
}

.modal.invisible {
    transform: translateX(-400px);
}

.soundbar {
    box-sizing: border-box;
    padding: 5px;
    width: 100%;
    background-color: var(--cell-background-color--hover);
    transition: all ease-in-out 0.5s;
}

.soundbar.dark {
    background-color: var(--main-background-color);
}

.sound__span {
    font-family: var(--main-font-family);
    transition: all ease-in-out 0.5s;
}

.sound__span.dark {
    color: var(--font-colot-light);
}

.sound__input {
    -webkit-appearance: none;
    accent-color: var(--cell-background-color);
    height: 15px;
    border-radius: 8px;
    border-color: var(--main-background-color);
    overflow: hidden;
}

.sound__input::-webkit-slider-runnable-track {
    box-sizing: border-box;
    height: 15px;
    background-color: var(--main-background-color);
    transition: all ease-in-out 0.5s;
}

.sound__input.dark::-webkit-slider-runnable-track {
    background-color: var(--cell-background-color);
}

.sound__input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 15px;
    height: 15px;
    border: 2px solid var(--main-background-color);
    border-radius: 8px;
    background-color: var(--cell-background-color--hover);
    box-shadow: -129px 0 0 123px var(--cell-background-color);
    cursor: pointer;
    transition: all ease-in-out 0.5s;
}

.sound__input.dark::-webkit-slider-thumb {
    border-color: var(--cell-background-color);
    box-shadow: -129px 0 0 123px var(--main-background-color-light);
    background-color: var(--main-background-color);
}

.soundbar__elem {
    width: 95%;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
}

.theme-cont {
    background-color: var(--cell-background-color--hover);
    border: 1px solid black;
    anchor-name: --theme-anchor;
    display: flex;
    flex-direction: row;
    justify-content: end;
    padding: 5px;
    transition: all ease-in-out 0.5s;
}

.theme-cont.dark {
    background-color: var(--main-background-color);
    border-color: var(--cell-background-color);
}

.theme {
    position: absolute;
    position-anchor: --theme-anchor;
    top: calc(anchor(--theme-anchor top) - 8px);
    left: calc(anchor(--theme-anchor left) + 16px);
    background-color: var(--cell-background-color--hover);
    font-family: var(--main-font-family);
    transition: all ease-in-out 0.5s;
}

.theme.dark {
    background-color: var(--main-background-color);
    color: var(--font-colot-light);
}

.theme-span {
    font-family: var(--main-font-family);
    transition: color ease-in-out 0.5s;
}

.theme-span.dark {
    color: var(--font-colot-light);
}

.theme-switch-cont {
    display: flex;
    flex-direction: row;
    align-items: center;
    column-gap: 10px;
}

.checkbox-input {
    display: none;
}

.checkbox-span {
    display: block;
    width: 35px;
    height: 12px;
    background-color: var(--main-background-color);
    border-radius: 8px;
    transition: background-color 0.3s ease-in;
}

.checkbox-input:checked + .checkbox-span::after {
    transform: translateX(23px);
}

.checkbox-input:checked + .checkbox-span {
    background-color: var(--cell-background-color);
}

.checkbox-span::after {
    box-sizing: border-box;
    display: block;
    content: '';
    width: 12px;
    height: 12px;
    background-color: var(--cell-background-color);
    border: 2px solid var(--main-background-color);
    border-radius: 8px;
    transition: transform 0.3s ease-in;
}

.checkbox-span:hover {
    cursor: pointer;
}

.shadow {
    position: absolute;
    width: 100%;
    height: 100vh;
    background-color: black;
    animation: shadowInvisible 0.5s forwards;
}

.shadow.visible {
    animation: shadowVisible 0.5s forwards;
}

@keyframes shadowVisible {
    from {
        display: none;
        opacity: 0;
    }
    to {
        opacity: 0.1;
        display: block;
    }
}

@keyframes shadowInvisible {
    from {
        display: block;
        opacity: 0.1;
    }
    to {
        opacity: 0;
        display: none;
    }
}
