
@keyframes cheatjs-updown {
  0% {
    transform: scaleY(1);
  }
  100% {
    transform: scaleY(-1);
  }
}
@keyframes cheatjs-drunk {
  0% {
    filter:blur(0.1px);
    transform: translateX(1px);

  }
  22% {
    filter: blur(1px);
    transform: translateX(-1px);

  }
  44% {
    filter: blur(4px);
    transform: translateX(2px);

  }
  77% {
    filter: blur(1px);
    transform: translateX(-2px);

  }
  100% {
    filter: blur(0);
    transform: translateX(1px);

  }
}

@keyframes cheatjs-disco {
  0% {
    background-color: hsl(340 100% 32%);
  }

  33% {
    background-color: hsl(100 100% 32%);
  }

  66% {
    background-color: hsl(220 100% 32%);
  }

  100% {
    background-color: hsl(340 100% 32%);
  }
}

@keyframes cheatjs-fall-down-shake {
  0% {
    transform: translateX(-1px) rotate(-1deg);
  }

  100% {
    transform: translateX(1px) rotate(1deg);
  }
}

@keyframes cheatjs-fall-down-drop {
  100% {
    opacity: 0;
    transform: translateX(var(--cheatjs-fall-x)) translateY(110vh) rotate(var(--cheatjs-fall-rotate));
  }
}

body {
  --cheatjs-brightness: brightness(1);
  --cheatjs-contrast: contrast(1);
  --cheatjs-drunk-blur: blur(0);
  --cheatjs-grayscale: grayscale(0);
  --cheatjs-hue: hue-rotate(0deg);
  --cheatjs-rotate-base: 0deg;
  --cheatjs-rotate-wobble: 0deg;
  --cheatjs-saturate: saturate(1);
  --cheatjs-translate-x: 0;
  --cheatjs-soft-blur: blur(0);
  --cheatjs-scale: 1;
}
body.cheatjs-drunk > :not(.cheatjs-notice):not(.cheatjs-stop-button),
body.cheatjs-grayscale > :not(.cheatjs-notice):not(.cheatjs-stop-button),
body.cheatjs-soft-blur > :not(.cheatjs-notice):not(.cheatjs-stop-button) {
  filter: var(--cheatjs-grayscale) var(--cheatjs-contrast) var(--cheatjs-brightness) var(--cheatjs-saturate) var(--cheatjs-soft-blur) var(--cheatjs-drunk-blur) var(--cheatjs-hue);
}

body.cheatjs-confidence > :not(.cheatjs-notice):not(.cheatjs-stop-button),
body.cheatjs-upside-down > :not(.cheatjs-notice):not(.cheatjs-stop-button),
body.cheatjs-drunk > :not(.cheatjs-notice):not(.cheatjs-stop-button) {
  transform: rotate(var(--cheatjs-rotate-base)) rotate(var(--cheatjs-rotate-wobble)) translateX(var(--cheatjs-translate-x)) scale(var(--cheatjs-scale));
  transform-origin: 50% 2rem;
}

.cheatjs-notice {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 999999;
  max-width: min(22rem, calc(100vw - 2rem));
  padding: 0.75rem 1rem;
  border: 2px solid #111;
  border-radius: 6px;
  background: #fff;
  color: #111;
  box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.22);
  font: 600 0.9375rem/1.4 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.cheatjs-stop-button {
  position: fixed;
  top: 50%;
  right: 0;
  z-index: 1000000;
  transform: translateY(-50%);
  padding: 0.55rem 0.7rem;
  border: 2px solid #111;
  border-right: 0;
  border-radius: 6px 0 0 6px;
  background: #fff;
  color: #111;
  box-shadow: 0 0.35rem 1rem rgba(0, 0, 0, 0.22);
  cursor: pointer;
  font: 700 0.8125rem/1.2 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.cheatjs-stop-button:hover,
.cheatjs-stop-button:focus {
  background: #111;
  color: #fff;
}

.cheatjs-stop-button:focus-visible {
  outline: 3px solid #ffcc00;
  outline-offset: 2px;
}

body.cheatjs-confidence {
  --cheatjs-scale: 1.04;
  cursor: crosshair;
}

body.cheatjs-confidence > :not(.cheatjs-notice):not(.cheatjs-stop-button) {
  text-transform: uppercase;
}

body.cheatjs-geocities {
  background-color: #00ffff;
  background-image:
    linear-gradient(45deg, rgba(255, 0, 255, 0.35) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(255, 255, 0, 0.4) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(0, 0, 255, 0.25) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(0, 255, 0, 0.3) 75%);
  background-position: 0 0, 0 10px, 10px -10px, -10px 0;
  background-size: 20px 20px;
  color: #000080;
  font-family: "Comic Sans MS", "Comic Sans", "Chalkboard SE", "Marker Felt", fantasy;
}

body.cheatjs-geocities a {
  color: #ff00ff;
  text-decoration: underline;
}

body.cheatjs-konami {
  box-shadow: inset 0 0 0 9999px rgba(255, 236, 61, 0.08);
}

body.cheatjs-konami::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 999998;
  pointer-events: none;
  background: repeating-linear-gradient(
    to bottom,
    rgba(0, 255, 65, 0.16) 0,
    rgba(0, 255, 65, 0.16) 1px,
    transparent 1px,
    transparent 4px
  );
  border: 8px solid #00ff41;
  box-shadow: inset 0 0 2rem rgba(0, 255, 65, 0.35);
}

body.cheatjs-konami::after {
  content: "KONAMI MODE";
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 999999;
  padding: 0.35rem 0.55rem;
  border: 2px solid #00ff41;
  border-radius: 4px;
  background: #021407;
  color: #00ff41;
  font: 700 0.75rem/1.2 "Courier New", monospace;
  letter-spacing: 0.08em;
}

body.cheatjs-drunk {
  --cheatjs-drunk-blur: blur(0.7px);
  animation: cheatjs-drunk 3.5s ease-in-out infinite;
  overflow-x: hidden;
}

body.cheatjs-disco {
  background-color: hsl(340 100% 32%);
  animation: cheatjs-disco 1.2s steps(1, end) infinite;
}

body.cheatjs-fall-down {
  overflow-x: hidden;
}

.cheatjs-fall-down-letter {
  display: inline-block;
  position: relative;
  animation:
    cheatjs-fall-down-shake var(--cheatjs-fall-shake-duration) steps(2, end) var(--cheatjs-fall-delay) 6,
    cheatjs-fall-down-drop var(--cheatjs-fall-drop-duration) cubic-bezier(0.24, 0.82, 0.36, 1) calc(var(--cheatjs-fall-delay) + 0.72s + var(--cheatjs-fall-hold-delay)) forwards;
  transform-origin: 50% 100%;
  will-change: opacity, transform;
}

body.cheatjs-upside-down > :not(.cheatjs-notice):not(.cheatjs-stop-button){
  animation: cheatjs-updown 1s linear 1.4s forwards;
}

body.cheatjs-grayscale {
  --cheatjs-grayscale: grayscale(1);
}

.cheatjs-runaway-target {
  transition: transform 0.16s ease-out;
  will-change: transform;
}

body.cheatjs-soft-blur {
  --cheatjs-soft-blur: blur(2px);
}

@media (prefers-reduced-motion: reduce) {
  body.cheatjs-drunk,
  body.cheatjs-disco {
    animation: none;
  }

  .cheatjs-fall-down-letter {
    animation: none;
  }

  .cheatjs-runaway-target {
    transition: none;
  }
}
