/* [project]/public/css/dungeonQuests.css [app-client] (css) */
.DungeonQuestsPage .main {
  box-sizing: border-box;
  background: #1d161f;
  min-height: 100svh;
  padding: clamp(110px, 18svh, 190px) 24px 80px;
}

.DungeonQuestsPage .scene.screen01 {
  z-index: 1;
  width: 100%;
  height: 100%;
  margin: 0 auto;
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.dq-entry {
  z-index: 12;
  color: #f3e4c7;
  text-align: center;
  background: radial-gradient(at top, #64482d44, #0000 80%), #211a18f2;
  border: 1px solid #b79557;
  border-radius: 16px 4px;
  width: min(100%, 480px);
  margin: 0 auto;
  padding: 26px 24px;
  position: relative;
  box-shadow: inset 0 0 0 4px #1b1513, inset 0 0 0 5px #b7955740, 0 12px 40px #0008;
}

.dq-entry-status {
  color: #d0ac6c;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin: 0 0 12px;
  font-size: 13px;
}

.dq-entry h1 {
  color: #ecd198;
  margin: 0;
  font: 400 clamp(30px, 5vw, 46px) / 1.15 Metal Mania, fantasy;
}

html:not([lang="en"]) .dq-entry h1 {
  font-family: var(--locale-ui-font), serif;
  font-size: clamp(25px, 5vw, 36px);
  line-height: 1.4;
}

.dq-entry-description {
  color: #d7c7ae;
  max-width: 34ch;
  margin: 16px auto 20px;
  font-size: 15px;
  line-height: 1.65;
}

.dq-entry-actions {
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  display: flex;
}

@media (max-width: 480px) {
  .DungeonQuestsPage .main {
    padding: 108px 20px 60px;
  }

  .dq-entry {
    padding: 24px 18px;
  }
}

.DungeonQuestsPage .scene.screen01 ul {
  z-index: 2;
  width: 100%;
  height: calc(100% + 40px);
  position: relative;
  overflow: hidden;
}

.DungeonQuestsPage .scene.screen01 .layer {
  inset: 0 0 -40px;
  position: absolute !important;
}

.DungeonQuestsPage .scene.screen01 ul > li > img {
  width: 100%;
}

.DungeonQuestsPage .scene.screen01 ul > li > div {
  background-position: 50% 100%;
  background-repeat: no-repeat;
  background-size: cover;
  width: 100%;
  max-width: none;
  height: 100%;
  margin: 0 auto;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_0 {
  z-index: 1;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_1 {
  z-index: 3;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_2_l, .DungeonQuestsPage .scene.screen01 .layer.s01_2_r {
  z-index: 4;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_3 {
  z-index: 5;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_4 {
  z-index: 2;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_0 > div {
  background-position: 0 100%;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_1 > div {
  background-size: 100% 100%;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_2_l > div {
  background-position: 0 100%;
}

.DungeonQuestsPage .scene.screen01 .layer.s01_2_r > div, .DungeonQuestsPage .scene.screen01 .layer.s01_4 > div {
  background-position: 100% 100%;
}

.dq-particles {
  z-index: 10;
  pointer-events: none;
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.dq-particle {
  will-change: transform, opacity;
  background: radial-gradient(circle, #dc8cffe6 0%, #ff64c866 60%, #0000 100%);
  border-radius: 50%;
  animation: linear infinite dq-float;
  position: absolute;
  bottom: -10px;
}

@keyframes dq-float {
  0% {
    opacity: 0;
    transform: translateY(0)translateX(0)scale(1);
  }

  10% {
    opacity: var(--particle-opacity, .5);
  }

  80% {
    opacity: var(--particle-opacity, .3);
  }

  100% {
    transform: translateY(-100vh) translateX(var(--drift, 20px)) scale(.3);
    opacity: 0;
  }
}

.dq-heroes-glow {
  z-index: 6;
  pointer-events: none;
  background: radial-gradient(at 50% 80%, #b48cff40 0%, #8c64dc1f 35%, #0000 70%);
  width: 280px;
  height: 200px;
  animation: 5s ease-in-out infinite dq-heroes-breathe;
  position: absolute;
  bottom: 8%;
  left: 28%;
  transform: translateX(-50%);
}

@keyframes dq-heroes-breathe {
  0%, 100% {
    opacity: .7;
    transform: translateX(-50%)scale(1);
  }

  50% {
    opacity: 1;
    transform: translateX(-50%)scale(1.08);
  }
}

.dq-staff-glow {
  z-index: 7;
  pointer-events: none;
  width: 0;
  height: 0;
  position: absolute;
  bottom: 28%;
  left: 30%;
}

.dq-staff-core {
  background: radial-gradient(circle, #fffffff2 0%, #c8a0ffcc 30%, #a064ff66 60%, #0000 100%);
  border-radius: 50%;
  width: 12px;
  height: 12px;
  animation: 2.5s ease-in-out infinite dq-staff-pulse;
  position: absolute;
  top: -6px;
  left: -6px;
  box-shadow: 0 0 8px 4px #c8a0ffcc, 0 0 20px 8px #a064ff80, 0 0 40px 16px #8c50dc4d, 0 0 80px 30px #783cc826;
}

@keyframes dq-staff-pulse {
  0%, 100% {
    transform: scale(1);
    box-shadow: 0 0 8px 4px #c8a0ffcc, 0 0 20px 8px #a064ff80, 0 0 40px 16px #8c50dc4d, 0 0 80px 30px #783cc826;
  }

  50% {
    transform: scale(1.3);
    box-shadow: 0 0 12px 6px #dcb4ffe6, 0 0 30px 12px #b478ff99, 0 0 60px 24px #965ae659, 0 0 100px 40px #8246d233;
  }
}

.dq-staff-rays {
  opacity: .8;
  background: conic-gradient(#0000 0deg, #b48cff26 10deg, #0000 20deg 45deg, #b48cff1a 55deg, #0000 65deg 90deg, #b48cff1f 100deg, #0000 110deg 135deg, #b48cff14 145deg, #0000 155deg 180deg, #b48cff26 190deg, #0000 200deg 225deg, #b48cff1a 235deg, #0000 245deg 270deg, #b48cff1f 280deg, #0000 290deg 315deg, #b48cff14 325deg, #0000 335deg 360deg);
  border-radius: 50%;
  width: 80px;
  height: 80px;
  animation: 20s linear infinite dq-rays-rotate;
  position: absolute;
  top: -40px;
  left: -40px;
}

@keyframes dq-rays-rotate {
  0% {
    transform: rotate(0);
  }

  100% {
    transform: rotate(360deg);
  }
}

.dq-staff-sparks {
  width: 6px;
  height: 6px;
  position: absolute;
  top: -3px;
  left: -3px;
}

.dq-staff-sparks:before, .dq-staff-sparks:after {
  content: "";
  background: #dcb4ffe6;
  border-radius: 50%;
  width: 3px;
  height: 3px;
  position: absolute;
  box-shadow: 0 0 4px 2px #b48cff99;
}

.dq-staff-sparks:before {
  animation: 3s ease-out infinite dq-spark-a;
}

.dq-staff-sparks:after {
  animation: 3.5s ease-out 1s infinite dq-spark-b;
}

@keyframes dq-spark-a {
  0% {
    opacity: .9;
    transform: translate(0)scale(1);
  }

  100% {
    opacity: 0;
    transform: translate(12px, -50px)scale(0);
  }
}

@keyframes dq-spark-b {
  0% {
    opacity: .8;
    transform: translate(0)scale(1);
  }

  100% {
    opacity: 0;
    transform: translate(-10px, -40px)scale(0);
  }
}

.dq-door-glow {
  z-index: 6;
  pointer-events: none;
  background: radial-gradient(at 50% 80%, #dc3cdc59 0%, #b428c826 30%, #0000 70%);
  width: 300px;
  height: 400px;
  animation: 4s ease-in-out infinite dq-glow-pulse;
  position: absolute;
  bottom: 10%;
  left: 50%;
  transform: translateX(-50%);
}

@keyframes dq-glow-pulse {
  0%, 100% {
    opacity: .6;
    transform: translateX(-50%)scale(1);
  }

  50% {
    opacity: 1;
    transform: translateX(-50%)scale(1.15);
  }
}

.dq-fog {
  z-index: 9;
  pointer-events: none;
  background: linear-gradient(to top, #1e0a28b3 0%, #3c14504d 30%, #0000 100%);
  width: 120%;
  height: 30%;
  animation: 12s ease-in-out infinite alternate dq-fog-drift;
  position: absolute;
  bottom: 0;
  left: -10%;
}

@keyframes dq-fog-drift {
  0% {
    transform: translateX(-2%);
  }

  100% {
    transform: translateX(2%);
  }
}

.dq-vignette {
  z-index: 8;
  pointer-events: none;
  background: radial-gradient(at 50% 60%, #0000 30%, #0a001480 80%, #05000ad9 100%);
  position: absolute;
  inset: 0;
}

.dq-quest-markers {
  z-index: 12;
  pointer-events: none;
  position: absolute;
  inset: 0;
}

.dq-quest-point {
  pointer-events: auto;
  cursor: pointer;
  animation: .6s ease-out both dq-quest-appear;
  position: absolute;
  transform: translate(-50%, -50%);
}

@keyframes dq-quest-appear {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%)scale(0);
  }

  60% {
    transform: translate(-50%, -50%)scale(1.3);
  }

  100% {
    opacity: 1;
    transform: translate(-50%, -50%)scale(1);
  }
}

.dq-quest-dot {
  background: var(--qc, #e040e0);
  width: 10px;
  height: 10px;
  box-shadow: 0 0 6px 2px var(--qc, #e040e0),
    0 0 16px 4px color-mix(in srgb, var(--qc, #e040e0) 50%, transparent),
    0 0 30px 8px color-mix(in srgb, var(--qc, #e040e0) 25%, transparent);
  z-index: 2;
  border-radius: 50%;
  transition: transform .3s, box-shadow .3s;
  display: block;
  position: relative;
}

.dq-quest-point:hover .dq-quest-dot, .dq-quest-point.is-active .dq-quest-dot {
  box-shadow: 0 0 8px 3px var(--qc, #e040e0),
    0 0 24px 8px color-mix(in srgb, var(--qc, #e040e0) 60%, transparent),
    0 0 50px 16px color-mix(in srgb, var(--qc, #e040e0) 30%, transparent);
  transform: scale(1.5);
}

.dq-quest-ping {
  border: 1.5px solid var(--qc, #e040e0);
  opacity: 0;
  z-index: 1;
  width: 10px;
  height: 10px;
  animation: 3s ease-out infinite dq-ping;
  animation-delay: inherit;
  border-radius: 50%;
  margin: -5px 0 0 -5px;
  position: absolute;
  top: 50%;
  left: 50%;
}

@keyframes dq-ping {
  0% {
    opacity: .7;
    transform: scale(1);
  }

  70% {
    opacity: 0;
    transform: scale(4);
  }

  100% {
    opacity: 0;
    transform: scale(4);
  }
}

.dq-quest-label {
  white-space: nowrap;
  letter-spacing: .1em;
  color: #f0e0ff;
  border: 1px solid color-mix(in srgb, var(--qc, #e040e0) 50%, transparent);
  box-shadow: 0 0 20px color-mix(in srgb, var(--qc, #e040e0) 30%, transparent);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  z-index: 3;
  background: #14051ed9;
  border-radius: 3px;
  padding: 5px 14px;
  font-family: Special Elite, system-ui, sans-serif;
  font-size: .875rem;
  font-weight: 400;
  animation: .25s ease-out dq-label-in;
  position: absolute;
  bottom: calc(100% + 14px);
  left: 50%;
  transform: translateX(-50%);
}

.dq-quest-label:after {
  content: "";
  border: 5px solid #0000;
  border-top-color: #14051ed9;
  margin-left: -5px;
  position: absolute;
  top: 100%;
  left: 50%;
}

@keyframes dq-label-in {
  0% {
    opacity: 0;
    transform: translateX(-50%)translateY(6px);
  }

  100% {
    opacity: 1;
    transform: translateX(-50%)translateY(0);
  }
}

.dq-title-wrap {
  z-index: 11;
  text-align: center;
  pointer-events: none;
  animation: 2s ease-out both dq-title-enter;
  position: absolute;
  top: 18%;
  left: 50%;
  transform: translateX(-50%);
}

@keyframes dq-title-enter {
  0% {
    opacity: 0;
    transform: translateX(-50%)translateY(30px);
  }

  100% {
    opacity: 1;
    transform: translateX(-50%)translateY(0);
  }
}

.dq-title {
  letter-spacing: .15em;
  color: #0000;
  background: linear-gradient(#f0d0ff 0%, #c080e0 40%, #9040b0 100%);
  text-shadow: 0 0 40px #b450dc80;
  -webkit-background-clip: text;
  background-clip: text;
  margin: 0;
  font-family: Metal Mania, cursive;
  font-size: clamp(2rem, 5vw, 4.5rem);
  font-weight: 400;
  line-height: 1.2;
}

.dq-subtitle {
  letter-spacing: .3em;
  text-transform: uppercase;
  color: #c8aadcb3;
  margin: .6em 0 0;
  font-family: Special Elite, system-ui, sans-serif;
  font-size: clamp(.875rem, 1.8vw, 1.2rem);
  font-weight: 400;
}

.dq-coming {
  letter-spacing: .35em;
  color: #dcb4ffd9;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  background: #3c14504d;
  border: 1px solid #b464dc66;
  border-radius: 2px;
  margin-top: 2em;
  padding: .6em 2.5em;
  font-family: Special Elite, system-ui, sans-serif;
  font-size: clamp(.875rem, 1.4vw, 1rem);
  font-weight: 400;
  animation: 3s ease-in-out infinite dq-coming-pulse;
  display: inline-block;
}

@keyframes dq-coming-pulse {
  0%, 100% {
    border-color: #b464dc4d;
    box-shadow: 0 0 15px #b450dc1a;
  }

  50% {
    border-color: #dc8cff99;
    box-shadow: 0 0 30px #b450dc4d;
  }
}

@media (max-width: 950px) {
  .DungeonQuestsPage .scene.screen01 ul > li > div {
    background-size: cover;
  }

  .DungeonQuestsPage .scene.screen01 .layer.s01_2_r > div {
    background-position: 100% 100%;
  }

  .DungeonQuestsPage .scene.screen01 .layer.s01_4 > div {
    background-position: 100% 0;
  }

  .dq-door-glow {
    width: 200px;
    height: 280px;
  }

  .dq-title-wrap {
    top: 12%;
  }

  .dq-quest-dot {
    width: 8px;
    height: 8px;
  }

  .dq-quest-ping {
    width: 8px;
    height: 8px;
    margin: -4px 0 0 -4px;
  }

  .dq-quest-label {
    padding: 4px 10px;
    font-size: .875rem;
  }
}

/* [project]/public/css/glow-shared.css [app-client] (css) */
@keyframes glow-soft {
  0%, 100% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1);
  }

  50% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1.3);
  }
}

@keyframes glow-flame {
  0%, 100% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1) scaleY(1);
  }

  25% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1.1) scaleY(1.15);
  }

  50% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(.95) scaleY(1.05);
  }

  75% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1.05) scaleY(1.2);
  }
}

@keyframes glow-blaze {
  0% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scale(1) scaleY(1);
  }

  15% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + .5deg)) scale(1.02) scaleY(1.06);
  }

  30% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .3deg)) scale(.98) scaleY(.97);
  }

  50% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + .8deg)) scale(1.03) scaleY(1.08);
  }

  65% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scale(.99) scaleY(1.02);
  }

  80% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + .3deg)) scale(1.02) scaleY(1.05);
  }

  100% {
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scale(1) scaleY(1);
  }
}

@keyframes glow-blaze-tremor {
  0% {
    filter: blur(3px) brightness();
    opacity: var(--glow-intensity, .8);
  }

  25% {
    filter: blur(2.5px) brightness(1.08);
    opacity: calc(var(--glow-intensity, .8) * 1.05);
  }

  50% {
    filter: blur(3.2px) brightness(.95);
    opacity: var(--glow-intensity, .8);
  }

  75% {
    filter: blur(2.8px) brightness(1.06);
    opacity: calc(var(--glow-intensity, .8) * 1.03);
  }

  100% {
    filter: blur(3px) brightness();
    opacity: var(--glow-intensity, .8);
  }
}

@keyframes glow-torch {
  0% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - 1deg)) scaleX(1) scaleY(1);
  }

  20% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + 1.5deg)) scaleX(.85) scaleY(1.12);
  }

  40% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scaleX(1.1) scaleY(.92);
  }

  60% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + 2deg)) scaleX(.9) scaleY(1.15);
  }

  80% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - 1.5deg)) scaleX(1.05) scaleY(.95);
  }

  100% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - 1deg)) scaleX(1) scaleY(1);
  }
}

