puzzlepass-button {
  position: relative;
}
puzzlepass-button[full-page] {
  position: absolute;
  right: 30px;
}
@media screen and (min-width: 910px) {
  puzzlepass-button[full-page] {
    right: var(--right-offset-hint, 50px);
  }
}
puzzlepass-button button {
  color: white;
  cursor: pointer;
}
puzzlepass-button img {
  width: 36px;
  height: 36px;
  border-radius: 9999px;
  margin-right: 10px;
}
puzzlepass-button > button {
  padding: 0 !important;
  border: none;
  border-radius: 9999px;
  font-size: 15px;
  height: 36px;
  width: 36px !important;
  display: flex;
  align-items: center;
  justify-content: space-around;
}
puzzlepass-button > button:hover {
  background-color: #0059b3;
}
@media screen and (max-width: 1200px) {
  puzzlepass-button > button {
    padding: 0;
    width: 36px;
  }
  puzzlepass-button > button span {
    display: none;
  }
  puzzlepass-button > button svg {
    margin-right: 0;
  }
}
puzzlepass-button[options-up] .options {
  top: unset;
  bottom: 44px;
  right: unset;
  left: 50%;
  margin-left: calc(190px / -2);
}
puzzlepass-button .options {
  display: none;
  position: absolute;
  white-space: nowrap;
  background-color: #303030;
  border: none;
  border-radius: 10px;
  margin-top: 10px;
  right: 0px;
  padding: 10px 0;
  border: 1px solid #616161;
}
puzzlepass-button .options button {
  border: none;
  background: none;
  color: white;
  padding: 3px 14px !important;
  font-size: 15px;
  width: fit-content !important;
  text-align: left;
  display: flex;
  align-items: center;
}
puzzlepass-button .options button.device {
  border-bottom: 1px solid #616161;
}
puzzlepass-button .options button:hover {
  background-color: #616161;
}
puzzlepass-button .options[show] {
  display: block;
}
puzzlepass-button .copy-feedback {
  position: absolute;
  top: -2em;
  left: 50%;
  transform: translateX(-50%);
  background: #222;
  color: #fff;
  padding: 6px 12px;
  border-radius: 5px;
  font-size: 18px;
  white-space: nowrap;
  opacity: 0.9;
  z-index: 1000;
  pointer-events: none;
  animation: fade-out 2s forwards;
}
@keyframes fade-out {
  0% {
    opacity: 0.9;
  }
  80% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
  }
}

