body.chatroom-body {
  margin: 0;
  background: #061c4a url('../assets/home/bbac.gif') repeat;
  color: #10285a;
  font-family: Arial, Helvetica, sans-serif;
}

.chatroom-shell {
  width: 1200px;
  margin: 0 auto;
  background: #061c4a;
  min-height: 100vh;
  border-left: 3px solid #1f5fb9;
  border-right: 3px solid #1f5fb9;
}

.chatroom-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: #225aa7;
  border-bottom: 3px solid #0b3979;
  color: #fff;
  padding: 8px 12px;
  box-sizing: border-box;
}

.chatroom-brand {
  font-weight: bold;
  letter-spacing: .5px;
  text-transform: uppercase;
}

.chatroom-actions {
  display: flex;
  gap: 10px;
}

.chatroom-actions a,
.chatroom-actions button {
  background: #dbe9ff;
  color: #10285a;
  border: 2px solid #123d80;
  padding: 5px 18px;
  text-decoration: none;
  font-weight: bold;
  font-size: 16px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.75);
}

.chatroom-layout {
  display: grid;
  grid-template-columns: 940px 260px;
  align-items: start;
}

.chatroom-stage-wrap {
  background: #000;
}

.chatroom-instructions,
.chatroom-safety {
  background: #80b5ef;
  color: #10285a;
  border: 2px solid #245ca2;
  padding: 5px 8px;
  font-weight: bold;
  font-size: 14px;
  text-align: center;
}

.room-stage {
  position: relative;
  width: 940px;
  height: 620px;
  overflow: hidden;
  background-color: #cfe8ff;
  background-image: url('../assets/chatrooms/palace-view.png');
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  cursor: crosshair;
}

.avatars-layer {
  position: absolute;
  inset: 0;
}

.room-avatar {
  position: absolute;
  transform: translate(-50%, -100%);
  text-align: center;
  min-width: 82px;
  cursor: grab;
  user-select: none;
  z-index: 5;
}

.room-avatar.own-avatar {
  z-index: 20;
}

.room-avatar.dragging {
  cursor: grabbing;
  opacity: .86;
}

.room-avatar img {
  max-width: 110px;
  max-height: 170px;
  object-fit: contain;
  image-rendering: auto;
  display: block;
  margin: 0 auto;
  pointer-events: none;
}

.room-username {
  display: inline-block;
  margin-top: 2px;
  padding: 1px 5px;
  background: #fff1f1;
  border: 2px solid #df4a73;
  color: #c90037;
  font-size: 13px;
  font-weight: bold;
  line-height: 1.1;
  text-decoration: none;
  text-shadow: 0 1px 0 #fff;
  pointer-events: auto;
}

.chat-bubble {
  display: inline-block;
  max-width: 160px;
  margin-bottom: 4px;
  padding: 5px 8px;
  background: rgba(255,255,255,.94);
  border: 2px solid #2d67ad;
  border-radius: 12px;
  color: #10285a;
  font-size: 13px;
  font-weight: bold;
  box-shadow: 0 2px 5px rgba(0,0,0,.25);
  word-wrap: break-word;
}

.chat-form {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  background: #225aa7;
  border-top: 3px solid #0b3979;
  padding: 8px;
}

.chat-form input {
  font-size: 16px;
  padding: 7px;
  border: 2px solid #0b3979;
}

.chat-form button {
  padding: 7px 24px;
  background: #dbe9ff;
  border: 2px solid #123d80;
  color: #10285a;
  font-weight: bold;
  font-size: 16px;
}

.chatroom-panel {
  background: #3774c5;
  color: #e9f5ff;
  min-height: 690px;
  border-left: 4px solid #0b3979;
}

.panel-box {
  border-bottom: 3px solid #275fa8;
  padding: 9px 10px;
  box-sizing: border-box;
}

.panel-box h2 {
  margin: 0 0 6px;
  color: #ffffff;
  font-size: 16px;
}

.current-room-box strong {
  display: block;
  color: #fff;
  margin: 3px 0 8px;
}

.rooms-list a,
.rooms-list button {
  display: block;
  width: 100%;
  color: #e9f5ff;
  text-align: left;
  background: transparent;
  border: 0;
  padding: 4px 0;
  font-size: 15px;
  text-decoration: none;
  cursor: pointer;
}

.rooms-list a:hover,
.rooms-list button:hover {
  color: #fff;
  text-decoration: underline;
}

.private-room-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px;
}

.private-room-row input {
  min-width: 0;
  padding: 5px;
}

.private-room-row button,
.show-all-button {
  padding: 5px 8px;
  background: #dbe9ff;
  border: 2px solid #123d80;
  color: #10285a;
  font-weight: bold;
}

.show-all-button {
  margin-top: 7px;
  width: 100%;
}

.conversation-box {
  border-bottom: 0;
}

.chat-log {
  height: 260px;
  overflow-y: auto;
  background: #dbe9ff;
  color: #10285a;
  border: 2px solid #245ca2;
  padding: 7px;
  font-size: 13px;
  box-sizing: border-box;
}

.chat-line {
  margin-bottom: 6px;
  border-bottom: 1px dotted rgba(36,92,162,.4);
  padding-bottom: 4px;
}

.chat-line strong {
  color: #c90037;
}

.chatroom-status {
  margin: 8px;
  padding: 10px;
  border-radius: 8px;
  background: #fff4c9;
  color: #6a3a00;
  border: 2px solid #d19b00;
  font-weight: bold;
  text-align: center;
}

.no-chat-doll {
  position: absolute;
  inset: 120px 180px auto;
  background: rgba(255,255,255,.95);
  border: 4px solid #2d67ad;
  color: #10285a;
  padding: 28px;
  text-align: center;
  z-index: 50;
  box-shadow: 0 8px 18px rgba(0,0,0,.35);
}

.no-chat-doll a {
  display: inline-block;
  margin-top: 10px;
  padding: 9px 18px;
  background: #dbe9ff;
  color: #10285a;
  border: 2px solid #123d80;
  font-weight: bold;
  text-decoration: none;
}

@media (max-width: 900px) {
  .chatroom-shell { width: 100%; overflow-x: auto; }
}


.room-username {
  cursor: pointer;
}

