.setup-area {
  position: fixed;
  z-index: 10;
  top: 75px;
  left: 50%;
  translate: -50% 0;
  width: 500px;
  height: 75px;
}

#设置 {
  position: absolute;
  height: 55px;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  border-radius: 10px;
  outline: solid 2px #fff2;
  color: silver;
  font-size: 18px;
}

#设置.禁用 {
  opacity: 0;
  pointer-events: none;
}

#设置对话框 {
  position: fixed;
  width: 100%;
  height: 100vh;
  top: 0;
  left: 50%;
  translate: -50% 0;
  background-color: transparent;
}

#设置对话框::backdrop {
  backdrop-filter: brightness(33.3333333333%);
}

#设置对话框.启用 {
  display: flex;
}

.选项区 {
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  height: fit-content;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 15px;
  background-color: #fff2;
  padding: 25px;
  color: white;
  border: solid 1px #fff5;
  backdrop-filter: blur(10px);
}

.范围滑块 {
  accent-color: #aaa;
}

.范围滑块::-webkit-slider-thumb {
  scale: 1.35;
}

.范围滑块:hover,
.复选框:hover .标签:hover .范围滑块,
.标签:hover .复选框 {
  cursor: url("/Images/Common/鼠标-指向.cur"), pointer;
}

.标签:hover .复选框,
.复选框:hover {
  outline: solid 2px #fffa;
}

.标签 {
  display: flex;
  align-items: center;
  gap: 10px;
}

.标签:hover {
  cursor: url("/Images/Common/鼠标-默认.cur"), auto;
}

label span {
  text-wrap: nowrap;
  user-select: none;
}

@property --渐变起始色 {
  syntax: "<color>";
  inherits: false;
  initial-value: #f53a;
}

@property --渐变水平位置 {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 8px;
}

.复选框 {
  appearance: none;
  width: 50px;
  height: 24px;
  border-radius: 999px;
  outline: solid 2px #fff5;
  border: solid 4px transparent;
  /* background: linear-gradient(90deg, var(--渐变起始色) 50%, var(--渐变结束色) 50%) padding-box; */
  background: no-repeat radial-gradient(circle 8px at var(--渐变水平位置) 50%, var(--渐变起始色) 100%, transparent 100%);
  transition: --渐变起始色 50ms, --渐变水平位置 250ms;
}

.复选框:checked {
  --渐变起始色: #5faa;
  --渐变水平位置: calc(100% - 8px);
}

.设置标题 {
  width: 80px;
  color: rgb(13, 167, 65);
  text-align: right;
}

.值 {
  font-family: Consolas, Noto Sans;
  color: darkkhaki;
}

.game-area {
  position: relative;
  height: calc(100vh - 150px);
  font-family: "JetBrains Mono", "Noto Sans SC", Consolas, monospace;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  padding: 0 0 clamp(50px, 2.5%, 100px) 0;
}

.汉诺塔区 {
  flex-shrink: 0;
  width: max(450px, calc(100% / 3 * 2));
  height: min(450px, 55%);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
}

.操作区 {
  flex-shrink: 0;
  width: 100%;
  height: calc(100% - 50px);
  display: flex;
  justify-content: center;
  align-items: center;
}

.操作分区 {
  width: calc(100% / 3);
  height: 100%;
  position: relative;
}

.操作分区:hover {
  cursor: url("/Images/Common/鼠标-指向.cur"), pointer;
}