@keyframes glow-magic {
  0% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scaleX(1) scaleY(1) translateY(0);
  }

  8% {
    opacity: calc(var(--glow-intensity, .7) * 1.15);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + 1deg)) scaleX(.95) scaleY(1.1) translateY(-3%);
  }

  18% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - 1deg)) scaleX(1.02) scaleY(.98) translateY(-0.5%);
  }

  22% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scaleX(1.01) scaleY(1) translateY(0);
  }

  28% {
    opacity: calc(var(--glow-intensity, .7) * 1.2);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + 1.5deg)) scaleX(.93) scaleY(1.14) translateY(-4%);
  }

  40% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - 1.2deg)) scaleX(1.03) scaleY(.97) translateY(-1%);
  }

  46% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + .3deg)) scaleX(1) scaleY(1.01) translateY(0);
  }

  52% {
    opacity: calc(var(--glow-intensity, .7) * 1.08);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + 1deg)) scaleX(.97) scaleY(1.06) translateY(-2%);
  }

  58% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scaleX(1.01) scaleY(.99) translateY(-0.5%);
  }

  65% {
    opacity: calc(var(--glow-intensity, .7) * 1.18);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + 1.2deg)) scaleX(.94) scaleY(1.12) translateY(-3.5%);
  }

  78% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - 1deg)) scaleX(1.02) scaleY(.98) translateY(-1%);
  }

  85% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) + .3deg)) scaleX(1) scaleY(1.01) translateY(0);
  }

  92% {
    opacity: calc(var(--glow-intensity, .7) * 1.08);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .8deg)) scaleX(.98) scaleY(1.05) translateY(-1.5%);
  }

  100% {
    opacity: var(--glow-intensity, .7);
    transform: translate(-50%, -50%) rotate(calc(var(--glow-rotate, 0deg) - .5deg)) scaleX(1) scaleY(1) translateY(0);
  }
}