.chat-user-menu {
  position: fixed;
  z-index: 9999;
  width: 170px;
  background: #e5f0ff;
  border: 3px solid #123d80;
  box-shadow: 0 6px 14px rgba(0,0,0,.35);
  color: #10285a;
  font-family: Arial, Helvetica, sans-serif;
  padding: 6px;
}

.chat-user-menu-title {
  font-weight: bold;
  text-align: center;
  border-bottom: 1px solid #8db8f0;
  padding-bottom: 5px;
  margin-bottom: 5px;
  word-break: break-word;
}

.chat-user-menu button {
  display: block;
  width: 100%;
  margin: 4px 0;
  padding: 6px;
  background: #ffffff;
  border: 2px solid #2d67ad;
  color: #10285a;
  font-weight: bold;
  cursor: pointer;
}

.chat-user-menu button:hover {
  background: #cde3ff;
}

.chat-form {
  grid-template-columns: 1fr auto;
}

.whisper-indicator {
  grid-column: 1 / -1;
  background: #fff0fb;
  border: 2px solid #cc4aa0;
  color: #7b0055;
  padding: 5px 8px;
  font-weight: bold;
}

.whisper-indicator button {
  margin-left: 8px;
  padding: 2px 8px;
  background: #fff;
  border: 1px solid #cc4aa0;
  color: #7b0055;
  font-weight: bold;
  cursor: pointer;
}

.whisper-line {
  background: rgba(255, 221, 250, .75);
  border-left: 3px solid #cc4aa0;
  padding-left: 5px;
}

.create-room-button {
  width: 100%;
  margin: 0 0 8px;
  padding: 8px 10px;
  border: 2px solid #5d8bd7;
  border-radius: 8px;
  background: linear-gradient(#fff7c7, #ffd76a);
  color: #24406f;
  font-weight: 800;
  cursor: pointer;
}
.create-room-button:hover { filter: brightness(1.05); }

.room-list-button {
  display: block;
  width: 100%;
  text-align: left;
  margin: 4px 0;
  padding: 4px 6px;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.room-list-button:hover {
  text-decoration: underline;
  background: rgba(255,255,255,0.18);
}
.room-preview-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  background: rgba(0,0,0,0.45);
}
.room-preview-modal[hidden] { display: none; }
.room-preview-card {
  position: relative;
  width: min(420px, 92vw);
  padding: 18px;
  border: 3px solid #7da8e8;
  border-radius: 14px;
  background: #fff;
  color: #234;
  box-shadow: 0 12px 40px rgba(0,0,0,0.35);
}
.room-preview-close {
  position: absolute;
  top: 6px;
  right: 8px;
  border: 0;
  background: transparent;
  font-size: 26px;
  cursor: pointer;
}


/* v89 chatroom polish */
.room-stage.fit-fill { background-size: cover; background-position: center center; background-repeat: no-repeat; }
.room-stage.fit-contain { background-size: contain; background-position: center center; background-repeat: no-repeat; }
.room-stage.fit-stretch { background-size: 100% 100%; background-position: center center; background-repeat: no-repeat; }
.room-stage.fit-tile { background-size: auto; background-position: top left; background-repeat: repeat; image-rendering: pixelated; }

.fullscreen-toggle { cursor: pointer; }
body.chatroom-fullscreen .top-strip { display: none; }
body.chatroom-fullscreen .chatroom-shell {
  width: 100vw;
  min-height: 100vh;
  margin: 0;
  border: 0;
}
body.chatroom-fullscreen .chatroom-layout {
  grid-template-columns: minmax(760px, 1fr) 260px;
}
body.chatroom-fullscreen .chatroom-stage-wrap,
body.chatroom-fullscreen .room-stage {
  width: 100%;
}
body.chatroom-fullscreen .room-stage {
  height: calc(100vh - 142px);
  min-height: 540px;
}
body.chatroom-fullscreen .chatroom-panel {
  min-height: calc(100vh - 44px);
}

#room-preview-moderators {
  font-weight: bold;
  color: #6d2f89;
}

.created-room-card {
  border: 2px dashed currentColor;
  padding: 10px;
  margin: 10px 0;
  background: rgba(255,255,255,.08);
}
.created-room-title {
  font-weight: bold;
  font-size: 18px;
  margin-bottom: 5px;
}
.created-room-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.created-room-actions button,
.room-form-actions .secondary {
  padding: 6px 12px;
  font-weight: bold;
  cursor: pointer;
}
.create-room-card select {
  width: 100%;
  padding: 8px;
  border: 2px solid currentColor;
}
.create-room-card small {
  display: block;
  margin-top: 4px;
  opacity: .9;
}
body.scene-palace-selected .create-room-card .palace-title-bar,
body.scene-palace-selected .my-rooms-card .palace-title-bar {
  background: linear-gradient(90deg, #ff8fc8, #b05bff, #71e9ff) !important;
  color: #fff !important;
}
body.scene-palace-selected .create-room-card,
body.scene-palace-selected .my-rooms-card {
  background: rgba(20, 12, 25, .92) !important;
  border-color: #ff9bd5 !important;
}


/* v91: Make background fit settings win reliably for uploaded Premium room GIFs/images. */
.room-stage.fit-contain,
.room-stage[data-background-fit="contain"] {
  background-size: contain !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  image-rendering: pixelated;
  background-color: #071b46 !important;
}

.room-stage.fit-fill,
.room-stage[data-background-fit="fill"] {
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  image-rendering: auto;
}

.room-stage.fit-stretch,
.room-stage[data-background-fit="stretch"] {
  background-size: 100% 100% !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
}

.room-stage.fit-tile,
.room-stage[data-background-fit="tile"] {
  background-size: auto !important;
  background-position: top left !important;
  background-repeat: repeat !important;
  image-rendering: pixelated;
}

/* v91: Premium room pages should inherit the selected member layout instead of looking default blue. */
body.scene-palace-selected .create-room-card,
body.scene-palace-selected .my-rooms-card,
body.scene-palace-selected .created-room-card,
body.scene-palace-selected #premium-required {
  background: rgba(10, 0, 16, .92) !important;
  border: 3px dashed #ff00cc !important;
  color: #fff !important;
  box-shadow: 0 0 16px #ff00cc, 0 0 28px #00eaff !important;
}

