#puzzle {
  position: relative;
  display: block;
  --block: 3rem;
  --xy: 9;
  height: calc(var(--xy) * var(--block));
}
#puzzle input {
  display: none;
}
#top {
  position: relative;
  display: inline-block;
  top: 1rem;
  left: 1rem;
  height: var(--block);
  border: 1px solid black;
  border-width: 2px 4px 2px 1px;
}
#top > span {
  display: inline-block;
  height: var(--block);
  width: var(--block);
  border: 1px solid black;
  border-width: 0px 0px 0px 3px;
}
#puzzle label {
  cursor: pointer;
  font-size: calc(3 * var(--block) / 5);
}
#top > span > label {
  width: 100%;
  height: 100%;
  display: inline-block;
  text-align: center;
  line-height: var(--block);
}
#game {
  position: relative;
  left: 1rem;
  top: calc(var(--block) + 0.5rem);
}
#win {
  position: absolute;
  left: 1rem;
  top: calc(var(--block) * 2 + 0.5rem + 4px);
  height: var(--height);
  width: var(--width);
  padding: 0;
  overflow: hidden;
  z-index: 30;
  pointer-events: none;
}
#win > div {
  height: var(--height);
  
  padding: 0;
}
#win > div > span {
  display: inline-block;
  background: transparent;
  height: var(--height);
  width: var(--width);
  vertical-align: top;
}
#win > div > span:last-child {
  background: rgba(255,50,50,0.4);
  text-align: center;
  font-size: 2rem;
  line-height: 3rem;
  box-sizing: border-box;
  padding: 1rem;
  text-shadow: 2px 2px 3px rgba(255, 255, 255, 1),2px -2px 3px rgba(255, 255, 255, 1),-2px 2px 3px rgba(255, 255, 255, 1),-2px -2px 3px rgba(255, 255, 255, 1),1px 1px 1px rgba(255, 255, 255, 1),1px -1px 1px rgba(255, 255, 255, 1),-1px 1px 1px rgba(255, 255, 255, 1),-1px -1px 1px rgba(255, 255, 255, 1),4px 4px 4px rgba(255, 255, 255, 1),4px -4px 4px rgba(255, 255, 255, 1),-4px 4px 4px rgba(255, 255, 255, 1),-4px -4px 4px rgba(255, 255, 255, 1);
}
@media screen and (max-width: 32rem){
  #puzzle {
    --block: calc((min(100vw,100vh) - 1rem) / var(--xy) - 6px);
  }
  #win > div > span:nth-last-child(2), #win > div > span:nth-last-child(1) {
    font-size: 1.5rem;
    line-height: 2rem;
    padding: 0.5rem;
  }
  #top {
    top: 0.5rem;
    left: 0.5rem;
  }
  #game {
    left: 0.5rem;
    top: calc(var(--block));
  }
  #win {
    left: 0.5rem;
    top: calc(var(--block) * 2 + 4px);
  }
}