@keyframes glow-magic-tremor {
  0% {
    filter: blur(3px) brightness();
  }

  20% {
    filter: blur(2.5px) brightness(1.15);
  }

  40% {
    filter: blur(3.5px) brightness(.95);
  }

  60% {
    filter: blur(2px) brightness(1.2);
  }

  80% {
    filter: blur(3px) brightness();
  }

  100% {
    filter: blur(3px) brightness();
  }
}

@keyframes glow-aura {
  0%, 100% {
    opacity: var(--glow-intensity, .6);
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1);
  }

  50% {
    opacity: calc(var(--glow-intensity, .6) * 1.3);
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1.15);
  }
}

@keyframes glow-spark {
  0%, 100% {
    opacity: var(--glow-intensity, .8);
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1);
  }

  20% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1.6);
  }

  40% {
    opacity: .3;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(.8);
  }

  60% {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(1.4);
  }

  80% {
    opacity: .5;
    transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg)) scale(.9);
  }
}

.scene.screen01 .glow-point {
  pointer-events: none;
  z-index: 10;
  transform: translate(-50%, -50%) rotate(var(--glow-rotate, 0deg));
  transform-origin: center;
  border-radius: 50%;
  position: absolute;
}

.scene.screen01 .glow-soft {
  filter: blur(3px);
  animation: 2.5s ease-in-out infinite glow-soft;
}