body.scene-palace-selected .create-room-card .palace-title-bar,
body.scene-palace-selected .my-rooms-card .palace-title-bar,
body.scene-palace-selected #premium-required .palace-title-bar {
  background: linear-gradient(90deg, #ff00cc, #8a2be2, #00eaff) !important;
  color: #39ff14 !important;
  border: 3px dashed #39ff14 !important;
  font-family: "Comic Sans MS", cursive !important;
  text-shadow: 2px 2px #ff00cc, 0 0 10px #00eaff !important;
}

body.scene-palace-selected .create-room-card .settings-intro,
body.scene-palace-selected .my-rooms-card .settings-intro,
body.scene-palace-selected .create-room-card form,
body.scene-palace-selected .my-rooms-card #my-rooms-list {
  background: rgba(0,0,0,.72) !important;
  border: 2px dashed #00eaff !important;
  color: #fff !important;
}

body.scene-palace-selected .create-room-card input,
body.scene-palace-selected .create-room-card textarea,
body.scene-palace-selected .create-room-card select {
  background: rgba(0,0,0,.85) !important;
  color: #fff !important;
  border: 2px solid #ff9bd5 !important;
  box-shadow: 0 0 8px rgba(0,234,255,.45) !important;
}

body.scene-palace-selected .palace-button,
body.scene-palace-selected #save-room-button,
body.scene-palace-selected #create-chatroom-button,
body.scene-palace-selected .created-room-actions button,
body.scene-palace-selected .room-form-actions .secondary {
  background: linear-gradient(90deg, #ff00cc, #8a2be2) !important;
  color: #fff !important;
  border: 2px solid #00eaff !important;
  box-shadow: 0 0 10px #ff00cc !important;
}

/* Emo selected layout */
body.emo-palace-selected .create-room-card,
body.emo-palace-selected .my-rooms-card,
body.emo-palace-selected .created-room-card,
body.emo-palace-selected #premium-required {
  background: rgba(0,0,0,.9) !important;
  border: 3px dashed #ff8bd1 !important;
  color: #fff !important;
  box-shadow: 0 0 14px #ff1493 !important;
}

body.emo-palace-selected .create-room-card .palace-title-bar,
body.emo-palace-selected .my-rooms-card .palace-title-bar,
body.emo-palace-selected #premium-required .palace-title-bar {
  background: linear-gradient(#3a0026, #ff1493) !important;
  color: #ffd6f0 !important;
  border: 2px solid #ff8bd1 !important;
  text-shadow: 0 0 8px #ff1493 !important;
}

body.emo-palace-selected .create-room-card input,
body.emo-palace-selected .create-room-card textarea,
body.emo-palace-selected .create-room-card select {
  background: #12000c !important;
  color: #fff !important;
  border: 2px solid #ff8bd1 !important;
}

/* Cyber selected layout */
body.cyber-palace-selected .create-room-card,
body.cyber-palace-selected .my-rooms-card,
body.cyber-palace-selected .created-room-card,
body.cyber-palace-selected #premium-required {
  background: rgba(1,0,18,.92) !important;
  border: 3px solid #00eaff !important;
  color: #eafbff !important;
  box-shadow: 0 0 16px #00eaff, inset 0 0 18px rgba(138,43,226,.35) !important;
}

body.cyber-palace-selected .create-room-card .palace-title-bar,
body.cyber-palace-selected .my-rooms-card .palace-title-bar,
body.cyber-palace-selected #premium-required .palace-title-bar {
  background: linear-gradient(90deg, #00eaff, #8a2be2) !important;
  color: #fff !important;
  border: 2px solid #9a7cff !important;
  text-shadow: 0 0 8px #00eaff !important;
}

body.cyber-palace-selected .create-room-card input,
body.cyber-palace-selected .create-room-card textarea,
body.cyber-palace-selected .create-room-card select {
  background: rgba(3,0,26,.9) !important;
  color: #fff !important;
  border: 2px solid #00eaff !important;
}

/* Lover / 1989 get soft themed cards instead of default blue */
body.lover-palace-selected .create-room-card,
body.lover-palace-selected .my-rooms-card,
body.lover-palace-selected .created-room-card,
body.lover-palace-selected #premium-required {
  background: rgba(255,255,255,.82) !important;
  color: #59405d !important;
  border-color: #ff9bd5 !important;
}

body.ts1989-palace-selected .create-room-card,
body.ts1989-palace-selected .my-rooms-card,
body.ts1989-palace-selected .created-room-card,
body.ts1989-palace-selected #premium-required {
  background: rgba(230,246,255,.86) !important;
  color: #234 !important;
  border-color: #79c9ff !important;
}

/* v92: Room background artwork layer. This makes Background Fit work for uploaded GIFs/images. */
.room-stage { isolation: isolate; }
.room-bg-art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  user-select: none;
}
.room-bg-art.bg-fill { object-fit: cover; }
.room-bg-art.bg-contain { object-fit: contain; }
.room-bg-art.bg-stretch { object-fit: fill; }
.avatars-layer { z-index: 2; }
.no-chat-doll { z-index: 50; }

/* v94: Zwinky-style click-to-throw item polish */
.chat-form {
  position: relative;
  grid-template-columns: 1fr auto auto;
}

.throwables-toggle {
  white-space: nowrap;
}

.throwables-panel {
  position: absolute;
  right: 8px;
  bottom: 54px;
  z-index: 1200;
  width: 260px;
  padding: 10px;
  background: rgba(255,255,255,.97);
  color: #10285a;
  border: 3px solid #245ca2;
  border-radius: 12px;
  box-shadow: 0 8px 22px rgba(0,0,0,.35);
}

.throwables-panel[hidden] { display: none; }

.throwables-title {
  font-weight: 900;
  font-size: 18px;
  margin-bottom: 8px;
  color: #10285a;
}

.throwables-panel button {
  display: grid;
  grid-template-columns: 38px 1fr;
  align-items: center;
  width: 100%;
  margin: 4px 0;
  padding: 7px 8px;
  text-align: left;
  background: #f6fbff;
  border: 1px solid #c2d9ff;
  color: #10285a;
  font-weight: bold;
  cursor: pointer;
}

