.bm-wrap { max-width: 560px; margin: 0 auto; width: 100%; }
.bm-stage { min-height: 280px; padding: 18px 12px; }
.bm-bomb-wrap { width: min(300px, 78vw); transform-origin: 50% 60%; }
.bm-svg { display: block; width: 100%; height: auto; overflow: visible; }
.bm-fuse { fill: none; stroke: #c9a36a; stroke-width: 6; stroke-linecap: round; }
.bm-fuse-burnt { fill: none; stroke: var(--border-strong); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 2 5; opacity: .7; }
.bm-hot { fill: #ff3b1f; opacity: 0; transition: opacity .6s ease; mix-blend-mode: soft-light; }
.bm-mouth { fill: none; stroke: #fff; stroke-width: 4; stroke-linecap: round; transition: d .3s; }
.bm-eye { transform-box: fill-box; transform-origin: center; animation: bm-blink 4s infinite; }
@keyframes bm-blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.1); } }
.bm-spark { display: none; }
.bm-star { transform-box: fill-box; transform-origin: center; animation: bm-flicker .18s linear infinite alternate; }
@keyframes bm-flicker { from { transform: scale(.75) rotate(0deg); opacity: .85; } to { transform: scale(1.25) rotate(25deg); opacity: 1; } }
.bm-stage.is-lit .bm-spark, .bm-stage.is-hot .bm-spark { display: inline; }
.bm-stage.is-lit .bm-bomb-wrap { animation: bm-wobble 1.4s ease-in-out infinite; }
.bm-stage.is-tick .bm-bomb-wrap svg { animation: bm-tick .16s ease-out; }
@keyframes bm-tick { 0% { transform: scale(1.045); } 100% { transform: scale(1); } }
@keyframes bm-wobble { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
.bm-stage.is-hot { background: color-mix(in srgb, #ff3b1f 14%, var(--surface-2)); transition: background .6s; }
.bm-stage.is-hot .bm-hot { opacity: .75; }
.bm-stage.is-hot .bm-bomb-wrap { animation-duration: .35s; }
.bm-stage.is-boom .bm-bomb-wrap { visibility: hidden; }
.bm-kaboom {
  position: absolute; left: 50%; top: 50%; font-size: 150px; line-height: 1; pointer-events: none; z-index: 2;
  transform: translate(-50%, -50%); animation: bm-kaboom .7s cubic-bezier(.2, 1.4, .4, 1) both;
}
@keyframes bm-kaboom { 0% { transform: translate(-50%, -50%) scale(.2); opacity: 0; } 60% { opacity: 1; } 100% { transform: translate(-50%, -50%) scale(1); opacity: 1; } }
.bm-part {
  position: absolute; border-radius: 50%; pointer-events: none; z-index: 1;
  transform: translate(-50%, -50%); animation: bm-part 1.1s cubic-bezier(.1, .75, .3, 1) forwards;
}
@keyframes bm-part { to { transform: translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(.3); opacity: 0; } }
.bm-flash {
  position: fixed; inset: 0; z-index: 1400; pointer-events: none;
  background: radial-gradient(circle at 50% 45%, #fff 0%, #fff3c4 30%, #ffb020 60%, rgba(255, 90, 54, .6) 100%);
  animation: bm-flash .85s ease-out forwards;
}
@keyframes bm-flash { 0% { opacity: .95; } 100% { opacity: 0; } }
.bm-readout { text-align: center; display: grid; gap: 2px; }
.bm-status { font-size: clamp(22px, 6vw, 32px); font-weight: 900; min-height: 1.3em; font-family: var(--font-num); }
.bm-time { font-weight: 700; color: var(--text-2); font-family: var(--font-num); font-size: 17px; }
.bm-topic {
  text-align: center; padding: 16px; border-radius: var(--radius-lg);
  background: var(--accent-soft); border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
}
.bm-topic-label { font-size: 13.5px; font-weight: 700; color: var(--text-2); }
.bm-topic-text { font-size: clamp(22px, 6vw, 30px); font-weight: 900; margin: 4px 0 6px; letter-spacing: -0.02em; }
.bm-topic-btn { min-height: 40px; }
.bm-after .btn { min-width: 0; }
.game-shell.is-full .bm-wrap { max-width: 640px; }
@media (prefers-reduced-motion: reduce) {
  .bm-stage.is-lit .bm-bomb-wrap { animation: none; }
}