.scene.screen01 .glow-flame {
  filter: blur(2px);
  animation: 1.5s ease-in-out infinite glow-flame;
}

.scene.screen01 .glow-blaze {
  animation: 1.2s ease-in-out infinite glow-blaze, .6s linear infinite glow-blaze-tremor;
}

.scene.screen01 .glow-torch {
  filter: blur(2px);
  animation: 1.3s ease-in-out infinite glow-torch;
}

.scene.screen01 .glow-magic {
  transform-origin: bottom;
  animation: 4s ease-in-out infinite glow-magic, .8s linear infinite glow-magic-tremor;
}

.scene.screen01 .glow-aura {
  filter: blur(6px);
  animation: 3.5s ease-in-out infinite glow-aura;
}

.scene.screen01 .glow-spark {
  filter: blur(1px);
  animation: 1.8s ease-in-out infinite glow-spark;
}

.scene.screen01 .layer.glow-layer {
  pointer-events: none;
  z-index: 100;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}

.scene.screen01.glow-edit-mode {
  cursor: crosshair;
}

.scene.screen01.glow-edit-mode .glow-layer {
  pointer-events: none;
}

.scene.screen01.glow-edit-mode .glow-point {
  pointer-events: auto;
  cursor: pointer;
  filter: none;
  animation: none;
}