.throwables-panel button:hover { background: #dbe9ff; }

.throw-menu-emoji {
  font-size: 24px;
  text-align: center;
  width: 30px;
  display: inline-block;
}

.throw-menu-icon {
  width: 26px;
  height: 26px;
  display: inline-block;
  margin: auto;
  filter: drop-shadow(0 2px 2px rgba(0,0,0,.18));
}

.snowball-icon {
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #ffffff 0 28%, #eef9ff 45%, #cfeafa 100%);
  border: 1px solid #9fcde8;
}

.beachball-icon {
  border-radius: 50%;
  background: conic-gradient(#ff4c72 0 60deg, #fff 60deg 120deg, #ffd84a 120deg 180deg, #42b8ff 180deg 240deg, #fff 240deg 300deg, #58d96b 300deg 360deg);
  border: 1px solid rgba(0,0,0,.2);
}

.throwables-panel .throwables-close {
  display: block;
  margin-top: 8px;
  text-align: center;
  background: #ff6f86;
  color: #fff;
  border-color: #b62040;
}

.throwables-layer {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  overflow: hidden;
}

.throwable-effect {
  position: absolute;
  transform: translate(-50%, -50%);
  width: 58px;
  height: 58px;
  display: grid;
  place-items: center;
  filter: drop-shadow(0 4px 3px rgba(0,0,0,.28));
  animation: throwable-life 2.15s ease-out both;
  will-change: transform, opacity;
}

.throwable-icon,
.throwable-impact {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-size: 40px;
  line-height: 1;
}

.throwable-icon {
  animation: throw-fly 1.05s cubic-bezier(.18,.78,.28,1) forwards;
}

.throwable-impact {
  opacity: 0;
  transform: scale(.2);
  animation: throw-impact .8s ease-out 1.02s forwards;
  pointer-events: none;
}

.throw-snowball .throwable-icon::before {
  content: "";
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff 0 30%, #eef9ff 48%, #bfe7ff 100%);
  border: 1px solid #8fc7e8;
  box-shadow: inset -4px -5px 8px rgba(120,180,220,.45);
}

.throw-snowball .throwable-impact::before {
  content: "";
  width: 54px;
  height: 34px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.98) 0 35%, rgba(210,240,255,.85) 48%, rgba(255,255,255,0) 72%);
  box-shadow: 0 0 14px rgba(255,255,255,.95);
}

