.overdose-scene {
  position: absolute;
  inset: 0;
  z-index: 110;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 24px 18px;
  background: #0b0710;
  animation: overdose-enter 0.2s;
}
.overdose-backdrop {
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 46%, var(--overdose-drug-color), transparent 68%);
  opacity: 0.35;
}
.overdose-title {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  visibility: hidden;
}
.overdose-title b {
  font-family: var(--f-horror);
  font-weight: 400;
  font-size: min(20vw, 84px);
  line-height: 1;
  color: #ff2a44;
  text-shadow:
    0 4px 0 #000,
    0 0 30px #e0243a;
}
.overdose-title span {
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 900;
  font-size: 18px;
  color: #fff;
}
.overdose-icon {
  display: inline-flex;
  width: 28px;
  height: 28px;
}
.overdose-icon svg {
  width: 100%;
  height: 100%;
}
.overdose-scene.flat .overdose-title {
  visibility: visible;
}
.overdose-scene.flat .overdose-title b {
  animation: overdose-title-slam 0.5s cubic-bezier(0.2, 1.8, 0.4, 1) both;
}
.overdose-pet {
  position: relative;
  width: min(52%, 210px);
  aspect-ratio: 240 / 300;
  transform-origin: 50% 60%;
  transition:
    transform 0.55s cubic-bezier(0.5, 0, 0.8, 0.4),
    filter 0.8s;
}
.overdose-body svg,
.overdose-prop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.overdose-scene.flat .overdose-pet {
  animation: none;
  transform: rotate(-84deg);
  filter: grayscale(0.7) brightness(0.8);
}
.overdose-monitor {
  position: relative;
  width: min(88%, 340px);
  border: 2px solid #1d3b2a;
  border-radius: 10px;
  background: #06120c;
}
.overdose-trace {
  fill: none;
  stroke: #3dff8a;
  stroke-width: 2.2;
  stroke-linejoin: round;
  filter: drop-shadow(0 0 4px #3dff8a);
  animation-name: overdose-trace-sweep;
  animation-timing-function: linear;
  animation-fill-mode: both;
}
.overdose-scene.flat .overdose-trace {
  stroke: #ff2a44;
  filter: drop-shadow(0 0 4px #ff2a44);
}
.overdose-caption {
  position: relative;
  min-height: 52px;
  text-align: center;
  color: #fff;
  font-family: var(--f-display);
  font-weight: 800;
  font-size: 20px;
  line-height: 1.2;
  text-shadow:
    0 2px 0 #000,
    0 0 14px #000;
  text-wrap: balance;
  opacity: 0;
}
.overdose-caption.on {
  animation: overdose-caption-enter 0.5s ease-out forwards;
}

.overdose-scene-generic .overdose-pet {
  animation: overdose-sway 1.1s ease-in-out infinite;
}

.overdose-scene-po .overdose-backdrop {
  background: radial-gradient(circle at 50% 46%, #ffffff, transparent 70%);
  animation: overdose-po-glare 3.4s ease-in forwards;
}
.overdose-scene-po .overdose-pet {
  animation: overdose-tremor 0.09s linear infinite;
}
.overdose-drip {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}
.overdose-drip.first {
  animation: overdose-drip 1.4s ease-in 0.9s forwards;
}
.overdose-drip.second {
  animation: overdose-drip 1.6s ease-in 1.6s forwards;
}
.overdose-scene-po.flat .overdose-backdrop {
  animation: none;
  opacity: 0.08;
}

.overdose-scene-seringa .overdose-backdrop {
  background: radial-gradient(circle at 50% 46%, transparent 20%, #2a1466 90%);
  animation: overdose-seringa-vignette 3.4s ease-in forwards;
}
.overdose-scene-seringa .overdose-pet {
  animation:
    overdose-breath 3.4s ease-out forwards,
    overdose-cooling 3.4s ease-in forwards;
}
.overdose-syringe {
  transform-box: fill-box;
  transform-origin: 100% 50%;
  animation: overdose-syringe-swing 1.7s ease-in-out infinite;
}
.overdose-scene-seringa.flat .overdose-pet {
  transition-duration: 1.1s;
  filter: saturate(0.2) brightness(0.6);
}

.overdose-scene-cachimbo .overdose-backdrop {
  background: radial-gradient(circle at 50% 46%, #e0243a, transparent 72%);
  animation: overdose-cachimbo-flicker 0.34s steps(2) infinite;
}
.overdose-scene-cachimbo .overdose-pet {
  animation: overdose-convulsion 0.22s linear infinite;
}
.overdose-foam {
  transform-box: fill-box;
  transform-origin: 50% 0%;
  transform: scale(0);
  animation: overdose-foam 1.6s ease-out 1.3s forwards;
}
.overdose-ember {
  animation: overdose-ember 0.3s ease-in-out infinite alternate;
}
.overdose-pipe {
  transform-box: fill-box;
  transform-origin: 50% 50%;
  transition: transform 0.7s ease-in;
}
.overdose-scene-cachimbo.flat .overdose-pipe {
  transform: translate(40px, 30px) rotate(200deg);
}
.overdose-scene-cachimbo.flat .overdose-ember {
  animation: none;
  fill: #3a3340;
}
.overdose-scene-cachimbo.flat .overdose-backdrop {
  animation: none;
  opacity: 0.12;
}
.overdose-smoke {
  position: absolute;
  bottom: -20%;
  width: 60%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(201, 189, 176, 0.5), transparent 68%);
  opacity: 0;
  animation: overdose-smoke 3.2s ease-out infinite;
}
.overdose-smoke.first {
  left: -14%;
}
.overdose-smoke.second {
  left: 22%;
  animation-delay: 0.7s;
}
.overdose-smoke.third {
  left: 52%;
  animation-delay: 1.3s;
}
.overdose-smoke.fourth {
  left: 8%;
  animation-delay: 2s;
}

@keyframes overdose-enter {
  from {
    opacity: 0;
  }
}
@keyframes overdose-title-slam {
  0% {
    transform: scale(0.2) rotate(-12deg);
    opacity: 0;
  }
  60% {
    transform: scale(1.15) rotate(3deg);
    opacity: 1;
  }
  100% {
    transform: none;
  }
}
@keyframes overdose-trace-sweep {
  from {
    clip-path: inset(0 100% 0 0);
  }
  to {
    clip-path: inset(0 0 0 0);
  }
}
@keyframes overdose-caption-enter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@keyframes overdose-sway {
  0%,
  100% {
    transform: rotate(-4deg);
  }
  50% {
    transform: rotate(4deg);
  }
}
@keyframes overdose-tremor {
  0% {
    transform: translate(-3px, 1px);
  }
  50% {
    transform: translate(3px, -1px);
  }
  100% {
    transform: translate(-2px, 2px);
  }
}
@keyframes overdose-po-glare {
  from {
    opacity: 0.1;
  }
  to {
    opacity: 0.75;
  }
}
@keyframes overdose-drip {
  to {
    stroke-dashoffset: 0;
  }
}
@keyframes overdose-seringa-vignette {
  from {
    opacity: 0.2;
  }
  to {
    opacity: 1;
  }
}
@keyframes overdose-breath {
  0%,
  12%,
  30%,
  54%,
  100% {
    transform: scale(1, 1);
  }
  6%,
  21% {
    transform: scale(1.03, 1.06);
  }
  42% {
    transform: scale(1.02, 1.04);
  }
  74% {
    transform: scale(1.01, 1.02);
  }
}
@keyframes overdose-cooling {
  to {
    filter: saturate(0.35) brightness(0.72);
  }
}
@keyframes overdose-syringe-swing {
  0%,
  100% {
    transform: rotate(-3deg);
  }
  50% {
    transform: rotate(4deg);
  }
}
@keyframes overdose-cachimbo-flicker {
  from {
    opacity: 0.25;
  }
  to {
    opacity: 0.6;
  }
}
@keyframes overdose-convulsion {
  0% {
    transform: rotate(-7deg) translate(-5px, 2px);
  }
  25% {
    transform: rotate(5deg) translate(4px, -4px);
  }
  50% {
    transform: rotate(-3deg) translate(-2px, 5px);
  }
  75% {
    transform: rotate(8deg) translate(5px, 0);
  }
  100% {
    transform: rotate(-7deg) translate(-5px, 2px);
  }
}
@keyframes overdose-foam {
  to {
    transform: scale(1);
  }
}
@keyframes overdose-ember {
  from {
    r: 6px;
    fill: #ff5a1f;
  }
  to {
    r: 12px;
    fill: #ffd23f;
  }
}
@keyframes overdose-smoke {
  0% {
    transform: translateY(0) scale(0.5);
    opacity: 0;
  }
  30% {
    opacity: 0.8;
  }
  100% {
    transform: translateY(-150%) scale(1.6);
    opacity: 0;
  }
}