puzzlepass-logon {
  position: absolute;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  left: 0;
  padding-top: 60px;
  top: 0;
  font-family: var(--font-system);
}
puzzlepass-logon[form-state="error"] [name="error"] {
  display: block !important;
}
puzzlepass-logon[form-state="busy"] {
  pointer-events: none;
  filter: brightness(0.9);
}
puzzlepass-logon[form-state="busy"] .spinner {
  display: inline-block !important;
}
puzzlepass-logon[form-state="busy"] input,
puzzlepass-logon[form-state="busy"] label {
  filter: brightness(0.7);
}
puzzlepass-logon .tab-bar {
  width: 100%;
  display: flex;
  justify-content: flex-start;
  border-bottom: 1px solid #374151;
  margin-bottom: 26px;
}
puzzlepass-logon .tab-bar button {
  background: none;
  margin-right: 10px;
  padding: 10px 18px;
  font-size: 15px;
  width: fit-content;
  border-radius: 0;
  color: #9ca3af;
  border-bottom: 2px solid transparent;
}
puzzlepass-logon .tab-bar button:last-of-type {
  margin-right: auto;
}
puzzlepass-logon .tab-bar button[active] {
  color: white;
  border-bottom: 2px solid var(--bg-purple);
}
puzzlepass-logon .sub {
  font-size: 14px;
  text-align: center;
}
puzzlepass-logon .ze-form .form-field {
  margin-bottom: 28px;
  width: 100%;
}
puzzlepass-logon * {
  box-sizing: border-box;
}
puzzlepass-logon [name="recover"],
puzzlepass-logon [name="login"] {
  display: none;
  justify-content: space-between;
  align-items: flex-start;
}
puzzlepass-logon [name="recover"][active],
puzzlepass-logon [name="login"][active] {
  display: flex;
}
puzzlepass-logon [name="recover"] input,
puzzlepass-logon [name="login"] input {
  margin-right: 20px;
  padding: 8px 16px !important;
}
puzzlepass-logon [name="recover"] button,
puzzlepass-logon [name="login"] button {
  background-color: var(--bg-purple);
  padding: 8px 16px;
  font-size: 16px;
  width: fit-content;
  border-radius: 8px;
  color: white;
  font-weight: bold;
  width: 100%;
}
puzzlepass-logon [name="recover"] button svg,
puzzlepass-logon [name="login"] button svg {
  margin-left: 8px;
  margin-right: 0;
  color: white;
}
puzzlepass-logon [name="close"] {
  position: absolute;
  background: none;
  right: 16px;
  top: 16px;
  border: none;
  color: #9ca3af;
  width: 32px !important;
  height: 32px;
  padding: 0;
  background-color: transparent !important;
}
puzzlepass-logon [name="close"] svg {
  margin: 0;
}
puzzlepass-logon [name="popup"] {
  background-color: var(--bg-popup);
  position: relative;
  border-radius: 12px;
  width: 448px;
  height: fit-content;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-items: flex-start;
  align-items: center;
  margin: auto;
}
@media screen and (max-width: 448px) {
  puzzlepass-logon [name="popup"] {
    width: 100%;
    border-radius: 0;
  }
}
puzzlepass-logon [name="popup"] [name="recover"],
puzzlepass-logon [name="popup"] [name="login"] {
  background-color: var(--bg-form);
  border: var(--border-form);
  width: 100%;
  height: fit-content;
  padding: 24px;
  justify-content: center;
  flex-direction: column;
  border-radius: 8px;
  margin-bottom: 24px;
  align-content: flex-start;
}
puzzlepass-logon [name="popup"] [name="recover"]:last-of-type,
puzzlepass-logon [name="popup"] [name="login"]:last-of-type {
  margin-bottom: 0;
}
puzzlepass-logon [name="popup"] [name="recover"] [name="error"],
puzzlepass-logon [name="popup"] [name="login"] [name="error"] {
  display: none;
  color: #f87171;
  font-size: 14px;
  line-height: 20px;
  padding: 10px 0 0;
}
puzzlepass-logon [name="popup"] [name="recover"] p,
puzzlepass-logon [name="popup"] [name="login"] p {
  color: white;
  margin: 0 0 13px 0;
  font-size: 15px;
}
puzzlepass-logon [name="popup"] header {
  display: flex;
  align-items: center;
  margin-bottom: 24px;
  width: 100%;
}
puzzlepass-logon [name="popup"] header [name="image-holder"] {
  position: relative;
  width: 40px;
  height: 40px;
  margin-right: 14px;
}
puzzlepass-logon [name="popup"] header [name="image-holder"] [name="shadow"] {
  position: absolute;
  opacity: 0.4;
  background-color: #4f46e5;
  filter: blur(12px);
  border-radius: 8px;
  height: 40px;
  width: 40px;
}
puzzlepass-logon [name="popup"] header [name="image-holder"] [name="image"] {
  background-image: linear-gradient(to right bottom, #818cf8, #4f46e5);
  border-radius: 8px;
  height: 40px;
  width: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1;
  position: absolute;
}
puzzlepass-logon [name="popup"] header [name="image-holder"] [name="image"] svg {
  stroke: white;
  width: 24px;
  height: 24px;
}
puzzlepass-logon [name="popup"] header h1 {
  color: white;
  font-weight: 700;
  font-size: 24px;
  text-align: left;
  line-height: 24px;
  background: none;
  -webkit-text-fill-color: unset;
}
puzzlepass-logon [name="popup"] header h2 {
  font-size: 14px;
  line-height: 32px;
  color: #d1d5db;
  text-align: center;
  margin: 0;
  font-weight: normal;
}
puzzlepass-logon [name="popup"] header h2 span {
  color: #facc15;
}

user-prompt {
  position: absolute;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  left: 0;
  padding-top: 60px;
  top: 0;
  font-family: var(--font-system);
}
user-prompt[form-state="error"] [name="error"] {
  display: block !important;
}
user-prompt[form-state="busy"] {
  pointer-events: none;
  filter: brightness(0.9);
}
user-prompt[form-state="busy"] .spinner {
  display: inline-block !important;
}
user-prompt[form-state="busy"] input,
user-prompt[form-state="busy"] label {
  filter: brightness(0.7);
}
user-prompt .sub {
  font-size: 14px;
  text-align: center;
}
user-prompt .ze-form .form-field {
  margin-bottom: 28px;
  width: 100%;
}
user-prompt * {
  box-sizing: border-box;
}
user-prompt [name="prompt"] {
  justify-content: space-between;
  align-items: center;
}
user-prompt [name="prompt"][active] {
  display: flex;
}
user-prompt [name="prompt"] input {
  margin-right: 20px;
  padding: 8px 16px !important;
}
user-prompt [name="prompt"] button {
  background-color: var(--bg-purple);
  padding: 8px 16px;
  font-size: 16px;
  width: fit-content;
  border-radius: 8px;
  color: white;
  font-weight: bold;
  width: 100%;
  max-width: 100px;
  margin: 30px auto 10px;
}
user-prompt [name="prompt"] button svg {
  margin-left: 8px;
  margin-right: 0;
  color: white;
}
user-prompt [name="popup"] {
  background-color: var(--bg-popup);
  position: relative;
  border-radius: 12px;
  width: 448px;
  height: fit-content;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-items: flex-start;
  align-items: center;
  margin: auto;
}
@media screen and (max-width: 448px) {
  user-prompt [name="popup"] {
    width: 100%;
    border-radius: 0;
  }
}
user-prompt [name="popup"] [name="prompt"] {
  background-color: var(--bg-form);
  border: var(--border-form);
  width: 100%;
  height: fit-content;
  padding: 14px;
  justify-content: center;
  flex-direction: column;
  border-radius: 8px;
  margin-bottom: 24px;
  align-content: center;
}
user-prompt [name="popup"] [name="prompt"]:last-of-type {
  margin-bottom: 0;
}
user-prompt [name="popup"] [name="prompt"] [name="error"] {
  display: none;
  color: #f87171;
  font-size: 14px;
  line-height: 20px;
  padding: 10px 0 0;
}
user-prompt [name="popup"] [name="prompt"] p {
  color: white;
  margin: 0 0 13px 0;
  font-size: 15px;
  text-align: center;
}
user-prompt [name="popup"] header {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 24px;
  width: 100%;
}
user-prompt [name="popup"] header [name="image-holder"] {
  position: relative;
  width: 40px;
  height: 40px;
  margin-right: 14px;
}
user-prompt [name="popup"] header [name="image-holder"] [name="shadow"] {
  position: absolute;
  opacity: 0.4;
  background-color: #4f46e5;
  filter: blur(12px);
  border-radius: 8px;
  height: 40px;
  width: 40px;
}
user-prompt [name="popup"] header [name="image-holder"] [name="image"] {
  background-image: linear-gradient(to right bottom, #818cf8, #4f46e5);
  border-radius: 8px;
  height: 40px;
  width: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1;
  position: absolute;
}
user-prompt [name="popup"] header [name="image-holder"] [name="image"] svg {
  stroke: white;
  width: 24px;
  height: 24px;
}
user-prompt [name="popup"] header h1 {
  color: white;
  font-weight: 700;
  font-size: 24px;
  text-align: left;
  line-height: 24px;
  background: none;
  -webkit-text-fill-color: unset;
  margin: 0;
}
user-prompt [name="popup"] header h2 {
  font-size: 14px;
  line-height: 32px;
  color: #d1d5db;
  text-align: center;
  margin: 0;
  font-weight: normal;
}
user-prompt [name="popup"] header h2 span {
  color: #facc15;
}

:root {
  --header-height: 150px;
}
spot-the-differences {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  user-select: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-touch-callout: none;
  max-width: 100%;
}
spot-the-differences button[name=clear] {
  position: absolute;
  right: 10px;
  top: 10px;
  background: none;
  width: 10%;
  height: fit-content;
  max-width: 50px;
  z-index: 1;
  cursor: pointer;
  border: none;
  padding: 0;
  margin: 0;
}
spot-the-differences button[name=clear] svg {
  width: 100%;
  height: auto;
}
spot-the-differences header {
  flex: 0 0 var(--header-height);
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  font-size: 16px;
  overflow: hidden;
  position: relative;
}
@media screen and (max-width: 600px) {
  spot-the-differences header {
    font-size: 10px;
  }
}
@media screen and (max-width: 400px) {
  spot-the-differences header {
    font-size: 8px;
  }
}
spot-the-differences header p {
  font-size: 1.4em;
  margin: 0;
  padding: 0 10px;
  text-align: center;
}
spot-the-differences header h1 {
  font-size: 2.2em;
  text-align: center;
  text-shadow: 0 0 40px black;
  margin: 20px 0 10px;
  background: -webkit-linear-gradient(#ffffff, #995400, #422900);
  background: linear-gradient(#ffffff, #995400, #422900);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: sans-serif;
  border-bottom: 1px solid #5b3500;
  width: 700px;
  max-width: 100%;
  padding-bottom: 10px;
  font-weight: 400;
}
spot-the-differences section {
  flex: 1 1 100%;
  display: flex;
  flex-direction: row;
  position: relative;
}
spot-the-differences section spot-finder {
  width: var(--shortest);
  height: var(--shortest);
}
spot-the-differences section spot-finder:first-child {
  margin: 0 3px 0 0;
}
spot-the-differences section spot-finder:last-child {
  margin: 0 3px 0 0;
}
spot-the-differences[portrait] section {
  flex-direction: column;
}
spot-the-differences[portrait] section spot-finder:first-child {
  margin: 0 0 3px 0;
}
spot-the-differences[portrait] section spot-finder:last-child {
  margin: 3px 0 0 0;
}

found-spot {
  width: 8%;
  height: 8%;
  border-width: 5px;
  border-style: solid;
  border-color: red;
  border-radius: 50%;
  position: absolute;
  margin-top: -4%;
  margin-left: -4%;
  pointer-events: all;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
}
found-spot svg {
  fill: red;
  pointer-events: none;
  width: 60%;
  height: auto;
  margin-top: 4%;
  margin-left: 4%;
}
found-spot[correct] {
  border-color: green;
}
found-spot[correct] svg {
  fill: green;
}
@media (max-width: 1024px) {
  found-spot {
    border-width: 4px;
  }
}
@media (max-width: 768px) {
  found-spot {
    border-width: 3px;
  }
}
@media (max-width: 500px) {
  found-spot {
    border-width: 2px;
  }
}

spot-finder {
  display: flex;
  position: relative;
  pointer-events: none;
}
spot-finder[active] {
  cursor: pointer;
  pointer-events: all;
}
spot-finder img {
  width: 100%;
}

:root {
  --loader-button-background: #000;
  --loader-button-color: #fff;
  --loader-button-shadow: none;
  --loader-button-radius: 20px;
  --loader-button-height: 40px;
}
loader-button {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 250px;
  height: var(--loader-button-height);
}
loader-button > button,
loader-button .shadow {
  background-color: var(--loader-button-background);
  justify-content: center;
  align-items: center;
  border-radius: var(--loader-button-radius);
  border: none;
  color: var(--loader-button-color);
  cursor: pointer;
  display: flex;
  font-size: 18px;
  height: 100%;
  transition: all 2s;
  width: 100%;
  margin: 0 !important;
  white-space: nowrap;
  box-shadow: var(--loader-button-shadow);
}
loader-button .shadow {
  position: absolute;
  top: 0;
  opacity: 0;
}
loader-button[busy] {
  pointer-events: none;
}

game-code {
  font-size: 21px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  max-width: 1200px;
  padding: 20px;
}
@media screen and (max-width: 800px) {
  game-code {
    width: 100%;
  }
}
game-code loader-button {
  text-wrap: nowrap;
  width: 200px;
}
game-code .signup {
  max-width: 100%;
  color: black;
}
game-code .signup p:first-of-type {
  margin: 0;
}
@media screen and (max-width: 800px) {
  game-code .signup p:first-of-type {
    margin-top: 10px;
  }
}
game-code .signup p:last-of-type {
  margin-bottom: 0;
  font-size: 16px;
}
@media screen and (max-width: 800px) {
  game-code .signup p:last-of-type {
    margin-bottom: 10px;
  }
}
game-code video {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  box-shadow: 0 0 5px 0px;
}
game-code > div {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin: 0 auto;
  max-width: 1200px;
  width: 100%;
}
@media screen and (max-width: 800px) {
  game-code > div {
    margin: 0;
  }
}
game-code form {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  max-width: 100%;
}
game-code form > * {
  margin: 16px;
}
game-code a {
  color: white;
  text-decoration: underline;
}
game-code p {
  text-align: center;
  margin: 16px;
}
game-code h1 {
  width: 700px;
  border-bottom: 1px solid #5b3500;
  text-align: center;
  background: none !important;
  -webkit-text-fill-color: yellow !important;
}
game-code h1 span {
  font-size: 35px;
  text-shadow: 0 0 40px black;
  margin: 80px 0 40px;
  background: -webkit-linear-gradient(#ffffff, #995400, #422900);
  background: linear-gradient(#ffffff, #995400, #422900);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: sans-serif;
  max-width: 100%;
  padding-bottom: 10px;
  font-weight: 400;
}
game-code h1:first-child {
  margin-block-start: 0;
}
@media screen and (max-width: 800px) {
  game-code h1 {
    font-size: 1.8em;
  }
}
game-code label {
  font-size: 20px;
  font-weight: 400;
}
game-code input[type="email"] {
  text-align: center;
  padding: 10px;
  border: none;
  border-radius: 50px;
  box-shadow: inset 1px 1px 5px 2px #ccc;
  background-color: #f5f5f5;
  margin: 20px;
  max-width: 100%;
  font-size: 20px;
  text-transform: lowercase;
  width: 350px;
}
game-code input[type="email"]:focus-visible {
  outline: none;
  box-shadow: 0 0 12px 1px #995400;
}
game-code .error-message:empty {
  display: none;
}
game-code button,
game-code button {
  background: var(--primary);
  border: none;
  color: white;
  font-weight: 500;
  padding: 10px 20px;
  border-radius: 30px;
  font-size: 16px;
  margin-top: 20px;
  display: inline-block;
}

code-box {
  outline: 2px dotted;
  padding: 4px 8px;
  margin: 10px;
  border-radius: 2px;
  font-weight: bold;
  font-size: 22px;
  display: block;
  text-align: center;
}
code-box > div {
  position: absolute;
  background-color: black;
  color: white;
  font-size: 14px;
  padding: 4px 8px;
  border-radius: 3px;
  transition: all 2s;
}

games-scroller {
  height: 100px;
  max-width: 100%;
  overflow: hidden;
  position: relative;
  margin-top: 10px;
  width: fit-content;
}
@media screen and (min-height: 1200px) {
  games-scroller {
    margin-top: 100px;
  }
}
@media screen and (min-height: 1000px) and (max-height: 1200px) {
  games-scroller {
    margin-top: 30px;
  }
}
games-scroller > a {
  display: contents;
}
games-scroller > a:hover .text {
  transform: scale(1.1);
}
games-scroller .games-scroller {
  position: relative;
  white-space: nowrap;
  /* Prevent wrapping */
  will-change: transform;
  /* Optimize GPU rendering */
  transition: transform 0.016s linear;
  /* Smooth transitions (60 FPS) */
}
games-scroller .games-scroller::-webkit-scrollbar {
  display: none;
  /* Hide scrollbar in Chrome/Safari */
}
games-scroller img {
  height: 100px;
  width: 220px;
  margin: 0 10px;
  cursor: pointer;
}
games-scroller .text {
  position: absolute;
  height: 100%;
  top: 0;
  display: flex;
  background: linear-gradient(to right, black, #0000005e, #0000005e, #0000005e, black);
  justify-content: center;
  align-items: center;
  width: 100%;
  font-size: 26px;
  text-shadow: 0px 0px 6px black;
  color: white;
  transition: all 0.5s;
  text-align: center;
}

:root {
  --footer-height: 300px;
}
site-footer {
  margin-top: 20px;
  width: 100%;
  height: calc(var(--footer-height) - 20px);
  flex: 0 0 calc(var(--footer-height) - 20px);
  background: linear-gradient(180deg, #080808, #131313);
  font-family: sans-serif;
  display: flex;
  justify-content: space-around;
  padding: 20px;
  align-items: center;
  flex-direction: column;
  border-top: 1px solid #2b2b2b;
  top: calc(100% - 300px);
}
@media screen and (max-width: 800px) {
  site-footer {
    padding-top: 5px;
  }
}
site-footer .links {
  color: #909090;
  text-align: center;
}
site-footer .links a {
  color: #909090;
  text-decoration: underline;
  text-underline-position: under;
}
@media screen and (max-width: 800px) {
  site-footer .links a {
    font-size: 12px;
  }
}
site-footer .copyright {
  color: #727272;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
}
site-footer .copyright svg {
  height: 18px;
  margin-left: 10px;
}
site-footer .tag-line {
  font-size: 20px;
  text-align: center;
  padding: 0 5px;
  width: 60%;
  line-height: 1.3;
  background: linear-gradient(#ffffff, #909090);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
@media screen and (max-width: 800px) {
  site-footer .tag-line {
    width: 100%;
    font-size: 14px;
  }
}

puzzle-card {
  background-color: #111827;
  border-radius: 6px;
  width: 100%;
  height: fit-content;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
puzzle-card .image {
  width: calc(var(--card-width));
  height: calc(var(--card-width));
  background-size: cover;
  transition: all 1s;
}
puzzle-card .name {
  height: 50px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: sans-serif;
  font-size: 17px;
  color: white;
  text-align: center;
  padding: 12px 12px;
  margin-top: 8px;
}
puzzle-card:hover .image {
  width: calc(var(--card-width) + 100px);
}
puzzle-card .puzzle-info {
  display: flex;
  justify-content: space-between;
  width: 100%;
  font-size: 13px;
  padding: 10px 15px;
  align-items: center;
  white-space: nowrap;
}
puzzle-card .puzzle-info .difficulty {
  display: flex;
  align-items: center;
  justify-content: center;
}
puzzle-card .puzzle-info .difficulty span {
  border-radius: 9999px;
  height: 6px;
  width: 6px;
  margin: 0 2px;
  display: inline-block;
}
puzzle-card .puzzle-info .difficulty span.filled {
  background-color: #a855f7;
}
puzzle-card .puzzle-info .difficulty span.empty {
  background-color: #374151;
}
puzzle-card .puzzle-info .difficulty span:last-of-type {
  margin-right: 8px;
}
puzzle-card .puzzle-info .puzzle-type {
  background: #1f2937;
  color: #d1d5db;
  font-size: 12px;
  line-height: 16px;
  padding: 4px 8px;
  border-radius: 9999px;
}

body[name="puzzle"] {
  background: black;
  color: white;
  font-family: sans-serif;
  min-height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  justify-content: space-between;
  scroll-behavior: smooth;
}
body[name="puzzle"] * {
  box-sizing: border-box;
}
body[name="puzzle"] .frame {
  display: flex;
  align-items: center;
  height: 100%;
  flex-direction: column;
  width: 100%;
  margin-top: 40px;
}
body[name="puzzle"] site-footer,
body[name="puzzle"] ze-footer {
  position: relative;
  top: auto;
}
body[name="puzzle"] user-prompt {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
.attributions {
  display: flex;
  font-family: sans-serif;
  margin: 30px auto;
  flex-direction: column;
}
.attributions .attribution {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  color: white;
  font-size: 13px;
}
.attributions .attribution a {
  padding: 5px;
  font-size: 12px;
  text-decoration: underline;
  color: #909090;
}
h1 {
  font-size: 1.7em;
  text-align: center;
  text-shadow: 0 0 40px black;
  margin: 10px 0 0px;
  background: -webkit-linear-gradient(#ffffff, #995400, #422900);
  background: linear-gradient(#ffffff, #995400, #422900);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: sans-serif;
  max-width: 100%;
  font-weight: 400;
  background-size: 100% 40px;
  line-height: 40px;
}
@media (min-width: 768px) {
  h1 {
    font-size: 2.2em;
  }
}

body[name="puzzle-index"] {
  --card-width: clamp(220px, 320px, 100vw);
  --gap: 20px;
  --min-card-width: 256px;
  --max-card-width: 420px;
  background: black;
  color: white;
  font-family: sans-serif;
  min-height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  justify-content: space-between;
  scroll-behavior: smooth;
}
@media screen and (max-width: 600px) {
  body[name="puzzle-index"] {
    --card-width: 100vw;
  }
}
body[name="puzzle-index"] * {
  box-sizing: border-box;
}
body[name="puzzle-index"] header {
  flex: 0 0 var(--header-height);
  width: 100%;
  display: flex;
  height: fit-content;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  font-size: 16px;
  overflow: hidden;
  position: relative;
}
@media screen and (max-width: 600px) {
  body[name="puzzle-index"] header {
    font-size: 10px;
  }
}
@media screen and (max-width: 400px) {
  body[name="puzzle-index"] header {
    font-size: 8px;
  }
}
body[name="puzzle-index"] header p {
  font-size: 1.4em;
  margin: 0;
  padding: 0 10px;
  text-align: center;
}
body[name="puzzle-index"] header h1 {
  margin: 10px 0 10px;
}
body[name="puzzle-index"] puzzle-filter {
  width: calc(100% - var(--gap) * 2);
  margin: 75px auto 0;
}
body[name="puzzle-index"] .frame {
  height: 100%;
  max-width: 100%;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(calc(var(--min-card-width) + var(--gap)), 1fr));
  gap: 20px;
  padding: 20px;
  overflow: auto;
  justify-content: space-around;
  /* Distributes space around the cells */
  align-content: stretch;
  /* (Optional) Distributes space vertically around the grid */
  justify-items: center;
}
body[name="puzzle-index"] .frame a {
  display: contents;
}
body[name="puzzle-index"] site-footer,
body[name="puzzle-index"] ze-footer {
  position: relative;
  top: auto;
}
body[name="puzzle-index"] user-prompt {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

puzzle-image {
  display: block;
  position: relative;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-image: var(--blurhash);
  filter: blur(20px);
  transition: filter 0.5s ease;
}
puzzle-image.loaded {
  filter: blur(0);
}

puzzle-filter {
  width: 100%;
  background-color: #111827;
  border-radius: 6px;
  padding: 10px;
  display: flex;
  font-size: 18px;
}
@media screen and (max-width: 600px) {
  puzzle-filter {
    font-size: 14px !important;
  }
  puzzle-filter input {
    font-size: 14px !important;
  }
}
puzzle-filter select {
  margin-left: 10px;
  background-color: var(--form-element-background);
  border: var(--form-element-border);
  border-radius: var(--form-element-border-radius);
  line-height: 28px;
  padding: 12px 16px;
  width: fit-content;
  color: white;
}
puzzle-filter select:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--bg-purple);
}

:root {
  --site-font: "Times New Roman", Times, serif;
  --primary: black;
  --text-color: #b3b3b3;
}
html {
  height: 100%;
}
html,
body {
  margin: 0;
  padding: 0;
  min-height: 100%;
  width: 100%;
}
body {
  background-color: black;
  font-family: var(--site-font);
  color: var(--text-color);
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
body * {
  box-sizing: border-box;
}
body a {
  text-decoration: none;
  color: var(--text-color);
}
input:not([type="checkbox"]):not([type="radio"]) {
  -webkit-appearance: none;
  appearance: none;
}
.box {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  background: linear-gradient(180deg, #ffffff, #fdfdfd, #fbfbfb, #f9f9f9, #f6f6f6, #f4f4f4, #f2f2f2, #f0f0f0);
  padding: 40px;
  border-radius: 40px;
  box-shadow: 0 0 40px 0 #ccc;
  width: 100%;
  max-width: 600px;
}
.box > form {
  display: contents;
}
@media screen and (max-width: 600px) {
  .box {
    background: none;
    box-shadow: none;
    padding: 0 10px;
    background-color: white;
  }
}

[name=word-solver] {
  --form-color: #262626;
  --form-border-color: #262626;
  --form-radius: 10px;
}
[name=word-solver] .frame {
  margin-top: 80px;
  justify-content: flex-start;
  --content-height: fit-content;
  --content-width: 100%;
}
@media (min-width: 768px) {
  [name=word-solver] .frame {
    --content-height: calc(100vh - 140px);
    --content-width: calc((100vh - 140px) / 5773 * 4096);
    --full-width: calc(var(--content-width) * 2px);
  }
}
[name=word-solver] share-button {
  display: none;
  position: absolute;
  top: 70px;
  left: 50%;
  width: 50px;
  margin-left: calc(var(--content-width) - 75px);
}
[name=word-solver] share-button button {
  background-color: var(--form-color);
  border: 1px solid var(--form-border-color);
  border-radius: var(--form-radius);
  color: #bfbfbf;
  padding: 10px 20px;
  font-size: 19px;
}

.frame {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
  flex-direction: column;
  width: 100%;
  min-height: calc(100vh - var(--footer-height));
}
answer-checker {
  z-index: 2;
  color: black;
}
@media screen and (max-width: 600px) {
  answer-checker {
    background: white !important;
    border-radius: 0 !important;
  }
}
answer-checker .error-message:empty {
  display: none;
}
answer-checker [name=hints-area] {
  padding: 10px;
}
answer-checker [name=hints-area]:empty {
  display: none;
  padding: 0;
}
answer-checker [name=hints-area] h1 {
  margin-top: 20px;
  margin-bottom: 15px;
  font-size: 22px;
}
answer-checker [name=hints-area] details {
  margin: 10px;
  text-align: center;
}
answer-checker [name=hints-area] details > summary {
  border: none;
  cursor: pointer;
  text-align: center;
  font-size: 20px;
  margin: 10px;
}
answer-checker [name=hints-area] details > summary::marker {
  color: red;
}
answer-checker [name=hints-area] details > summary::-webkit-details-marker {
  color: red;
}
answer-checker h1 {
  font-weight: 300;
  margin-block-start: 0;
  margin-block-end: 20px;
  text-align: center;
}
@media screen and (max-width: 800px) {
  answer-checker h1 {
    font-size: 25px;
    padding-top: 20px;
  }
}
answer-checker label {
  font-size: 20px;
  font-weight: 400;
  margin-top: 20px;
}
answer-checker input[type="text"],
answer-checker input[type="email"] {
  text-align: center;
  padding: 10px;
  border: none;
  border-radius: 50px;
  box-shadow: inset 1px 1px 5px 2px #ccc;
  margin: 20px;
  text-transform: uppercase;
  max-width: 100%;
}
answer-checker input[type="text"]:focus-visible,
answer-checker input[type="email"]:focus-visible {
  outline: none;
  box-shadow: 0 0 12px 1px #2200ff;
}
answer-checker input[type="text"] {
  font-size: 32px;
  letter-spacing: 3px;
  width: auto;
}
answer-checker input[type="email"] {
  font-size: 20px;
  text-transform: lowercase;
  width: 350px;
}
answer-checker button,
answer-checker button {
  background: var(--primary);
  border: none;
  color: white;
  font-weight: 500;
  padding: 10px 20px;
  border-radius: 30px;
  font-size: 16px;
  margin-top: 20px;
  display: inline-block;
}
.box {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  background: linear-gradient(180deg, #ffffff, #fdfdfd, #fbfbfb, #f9f9f9, #f6f6f6, #f4f4f4, #f2f2f2, #f0f0f0) !important;
  padding: 40px;
  border-radius: 40px;
  box-shadow: 0 0 40px 0 #ccc;
  width: 100%;
  max-width: 600px;
}
.box > form {
  display: contents;
}
@media screen and (max-width: 600px) {
  .box {
    background: none;
    box-shadow: none;
    padding: 0 10px;
    background-color: white;
  }
}
body[name="campaign"] {
  background: linear-gradient(180deg, #ffffff, #fdfdfd, #fbfbfb, #f9f9f9, #f6f6f6, #f4f4f4, #f2f2f2, #f0f0f0);
  color: black;
  font-family: sans-serif;
  min-height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  justify-content: space-between;
}
body[name="campaign"] * {
  box-sizing: border-box;
}
body[name="campaign"] .frame {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
  flex-direction: column;
  width: 100%;
  min-height: calc(100vh - var(--footer-height));
}

media-viewer {
  overflow: auto;
  position: fixed;
  width: 100%;
  height: 100%;
  z-index: 10000;
  top: 0;
  left: 0;
  background-color: black;
  display: flex;
  align-items: center;
  align-content: center;
  transition: all 0.3s;
  transform: scale(0.3);
  opacity: 0;
  cursor: zoom-in;
}
media-viewer[scaled='2'] {
  cursor: zoom-out;
}
media-viewer img {
  transition: all 0.3s ease-out;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  margin: auto;
}
media-viewer button[name=close] {
  top: 18px;
  right: 15px;
  position: absolute;
  background: transparent;
  border: none;
  cursor: pointer;
}
media-viewer button[name=close] svg {
  height: 32px;
  width: auto;
  fill: white;
  filter: drop-shadow(0px 0px 8px #000);
  -webkit-filter: drop-shadow(0px 0px 2px #777);
}
media-viewer[open] {
  transform: scale(1);
  opacity: 1;
}
media-viewer[closing] {
  transform: translateY(-50%);
  opacity: 0;
}

postcard-viewer {
  height: 100%;
  max-height: 100vh;
  display: block;
  width: fit-content;
  position: relative;
  cursor: zoom-in;
  overflow: hidden;
}
postcard-viewer img {
  border-radius: 0.25rem;
  max-width: 100%;
  max-height: calc(100vh - 220px);
}
@media (max-width: 768px) {
  postcard-viewer img {
    border-radius: 0;
    max-height: calc(100vh - 350px);
  }
}
postcard-viewer button {
  background-color: rgba(0, 0, 0, 0.5);
  position: absolute;
  top: 10px;
  border: none;
  border-radius: 9999px;
  right: 10px;
  width: 36px;
  height: 36px;
  padding: 8px;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
}
postcard-viewer button svg {
  border-color: #e5e7eb;
  color: white;
}

word-solver {
  width: 100%;
  display: flex;
  justify-content: center;
  flex-direction: column;
  align-items: center;
}
@media (max-width: 768px) {
  word-solver header {
    width: calc(100% - 30px);
    margin-bottom: 20px;
  }
}
word-solver h1 {
  font-size: 1.7em;
  text-align: center;
  text-shadow: 0 0 40px black;
  margin: 10px 0 0px;
  background: -webkit-linear-gradient(#ffffff, #995400, #422900);
  background: linear-gradient(#ffffff, #995400, #422900);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: sans-serif;
  max-width: 100%;
  font-weight: 400;
  background-size: 100% 40px;
  line-height: 40px;
}
@media (min-width: 768px) {
  word-solver h1 {
    font-size: 2.2em;
  }
}
word-solver .content {
  display: flex;
  width: 100%;
  gap: 2rem;
  flex-direction: column;
}
@media (min-width: 768px) {
  word-solver .content {
    flex-direction: row;
    justify-content: space-around;
    padding: 2rem;
  }
}
word-solver .content .puzzle {
  margin-left: auto;
  display: flex;
  align-items: center;
  flex-direction: column;
  --loader-button-background: #fff;
  --loader-button-color: #000;
  --loader-button-shadow: none;
}
word-solver .content .puzzle loader-button {
  margin-top: 10px;
}
word-solver .content .postcard {
  margin-right: auto;
}
@media (max-width: 768px) {
  word-solver .content .postcard {
    display: flex;
    justify-content: center;
    align-items: center;
  }
}
word-solver .content > * {
  width: var(--content-width);
}
word-solver .content input[type="text"] {
  width: 100%;
  padding: 1rem;
  font-size: 19px;
  border: 1px solid var(--form-border-color);
  border-radius: 5px;
  margin-bottom: 1rem;
  background-color: var(--form-color);
  color: white;
  border-radius: var(--form-radius);
}
word-solver .content input[type="text"]:focus-visible {
  box-shadow: 0 0 12px 1px #8898b3;
  outline: none;
}
@media (max-width: 768px) {
  word-solver .content input[type="text"] {
    width: calc(100% - 30px);
  }
}
word-solver .hints-area {
  width: 100%;
}
word-solver .error-message {
  color: white;
  font-family: sans-serif;
  font-size: 16px;
  margin: 10px 0;
}
word-solver .error-message:empty {
  display: none;
}
word-solver .hints {
  color: white;
  font-family: sans-serif;
  font-size: 16px;
  background-color: #0f0f0f;
  padding: 20px;
  border-radius: 10px;
  margin-top: 10px;
}
word-solver .hints b {
  text-align: center;
  margin-bottom: 20px;
  display: block;
}
word-solver .hints details {
  width: 100%;
  padding: 1rem;
  font-size: 19px;
  border: 1px solid var(--form-border-color);
  border-radius: 5px;
  margin-bottom: 1rem;
  background-color: var(--form-color);
  color: white;
  border-radius: var(--form-radius);
  cursor: pointer;
  display: block;
}
word-solver .hints details:last-of-type {
  margin-bottom: 0;
}
word-solver .hints details[open] summary {
  margin-bottom: 10px;
}
word-solver .hints details[open] summary svg {
  transform: rotate(180deg);
}
word-solver .hints details summary::-webkit-details-marker {
  display: none;
}
word-solver .hints details summary {
  list-style: none;
  display: flex;
  justify-content: space-between;
  font-weight: bold;
}
word-solver .hints details summary svg {
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

jigsaw-table {
  user-select: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-touch-callout: none;
  transform-origin: top left;
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 100%;
  touch-action: none;
  display: block;
  cursor: grab;
}
jigsaw-table:active {
  cursor: grabbing;
}
jigsaw-table[pinching] jigsaw-piece {
  pointer-events: none;
}
.tabletop-content {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  transform-origin: top left;
}

jigsaw-piece {
  background-repeat: no-repeat;
  background-size: contain;
  position: absolute;
  left: var(--left, 0px);
  top: var(--top, 0px);
  overflow: visible;
  width: var(--piece-width);
  height: var(--piece-height);
  display: var(--jigsaw-display, none);
  z-index: -2;
  pointer-events: none;
}
jigsaw-piece[dragging] {
  z-index: unset;
}
jigsaw-piece[dragging] svg.overlay-2 {
  filter: blur(30px);
  stroke: black;
  stroke-width: 7px;
  display: block;
  stroke-opacity: 1;
  transition: filter 0.2s ease-out, stroke-opacity 0.2s ease-out;
}
jigsaw-piece svg {
  width: 100%;
  height: 100%;
}
jigsaw-piece svg.overlay-2 {
  z-index: -1;
  display: none;
  position: absolute;
  top: 0;
  left: 0;
  stroke-opacity: 0;
  filter: blur(0px);
}
jigsaw-piece svg.overlay path {
  pointer-events: all !important;
  stroke: var(--piece-stroke-color, rgba(0, 0, 0, 0.4));
  stroke-width: var(--piece-stroke-width, 6px);
  transition: fill 300ms ease-out, stroke 300ms ease-out;
}
jigsaw-piece svg.overlay path:hover {
  stroke: var(--piece-hover-color, rgba(255, 255, 255, 0.6));
}
jigsaw-piece[ios] {
  image-rendering: pixelated;
  z-index: unset !important;
  transition: none !important;
}
jigsaw-piece[ios] svg.overlay {
  transition: none !important;
}
.jigsaw-pulse path {
  fill: rgba(255, 255, 0, 0.9);
  animation: svg-pulse 1000ms ease-out forwards;
}
@keyframes svg-pulse {
  0% {
    fill: rgba(255, 255, 0, 0.9);
  }
  100% {
    fill: transparent;
  }
}

shape-library-overview {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  background-color: #f9f9f9;
  padding: 60px 20px;
  color: black;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
shape-library-overview button {
  position: fixed;
  right: 20px;
  top: 80px;
}
shape-library-overview .shape-table {
  border-collapse: collapse;
  margin-bottom: 2em;
}
shape-library-overview .shape-table td,
shape-library-overview .shape-table th {
  border: 1px solid #ccc;
  padding: 4px;
  text-align: center;
}
shape-library-overview .shape-table svg {
  display: block;
  margin: auto;
}
shape-library-overview svg {
  width: 128px;
  height: 128px;
}

user-label {
  position: absolute;
  background: var(--color);
  color: black;
  border-radius: 9999px;
  left: calc((var(--piece-width) / 3) * 2);
  top: calc((var(--piece-height) / 3) * 2);
  transform: scale(var(--reverse-scale, 1));
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 20px;
  transition: opacity 300ms ease-out;
}
user-label img,
user-label svg {
  height: 18px;
  width: 18px;
  border-radius: 9999px;
  margin: 1px;
}
user-label svg {
  background: #ffffff;
  padding: 1px;
}
user-label div {
  padding: 0 4px 0 2px;
  font-size: 10px;
  white-space: nowrap;
  line-height: 11px;
  text-transform: uppercase;
  font-family: system-ui;
  font-weight: 600;
}

jigsaw-preview {
  --header-height: 50px;
  --footer-height: 50px;
  touch-action: pan-x pan-y;
  position: fixed;
  top: 60px;
  right: 60px;
  width: 512px;
  height: 512px;
  resize: both;
  overflow: hidden;
  border: 2px solid #222;
  border-radius: 10px;
  background: #111;
  z-index: 1000;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.7);
  display: flex;
  flex-direction: column;
  min-width: 300px;
  min-height: 300px;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
  color: white;
  font-size: 18px;
  line-height: 18px;
}
jigsaw-preview * {
  user-select: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-touch-callout: none;
}
jigsaw-preview .image-loader {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  filter: blur(2px);
  transition: filter 0.5s ease, opacity 0.5s ease;
}
jigsaw-preview .loader {
  position: absolute;
  top: 15px;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
jigsaw-preview .loader svg {
  color: black;
  animation: spin 1s linear infinite;
}
@keyframes spin {
  100% {
    transform: rotate(360deg);
  }
}
jigsaw-preview[loaded] .image-loader {
  filter: blur(0);
  opacity: 0;
}
jigsaw-preview button {
  cursor: pointer;
  border-radius: 8px;
  border: none;
  height: 36px;
  align-items: center;
  display: flex;
  font-size: 15px;
  justify-content: space-around;
  padding: 0;
  width: 36px;
  color: white;
  fill: white;
  border-radius: 9999px;
  background-color: #272727;
}
jigsaw-preview .preview-controls {
  flex: 0 0 auto;
  justify-content: space-between;
  background: var(--bg-popup);
  padding: 0 12px;
  cursor: move;
  height: var(--header-height);
  display: flex;
  /* justify-content: center; */
  align-items: center;
  text-indent: 4px;
  z-index: 1;
}
jigsaw-preview .preview-controls div {
  display: flex;
  align-items: center;
  gap: 8px;
}
jigsaw-preview .attribute-bar {
  flex: 0 0 var(--footer-height);
  padding: 8px;
  font-size: 16px;
  color: #888;
  text-align: center;
  background: #222;
  border-top: 1px solid #333;
  z-index: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}
jigsaw-preview .attribute-bar a {
  text-decoration: underline;
}
jigsaw-preview .scroll-container {
  flex: 1 1 auto;
  overflow: hidden;
  background: #000;
  cursor: grab;
}
jigsaw-preview .scroll-container .zoom-wrapper {
  transform-origin: top left;
  display: inline-block;
}
jigsaw-preview .scroll-container .zoom-wrapper img {
  display: block;
  max-width: none;
  user-select: none;
  pointer-events: none;
}
jigsaw-preview .scroll-container[dragging] {
  cursor: grabbing;
}

.ze-form .form-field {
  margin-bottom: 12px;
}
.ze-form .form-field.checkbox {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 10px;
}
.ze-form button {
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: var(--bg-purple);
  border-radius: 8px;
  font-weight: 500;
  line-height: 28px;
  font-size: 18px;
  width: 100%;
  color: white;
  cursor: pointer;
  border: none;
  white-space: nowrap;
}
.ze-form button:hover {
  filter: brightness(0.9);
}
.ze-form button svg {
  display: inline-block;
  width: 20px;
  height: 20px;
  margin-right: 10px;
}
.ze-form button .spinner {
  display: none;
  width: 20px;
  height: 20px;
  border: 3px solid currentColor;
  border-right-color: currentcolor;
  border-right-color: transparent;
  border-radius: 50%;
  -webkit-animation: 0.75s linear infinite spinner;
  animation: 0.75s linear infinite spinner;
  margin-right: 10px;
}
.ze-form input[type="text"],
.ze-form input[type="email"] {
  background-color: var(--form-element-background);
  border: var(--form-element-border);
  border-radius: var(--form-element-border-radius);
  font-size: 18px;
  line-height: 28px;
  padding: 12px 16px;
  width: 100%;
  color: white;
}
.ze-form input[type="text"]:focus,
.ze-form input[type="email"]:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--bg-purple);
}
.ze-form input[type="checkbox"] {
  width: 20px;
  height: 20px;
  background: white;
  border-radius: 2px;
  accent-color: #4f46e5;
}
.ze-form input::placeholder {
  color: #9ca3af;
}
puzzle-completed {
  position: absolute;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  left: 0;
  padding-top: 60px;
  top: 0;
  font-family: var(--font-system);
}
puzzle-completed * {
  box-sizing: border-box;
}
puzzle-completed [name="claim"] {
  padding: 12px 16px;
  background-color: var(--bg-green);
}
puzzle-completed [name="success"] {
  display: none;
  justify-content: center;
  align-items: center;
  height: 200px;
  width: 100%;
  flex-direction: column;
  text-align: center;
}
puzzle-completed [name="success"] svg {
  color: var(--icon-success);
  width: 32px;
  height: 32px;
}
puzzle-completed > ze-share button {
  background-color: var(--bg-purple);
  padding: 8px 16px;
  font-size: 16px;
  width: fit-content;
}
puzzle-completed[form-state="error"] [name="error"] {
  display: block !important;
}
puzzle-completed[form-state="success"] .success-hidden {
  display: none !important;
}
puzzle-completed[form-state="success"] .form-field {
  display: none !important;
}
puzzle-completed[form-state="success"] [name="success"] {
  display: flex !important;
}
puzzle-completed[form-state="success"] [name="claim"] {
  display: none !important;
}
puzzle-completed[form-state="busy"] {
  pointer-events: none;
  filter: brightness(0.9);
}
puzzle-completed[form-state="busy"] .spinner {
  display: inline-block !important;
}
puzzle-completed[form-state="busy"] input,
puzzle-completed[form-state="busy"] label {
  filter: brightness(0.7);
}
puzzle-completed [name="close"] {
  position: absolute;
  background: none;
  right: 16px;
  top: 16px;
  border: none;
  color: #9ca3af;
  width: 32px;
  height: 32px;
  padding: 0;
}
puzzle-completed [name="close"] svg {
  margin: 0;
}
puzzle-completed [name="popup"] {
  background-color: var(--bg-popup);
  position: relative;
  border-radius: 12px;
  width: 448px;
  height: fit-content;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-items: flex-start;
  align-items: center;
  margin: auto;
}
@media screen and (max-width: 448px) {
  puzzle-completed [name="popup"] {
    width: 100%;
    border-radius: 0;
  }
}
puzzle-completed [name="popup"] [name="form"] {
  background-color: var(--bg-form);
  border: var(--border-form);
  width: 100%;
  height: fit-content;
  display: flex;
  padding: 24px;
  justify-content: center;
  flex-direction: column;
  border-radius: 8px;
  margin-bottom: 24px;
}
puzzle-completed [name="popup"] [name="form"] .form-header {
  font-weight: 600;
  font-size: 24px;
  color: white;
}
puzzle-completed [name="popup"] [name="form"] [name="error"] {
  display: none;
  color: #f87171;
  font-size: 14px;
  line-height: 20px;
}
puzzle-completed [name="popup"] [name="form"] label {
  color: #d1d5db;
  line-height: 28px;
  font-size: 18px;
  display: block;
}
puzzle-completed [name="popup"] [name="form"] p {
  font-size: 18px;
  color: white;
}
puzzle-completed [name="popup"] header {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 24px;
}
puzzle-completed [name="popup"] header [name=image-holder] {
  position: relative;
  width: 64px;
  height: 64px;
}
puzzle-completed [name="popup"] header [name=image-holder] [name=shadow] {
  position: absolute;
  opacity: 0.4;
  background-color: #eab308;
  filter: blur(12px);
  border-radius: 9999px;
  height: 64px;
  width: 64px;
}
puzzle-completed [name="popup"] header [name=image-holder] [name=image] {
  background-image: linear-gradient(to right bottom, #facc15, #d97706);
  border-radius: 9999px;
  height: 64px;
  width: 64px;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1;
  position: absolute;
}
puzzle-completed [name="popup"] header [name=image-holder] [name=image] svg {
  stroke: white;
  width: 40px;
  height: 40px;
}
puzzle-completed [name="popup"] header h1 {
  color: white;
  font-weight: 700;
  font-size: 36px;
  text-align: center;
  line-height: 65px;
  background: none;
  -webkit-text-fill-color: unset;
}
puzzle-completed [name="popup"] header h2 {
  font-size: 24px;
  line-height: 32px;
  color: #d1d5db;
  text-align: center;
  margin: 0;
  font-weight: normal;
}
puzzle-completed [name="popup"] header h2 span {
  color: #facc15;
}
@keyframes spinner {
  100% {
    transform: rotate(360deg);
  }
}

reset-panel {
  position: absolute;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 16px;
  top: 100px;
  transform: translateY(-100vh);
  /* Start far above */
  animation: flyInBounceFromTop 2s ease-out forwards;
}
reset-panel button {
  padding: 12px 16px;
  background-color: var(--bg-green);
  width: 200px;
  height: 50px;
  animation: wiggle 0.4s ease-in-out 1s 3;
  transform-origin: center;
}
/* Panel flies in from top and bounces */
@keyframes flyInBounceFromTop {
  0% {
    transform: translateY(-100vh);
    opacity: 0;
  }
  60% {
    transform: translateY(20px);
    opacity: 1;
  }
  80% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0);
  }
}
/* Button wiggles */
@keyframes wiggle {
  0%,
  100% {
    transform: rotate(0deg);
  }
  25% {
    transform: rotate(5deg);
  }
  50% {
    transform: rotate(-5deg);
  }
  75% {
    transform: rotate(3deg);
  }
}

busy-panel {
  position: absolute;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  left: 0;
  padding-top: 60px;
  top: 0;
  font-family: var(--font-system);
}
busy-panel[hide] [name=popup] {
  animation: flyOutToTop 0.6s ease-in forwards;
}
busy-panel [name="popup"] {
  background-color: var(--bg-popup);
  position: relative;
  border-radius: 12px;
  width: 448px;
  height: fit-content;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-items: flex-start;
  align-items: center;
  margin: auto;
  transform: translateY(-100vh);
  /* Start far above */
  animation: flyInBounceFromTop 0.8s ease-out forwards;
}
busy-panel [name="popup"] h1 {
  color: white;
  font-weight: 700;
  font-size: 30px;
  text-align: center;
  line-height: 65px;
  background: none;
  -webkit-text-fill-color: unset;
  margin: 0;
}
@keyframes flyOutToTop {
  0% {
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    transform: translateY(-100vh);
    opacity: 0;
  }
}

clipboard-button {
  display: inline-flex;
  margin-left: 9px;
  height: 100%;
  align-items: center;
  justify-content: center;
  height: 16px;
  width: 16px;
}
clipboard-button button {
  background: none !important;
  width: 100% !important;
  height: 100% !important;
  padding: 0;
}
clipboard-button button svg {
  margin: 0 !important;
  width: 100% !important;
  height: 100% !important;
}

play-with-friends {
  position: absolute;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  left: 0;
  padding-top: 60px;
  top: 0;
  font-family: var(--font-system);
}
play-with-friends * {
  box-sizing: border-box;
}
play-with-friends [name="code-entry"] {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
play-with-friends [name="code-entry"] input {
  margin-right: 20px;
  padding: 8px 16px !important;
}
play-with-friends [name="code-entry"] button {
  background-color: var(--bg-purple);
  padding: 8px 16px;
  font-size: 16px;
  width: fit-content;
  border-radius: 8px;
  color: white;
  font-weight: bold;
}
play-with-friends [name="code-entry"] button svg {
  margin-left: 8px;
  margin-right: 0;
  color: white;
}
play-with-friends [name="close"] {
  position: absolute;
  background: none;
  right: 16px;
  top: 16px;
  border: none;
  color: #9ca3af;
  width: 32px;
  height: 32px;
  padding: 0;
}
play-with-friends [name="close"] svg {
  margin: 0;
}
play-with-friends [name="popup"] {
  background-color: var(--bg-popup);
  position: relative;
  border-radius: 12px;
  width: 448px;
  height: fit-content;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-items: flex-start;
  align-items: center;
  margin: auto;
}
@media screen and (max-width: 448px) {
  play-with-friends [name="popup"] {
    width: 100%;
    border-radius: 0;
  }
}
play-with-friends [name="popup"] [name="share-game"],
play-with-friends [name="popup"] [name="join-game"] {
  background-color: var(--bg-form);
  border: var(--border-form);
  width: 100%;
  height: fit-content;
  display: flex;
  padding: 24px;
  justify-content: center;
  flex-direction: column;
  border-radius: 8px;
  margin-bottom: 24px;
}
play-with-friends [name="popup"] [name="share-game"]:last-of-type,
play-with-friends [name="popup"] [name="join-game"]:last-of-type {
  margin-bottom: 0;
}
play-with-friends [name="popup"] [name="share-game"] [name="error"],
play-with-friends [name="popup"] [name="join-game"] [name="error"] {
  display: none;
  color: #f87171;
  font-size: 14px;
  line-height: 20px;
}
play-with-friends [name="popup"] [name="share-game"][form-state="error"] [name="error"],
play-with-friends [name="popup"] [name="join-game"][form-state="error"] [name="error"] {
  display: block !important;
}
play-with-friends [name="popup"] [name="share-game"][form-state="busy"],
play-with-friends [name="popup"] [name="join-game"][form-state="busy"] {
  pointer-events: none;
  filter: brightness(0.9);
}
play-with-friends [name="popup"] [name="share-game"][form-state="busy"] .spinner,
play-with-friends [name="popup"] [name="join-game"][form-state="busy"] .spinner {
  display: inline-block !important;
}
play-with-friends [name="popup"] [name="share-game"][form-state="busy"] input,
play-with-friends [name="popup"] [name="join-game"][form-state="busy"] input,
play-with-friends [name="popup"] [name="share-game"][form-state="busy"] label,
play-with-friends [name="popup"] [name="join-game"][form-state="busy"] label {
  filter: brightness(0.7);
}
play-with-friends [name="popup"] [name="share-game"] p,
play-with-friends [name="popup"] [name="join-game"] p {
  color: white;
  margin: 0 0 13px 0;
  font-size: 16px;
}
play-with-friends [name="popup"] [name="share-game"] .divider,
play-with-friends [name="popup"] [name="join-game"] .divider {
  margin: 27px auto;
  height: 0px;
  width: 100%;
  font-size: 0;
  border-top: var(--border-form);
}
play-with-friends [name="popup"] [name="share-game"] [name="game-code"],
play-with-friends [name="popup"] [name="join-game"] [name="game-code"] {
  width: 100%;
  text-align: center;
  font-size: 26px;
  color: white;
  margin-top: 4px;
}
play-with-friends [name="popup"] [name="share-game"] [name="game-code"] .spinner,
play-with-friends [name="popup"] [name="join-game"] [name="game-code"] .spinner {
  display: inline-block !important;
  width: 20px;
  height: 20px;
  border: 3px solid currentColor;
  border-right-color: currentcolor;
  border-right-color: transparent;
  border-radius: 50%;
  -webkit-animation: 0.75s linear infinite spinner;
  animation: 0.75s linear infinite spinner;
  margin-right: 10px;
}
play-with-friends [name="popup"] [name="share-game"] [name="qr-code"],
play-with-friends [name="popup"] [name="join-game"] [name="qr-code"] {
  display: flex;
  justify-content: center;
  align-items: center;
}
play-with-friends [name="popup"] [name="share-game"] [name="qr-code"] svg,
play-with-friends [name="popup"] [name="join-game"] [name="qr-code"] svg {
  border-radius: 5px;
  border: var(--form-element-border);
}
play-with-friends [name="popup"] [name="share-game"] [name="game-link"],
play-with-friends [name="popup"] [name="join-game"] [name="game-link"] {
  display: flex;
  align-items: center;
  color: white;
  margin-top: 4px;
  background-color: var(--form-element-background);
  padding: 12px 16px;
  border-radius: 5px;
  border: var(--form-element-border);
}
play-with-friends [name="popup"] header {
  display: flex;
  align-items: center;
  margin-bottom: 24px;
  width: 100%;
}
play-with-friends [name="popup"] header [name="image-holder"] {
  position: relative;
  width: 40px;
  height: 40px;
  margin-right: 14px;
}
play-with-friends [name="popup"] header [name="image-holder"] [name="shadow"] {
  position: absolute;
  opacity: 0.4;
  background-color: #4f46e5;
  filter: blur(12px);
  border-radius: 8px;
  height: 40px;
  width: 40px;
}
play-with-friends [name="popup"] header [name="image-holder"] [name="image"] {
  background-image: linear-gradient(to right bottom, #818cf8, #4f46e5);
  border-radius: 8px;
  height: 40px;
  width: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1;
  position: absolute;
}
play-with-friends [name="popup"] header [name="image-holder"] [name="image"] svg {
  stroke: white;
  width: 24px;
  height: 24px;
}
play-with-friends [name="popup"] header h1 {
  color: white;
  font-weight: 700;
  font-size: 24px;
  text-align: left;
  line-height: 24px;
  background: none;
  -webkit-text-fill-color: unset;
}
play-with-friends [name="popup"] header h2 {
  font-size: 14px;
  line-height: 32px;
  color: #d1d5db;
  text-align: center;
  margin: 0;
  font-weight: normal;
}
play-with-friends [name="popup"] header h2 span {
  color: #facc15;
}

loading-indicator {
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  height: 100%;
  width: 100%;
  padding: 32px;
}
loading-indicator > svg {
  color: #818cf8;
  animation: spin 1s linear infinite;
}
loading-indicator h2 {
  font-size: 26px;
  line-height: 26px;
  color: white;
  font-weight: 500;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
loading-indicator .loading-tip {
  width: 85%;
  padding: 20px 30px;
  border-radius: 10px;
  background: #374151;
  margin-bottom: 20px;
}
loading-indicator .loading-tip > header {
  color: #f59e0b;
  display: flex;
  align-items: center;
  margin-bottom: 10px;
  font-weight: 600;
  padding: 5px 0;
}
loading-indicator .loading-tip > header svg {
  margin-right: 10px;
}
loading-indicator .loading-tip > div {
  color: #d1d5db;
}
loading-indicator .progress-bar {
  width: 100%;
  height: 3px;
  background-color: #374151;
  overflow: hidden;
  margin-top: auto;
  justify-self: flex-end;
}
loading-indicator .progress-bar .progress {
  height: 100%;
  width: 0;
  background-color: #818cf8;
  transition: width 0.3s ease;
}
@keyframes spin {
  100% {
    transform: rotate(360deg);
  }
}

puzzle-overview {
  position: absolute;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  left: 0;
  top: 0;
  font-family: var(--font-system);
}
puzzle-overview * {
  box-sizing: border-box;
}
puzzle-overview [name="popup"] {
  background-color: var(--bg-popup);
  position: relative;
  border-radius: 12px;
  display: flex;
  justify-items: stretch;
  align-items: center;
  margin: auto;
  width: 1024px;
  max-width: 100%;
  overflow: hidden;
}
@media (max-width: 720px) {
  puzzle-overview [name="popup"] {
    flex-direction: column;
    width: 512px;
  }
}
puzzle-overview .image-loader {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% + 4px);
  height: calc(100% + 4px);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  filter: blur(2px);
  transition: filter 0.5s ease, opacity 0.5s ease;
  margin: -2px;
}
puzzle-overview .preview {
  flex: 0 0 50%;
  overflow: hidden;
  position: relative;
  height: 100%;
}
puzzle-overview .preview .image {
  width: 100%;
  height: 100%;
  background-size: cover;
  background-repeat: no-repeat;
}
puzzle-overview .preview .attribute-bar {
  position: absolute;
  bottom: 0;
  width: 100%;
  background-color: rgba(0, 0, 0, 0.7);
  font-size: 14px;
  line-height: 20px;
  padding: 8px;
  display: flex;
  align-items: center;
  color: white;
}
puzzle-overview .preview .attribute-bar a {
  color: #a5b4fc;
}
puzzle-overview .preview .attribute-bar a:hover {
  color: #c7d2fe;
}
puzzle-overview .preview .attribute-bar svg {
  margin: -2px 7px;
}
puzzle-overview[loaded] .image-loader {
  filter: blur(0);
  opacity: 0;
  margin: 0;
}
puzzle-overview .content-area {
  flex: 0 0 50%;
  height: 100%;
  background-color: var(--bg-popup);
  z-index: 1;
}

body[name="jigsaw"][change-background] .frame {
  filter: invert(1);
}
body[name="jigsaw"][change-background] jigsaw-table {
  filter: invert(1);
}
body[name="jigsaw"] .frame {
  display: block;
  margin-top: 60px;
  height: calc(100vh - 60px);
  background: var(--background, #212a21);
  background-size: cover;
}
body[name="jigsaw"] .tip {
  position: absolute;
  top: 70px;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 20px;
  color: #807878;
  font-family: system-ui;
  font-size: 15px;
  line-height: 26px;
  text-align: center;
  padding: 0 20px;
}
body[name="jigsaw"] .pieces {
  display: flex;
}

:root {
  --bg-popup: #191919;
  --bg-form: #1e2229;
  --bg-green: #16a34a;
  --bg-purple: #4f46e5;
  --border-form: 1px solid #374151;
  --form-element-background: #374151;
  --form-element-border: 1px solid #4b5563;
  --form-element-border-radius: 8px;
  --icon-success: #22c55e;
  --font-system: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", Segoe UI Symbol, "Noto Color Emoji";
}

.emoji {
  -webkit-background-clip: initial;
  background-clip: initial;
  -webkit-text-fill-color: initial;
  background: none;
  color: #fff;
  text-shadow: none;
}

:root {
  --site-navigation-height: 140px;
}
@media screen and (max-width: 800px) {
  :root {
    --site-navigation-height: 120px;
  }
}
button[name="toggle-fullscreen"] svg:first-of-type {
  display: block;
}
button[name="toggle-fullscreen"] svg:last-of-type {
  display: none;
}
[fullscreen] button[name="toggle-fullscreen"] svg:first-of-type {
  display: none;
}
[fullscreen] button[name="toggle-fullscreen"] svg:last-of-type {
  display: block;
}
page-header {
  width: 100%;
  display: flex;
  justify-content: center;
  z-index: 1;
  transition: all 0.5s;
  height: 140px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  align-items: center;
}
page-header .caption {
  font-size: 30px;
  background: -webkit-linear-gradient(#f4e4c9, #f3deb0, #dccca4);
  background: linear-gradient(#f4e4c9, #f4e4c9, #dccca4);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: sans-serif;
  max-width: 100%;
  font-weight: 400;
  text-overflow: ellipsis;
  overflow: hidden;
}
@media screen and (max-width: 800px) {
  page-header .caption {
    font-size: 20px;
  }
}
@media screen and (max-width: 500px) {
  page-header .caption {
    font-size: 13px;
  }
}
page-header .beta {
  position: absolute;
  background: #0071e4;
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 9999px;
  font-family: system-ui;
  margin-top: -35px;
  margin-left: 80%;
}
@media screen and (max-width: 1200px) {
  page-header .beta {
    margin-left: 0;
  }
}
page-header[left-menu] {
  justify-content: flex-start;
  position: fixed;
  top: 0 !important;
  left: 0;
  height: 60px !important;
  z-index: 10;
  box-shadow: 0 0 10px black;
  background-color: rgba(0, 0, 0, 0.85);
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  padding: 10px;
}
page-header[left-menu] .left,
page-header[left-menu] .right {
  flex: 1;
  display: flex;
  align-items: center;
}
@media screen and (max-width: 800px) {
  page-header[left-menu] .left {
    flex: 0;
  }
}
@media screen and (max-width: 800px) {
  page-header[left-menu] .left > svg {
    display: none;
  }
}
page-header[left-menu] .right {
  justify-content: flex-end;
  gap: 10px;
}
page-header[left-menu] .right > * {
  position: relative;
  right: unset;
}
page-header[left-menu] .right > button,
page-header[left-menu] .right puzzlepass-button > button {
  cursor: pointer;
  border-radius: 8px;
  border: none;
  height: 36px;
  align-items: center;
  border-radius: 9999px;
  display: flex;
  font-size: 15px;
  justify-content: space-around;
  padding: 0;
  width: 36px;
  color: white;
  fill: white;
  background-color: #272727;
}
page-header[left-menu] .right > button:hover,
page-header[left-menu] .right puzzlepass-button > button:hover {
  background-color: #3a3a3a;
}
page-header[left-menu] .right > button[active],
page-header[left-menu] .right puzzlepass-button > button[active] {
  background-color: #6d6d6d;
}
page-header[left-menu] .right > button.text,
page-header[left-menu] .right puzzlepass-button > button.text {
  padding: 0 15px;
  width: auto;
}
page-header[left-menu] .right > button.text svg,
page-header[left-menu] .right puzzlepass-button > button.text svg {
  margin-right: 6px;
  width: 24px;
  height: 24px;
  stroke: white;
}
@media screen and (max-width: 1200px) {
  page-header[left-menu] .right > button.text,
  page-header[left-menu] .right puzzlepass-button > button.text {
    padding: 0;
    width: 36px;
  }
  page-header[left-menu] .right > button.text span,
  page-header[left-menu] .right puzzlepass-button > button.text span {
    display: none;
  }
  page-header[left-menu] .right > button.text svg,
  page-header[left-menu] .right puzzlepass-button > button.text svg {
    margin-right: 0;
  }
}
page-header[left-menu] .center {
  flex: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  white-space: nowrap;
  padding: 0 10px;
  max-width: calc(100% - 215px);
}
@media screen and (max-width: 800px) {
  page-header[left-menu] .center {
    padding: 0px;
  }
}
page-header[left-menu] .burger-container {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  position: relative;
}
page-header[left-menu] .burger-container .burger-toggle {
  font-size: 32px;
  background: none;
  color: white;
  border: none;
  cursor: pointer;
  padding: 10px;
}
@media screen and (max-width: 800px) {
  page-header[left-menu] .burger-container .burger-toggle {
    padding: 1px;
  }
}
page-header[left-menu] .burger-container .burger-menu {
  flex-direction: column;
  position: absolute;
  top: 48px;
  left: 0;
  background-color: rgba(0, 0, 0, 0.85);
  padding: 10px;
  border-radius: 4px;
  overflow: hidden;
}
page-header[left-menu] .burger-container .burger-menu hr {
  border: 1px solid #fcfcfc30;
  width: 100%;
}
page-header[left-menu] .burger-container .burger-menu a,
page-header[left-menu] .burger-container .burger-menu button {
  color: white;
  margin: 10px 15px;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  background: none;
  border: none;
  font-size: 16px;
  padding: 0;
  text-align: left;
}
page-header[left-menu] .burger-container .burger-menu a:hover,
page-header[left-menu] .burger-container .burger-menu button:hover {
  text-decoration: underline;
}
page-header nav {
  font-size: 18px;
  position: absolute;
  display: flex;
  width: 100%;
  max-width: 700px;
  justify-content: space-evenly;
  align-items: center;
  height: var(--site-navigation-height);
}
@media screen and (max-width: 800px) {
  page-header nav {
    font-size: 15px;
    top: 0;
  }
}
page-header nav a {
  display: flex;
  white-space: nowrap;
  justify-content: center;
  width: 186px;
  text-shadow: 0 1px #434343;
  color: white;
}
page-header nav a:hover {
  transition: all 0.5s ease-out;
  transform: scale(1.15);
}
@media screen and (max-width: 800px) {
  page-header nav a:last-of-type {
    opacity: 0;
  }
}
@media screen and (max-width: 420px) {
  page-header nav a:nth-child(4) {
    opacity: 0;
  }
}
page-header nav svg {
  height: 100px;
  filter: drop-shadow(0px 0px 40px black);
}
page-header nav span[name="big"] {
  opacity: 1;
}
page-header nav span[name="small"] {
  position: absolute;
  opacity: 0;
}
page-header nav span[name="small"] svg {
  height: 46px;
  margin-top: 29px;
}
page-header[small] {
  background-color: rgba(100, 100, 100, 0.5);
  position: fixed;
  top: 0 !important;
  left: 0;
  height: 60px !important;
  z-index: 10;
  box-shadow: 0 0 10px black;
}
page-header[small] a.logo {
  width: 40px;
}
page-header[small] nav {
  height: 100% !important;
  top: 0 !important;
}
page-header[small] nav span[name="big"] {
  opacity: 0;
}
page-header[small] nav span[name="small"] {
  opacity: 1;
}
page-header[small]::before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backdrop-filter: saturate(180%) blur(5px);
  backdrop-filter: saturate(100%) blur(5px);
  perspective: 1000;
  z-index: -1;
  display: block;
  background-color: #00000082;
  backface-visibility: hidden;
}

page-share {
  position: relative;
}
page-share[full-page] {
  position: absolute;
  right: 30px;
}
@media screen and (min-width: 910px) {
  page-share[full-page] {
    right: var(--right-offset-hint, 50px);
  }
}
page-share button {
  color: white;
  cursor: pointer;
}
page-share > button {
  background-color: #0071e3;
  border: none;
  border-radius: 9999px;
  font-size: 15px;
  height: 36px;
  width: 92px;
  display: flex;
  align-items: center;
  justify-content: space-around;
  padding: 0 10px;
}
page-share > button:hover {
  background-color: #0059b3;
}
@media screen and (max-width: 1200px) {
  page-share > button {
    padding: 0;
    width: 36px;
  }
  page-share > button span {
    display: none;
  }
  page-share > button svg {
    margin-right: 0;
  }
}
page-share[options-up] .options {
  top: unset;
  bottom: 44px;
  right: unset;
  left: 50%;
  margin-left: calc(190px / -2);
}
page-share .options {
  display: none;
  position: absolute;
  background-color: #303030;
  border: none;
  border-radius: 10px;
  margin-top: 10px;
  width: 190px;
  right: 0px;
  padding: 10px 0;
  border: 1px solid #616161;
}
page-share .options button {
  border: none;
  background: none;
  color: white;
  height: 38px;
  padding: 0 13px;
  font-size: 15px;
  width: 100%;
  text-align: left;
  display: flex;
  align-items: center;
}
page-share .options button.device {
  border-bottom: 1px solid #616161;
}
page-share .options button div:first-of-type {
  width: 20px;
  margin-right: 8px;
  display: flex;
}
page-share .options button div:first-of-type svg {
  height: 20px;
}
page-share .options button:hover {
  background-color: #616161;
}
page-share .options[show] {
  display: block;
}
page-share .copy-feedback {
  position: absolute;
  top: -2em;
  left: 50%;
  transform: translateX(-50%);
  background: #222;
  color: #fff;
  padding: 6px 12px;
  border-radius: 5px;
  font-size: 18px;
  white-space: nowrap;
  opacity: 0.9;
  z-index: 1000;
  pointer-events: none;
  animation: fade-out 2s forwards;
}
@keyframes fade-out {
  0% {
    opacity: 0.9;
  }
  80% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
  }
}

page-footer {
  margin-top: 20px;
  width: 100%;
  height: calc(var(--ze-footer-height) - 20px);
  flex: 0 0 calc(var(--footer-height) - 20px);
  background: linear-gradient(180deg, #080808, #131313);
  font-family: sans-serif;
  display: flex;
  justify-content: space-around;
  padding: 20px;
  align-items: center;
  flex-direction: column;
  border-top: 1px solid #2b2b2b;
  top: calc(100% - var(--footer-height));
}
page-footer[small] {
  top: unset;
  position: fixed;
  bottom: 0;
  padding: 7px;
  font-size: 13px !important;
}
page-footer[small] svg {
  display: none;
}
page-footer[small] .links,
page-footer[small] .tag-line {
  display: none;
}
@media screen and (max-width: 800px) {
  page-footer {
    padding-top: 5px;
  }
}
page-footer .links {
  color: #909090;
  text-align: center;
}
page-footer .links a {
  color: #909090;
  text-decoration: underline;
  text-underline-position: under;
}
@media screen and (max-width: 800px) {
  page-footer .links a {
    font-size: 12px;
  }
}
page-footer .copyright {
  color: #727272;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
}
page-footer .copyright svg {
  height: 18px;
  margin-left: 10px;
}
page-footer .tag-line {
  font-size: 20px;
  text-align: center;
  padding: 0 5px;
  width: 60%;
  line-height: 1.3;
  background: linear-gradient(#ffffff, #909090);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
@media screen and (max-width: 800px) {
  page-footer .tag-line {
    width: 100%;
    font-size: 14px;
  }
}


word-ladder {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
word-ladder .step ladder-letter {
  position: relative;
  transition: all 0.8s ease-in-out;
  outline: 1px solid transparent;
}
word-ladder .step[correct] {
  --background-color: #4caf50;
}
word-ladder .step[incorrect] {
  --background-color: #f44336;
}
word-ladder .step[incorrect],
word-ladder .step[correct] {
  animation: outline-grow 0.5s forwards ease-in-out;
}
word-ladder .step[incorrect] ladder-letter,
word-ladder .step[correct] ladder-letter {
  animation: background-show 0.5s forwards ease-in-out;
}
/* Keyframe Animations */
@keyframes outline-grow {
  0% {
    outline: 1px solid var(--background-color);
  }
  50% {
    outline: 10px solid var(--background-color);
  }
  100% {
    outline: 30px solid transparent;
  }
}
@keyframes background-show {
  0% {
    background-color: white;
    color: black    ;
  }
  100% {
    color: white;
    background-color: var(--background-color);
  }
}

ladder-letter {
  width: 60px;
  height: 60px;
  font-family: Clear Sans, Helvetica Neue, Arial, sans-serif;
  font-size: 35px;
  display: flex;
  justify-content: center;
  align-items: center;
  color: black;
  text-transform: uppercase;
  border: 1px solid #a2a2a2;
  border-radius: 3px;
  overflow: hidden;
  background-color: white;
}
ladder-letter[fixed] {
  background-color: #a2a2a2;
  color: black;
}
ladder-letter input {
  width: 60px;
  padding: 0;
  height: 100%;
  border: none;
  font-size: 35px;
  text-align: center;
  text-transform: uppercase;
  color: black;
  background: transparent;
}

body[name="word-ladder"] {
  --loader-button-background: #fff;
  --loader-button-color: #000;
  --loader-button-shadow: none;
}
body[name="word-ladder"] header {
  margin: 20px;
}
body[name="word-ladder"] .key-visual {
  height: var(--visual-height, 150px);
  width: 100%;
  margin-top: 60px;
  background-size: cover;
  background-position: 0 var(--visual-offset, 58%);
  border-bottom: 1px solid #cccccc26;
}
body[name="word-ladder"] .frame {
  padding-top: 10px;
  justify-content: flex-start;
  min-height: calc(100vh - var(--footer-height) - 323px);
}
body[name="word-ladder"] .letters {
  display: flex;
  gap: 10px;
  margin: 8px 0;
  position: relative;
}
body[name="word-ladder"] .clue {
  position: relative;
  margin-bottom: 10px;
  font-size: 20px;
  font-weight: bold;
  width: 200px;
  display: flex;
  align-items: center;
  font-family: sans-serif;
}
@media screen and (min-width: 768px) {
  body[name="word-ladder"] .clue {
    height: 60px;
    position: absolute;
    margin-left: calc(70px * var(--word-length, 3));
    margin-top: -70px;
  }
}
body[name="word-ladder"] loader-button {
  width: 200px;
  margin-top: 20px;
}

input:not([type="checkbox"]):not([type="radio"]) {
  -webkit-appearance: none;
  appearance: none;
}

.box {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  align-self: center;
  justify-self: center;
  background: linear-gradient(180deg, #ffffff, #fdfdfd, #fbfbfb, #f9f9f9, #f6f6f6, #f4f4f4, #f2f2f2, #f0f0f0);
  padding: 40px;
  border-radius: 20px;
  box-shadow: 0 0 40px 0 #3d3d3d;
  width: 100%;
  max-width: 600px;
}
.box > form {
  display: contents;
}
@media screen and (max-width: 600px) {
  .box {
    align-self: unset;
    background: none;
    box-shadow: none;
    padding: 0;
    padding: 20px;
  }
}

.round label {
  font-size: 20px;
  font-weight: 400;
  margin-top: 20px;
}
.round input[type="text"],
.round input[type="email"] {
  background-color: #e2e2e2;
  text-align: center;
  padding: 10px;
  border: none;
  border-radius: 50px;
  box-shadow: inset 1px 1px 5px 2px #ccc;
  margin: 10px 20px 20px 20px;
  max-width: 100%;
  font-size: 32px;
}
.round input[type="text"]:focus-visible,
.round input[type="email"]:focus-visible {
  outline: none;
  box-shadow: 0 0 12px 1px #2200ff;
}


/*# sourceMappingURL=homepage.0ee0b3e9a4e5bb7ed2fc.css.map*/