.操作分区::after {
  position: absolute;
  bottom: 100%;
  left: 50%;
  width: 100%;
  height: 100%;
  translate: -50% 0;
  content: "";
  background: conic-gradient(
    from 0deg at 50% 30%,
    transparent 120deg,
    #fff5 150deg,
    #fff8 180deg,
    #fff5 210deg,
    transparent 240deg
  );
  mask-image: radial-gradient(circle farthest-side at 50% 30%, #fff 50%, transparent 100%);
  opacity: 0;
  pointer-events: none;
  transition: 125ms;
}

.操作分区:hover::after {
  opacity: 0.25;
}

.操作分区.来源::after {
  opacity: 1;
}

.操作分区::before {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  content: "";
  transition: 125ms;
  opacity: 0;
  background-image: linear-gradient(90deg, #fff5 0%, transparent 50%, #fff5 100%);
  mask-image: linear-gradient(transparent 0%, black 50%);
}

.操作分区:hover::before {
  opacity: 0.25;
}

.操作分区.来源::before {
  background-image: linear-gradient(90deg, #fffc 0%, transparent 50%, #fffc 100%);
  opacity: 0.5;
}

.积木区 {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
  gap: 3px;
}

.积木 {
  height: 35px;
  border-radius: 5px;
  box-shadow: inset 0 0 0 1px #fff5;
}

.操作分区:hover .积木:last-child {
  background-color: #fff5;
}

.支柱 {
  position: absolute;
  height: 75%;
  width: 25px;
  border-radius: 999px 999px 0 0;
  background-color: rgb(153, 126, 91);
  bottom: 0;
  left: 50%;
  translate: -50% 0;
}

.底座 {
  flex-shrink: 0;
  width: 100%;
  height: 50px;
  background: center/cover no-repeat url("./Images/木质纹理.webp");
  border-radius: 0 0 10px 10px;
}

.按钮区 {
  flex-shrink: 0;
  margin-top: 60px;
  height: 60px;
  border: solid 2px #fff3;
  display: flex;
  border-radius: 999px;
  transition: 75ms;
  overflow: hidden;
}

.按钮区:has(.按钮:not(.禁用)) {
  border: solid 2px #fff6;
}

.按钮 {
  width: 100px;
  height: 60px;
  font-size: 20px;
  background-color: #0005;
  color: white;
  backdrop-filter: blur(5px);
  user-select: none;
  transition: 75ms;
}

.按钮:hover {
  background-color: #fff1;
  cursor: url("/Images/Common/鼠标-指向.cur"), pointer;
}

.按钮:active {
  background-color: #fff3;
}

.按钮.禁用 {
  border: solid 2px #0005;
  pointer-events: none;
  filter: brightness(25%);
}

.数据结构区 {
  width: min(1200px, 90%);
  outline: solid 1px #fff5;
  background-color: #fff1;
  backdrop-filter: blur(20px);
  position: absolute;
  top: 1.5%;
  left: 50%;
  translate: -50% 0;
  display: flex;
  flex-direction: column;
  transition: 500ms;
}

.数据结构区.已屏蔽 {
  opacity: 0;
  pointer-events: none;
}

.数据结构分区 {
  position: relative;
  width: 100%;
  padding: 25px;
  display: flex;
  align-items: center;
  gap: 40px;
  background-image: linear-gradient(#fff1 0%, #fff0 100%);
}

.数据结构分区:last-child {
  background-image: linear-gradient(#123 0%, #def0 100%);
}

.数据结构分区::before {
  position: absolute;
  content: "";
  height: 100%;
  width: 1px;
  background-color: #abc2;
  left: 110px;
  top: 50%;
  translate: 0 -50%;
}

.数据区标题 {
  flex-shrink: 0;
  width: 75px;
  text-align: right;
  color: lightblue;
  height: 100%;
  user-select: none;
}

.记录数据区 .数据区标题 {
  color: lightseagreen;
}

.记录区 {
  height: 35px;
  position: relative;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  row-gap: 10px;
}

.数据结构分区:not(.记录数据区) .记录区 {
  translate: 0 -5px;
}

.数据指针 {
  position: absolute;
  bottom: -18px;
  width: 20px;
  font-size: 12px;
  display: flex;
  justify-content: center;
  color: lightgreen;
  transition: 500ms;
  /* rotate: z 180deg; */
}

.记录数据区 .数据指针 {
  color: greenyellow;
}

.记录数据区 .指针容器 {
  translate: 0 25%;
}

.记录容器 {
  width: 20px;
  padding: 0 2px;
  display: flex;
  justify-content: center;
  align-items: flex-end;
}

.记录数据区 .记录容器 {
  padding: 4px 8px;
  background-color: #fff1;
  border: solid 1px #def2;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  translate: 0 -25%;
  scale: 0.85;
}

.记录流向 {
  font-size: 12px;
  font-weight: bold;
  color: rgb(128, 171, 216);
  transition: 250ms;
}

.流向图标 {
  font-size: 12px;
  scale: 0.75;
  color: #888;
  transition: 250ms;
}

:is(.左数据区, .中数据区, .右数据区) .记录容器 {
  height: 100%;
}

:is(.左数据区, .中数据区, .右数据区) .记录区 .记录容器:last-child .记录可视区 {
  background-color: gold;
  outline: none;
  border: none;
}

:is(.左数据区, .中数据区, .右数据区) .记录容器 .记录可视区 {
  background-color: #bcd;
  border: none;
}

.记录数据区 .记录容器.顶端记录 {
  background-color: #fff3;
}

.记录数据区 .记录容器.已撤销 {
  background-color: transparent;
}

.记录容器.顶端记录 .记录流向 {
  color: lightcyan;
}

.记录容器.已撤销 .记录流向 {
  color: rgb(59, 76, 81);
}

.记录容器.顶端记录 .流向图标 {
  color: white;
}

.记录容器.已撤销 .流向图标 {
  color: #444;
}

.记录可视区 {
  width: 100%;
  height: 100%;
  border: solid 1px #bcd;
}

#高度-7 .记录可视区 {
  height: 100%;
}

#高度-6 .记录可视区 {
  height: calc(100% / 7 * 6);
}

#高度-5 .记录可视区 {
  height: calc(100% / 7 * 5);
}

#高度-4 .记录可视区 {
  height: calc(100% / 7 * 4);
}

#高度-3 .记录可视区 {
  height: calc(100% / 7 * 3);
}

#高度-2 .记录可视区 {
  height: calc(100% / 7 * 2);
}

#高度-1 .记录可视区 {
  height: calc(100% / 7);
}