.glow-point-selected {
  outline-offset: 3px;
  outline: 2px solid #fff;
  filter: none !important;
  animation: none !important;
}

.glow-toolbar {
  z-index: 10000;
  color: #e0e0e0;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  background: #0f0f1ef2;
  border-bottom: 1px solid #f0d13d66;
  font-family: Special Elite, cursive;
  font-size: 14px;
  position: fixed;
  top: 0;
  left: 260px;
  right: 0;
}

.glow-toolbar-header {
  cursor: pointer;
  color: #f0d13d;
  justify-content: space-between;
  align-items: center;
  padding: 6px 16px;
  font-size: 14px;
  font-weight: 400;
  display: flex;
}

.glow-toolbar-header:hover {
  background: #f0d13d0d;
}

.glow-toolbar-body {
  border-top: 1px solid #ffffff0f;
  flex-direction: column;
  gap: 6px;
  padding: 6px 16px 10px;
  display: flex;
}

.glow-toolbar-row {
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  display: flex;
}

.glow-toolbar-section {
  background: #ffffff0a;
  border-radius: 6px;
  align-items: center;
  gap: 8px;
  padding: 4px 10px;
  display: flex;
}

.glow-toolbar-section.glow-toolbar-selected {
  border: 1px solid #f0d13d4d;
}