.throw-beachball .throwable-icon::before {
  content: "";
  width: 35px;
  height: 35px;
  border-radius: 50%;
  background: conic-gradient(#ff4c72 0 60deg, #fff 60deg 120deg, #ffd84a 120deg 180deg, #42b8ff 180deg 240deg, #fff 240deg 300deg, #58d96b 300deg 360deg);
  border: 1px solid rgba(0,0,0,.22);
}

.throw-beachball .throwable-impact::before,
.throw-football .throwable-impact::before,
.throw-balloon .throwable-impact::before {
  content: "";
  width: 26px;
  height: 8px;
  border-radius: 50%;
  background: rgba(0,0,0,.18);
  transform: translateY(22px);
}

.throw-football .throwable-icon { animation-name: throw-fly-spin; }
.throw-beachball .throwable-icon { animation-name: throw-fly-bounce; }
.throw-balloon .throwable-icon { animation-name: throw-balloon-float; }
.throw-kiss .throwable-icon { animation-name: throw-kiss-float; }
.throw-cake .throwable-icon { animation-name: throw-fly-spin-small; }
.throw-flowers .throwable-icon { animation-name: throw-flower-float; }
.throw-sparkles .throwable-icon { animation-name: throw-sparkle-pop; }

.throw-cake .throwable-impact {
  font-size: 44px;
}

.throw-cake .throwable-impact::before {
  content: "";
  width: 58px;
  height: 38px;
  border-radius: 48% 42% 55% 45%;
  background:
    radial-gradient(circle at 20% 35%, #fff 0 8%, transparent 9%),
    radial-gradient(circle at 75% 42%, #ffb4d4 0 10%, transparent 11%),
    radial-gradient(circle at 50% 60%, #fff0f8 0 25%, transparent 26%),
    #ff9fc7;
  border: 2px solid rgba(185,70,115,.55);
  box-shadow: 0 0 9px rgba(255,170,210,.8);
}

.throw-kiss .throwable-impact,
.throw-flowers .throwable-impact,
.throw-sparkles .throwable-impact { font-size: 36px; }

@keyframes throwable-life {
  0% { opacity: 0; }
  8%, 80% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes throw-fly {
  0% { transform: translate(-135px, -120px) scale(.55); opacity: 0; }
  25% { opacity: 1; }
  75% { transform: translate(-20px, -40px) scale(1.08); opacity: 1; }
  100% { transform: translate(0, 0) scale(.1); opacity: 0; }
}

@keyframes throw-fly-spin {
  0% { transform: translate(-145px, -115px) rotate(-460deg) scale(.55); opacity: 0; }
  25% { opacity: 1; }
  88% { transform: translate(-5px, -8px) rotate(-20deg) scale(1); opacity: 1; }
  100% { transform: translate(0, 0) rotate(0deg) scale(.15); opacity: 0; }
}

@keyframes throw-fly-spin-small {
  0% { transform: translate(-140px, -125px) rotate(-18deg) scale(.55); opacity: 0; }
  25% { opacity: 1; }
  88% { transform: translate(-8px, -5px) rotate(12deg) scale(1.05); opacity: 1; }
  100% { transform: translate(0, 0) rotate(0deg) scale(.12); opacity: 0; }
}

@keyframes throw-fly-bounce {
  0% { transform: translate(-135px, -120px) scale(.55); opacity: 0; }
  25% { opacity: 1; }
  62% { transform: translate(-35px, -25px) scale(1.06); opacity: 1; }
  82% { transform: translate(-12px, -58px) scale(.92); }
  100% { transform: translate(0, 0) scale(.12); opacity: 0; }
}

@keyframes throw-balloon-float {
  0% { transform: translate(-100px, 60px) scale(.45); opacity: 0; }
  25% { opacity: 1; }
  80% { transform: translate(-15px, -35px) scale(1.05); opacity: 1; }
  100% { transform: translate(0, -65px) scale(.15); opacity: 0; }
}

@keyframes throw-kiss-float {
  0% { transform: translate(-75px, 35px) scale(.25) rotate(-12deg); opacity: 0; }
  30% { opacity: 1; }
  80% { transform: translate(-5px, -20px) scale(1.2) rotate(8deg); opacity: 1; }
  100% { transform: translate(0, 0) scale(.12); opacity: 0; }
}

@keyframes throw-flower-float {
  0% { transform: translate(-100px, -65px) scale(.35) rotate(-12deg); opacity: 0; }
  35% { opacity: 1; }
  85% { transform: translate(-5px, -10px) scale(1.08) rotate(10deg); opacity: 1; }
  100% { transform: translate(0, 0) scale(.15); opacity: 0; }
}

@keyframes throw-sparkle-pop {
  0% { transform: translate(-60px, -30px) scale(.2) rotate(0deg); opacity: 0; }
  35% { transform: translate(-15px, -10px) scale(1.35) rotate(18deg); opacity: 1; }
  100% { transform: translate(0, 0) scale(.1) rotate(-10deg); opacity: 0; }
}

@keyframes throw-impact {
  0% { opacity: 0; transform: scale(.15); }
  25% { opacity: 1; transform: scale(1.25); }
  100% { opacity: 0; transform: scale(1.75); }
}

/* v95: final-style throwables — no emoji icons, one-hit impact, no repeats */
.throwables-panel {
  width: 275px;
  border: 3px solid #9b4dff;
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(246,236,255,.98));
}
.throwables-title::after { content: " ✨"; }
.throwables-panel button {
  border-radius: 10px;
  grid-template-columns: 42px 1fr;
  background: linear-gradient(180deg,#ffffff,#eef4ff);
}
.throwables-panel button:hover { background: linear-gradient(180deg,#fff0fb,#e8ddff); }
.throw-menu-emoji { display: none; }
.throw-menu-icon {
  position: relative;
  width: 30px;
  height: 30px;
  display: inline-block;
}
.snowball-icon,
.football-icon,
.beachball-icon,
.kiss-icon,
.cake-icon,
.balloon-icon,
.flowers-icon,
.sparkles-icon { position: relative; }
.football-icon::before {
  content:""; position:absolute; inset:5px 2px; border-radius:50%;
  background: linear-gradient(135deg,#8b4b19,#c47728 55%,#7a390e);
  transform: rotate(-20deg); border:1px solid #5b2707;
}
.football-icon::after {
  content:""; position:absolute; width:14px; height:2px; background:#fff; left:8px; top:14px; transform:rotate(-20deg); box-shadow: 3px -3px 0 -1px #fff, 6px -1px 0 -1px #fff;
}
.kiss-icon::before {
  content:""; position:absolute; left:5px; top:8px; width:20px; height:14px;
  background: radial-gradient(circle at 35% 38%,#ff8aa8 0 20%,transparent 21%), radial-gradient(circle at 65% 38%,#ff5c8f 0 22%,transparent 23%), linear-gradient(#ff2f79,#d60058);
  clip-path: polygon(50% 0,66% 25%,100% 35%,78% 58%,90% 100%,50% 76%,10% 100%,22% 58%,0 35%,34% 25%);
  filter: drop-shadow(0 1px 1px rgba(0,0,0,.25));
}
.cake-icon::before {
  content:""; position:absolute; left:5px; top:8px; width:22px; height:16px;
  background: linear-gradient(#fff 0 22%,#ff8cc6 23% 44%,#f7d08a 45% 72%,#c46d38 73%);
  border:1px solid #9a4b2a; border-radius:4px 4px 7px 7px;
}
.cake-icon::after { content:""; position:absolute; left:9px; top:4px; width:3px; height:7px; background:#ffde59; box-shadow:7px 0 #ffde59; }
.balloon-icon::before { content:""; position:absolute; left:7px; top:3px; width:16px; height:20px; border-radius:50% 50% 45% 45%; background: radial-gradient(circle at 35% 28%,#fff8 0 15%,transparent 17%), linear-gradient(#ff5c9a,#d62174); border:1px solid #9d1653; }
.balloon-icon::after { content:""; position:absolute; left:14px; top:22px; width:1px; height:8px; background:#777; }
.flowers-icon::before { content:""; position:absolute; left:10px; top:9px; width:10px; height:10px; border-radius:50%; background:#ffd34a; box-shadow: 0 -8px #ff6fb1, 7px -4px #ff8bc4, 7px 4px #ff6fb1, 0 8px #ff8bc4, -7px 4px #ff6fb1, -7px -4px #ff8bc4; }
.sparkles-icon::before { content:""; position:absolute; left:10px; top:2px; width:10px; height:26px; background:linear-gradient(#fff,#ffd84d,#ff8cff); clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%); filter:drop-shadow(0 0 5px #fff); }

.throwable-effect {
  width: 74px;
  height: 74px;
  animation: throwable-life-v95 1.65s ease-out both !important;
  filter: drop-shadow(0 4px 4px rgba(0,0,0,.28));
}
.throwable-icon,
.throwable-impact { font-size: 0 !important; }
.throwable-icon { animation: throw-arc-v95 .82s cubic-bezier(.16,.88,.32,1) forwards !important; }
.throwable-impact { animation: impact-burst-v95 .62s ease-out .78s forwards !important; }

.throwable-icon::before,
.throwable-icon::after,
.throwable-impact::before,
.throwable-impact::after { content:""; position:absolute; display:block; }

.throw-snowball .throwable-icon::before { left:19px; top:20px; width:28px; height:28px; border-radius:50%; background: radial-gradient(circle at 33% 28%,#fff 0 32%,#effaff 47%,#aee0ff 100%); border:1px solid #83c1df; box-shadow:inset -4px -5px 7px rgba(114,174,210,.45); }
.throw-snowball .throwable-impact::before { left:7px; top:20px; width:60px; height:34px; border-radius:50%; background: radial-gradient(circle,#fff 0 34%,#dff6ff 47%,rgba(255,255,255,0) 72%); box-shadow:0 0 15px #fff; }
.throw-snowball .throwable-impact::after { left:14px; top:15px; width:8px; height:8px; border-radius:50%; background:#fff; box-shadow: 15px -7px 0 #effaff, 30px 5px 0 #fff, 42px -4px 0 #e6f7ff, 23px 18px 0 #fff; }

.throw-football .throwable-icon::before { left:14px; top:22px; width:43px; height:25px; border-radius:50%; background:linear-gradient(135deg,#743208,#c97422 55%,#5b2305); transform:rotate(-22deg); border:2px solid #431900; }
.throw-football .throwable-icon::after { left:28px; top:34px; width:18px; height:3px; background:white; transform:rotate(-22deg); box-shadow:4px -4px 0 -1px #fff, 8px -1px 0 -1px #fff; }
.throw-football .throwable-impact::before { left:26px; top:47px; width:28px; height:7px; border-radius:50%; background:rgba(0,0,0,.25); }

.throw-beachball .throwable-icon::before { left:16px; top:16px; width:38px; height:38px; border-radius:50%; background: conic-gradient(#ff3d67 0 55deg,#fff 55deg 105deg,#ffe04d 105deg 160deg,#2aa7ff 160deg 220deg,#fff 220deg 285deg,#55d76a 285deg 360deg); border:2px solid rgba(0,0,0,.24); box-shadow: inset -5px -6px 9px rgba(0,0,0,.16); }
.throw-beachball .throwable-impact::before { left:24px; top:49px; width:30px; height:8px; border-radius:50%; background:rgba(0,0,0,.22); }

.throw-kiss .throwable-icon::before { left:18px; top:20px; width:38px; height:28px; background: radial-gradient(circle at 35% 38%,#ff9cb7 0 18%,transparent 19%), radial-gradient(circle at 65% 38%,#ff407e 0 22%,transparent 23%), linear-gradient(#ff2f79,#c80050); clip-path:polygon(50% 0,66% 25%,100% 35%,78% 58%,90% 100%,50% 76%,10% 100%,22% 58%,0 35%,34% 25%); filter:drop-shadow(0 2px 2px rgba(0,0,0,.3)); }
.throw-kiss .throwable-impact::before { left:21px; top:13px; width:13px; height:13px; background:#ff4d8d; transform:rotate(45deg); box-shadow: 16px 6px 0 #ff9bc4, 28px -2px 0 #ff5fa0; }
.throw-kiss .throwable-impact::after { left:23px; top:12px; width:13px; height:13px; border-radius:50%; background:#ff4d8d; box-shadow: -6px 0 0 #ff4d8d, 16px 6px 0 #ff9bc4, 10px 6px 0 #ff9bc4, 28px -2px 0 #ff5fa0, 22px -2px 0 #ff5fa0; }

.throw-cake .throwable-icon::before { left:17px; top:22px; width:39px; height:28px; background: linear-gradient(#fff 0 18%,#ff8fc4 19% 42%,#ffe1a3 43% 70%,#a95b2e 71%); border:2px solid #88401f; border-radius:6px 6px 10px 10px; transform:rotate(-10deg); }
.throw-cake .throwable-icon::after { left:24px; top:12px; width:4px; height:11px; background:#ffd743; box-shadow:13px 0 #ffd743; }
.throw-cake .throwable-impact::before { left:5px; top:22px; width:64px; height:38px; border-radius:49% 42% 56% 45%; background: radial-gradient(circle at 20% 35%,#fff 0 8%,transparent 9%), radial-gradient(circle at 76% 42%,#ffb1d2 0 10%,transparent 11%), radial-gradient(circle at 50% 64%,#fff1f8 0 26%,transparent 27%), #ff8dbf; border:2px solid rgba(175,66,110,.68); box-shadow:0 0 10px rgba(255,177,213,.9); }
.throw-cake .throwable-impact::after { left:15px; top:29px; width:8px; height:8px; border-radius:50%; background:#fff; box-shadow:22px -7px 0 #ffd1e4, 35px 8px 0 #fff, 12px 15px 0 #ffbad8; }

.throw-balloon .throwable-icon::before { left:23px; top:8px; width:27px; height:35px; border-radius:50% 50% 45% 45%; background: radial-gradient(circle at 35% 24%,#fff8 0 12%,transparent 14%), linear-gradient(#ff65a8,#c81b68); border:2px solid #94134b; }
.throw-balloon .throwable-icon::after { left:36px; top:43px; width:2px; height:18px; background:#5c5c5c; }
.throw-balloon .throwable-impact::before { left:25px; top:10px; width:22px; height:22px; border-radius:50%; border:3px solid #ff8fc2; opacity:.8; }

.throw-flowers .throwable-icon::before { left:31px; top:29px; width:12px; height:12px; border-radius:50%; background:#ffd94d; box-shadow:0 -13px #ff6fb1, 12px -6px #ff8bc4, 12px 7px #ff6fb1, 0 14px #ff8bc4, -12px 7px #ff6fb1, -12px -6px #ff8bc4; }
.throw-flowers .throwable-impact::before { left:12px; top:18px; width:10px; height:10px; border-radius:50%; background:#ffd94d; box-shadow:0 -10px #ff70b1,10px -5px #ff94c6,10px 5px #ff70b1,0 10px #ff94c6,-10px 5px #ff70b1,-10px -5px #ff94c6, 34px 9px 0 #ffd94d,34px -1px 0 #ff70b1,44px 4px 0 #ff94c6; }

.throw-sparkles .throwable-icon::before { left:26px; top:5px; width:20px; height:58px; background:linear-gradient(#fff,#ffe56a,#ff8cff); clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%); filter:drop-shadow(0 0 8px #fff); }
.throw-sparkles .throwable-impact::before { left:10px; top:10px; width:14px; height:42px; background:linear-gradient(#fff,#ffdf4d); clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%); box-shadow:28px 5px 0 #ff9cff, 44px 22px 0 #fff7a8; }

.throw-football .throwable-icon { animation-name: throw-arc-spin-v95 !important; }
.throw-cake .throwable-icon { animation-name: throw-arc-cake-v95 !important; }
.throw-beachball .throwable-icon { animation-name: throw-arc-bounce-v95 !important; }
.throw-balloon .throwable-icon { animation-name: throw-balloon-v95 !important; }
.throw-kiss .throwable-icon { animation-name: throw-kiss-v95 !important; }
.throw-flowers .throwable-icon { animation-name: throw-float-v95 !important; }
.throw-sparkles .throwable-icon { animation-name: throw-sparkle-v95 !important; }

@keyframes throwable-life-v95 { 0%{opacity:0} 6%,72%{opacity:1} 100%{opacity:0} }
@keyframes throw-arc-v95 { 0%{transform:translate(-145px,-118px) scale(.55);opacity:0} 15%{opacity:1} 82%{transform:translate(-8px,-8px) scale(1.04);opacity:1} 100%{transform:translate(0,0) scale(.08);opacity:0} }
@keyframes throw-arc-spin-v95 { 0%{transform:translate(-155px,-115px) rotate(-520deg) scale(.55);opacity:0} 15%{opacity:1} 85%{transform:translate(-8px,-8px) rotate(-20deg) scale(1.04);opacity:1} 100%{transform:translate(0,0) rotate(0deg) scale(.08);opacity:0} }
@keyframes throw-arc-cake-v95 { 0%{transform:translate(-140px,-120px) rotate(-18deg) scale(.55);opacity:0} 15%{opacity:1} 84%{transform:translate(-8px,-5px) rotate(11deg) scale(1.06);opacity:1} 100%{transform:translate(0,0) rotate(0deg) scale(.08);opacity:0} }
@keyframes throw-arc-bounce-v95 { 0%{transform:translate(-140px,-118px) scale(.55);opacity:0} 15%{opacity:1} 55%{transform:translate(-45px,-28px) scale(1.05);opacity:1} 74%{transform:translate(-18px,-58px) scale(.94)} 100%{transform:translate(0,0) scale(.08);opacity:0} }
@keyframes throw-balloon-v95 { 0%{transform:translate(-90px,55px) scale(.45);opacity:0} 18%{opacity:1} 82%{transform:translate(-8px,-36px) scale(1.05);opacity:1} 100%{transform:translate(0,-52px) scale(.08);opacity:0} }
@keyframes throw-kiss-v95 { 0%{transform:translate(-75px,35px) scale(.25) rotate(-14deg);opacity:0} 22%{opacity:1} 82%{transform:translate(-8px,-16px) scale(1.15) rotate(8deg);opacity:1} 100%{transform:translate(0,0) scale(.08);opacity:0} }
@keyframes throw-float-v95 { 0%{transform:translate(-100px,-65px) scale(.35) rotate(-12deg);opacity:0} 28%{opacity:1} 84%{transform:translate(-8px,-10px) scale(1.08) rotate(10deg);opacity:1} 100%{transform:translate(0,0) scale(.08);opacity:0} }
@keyframes throw-sparkle-v95 { 0%{transform:translate(-60px,-30px) scale(.2) rotate(0deg);opacity:0} 38%{transform:translate(-15px,-10px) scale(1.35) rotate(18deg);opacity:1} 100%{transform:translate(0,0) scale(.08) rotate(-10deg);opacity:0} }
@keyframes impact-burst-v95 { 0%{opacity:0; transform:scale(.12)} 35%{opacity:1; transform:scale(1.18)} 100%{opacity:0; transform:scale(1.9)} }


/* v99 rollback: keep the working emoji-style throwables, but use SVG cake + cake splat */
.throwable-effect {
  width: 76px !important;
  height: 76px !important;
  animation: dp-throw-life 2.45s ease-out both !important;
  filter: drop-shadow(0 4px 4px rgba(0,0,0,.32)) !important;
  z-index: 20 !important;
}

.throwable-icon,
.throwable-impact {
  position: absolute !important;
  inset: 0 !important;
  display: grid !important;
  place-items: center !important;
  line-height: 1 !important;
  pointer-events: none !important;
}

.throwable-icon {
  font-size: 42px !important;
  animation: dp-throw-fly .95s cubic-bezier(.18,.78,.28,1) forwards !important;
}

.throwable-impact {
  font-size: 56px !important;
  opacity: 0;
  transform: scale(.35);
  animation: dp-throw-impact 1.15s ease-out .9s forwards !important;
}

.throwable-icon::before,
.throwable-icon::after,
.throwable-impact::before,
.throwable-impact::after {
  content: none !important;
  display: none !important;
}

.throwable-icon img {
  width: 64px !important;
  max-width: 64px !important;
  height: auto !important;
  display: block !important;
  pointer-events: none !important;
}

.throwable-impact img {
  width: 150px !important;
  max-width: 150px !important;
  height: auto !important;
  display: block !important;
  pointer-events: none !important;
  filter: drop-shadow(0 3px 4px rgba(0,0,0,.28));
}

.throw-cake .throwable-icon {
  animation-name: dp-cake-fly !important;
}

.throw-cake .throwable-impact {
  width: 170px !important;
  height: 170px !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) scale(.25);
  animation: dp-cake-splat 1.35s ease-out .9s forwards !important;
}

.throw-football .throwable-icon { animation-name: dp-football-fly !important; }
.throw-beachball .throwable-icon { animation-name: dp-beachball-fly !important; }
.throw-balloon .throwable-icon { animation-name: dp-balloon-fly !important; }
.throw-kiss .throwable-icon { animation-name: dp-kiss-fly !important; }
.throw-flowers .throwable-icon { animation-name: dp-flower-fly !important; }
.throw-sparkles .throwable-icon { animation-name: dp-sparkle-fly !important; }

@keyframes dp-throw-life {
  0% { opacity: 0; }
  8%, 86% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes dp-throw-fly {
  0% { transform: translate(-125px, -95px) scale(.55); opacity: 0; }
  18% { opacity: 1; }
  82% { transform: translate(-8px, -8px) scale(1.08); opacity: 1; }
  100% { transform: translate(0, 0) scale(.1); opacity: 0; }
}

@keyframes dp-football-fly {
  0% { transform: translate(-135px, -90px) rotate(-480deg) scale(.6); opacity: 0; }
  18% { opacity: 1; }
  86% { transform: translate(-8px, -8px) rotate(-25deg) scale(1.12); opacity: 1; }
  100% { transform: translate(0, 0) rotate(0deg) scale(.1); opacity: 0; }
}

@keyframes dp-beachball-fly {
  0% { transform: translate(-125px, -95px) rotate(-180deg) scale(.6); opacity: 0; }
  18% { opacity: 1; }
  56% { transform: translate(-45px, -22px) rotate(120deg) scale(1.12); }
  76% { transform: translate(-18px, -52px) rotate(260deg) scale(.96); }
  100% { transform: translate(0, 0) rotate(360deg) scale(.1); opacity: 0; }
}

@keyframes dp-balloon-fly {
  0% { transform: translate(-85px, 45px) scale(.5); opacity: 0; }
  20% { opacity: 1; }
  82% { transform: translate(-10px, -38px) scale(1.1); opacity: 1; }
  100% { transform: translate(0, -60px) scale(.1); opacity: 0; }
}

@keyframes dp-kiss-fly {
  0% { transform: translate(-70px, 30px) rotate(-15deg) scale(.35); opacity: 0; }
  24% { opacity: 1; }
  82% { transform: translate(-6px, -18px) rotate(9deg) scale(1.2); opacity: 1; }
  100% { transform: translate(0, 0) scale(.1); opacity: 0; }
}

@keyframes dp-cake-fly {
  0% { transform: translate(-125px, -95px) rotate(-18deg) scale(.55); opacity: 0; }
  18% { opacity: 1; }
  84% { transform: translate(-8px, -6px) rotate(12deg) scale(1.08); opacity: 1; }
  100% { transform: translate(0, 0) rotate(0deg) scale(.12); opacity: 0; }
}

@keyframes dp-flower-fly {
  0% { transform: translate(-95px, -58px) rotate(-15deg) scale(.45); opacity: 0; }
  25% { opacity: 1; }
  84% { transform: translate(-6px, -12px) rotate(12deg) scale(1.12); opacity: 1; }
  100% { transform: translate(0, 0) scale(.1); opacity: 0; }
}

@keyframes dp-sparkle-fly {
  0% { transform: translate(-60px, -25px) scale(.25) rotate(0deg); opacity: 0; }
  35% { transform: translate(-18px, -12px) scale(1.35) rotate(18deg); opacity: 1; }
  100% { transform: translate(0, 0) scale(.1) rotate(-10deg); opacity: 0; }
}

@keyframes dp-throw-impact {
  0% { opacity: 0; transform: scale(.25); }
  30% { opacity: 1; transform: scale(1.25); }
  72% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0; transform: scale(1.65); }
}

@keyframes dp-cake-splat {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.25) rotate(-8deg); }
  22% { opacity: 1; transform: translate(-50%, -50%) scale(1.18) rotate(2deg); }
  72% { opacity: 1; transform: translate(-50%, -50%) scale(1.02) rotate(0deg); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.28) rotate(0deg); }
}

/* v100: hold-to-throw polish + cake fly-to-splat system */
.room-stage.throw-aiming { cursor: crosshair; }
.dp-held-throwable,
.dp-throw-v100 {
  position: absolute;
  width: 76px;
  height: 76px;
  transform: translate(-50%, -50%);
  display: grid;
  place-items: center;
  pointer-events: none;
  z-index: 35;
  filter: drop-shadow(0 4px 4px rgba(0,0,0,.32));
}
.dp-held-throwable {
  opacity: .98;
  animation: dp-held-bob 1.05s ease-in-out infinite alternate;
}
.dp-held-throwable::after {
  content: "";
  position: absolute;
  inset: -8px;
  border-radius: 50%;
  border: 2px dashed rgba(255,255,255,.75);
  box-shadow: 0 0 12px rgba(255,255,255,.65);
  opacity: .6;
}
.dp-throw-v100-flying { z-index: 55; }
.dp-throw-v100-impact { z-index: 54; }
.dp-throw-v100-flying-visual,
.dp-throw-v100-impact-visual {
  display: grid;
  place-items: center;
  font-size: 44px;
  line-height: 1;
  width: 100%;
  height: 100%;
}
.dp-throw-v100-flying-visual img,
.dp-held-throwable img {
  width: 68px;
  max-width: 68px;
  height: auto;
  display: block;
  pointer-events: none;
}
.dp-throw-v100-impact-visual img {
  width: 112px;
  max-width: 112px;
  height: auto;
  display: block;
  pointer-events: none;
}
.dp-throw-v100-impact {
  animation: dp-impact-pop 1.05s ease-out forwards;
}
.dp-throw-v100-impact.throw-cake {
  width: 112px;
  height: 112px;
  animation: dp-cake-impact-pop 1.45s ease-out forwards;
}
.dp-throw-v100-impact.throw-cake .dp-throw-v100-impact-visual img {
  width: 108px;
  max-width: 108px;
}
@keyframes dp-held-bob {
  from { transform: translate(-50%, -50%) translateY(0) scale(.92); }
  to { transform: translate(-50%, -50%) translateY(-8px) scale(1.02); }
}
@keyframes dp-impact-pop {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.25); }
  25% { opacity: 1; transform: translate(-50%, -50%) scale(1.18); }
  72% { opacity: 1; transform: translate(-50%, -50%) scale(1.03); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.45); }
}
@keyframes dp-cake-impact-pop {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.22) rotate(-7deg); }
  18% { opacity: 1; transform: translate(-50%, -50%) scale(1.18) rotate(2deg); }
  72% { opacity: 1; transform: translate(-50%, -50%) scale(1.03) rotate(0); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.28) rotate(0); }
}


/* v105: use real SVG throwable art in the popup and throws */
.throw-menu-icon {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 30px !important;
  height: 30px !important;
}
.throw-menu-icon img {
  max-width: 30px;
  max-height: 30px;
  display: block;
  object-fit: contain;
  pointer-events: none;
}
.throw-menu-icon::before,
.throw-menu-icon::after {
  content: none !important;
}
.dp-throw-v100-flying-visual img,
.dp-throw-v100-impact-visual img,
.dp-held-throwable img {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  object-fit: contain;
}
.dp-throw-v100-impact:not(.throw-cake) {
  width: 82px;
  height: 82px;
  animation: dp-impact-pop .9s ease-out forwards;
}
.dp-throw-v100-impact:not(.throw-cake) .dp-throw-v100-impact-visual img {
  width: 72px;
  max-width: 72px;
}


/* v126: Chatroom support for rebuilt animated saved dolls */
.room-avatar-doll {
  display: block;
  width: 110px;
  min-height: 170px;
  margin: 0 auto;
  pointer-events: none;
}

.room-avatar-doll .dp-chat-animated-doll {
  display: block;
  pointer-events: none;
}

.room-avatar-doll .dp-chat-animated-doll img {
  max-width: none;
  max-height: none;
  object-fit: initial;
  margin: 0;
}

.room-avatar-doll > img {
  max-width: 110px;
  max-height: 170px;
  object-fit: contain;
  image-rendering: auto;
  display: block;
  margin: 0 auto;
  pointer-events: none;
}
