* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

.unselectable {
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* Internet Explorer/Edge */
    user-select: none; /* 标准语法 */
}

:root {
    --height: 630px;
}

body {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
}

body>div.main{
    position: relative;
    /*background-color: red;*/
}

body form {
    position: absolute;
    right: -35%;
    top:35%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 30%;
    height: 30%;
    /*background-color: #2F96B4;*/
}

body form>button{
    margin: 10% 0;
    width: 80%;
    height: 30%;
    cursor:pointer;
}

body div.sudoku-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 列等宽 */
    grid-template-rows:repeat(3, 1fr); /*3行等高*/
    aspect-ratio: 1; /* 保持容器为正方形，长宽设定不一致时会破坏改属性*/
    width: var(--height);
    height: var(--height);
}

body div.sudoku-grid > div.box {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 列等宽 */
    grid-template-rows:repeat(3, 1fr); /*3行等高*/
    aspect-ratio: 1; /* 保持容器为正方形 */
    border: 2px solid black;
    /*background-color: red;*/
}

body div.sudoku-grid > div.box > div.cell {
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1px solid black;
    font-size: 1.5em;
    cursor: pointer;
}

body div.sudoku-grid > div.box > div.cell[enable="true"].selected {
    background-color: lightpink;
}

body div.sudoku-grid > div.box > div.cell[enable="true"]:hover {
    background-color: lightpink;
}

body div.sudoku-grid > div.box > div.cell[enable="false"] {
    cursor: default;
}

body div.sudoku-grid>div.box>div.cell[enable="true"]{
    color:lightgrey;
}

body div.sudoku-grid > div.number-picker {
    contain: strict;
    position: absolute;
    z-index: 0;
    left: -35%;
    top: 35%;
    width: 30%;
    height: 30%;
    display: none;
    grid-template-columns: repeat(3, 1fr); /* 3 列等宽 */
    grid-template-rows:repeat(3, 1fr); /*3行等高*/
    aspect-ratio: 1; /* 保持容器为正方形 */
    border: none;
    background-color: lightgrey;
    border-radius: 10px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.8);
}

body div.sudoku-grid > div.number-picker.top {
    z-index: 1;
    will-change: z-index;
}

body div.sudoku-grid > div.number-picker.active {
    display: grid;
}

/* 点击效果 */
body div.sudoku-grid > div.number-picker:active {
    /* 提升按钮的3D效果 */
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

body div.sudoku-grid > div.number-picker > div.cell {
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1px solid rgba(0, 0, 0);
    cursor: pointer;
}

body div.sudoku-grid > div.number-picker > div.cell:hover {
    /* 添加内阴影 - 语法：box-shadow: inset [x偏移] [y偏移] [模糊半径] [扩散半径] [颜色] */
    box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.4);
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(1) {
    border-top-left-radius: 10px;
    border-bottom: none;
    border-right: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(2) {
    border-bottom: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(3) {
    border-top-right-radius: 10px;
    border-bottom: none;
    border-left: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(4) {
    border-right: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(6) {
    border-left: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(7) {
    border-bottom-left-radius: 10px;
    border-top: none;
    border-right: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(8) {
    border-top: none;
}

body div.sudoku-grid > div.number-picker > div.cell:nth-of-type(9) {
    border-bottom-right-radius: 10px;
    border-top: none;
    border-left: none;
}

div.cell.error {
    color: white;
}

div.cell.error[number="1"] {
    background-color: #ff0000;
}

div.cell.error[number="2"] {
    background-color: #ff9700;
}

div.cell.error[number="3"] {
    background-color: #e6da03;
}

div.cell.error[number="4"] {
    background-color: #00ff0c;
}

div.cell.error[number="5"] {
    background-color: #00ffe8;
}

div.cell.error[number="6"] {
    background-color: #007eff;
}

div.cell.error[number="7"] {
    background-color: #7b00ff;
}

div.cell.error[number="8"] {
    background-color: #ff00cc;
}

div.cell.error[number="9"] {
    background-color: #a52a2a;
}