.glow-toolbar-label {
  color: #f0d13d;
  white-space: nowrap;
  font-size: 14px;
  font-weight: 400;
}

.glow-toolbar-section label {
  color: #aaa;
  white-space: nowrap;
  align-items: center;
  gap: 4px;
  font-size: 14px;
  display: flex;
}

.glow-toolbar-section input[type="color"] {
  cursor: pointer;
  background: none;
  border: none;
  border-radius: 3px;
  width: 24px;
  height: 20px;
  padding: 0;
}

.glow-toolbar-section input[type="range"] {
  width: 80px;
}

.glow-toolbar-section select {
  color: #e0e0e0;
  background: #0006;
  border: 1px solid #fff3;
  border-radius: 4px;
  padding: 2px 4px;
  font-size: 14px;
}

.glow-edit-delete {
  appearance: none;
  color: #f87171;
  cursor: pointer;
  background: #dc26264d;
  border: 1px solid #dc262680;
  border-radius: 4px;
  padding: 3px 8px;
  font-size: 14px;
}

.glow-edit-delete:hover {
  background: #dc262680;
}

.glow-toolbar-pw {
  color: #e0e0e0;
  background: #0000004d;
  border: 1px solid #fff3;
  border-radius: 4px;
  width: 100px;
  padding: 3px 6px;
  font-size: 14px;
}

.glow-toolbar-save {
  appearance: none;
  color: #1a1a2e;
  cursor: pointer;
  background: #f0d13d;
  border: none;
  border-radius: 4px;
  padding: 3px 12px;
  font-size: 14px;
  font-weight: 400;
}

.glow-toolbar-save:hover {
  background: #f5e06b;
}

.glow-toolbar-msg {
  color: #4ade80;
  font-size: 14px;
}

.glow-points-list {
  padding: 2px 0;
  gap: 4px !important;
}

.glow-list-item {
  cursor: pointer;
  color: #aaa;
  background: #ffffff0a;
  border: 1px solid #0000;
  border-radius: 4px;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  font-size: 14px;
  transition: all .15s;
  display: flex;
}

.glow-list-item:hover {
  color: #e0e0e0;
  background: #ffffff14;
}

.glow-list-item.active {
  color: #f0d13d;
  background: #f0d13d1f;
  border-color: #f0d13d66;
}

.glow-list-dot {
  border-radius: 50%;
  flex-shrink: 0;
  width: 8px;
  height: 8px;
}

.glow-list-type {
  color: #666;
  font-size: 14px;
}

.glow-list-del {
  appearance: none;
  color: #f87171;
  cursor: pointer;
  background: none;
  border: none;
  margin-left: 2px;
  padding: 0 2px;
  font-size: 14px;
  line-height: 1;
}

.glow-list-del:hover {
  color: #ef4444;
}

.glow-list-hint {
  color: #555;
  font-size: 14px;
  font-style: italic;
}

.glow-toolbar {
  max-height: 55dvh;
  font-weight: 400;
  line-height: 1.5;
  overflow-y: auto;
}

.glow-toolbar-header {
  font-family: Metal Mania, fantasy;
  font-size: 18px;
}

.glow-toolbar :where(button, input, select) {
  font-family: Special Elite, cursive;
  font-weight: 400;
}

.glow-toolbar-section select, .glow-toolbar-pw {
  min-height: 36px;
  font-size: 16px;
}

.glow-toolbar-section {
  flex-wrap: wrap;
  min-width: 0;
  max-width: 100%;
}

.glow-toolbar-section label {
  white-space: normal;
}

.glow-toolbar-msg, .glow-list-hint {
  overflow-wrap: anywhere;
}

@media (max-width: 768px) {
  .glow-toolbar {
    left: 0;
  }
}

