game/2d/ui/gamehud.razor.scss
root {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    pointer-events: none;
    overflow: hidden;
}

/* TOP HUD */
.topbar {
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 90px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-evenly;
    border-bottom: 1px solid rgba(167,139,250,0.15);
    z-index: 10;
    background-color: rgba(18,8,42,0.97);
    animation: topbar-shift 20s ease-in-out infinite alternate;
    overflow: hidden;
    z-index: 11;
}

@keyframes topbar-shift {
    0%   { background-color: rgba(18,8,42,0.97); }
    25%  { background-color: rgba(8,24,48,0.97); }
    50%  { background-color: rgba(24,8,40,0.97); }
    75%  { background-color: rgba(8,18,50,0.97); }
    100% { background-color: rgba(20,6,38,0.97); }
}
.hud-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}
.hud-lbl {
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.12em;
    color: rgba(255,255,255,0.30);
    text-transform: uppercase;
}
.hud-val {
    font-size: 32px;
    font-weight: 900;
    color: white;
}
.hud-block.wave  .hud-val { color: #a78bfa; }
.hud-block.score .hud-val { color: #34d399; }
.hud-block.best  .hud-val { color: #fbbf24; }
.hud-sep {
    width: 1px;
    height: 120px;
    background-color: rgba(128,95,128,0.07);
}

/* TIMER */
.timer-track {
    position: absolute;
    top: 90px; left: 0; right: 0;
    height: 14px;
    background-color: rgba(255,255,255,0.06);
    z-index: 10;
}
.timer-fill {
    position: absolute;
    top: 0; left: 0; bottom: 0;
    background-color: #34d399;
    transition: width 0.25s linear, background-color 0.8s ease;
    min-width: 4px;
}

.timer-fill.mid {
    background-color: #a78bfa;           /* half time: purple */
    transition: width 0.25s linear, background-color 0.6s ease;
}
.timer-fill.hurry {
    background-color: #f59e0b;           /* 30%: amber */
    transition: width 0.25s linear, background-color 0.5s ease;
}
.timer-fill.panic {
    background-color: #ef4444;           /* 15%: red */
    transition: width 0.25s linear, background-color 0.3s ease;
    animation: pulse-bar 0.55s ease-in-out infinite alternate;
}
@keyframes pulse-bar {
    from { opacity: 1.0; }
    to   { opacity: 0.5; }
}
/* 
   Three-stage color shift:
   full → hurry  : purple  → amber   (feels warm, attention-grabbing)
   hurry → panic : amber   → red     (urgent)
   panic         : red + pulse animation
*/

/* Challenge sentence — between timer and grid */

.challenge-bar {
    position: absolute;
    top: 104px; 
    left: 0;
    right: 0px;
    height: 36px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background-color: rgba(13,8,32,0.80);
    border-bottom: 1px solid rgba(167,139,250,0.12);
    pointer-events: none;
    z-index: 9;
    transition: background-color 0.4s ease;
}
.challenge-bar.done {
    background-color: rgba(16,42,16,0.85);
    border-bottom-color: rgba(52,211,153,0.25);
}

.ch-icon {
    font-size: 16px;
    color: rgba(167,139,250,0.70);
}
.challenge-bar.done .ch-icon {
    color: #34d399;
}

.ch-label {
    font-size: 20px;
    font-weight: 700;
    color: rgba(255,255,255,0.55);
    letter-spacing: 0.04em;
}
.challenge-bar.done .ch-label {
    color: rgba(52,211,153,0.85);
}

.ch-bonus {
    font-size: 13px;
    font-weight: 800;
    color: rgba(251,191,36,0.60);
    background-color: rgba(251,191,36,0.08);
    border-radius: 5px;
    padding: 2px 7px;
}
.challenge-bar.done .ch-bonus {
    color: rgba(52,211,153,0.80);
    background-color: rgba(52,211,153,0.10);
}

/* CHAIN TRACK — above grid, pointer-events none */
.chain-track {
    position: absolute;
    top: 146px;
    left: 0;
    right: 0px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 8px;
    pointer-events: none;
    z-index: 15;
}
.chain-track-inner {
    background-color: rgba(13,8,32,0.75);
    border-radius: 14px;
    padding: 10px 20px;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
}
.step {
    background-color: rgba(255,255,255,0.05);
    color: rgba(255,255,255,0.25);
    border-radius: 10px;
    padding: 6px 17px;
    font-size: 15px;
    border: 1.5px solid rgba(255,255,255,0.06);
    transition: all 0.15s;
}
.step.lit {
    background-color: rgba(167,139,250,0.2);
    color: #c4b5fd;
    border-color: #7c3aed;
    transform: scale(1.15);
}
.arr { font-size: 15px; color: rgba(255,255,255,0.15); }

/* SIDEBAR */
.sidebar {
    position: absolute;
    top: 140px; right: 0; bottom: 0;
    width: 260px;
    background-color: rgba(18,8,42,0.97);
    border-left: 2px solid rgba(167,139,250,0.18);
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 16px;
    pointer-events: all;
    z-index: 10;
}
.divider {
    height: 1px;
    background-color: rgba(167,139,250,0.10);
}
.sbl {
    font-size: 12px; font-weight: 800;
    letter-spacing: 0.2em; text-transform: uppercase;
    color: rgba(166,154,219,0.5);
}

/* Legend */
.legend { display: flex; flex-direction: column; gap: 8px; }
.leg    { display: flex; flex-direction: row; align-items: center; gap: 6px; font-size: 14px; color: rgba(255,255,255,0.38); font-weight: 600; }
.dot    { width: 10px; height: 10px; border-radius: 2px; }
.dot.p0    { background-color: #60a5fa; }
.dot.p1    { background-color: #34d399; }
.dot.p2    { background-color: #fb923c; }
.dot.red   { background-color: #f87171; }
.dot.chain { background-color: #c4b5fd; }

/* Controls */
.controls-hint {
    display: flex; flex-direction: column; gap: 6px;
    font-size: 13px; color: rgba(255,255,255,0.30); font-weight: 500;
}

.spacer { flex-grow: 1; }

/* Message bottom bar — pointer-events none, no text-align */
.msg {
    position: absolute;
    bottom: 8px;
    left: 12px;
    background-color: rgba(4,1,12,1.0);
    border: 1px solid rgba(167,139,250,0.15);
    border-radius: 8px;
    padding: 6px 14px;
    font-size: 18px;
    color: rgba(255,255,255,0.55);
    pointer-events: none;
    font-weight: 600;
    z-index: 5;
}
/* GAME OVER */
/* ── Three column layout ── */
.ov-bg {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(4,1,12,1.0);
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 24px;
    pointer-events: all;
    z-index: 50;
    overflow: hidden;
}

.ov-side-panel {
    display: flex;
    flex-direction: column;
    gap: 16px;
    width: 220px;
    pointer-events: none;
    z-index: 3;
}

.ov-side-card {
    position: relative; /* needed for ::before */
    background-color: rgba(8,3,22,0.90);
    border: 1px solid rgba(139,92,246,0.18);
    border-radius: 16px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    overflow: hidden;
}

.ov-side-card.journey {
    gap: 4px;
}
/* Streak card — orange glow line */
.ov-side-card.streak::before {
    background-color: rgba(251,146,60,0.55);
}

.ov-side-card::before {
    content: "";
    position: absolute;
    top: -1px; left: 20%; right: 20%;
    height: 1px;
    background-color: rgba(139,92,246,0.40);
    border-radius: 50%;
}

.ov-side-card.streak {
    border-color: rgba(251,146,60,0.30);
    background-color: rgba(251,146,60,0.05);
}

.ov-side-card-title {
    font-size: 14px;
    font-weight: 900;
    color: rgb(255, 214, 161);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    width: 100%;
    justify-content: center;
       margin-bottom: 8px;
       gap: 3px;
}

/* ── Personal best bar ── */
.ov-pb-bar-wrap { width: 100%; }

.ov-pb-bar-track {
    width: 100%;
    height: 6px;
    background-color: rgba(255,255,255,0.06);
    border-radius: 3px;
    position: relative;
}

.ov-pb-bar-fill {
    position: absolute;
    top: 0; left: 0; bottom: 0;
    background-color: #a78bfa;
    border-radius: 3px;
    min-width: 4px;
}

.ov-pb-marker {
    position: absolute;
    top: -3px;
    width: 2px;
    height: 12px;
    background-color: rgba(251,191,36,0.80);
    border-radius: 1px;
}

.ov-pb-scores {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    width: 100%;
}

.ov-pb-score-current {
    font-size: 22px;
    font-weight: 900;
    color: #a78bfa;
}

.ov-pb-score-best {
    font-size: 11px;
    font-weight: 600;
    color: rgba(255,255,255,0.30);
}

.ov-pb-newbest {
    font-size: 12px;
    font-weight: 900;
    color: #fbbf24;
    background-color: rgba(251,191,36,0.10);
    border: 1px solid rgba(251,191,36,0.25);
    border-radius: 8px;
    padding: 3px 10px;
}

/* Game over background Squares */
@keyframes sq-float-1 {
    0%   { margin-top: 0px;    margin-left: 0px; }
    25%  { margin-top: -14px;  margin-left: 8px; }
    50%  { margin-top: -6px;   margin-left: -10px; }
    75%  { margin-top: 10px;   margin-left: 4px; }
    100% { margin-top: 0px;    margin-left: 0px; }
}

@keyframes sq-float-2 {
    0%   { margin-top: 0px;   margin-left: 0px; }
    30%  { margin-top: 12px;  margin-left: -8px; }
    60%  { margin-top: -8px;  margin-left: 12px; }
    100% { margin-top: 0px;   margin-left: 0px; }
}

@keyframes sq-pulse {
    0%,100% { opacity: 0.4; }
    50%     { opacity: 1.0; }
}

.ov-bg-squares {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 1;
}

.ov-bg-sq {
    position: absolute;
    border: 1.5px solid;
}

@keyframes sq-drift-a {
    0%   { margin-top: 0px;   margin-left: 0px;   opacity: 0.35; }
    20%  { margin-top: -12px; margin-left: 8px;   opacity: 0.80; }
    40%  { margin-top: -20px; margin-left: -6px;  opacity: 0.50; }
    60%  { margin-top: -8px;  margin-left: -14px; opacity: 0.90; }
    80%  { margin-top: 6px;   margin-left: 4px;   opacity: 0.45; }
    100% { margin-top: 0px;   margin-left: 0px;   opacity: 0.35; }
}

@keyframes sq-drift-b {
    0%   { margin-top: 0px;  margin-left: 0px;  opacity: 0.25; }
    25%  { margin-top: 14px; margin-left: -10px; opacity: 0.70; }
    50%  { margin-top: 6px;  margin-left: 16px;  opacity: 0.90; }
    75%  { margin-top: -10px; margin-left: 8px;  opacity: 0.40; }
    100% { margin-top: 0px;  margin-left: 0px;   opacity: 0.25; }
}

.ov-bg-sq.sq-a {
    animation-name: sq-drift-a;
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
}

.ov-bg-sq.sq-b {
    animation-name: sq-drift-b;
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
}

/* Alternate float pattern on even squares */
.ov-bg-sq:nth-child(even) {
    animation-name: sq-float-2, sq-pulse;
}

/* ── Journey ── */
.ov-journey-wave {
    font-size: 32px;
    font-weight: 900;
    color: white;
    gap: 3px;
}

.ov-journey-sub {
    font-size: 12px;
    font-weight: 600;
    color: rgba(167, 255, 179, 0.719);
    word-spacing: 1px;
    width: 100%;
    display: flex;
    flex-direction: row;
    justify-content: space-between;  /* ← pushes label left, value right */
}

.ov-journey-tag {
    font-size: 10px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.562);
    background-color: rgba(255,255,255,0.04);
    border-radius: 6px;
    padding: 3px 10px;
}

.ov-journey-tag.good {
    color: #34d399;
    background-color: rgba(52,211,153,0.08);
}

/* ── Streak ── */
.ov-streak-count {
    font-size: 48px;
    font-weight: 900;
    color: #fb923c;
}

.ov-streak-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 199, 125, 0.404);
}

/* ── Next unlock ── */
.ov-unlock-icon { font-size: 32px; }

.ov-unlock-name {
    font-size: 13px;
    font-weight: 800;
    color: rgba(255,255,255,0.75);
    width: 100%;
    text-align: center;
    justify-content: center;
    margin-bottom: 2px;
}

.ov-unlock-cost {
    font-size: 12px;
    flex-direction: row;
    font-weight: 700;
    color: rgba(129,140,248,0.70);
    width: 100%;
    justify-content: center;
    text-align: center;
    gap: 3px; /* adds space b/w elements */
}

.ov-unlock-ready {
    font-size: 12px;
    font-weight: 900;
    color: #34d399;
}

.ov-unlock-bar-track {
    width: 100%;
    height: 4px;
    background-color: rgba(255,255,255,0.06);
    border-radius: 2px;
    position: relative;
    margin-top: 4px;
}

.ov-unlock-bar-fill {
    position: absolute;
    top: 0; left: 0; bottom: 0;
    background-color: #818cf8;
    border-radius: 2px;
    min-width: 4px;
}

.ov-particles {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    pointer-events: none;
    overflow: hidden;
    z-index: 2;
}
.ov-particle {
    position: absolute;
    bottom: -20px;
    opacity: 0;
    animation-name: particle-rise;
    animation-timing-function: ease-in;
    animation-iteration-count: infinite;
}
@keyframes particle-rise {
    0%   { opacity: 0;   transform: translateY(0px); }
    15%  { opacity: 1; }
    80%  { opacity: 0.7; transform: translateY(-65vh); }
    100% { opacity: 0;   transform: translateY(-105vh); }
}

.ov-box {
    position: relative;
    background-color: rgba(8,3,22,0.98);
    border: 1px solid rgba(139,92,246,0.25);
    border-radius: 24px;
    padding: 2rem 2.2rem 2.2rem 2.2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    width: 600px;
    z-index: 3;
    box-shadow: 0px 0px 0px 1px rgba(139,92,246,0.08),
                0px 2px 0px rgba(139,92,246,0.15),
                0px 24px 60px rgba(0s,0,0,0.80),
                inset 0px 1px 0px rgba(255,255,255,0.04);
}

/* Subtle top glow on the box */
.ov-box::before {
    content: "";
    position: absolute;
    top: -1px; left: 15%; right: 15%;
    height: 1px;
    background-color: rgba(167,139,250,0.50);
    border-radius: 50%;
}

.ov-wave-big {
    font-size: 64px;
    font-weight: 900;
    color: #a78bfa;
    letter-spacing: 0.06em;
    animation: ov-section-in 0.6s cubic-bezier(0.22,1,0.36,1) 0.3s both;
}

.ov-stats {
    display: flex;
    flex-direction: row;
    gap: 8px;
    width: 100%;
    justify-content: center;
}

.ov-stat {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    background-color: rgba(255,255,255,0.02);
    border-radius: 14px;
    padding: 16px 8px 12px 8px;
    position: relative;
    overflow: hidden;
}

.ov-stat::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 2px;
}

.ov-stat-icon { font-size: 18px; opacity: 0.70; }

.ov-stat-val {
    font-size: 36px;
    font-weight: 900;
    letter-spacing: -0.03em;
    line-height: 1;
}

.ov-stat-lbl {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.575);
    text-transform: uppercase;
    letter-spacing: 0.14em;
}

.ov-stat:nth-child(1) {
    border: 1px solid rgba(52,211,153,0.18);
    background-color: rgba(52,211,153,0.06);
}
.ov-stat:nth-child(2) {
    border: 1px solid rgba(167,139,250,0.18);
    background-color: rgba(167,139,250,0.06);
}
.ov-stat:nth-child(3) {
    border: 1px solid rgba(251,191,36,0.18);
    background-color: rgba(251,191,36,0.06);
}

/* Color accent per stat — target each by position */
.ov-stat:nth-child(1)::before { background-color: #34d399; }
.ov-stat:nth-child(2)::before { background-color: #a78bfa; }
.ov-stat:nth-child(3)::before { background-color: #fbbf24; }

.ov-stat:nth-child(1) { border: 1px solid rgba(52,211,153,0.12); }
.ov-stat:nth-child(2) { border: 1px solid rgba(167,139,250,0.12); }
.ov-stat:nth-child(3) { border: 1px solid rgba(251,191,36,0.12); }

/* ── Stat label colors ── */
.ov-stat:nth-child(1) .ov-stat-val { color: #6ee7b7; }
.ov-stat:nth-child(2) .ov-stat-val { color: #d8b4fe; }
.ov-stat:nth-child(3) .ov-stat-val { color: #fde68a; }


/* Background orbs still game over (ov)*/
@keyframes orb-drift-1 {
    0%   { margin-left: 0px;   margin-top: 0px; }
    33%  { margin-left: 18px;  margin-top: -12px; }
    66%  { margin-left: -10px; margin-top: 20px; }
    100% { margin-left: 0px;   margin-top: 0px; }
}

@keyframes orb-drift-2 {
    0%   { margin-left: 0px;   margin-top: 0px; }
    40%  { margin-left: -20px; margin-top: 14px; }
    70%  { margin-left: 12px;  margin-top: -8px; }
    100% { margin-left: 0px;   margin-top: 0px; }
}

@keyframes orb-drift-3 {
    0%   { margin-left: 0px;  margin-top: 0px; }
    30%  { margin-left: 14px; margin-top: 18px; }
    60%  { margin-left: -8px; margin-top: -14px; }
    100% { margin-left: 0px;  margin-top: 0px; }
}

.ov-orb {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
    z-index: 0;
}

.ov-orb-1 {
    width: 280px;
    height: 280px;
    top: -60px;
    left: -80px;
    background-color: rgba(109,40,217,0.06);
    animation: orb-drift-1 12s ease-in-out infinite;
}

.ov-orb-2 {
    width: 200px;
    height: 200px;
    bottom: 40px;
    right: -60px;
    background-color: rgba(99,102,241,0.05);
    animation: orb-drift-2 16s ease-in-out infinite;
}

.ov-orb-3 {
    width: 150px;
    height: 150px;
    top: 40%;
    left: 30%;
    background-color: rgba(244,114,182,0.03);
    animation: orb-drift-3 20s ease-in-out infinite;
}

/* Game over - secret */
.ov-secret-title {
    font-size: 13px;
    font-weight: 800;
    color: rgba(244,114,182,0.70);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    animation: ov-in 0.5s ease-out 1.6s both;
}
.ov-secrets {
    display: flex;
    flex-direction: row;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: center;
}
.ov-secret {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    background-color: rgba(244,114,182,0.08);
    border: 1px solid rgba(244,114,182,0.25);
    border-radius: 14px;
    padding: 14px 18px;
    min-width: 80px;
    overflow: hidden;
}
.ov-secret.locked {
    background-color: rgba(255,255,255,0.03);
    border-color: rgba(255,255,255,0.08);
    animation: chest-idle 2s ease-in-out infinite;
}
.ov-secret.rare {
    background-color: rgba(251,191,36,0.10);
    border-color: rgba(251,191,36,0.45);
}
.ov-secret.pop      { animation: chest-pop      0.7s cubic-bezier(0.22,1,0.36,1) forwards; }
.ov-secret.rare.pop { animation: chest-pop-rare 1.0s cubic-bezier(0.22,1,0.36,1) forwards; }
.ov-secret-icon { font-size: 28px; color: white; }
.ov-secret-lbl  { font-size: 13px; font-weight: 800; color: rgba(255,255,255,0.80); }
.ov-secret.rare .ov-secret-lbl { color: #fbbf24; }
.ov-secret-shine {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,0.35) 50%, transparent 70%);
    animation: shine-sweep 0.6s ease-out 0.1s forwards;
    pointer-events: none;
}

.ov-section-enter {
    animation: ov-section-in 0.45s cubic-bezier(0.22,1,0.36,1) forwards;
}

@keyframes ov-section-in {
    0%   { margin-top: 24px; }
    100% { margin-top: 0px; }
}

/* Clickable secret chests during Game Over */
.ov-secret.clickable {
    cursor: pointer;
    border-color: rgba(167,139,250,0.55);
    background-color: rgba(167,139,250,0.10);
    animation: chest-idle 1.0s ease-in-out infinite;
    pointer-events: all;
}

.ov-secret.clickable:hover {
    background-color: rgba(167,139,250,0.20);
    border-color: rgba(167,139,250,0.85);
}

@keyframes chest-idle {
    0%,100% { transform: rotate(0deg); }
    25%     { transform: rotate(-2deg) scale(1.02); }
    75%     { transform: rotate(2deg)  scale(1.02); }
}
@keyframes chest-pop {
    0%   { transform: scale(1.0); }
    20%  { transform: scale(0.88); }
    55%  { transform: scale(1.22); }
    75%  { transform: scale(0.96); }
    100% { transform: scale(1.0); }
}
@keyframes chest-pop-rare {
    0%   { transform: scale(1.0)  rotate(0deg); }
    15%  { transform: scale(0.82) rotate(-4deg); }
    45%  { transform: scale(1.35) rotate(3deg); }
    65%  { transform: scale(0.93) rotate(-1deg); }
    82%  { transform: scale(1.06) rotate(0deg); }
    100% { transform: scale(1.0)  rotate(0deg); }
}
@keyframes shine-sweep {
    0%   { transform: translateX(-200%); }
    100% { transform: translateX(300%); }
}

/* Secret section - when clickicking */
.ov-secret-section {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.ov-secret-eyebrow {
    font-size: 11px;
    font-weight: 800;
    color: rgba(244,114,182,0.70);
    letter-spacing: 0.22em;
    text-transform: uppercase;
}

.ov-secret-hint {
    font-size: 13px;
    font-weight: 600;
    color: rgba(255,255,255,0.35);
}

/* ── Chest cards ── */

.ov-chest-cards {
    display: flex;
    flex-direction: row;
    gap: 16px;
    justify-content: center;
}

.ov-chest-card {
    width: 130px;
    height: 150px;
    border-radius: 16px;
    border: 1.5px solid rgba(167,139,250,0.15);
    background-color: rgba(13,6,32,0.90);
    position: relative;
    overflow: visible;
    cursor: default;
    box-shadow: 0px 4px 0px rgba(0,0,0,0.40);
}

.ov-chest-card.ready {
    border-color: rgba(167,139,250,0.55);
    background-color: rgba(60,20,140,0.25);
    cursor: pointer;
    pointer-events: all;
    animation: chest-card-ready 1.4s ease-in-out infinite alternate;
    box-shadow: 0px 4px 0px rgba(0,0,0,0.40),
                0px 0px 20px rgba(167,139,250,0.15);
}

.ov-chest-card.ready:hover {
    border-color: rgba(167,139,250,0.90);
    background-color: rgba(109,40,217,0.30);
}

.ov-chest-card.waiting {
    border-color: rgba(255,255,255,0.06);
    background-color: rgba(255,255,255,0.02);
    box-shadow: none;
}

.ov-chest-card.revealed {
    border-color: rgba(129,140,248,0.35);
    background-color: rgba(99,102,241,0.08);
    box-shadow: 0px 4px 0px rgba(0,0,0,0.30),
                0px 0px 16px rgba(129,140,248,0.10);
}

.ov-chest-card.revealed.rare {
    border-color: rgba(251,191,36,0.50);
    background-color: rgba(251,191,36,0.08);
    box-shadow: 0px 4px 0px rgba(0,0,0,0.30),
                0px 0px 24px rgba(251,191,36,0.12);
}

.ov-chest-card.pop-in {
    animation: chest-card-pop 0.7s cubic-bezier(0.22,1,0.36,1) forwards;
}

.ov-chest-card-inner {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    pointer-events: none;
}

.ov-chest-emoji {
    font-size: 48px;
    animation: chest-card-idle 2.2s ease-in-out infinite alternate;
}

.ov-chest-card.waiting .ov-chest-emoji {
    opacity: 0.25;
    animation: none;
}

.ov-chest-tap {
    font-size: 10px;
    font-weight: 900;
    color: white;
    background-color: rgba(167,139,250,0.35);
    border: 1px solid rgba(167,139,250,0.50);
    border-radius: 6px;
    padding: 3px 10px;
    letter-spacing: 0.12em;
}

.ov-chest-tap.locked {
    background-color: rgba(255,255,255,0.05);
    border-color: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.20);
}

.ov-chest-glow {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    border-radius: 14px;
    animation: chest-glow-pulse 1.2s ease-in-out infinite alternate;
    pointer-events: none;
}

.ov-chest-card.ready {
    border-color: rgba(167,139,250,0.60);
    background-color: rgba(109,40,217,0.18);
    cursor: pointer;
    pointer-events: all;
    animation: chest-card-ready 1.2s ease-in-out infinite alternate;
}

.ov-chest-reward-icon {
    font-size: 40px;
}

.ov-chest-reward-lbl {
    font-size: 11px;
    font-weight: 800;
    color: rgba(255,255,255,0.75);
    padding: 0px 8px;
}

/* rare badge */
.ov-chest-revealed-icon {
    font-size: 40px;
}

.ov-chest-revealed-info {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.ov-chest-revealed-lbl {
    font-size: 13px;
    font-weight: 900;
    color: white;
    padding: 0px 4px;
}

.ov-chest-rare-badge {
    font-size: 9px;
    font-weight: 900;
    color: #fbbf24;
    background-color: rgba(251,191,36,0.10);
    border: 1px solid rgba(251,191,36,0.30);
    border-radius: 20px;
    padding: 2px 8px;
    letter-spacing: 0.10em;
}

.ov-confetti-bit {
    position: absolute;
    top: -20px;
    width: 8px;
    height: 8px;
    border-radius: 2px;
    animation-name: confetti-fly;
    animation-timing-function: ease-out;
    animation-fill-mode: forwards;
    pointer-events: none;
    z-index: 10;
}

@keyframes confetti-fly {
    0%   { opacity: 1; transform: translateY(0px) rotate(0deg) scale(1.2); }
    30%  { opacity: 1; }
    100% { opacity: 0; transform: translateY(-140px) rotate(520deg) scale(0.4); }
}

@keyframes chest-card-ready {
    0%   { transform: translateY(0px) scale(1.0); }
    100% { transform: translateY(-5px) scale(1.02); }
}

@keyframes chest-card-idle {
    0%   { transform: translateY(0px) rotate(-1.5deg); }
    100% { transform: translateY(-5px) rotate(1.5deg); }
}

@keyframes chest-card-pop {
    0%   { transform: scale(1.0); }
    20%  { transform: scale(0.85); }
    55%  { transform: scale(1.25); }
    75%  { transform: scale(0.96); }
    100% { transform: scale(1.0); }
}

@keyframes chest-glow-pulse {
    0%   { opacity: 0.4; }
    100% { opacity: 1.0; }
}

@keyframes chest-shine-sweep {
    0%   { transform: translateX(-100%); }
    40%  { transform: translateX(250%); }
    100% { transform: translateX(250%); }
}

@keyframes confetti-fly {
    0%   { opacity: 1; transform: translateY(0px) rotate(0deg) scale(1.0); }
    60%  { opacity: 1; }
    100% { opacity: 0; transform: translateY(-90px) rotate(380deg) scale(0.6); }
}

/* Frags section */
.ov-frag-section {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    background-color: rgba(99,102,241,0.05);
    border: 1px solid rgba(99,102,241,0.18);
    border-radius: 18px;
    padding: 20px 22px;
    position: relative;
    overflow: hidden;
}

/* Subtle shimmer across the top */
.ov-frag-section::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background-color: rgba(129,140,248,0.35);
}

.ov-frag-breakdown {
    display: flex;
    flex-direction: column;
    gap: 5px;
    width: 100%;
}

.ov-frag-line {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    padding: 5px 10px;
    background-color: rgba(255,255,255,0.025);
    border-radius: 8px;
    border-left: 2px solid rgba(129,140,248,0.20);
}

.ov-frag-line-lbl {
    font-size: 12px;
    font-weight: 600;
    color: rgba(255,255,255,0.35);
}

.ov-frag-line-val {
    font-size: 13px;
    font-weight: 900;
    color: #818cf8;
}

.ov-frag-label {
    font-size: 10px;
    font-weight: 900;
    color: rgba(129,140,248,0.55);
    letter-spacing: 0.22em;
    text-transform: uppercase;
}

.ov-frag-val {
    font-size: 52px;
    font-weight: 900;
    color: #818cf8;
    letter-spacing: -0.02em;
    line-height: 1;
}

.ov-frag-total {
    font-size: 12px;
    font-weight: 700;
    color: rgba(129,140,248,0.50);
    border-top: 1px solid rgba(129,140,248,0.10);
    padding-top: 8px;
    width: 100%;
    text-align: center;
}

.ov-frag-hint {
    font-size: 11px;
    color: rgba(255,255,255,0.22);
    font-weight: 600;
    letter-spacing: 0.04em;
}

/**/

.ov-score-section {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    animation: ov-score-appear 0.6s ease-out forwards;
}

@keyframes ov-score-appear {
    0%   { opacity: 0; }
    100% { opacity: 1; }
}

.ov-score-label { font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.35); letter-spacing: 0.18em; text-transform: uppercase; }
.ov-score       { font-size: 62px; font-weight: 900; color: #a78bfa; }
.ov-score.gold  { color: #fbbf24; }
.ov-newbest-badge {
    font-size: 15px;
    font-weight: 900;
    color: #fbbf24;
    background-color: rgba(251,191,36,0.12);
    border: 1.5px solid rgba(251,191,36,0.40);
    border-radius: 8px;
    padding: 4px 14px;
    letter-spacing: 0.12em;
    animation: badge-slam 0.5s cubic-bezier(0.22,1,0.36,1) 0.6s both;
}
@keyframes badge-slam {
    0%   { opacity: 0; transform: scale(0.3); }
    60%  { transform: scale(1.15); }
    100% { opacity: 1; transform: scale(1.0); }
}
.ov-btns { display: flex; flex-direction: row; gap: 12px; }

/* ── Play Again button sweep ── */
.ov-btn-wrap {
    position: relative;
    overflow: hidden;
    background-color: #3aed3a;
    border: 1.5px solid #8bfa9a;
    border-radius: 12px;
    color: white;
    font-size: 30px;
    font-weight: 800;
    padding: 15px 40px;
    cursor: pointer;
    pointer-events: all;
    animation: btn-breathe 2.2s ease-in-out infinite alternate;
    display: flex;
    align-items: center;
    justify-content: center;
}

@keyframes btn-breathe {
    0%   { transform: scale(1.0); }
    100% { transform: scale(1.05); }
}

.ov-btn-shine {
    position: absolute;
    top: 0; bottom: 0;
    left: -80%;
    width: 40%;
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.25) 50%, transparent 100%);
    animation: btn-shine-sweep 3.0s ease-in-out infinite;
    pointer-events: none;
}

@keyframes btn-shine-sweep {
    0%   { left: -80%; }
    45%  { left: 140%; }
    100% { left: 140%; }
}

@keyframes ov-in {
    0%   { opacity: 0; transform: translateY(12px) scale(0.97); }
    100% { opacity: 1; transform: translateY(0) scale(1.0); }
}

.ov-reveal {
    animation: ov-in 0.4s ease-out both;
}

/* Main Menu Button */
.ov-btn-menu {
    background-color: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 12px;
    color: rgba(255,255,255,0.40);
    font-size: 14px;
    font-weight: 700;
    padding: 15px 20px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}
.ov-btn-menu:hover {
    background-color: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.65);
}

/* -------------------- Modifier strip -----------------------
* This shows the equipped modifiers as a vertical strip in the sidebar
* Each item has its icon, name, and a tooltip on hover showing the full description. 
* The green tint matches the "active" color language used in the shop, 
* creating visual consistency between menu and game.

* Players can now glance at the sidebar mid-run and see exactly what's buffing them
* Combined with the boss multiplier suppression warning I added, 
* the player always knows what's affecting their score
*/
.mod-strip {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 12px;
}

.mod-strip-item {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background-color: rgba(52,211,153,0.06);
    border: 1px solid rgba(52,211,153,0.20);
    border-radius: 8px;
    transition: background-color 0.2s ease;
}

.mod-strip-item:hover {
    background-color: rgba(52,211,153,0.12);
}

.mod-strip-icon {
    font-size: 18px;
    flex-shrink: 0;
}

.mod-strip-name {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255,255,255,0.75);
    letter-spacing: 0.04em;
}

/* ── Game over reason ── */
.ov-reason {
    animation: ov-section-in 0.5s cubic-bezier(0.22,1,0.36,1) 0.5s both;
    font-size: 13px;
    font-weight: 700;
    color: rgba(255,255,255,0.55);
    padding: 8px 16px;
    background-color: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 10px;
    width: 100%;
    justify-content: center;
}

/* ---------------- SCREEN SHAKE ---------------- */
.hud-overlay {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    pointer-events: none;
    z-index: 5;
}

.hud-overlay.shake-small  { animation: shake-small  0.25s ease-out; }
.hud-overlay.shake-medium { animation: shake-medium 0.35s ease-out; }
.hud-overlay.shake-strong { animation: shake-strong 0.45s ease-out; }
.hud-overlay.shake-insane { animation: shake-insane 0.55s ease-out; }

.mini-hand.shake-small  { animation: shake-small  0.25s ease-out; }
.mini-hand.shake-medium { animation: shake-medium 0.35s ease-out; }
.mini-hand.shake-strong { animation: shake-strong 0.45s ease-out; }
.mini-hand.shake-insane { animation: shake-insane 0.55s ease-out; }

@keyframes shake-small {
    0%,100% { transform: translate(0,0); }
    25%     { transform: translate(-2px, 1px); }
    50%     { transform: translate(2px, -1px); }
    75%     { transform: translate(-1px, 2px); }
}
@keyframes shake-medium {
    0%,100% { transform: translate(0,0); }
    20%     { transform: translate(-4px, 2px) rotate(-0.3deg); }
    40%     { transform: translate(4px,-3px) rotate(0.3deg); }
    60%     { transform: translate(-3px, 3px) rotate(-0.2deg); }
    80%     { transform: translate(3px,-2px) rotate(0.2deg); }
}
@keyframes shake-strong {
    0%,100% { transform: translate(0,0); }
    15%     { transform: translate(-6px, 3px) rotate(-0.5deg); }
    30%     { transform: translate(6px,-4px) rotate(0.5deg); }
    45%     { transform: translate(-5px, 5px) rotate(-0.4deg); }
    60%     { transform: translate(5px,-4px) rotate(0.4deg); }
    75%     { transform: translate(-3px, 2px); }
    90%     { transform: translate(2px,-2px); }
}
@keyframes shake-insane {
    0%,100% { transform: translate(0,0); }
    10%     { transform: translate(-9px, 5px) rotate(-0.7deg); }
    20%     { transform: translate(9px,-6px) rotate(0.7deg); }
    30%     { transform: translate(-8px, 7px) rotate(-0.6deg); }
    40%     { transform: translate(8px,-6px) rotate(0.6deg); }
    50%     { transform: translate(-6px, 5px) rotate(-0.4deg); }
    60%     { transform: translate(6px,-5px) rotate(0.4deg); }
    70%     { transform: translate(-4px, 3px); }
    80%     { transform: translate(3px,-3px); }
    90%     { transform: translate(-1px, 1px); }
}

/* ────────────────────────────────────────────────────────────────── */
/* ────── Consumable strip — horizontal bar below challenge bar ───── */
/* ────────────────────────────────────────────────────────────────── */
.consumable-strip {
    position: absolute;
    bottom: 120px;         /* sits above the bomb wheel */
    left: 0;
    right: 150px;     /* leave room for sidebar */
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 8px;
    pointer-events: all;
    z-index: 20;
}

.consumable-slot {
    position: relative;
    left: 70px;
    width: 54px;
    height: 54px;
    border-radius: 10px;
    border: 1.5px solid rgba(255,255,255,0.10);
    background-color: rgba(255,255,255,0.04);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    cursor: default;
    position: relative;
}

.consumable-slot.available {
    border-color: rgba(167,139,250,0.50);
    background-color: rgba(109,40,217,0.15);
    cursor: pointer;
}

.consumable-slot.available:hover {
    background-color: rgba(109,40,217,0.30);
    border-color: rgba(167,139,250,0.80);
}

.consumable-slot.empty {
    opacity: 0.25;
    cursor: default;
}

.consumable-icon {
    font-size: 22px;
    pointer-events: none;
}

/* Count badge — bottom right corner of slot */
.consumable-count {
    position: absolute;
    bottom: 2px;
    right: 4px;
    font-size: 10px;
    font-weight: 900;
    color: rgba(167,139,250,0.95);
    pointer-events: none;
}

/* ── Screen Flash ── */
.screen-flash {
    position: absolute;
    top: 0; left: 0;
    width: 2200px;
    height: 1400px;
    pointer-events: none;
    z-index: 100;
}

.flash-text {
    position: absolute;
    top: 485px;        /* roughly vertical center of 1080p */
    left: 1055px;       /* roughly horizontal center minus half text width */
    font-size: 72px;
    font-weight: 900;
    color: rgba(255,255,255,0.90);
    pointer-events: none;
    animation: flash-text-pop 1.2s ease-out forwards;
        text-shadow:
        -3px -3px 0 #000,
         3px -3px 0 #000,
        -3px  3px 0 #000,
         3px  3px 0 #000,
        -4px  0   0 #000,
         4px  0   0 #000,
         0   -4px  0 #000,
         0    4px  0 #000;
	z-index: 10;
}

@keyframes flash-text-pop {
    0%   { opacity: 0; transform: translate(-50%, -50%) scale(0.6); }
    12%  { opacity: 1; transform: translate(-50%, -50%) scale(1.05); }
    70%  { opacity: 1; transform: translate(-50%, -50%) scale(1.0); }
    100% { opacity: 0; transform: translate(-50%, -50%) scale(0.95); }
}

@keyframes flash-fade {
    0%   { opacity: 0; }
    15%  { opacity: 1; }
    100% { opacity: 0; }
}

@keyframes flash-boss-spawn {
    0%   { opacity: 0; }
    15%  { opacity: 1; }
    100% { opacity: 0; }
}

@keyframes flash-wave {
    0%   { opacity: 0; }
    10%  { opacity: 1; }
    60%  { opacity: 1; }
    100% { opacity: 0; }
}

.screen-flash.flash-boss-spawn {
    background-color: rgba(220, 30, 30, 0.50);
    animation: flash-boss-spawn 2.5s ease-out forwards;
}

.screen-flash.flash-boss-death {
    background-color: rgba(251,191,36,0.55);
    animation: flash-fade 0.6s ease-out forwards;
}

.screen-flash.flash-wave-start {
    background-color: rgba(138, 92, 246, 0.082);  /* was 0.18 — lighter */
    animation: flash-wave .9s ease-out forwards;  /* was 2.5s — faster */
}

.screen-flash.flash-new-best {
    background-color: rgba(52,211,153,0.45);
    animation: flash-fade 1.0s ease-out forwards;
}

.screen-flash.flash-game-over {
    background-color: rgba(180,20,20,0.60);
    animation: flash-fade 0.8s ease-out forwards;
}

/* ------------------------------------------- */
/* -------------- Pet Companion -------------- */
/* ------------------------------------------- */

.hud-pet-wrap {
    position: absolute;
    bottom: 55px;
    left: 15px;
    width: 220px;
    height: 870px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 14px 14px 0px 14px;
    z-index: 6;
}

.hud-pet {
    font-size: 110px;
    animation: hud-pet-idle 2.5s ease-in-out infinite alternate;
    opacity: 0.8;
    margin-bottom: 10px;
    margin-left: 0px;
}
.hud-pet image {
    width: 110px;
    height: 110px;
}

.hud-pet-egg-icon
{
    width: 110px;
    height: 110px;
}

/* Top section — modifiers + curse */
.hud-pet-top {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
}

/* Bottom section — pet + hearts, pinned to bottom */
.hud-pet-bottom {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    width: 100%;
    font-size: 64px; 

}

@keyframes pet-bob {
    from { transform: translateY(0px); }
    to   { transform: translateY(-8px); }
}

.pet-bob {
    animation: pet-bob 1.4s ease-in-out infinite alternate;
}

.hud-pet-egg {
    width: 120px;
    height: 120px;
}

.hud-pet-bottom image {
    width: 134px;
    height: 134px;
    margin-left: -10px;
}

.pet-sbl {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(166,154,219,0.5);
}

.hud-pet-card {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: rgba(18,8,42,0.92);
    border: 1px solid rgba(167,139,250,0.18);
    border-radius: 14px 14px 0px 0px;
    z-index: -1;
}

@keyframes hud-pet-idle {
    0%   { transform: translateY(0px) scale(1.0); }
    100% { transform: translateY(-6px) scale(1.05); }
}

/* -------------------------------------------------- */
/* -------------- Hearts/Lives Sidebar -------------- */
/* -------------------------------------------------- */

.hud-pet-lives {
    position: absolute;
    right: 0px;
    left: 150px;
    bottom: 10px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hud-pet-heart {
    font-size: 40px;
}

.hud-pet-heart.empty {
    opacity: 0.20;
}

/* -------------------------------------------------- */
/* -------------- BACKGROUND (grid-like) ------------ */
/* -------------------------------------------------- */

.game-bg-grid {
    position: absolute;
    top: 90px; left: 0; right: 0; bottom: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.game-bg-cell {
    position: absolute;
    width: 232px;
    height: 232px;
    border-radius: 10px;
    border: 2px solid rgba(66, 54, 75, 0.04);
    z-index: 0;
}

.game-bg-cell.gbg-idle  { /* inline style from WaveGridColor — already very dark hex */ }
.game-bg-cell.gbg-expl  { background-color: rgba(10,4,24,0.95); border-color: rgba(251,146,60,0.22); }
.game-bg-cell.gbg-expl2 { background-color: rgba(10,4,24,0.95); border-color: rgba(251,191,36,0.22); }
.game-bg-cell.gbg-gold  { background-color: rgba(10,4,24,0.95); border-color: rgba(251,191,36,0.16); }
.game-bg-cell.gbg-red   { background-color: rgba(10,4,24,0.95); border-color: rgba(248,113,113,0.16); }
.game-bg-cell.gbg-chain { background-color: rgba(10,4,24,0.95); border-color: rgba(196,181,253,0.14); }

/* SIDEBAR BUTTON (info) */
.sidebar-toggle {
    position: absolute;
    top: 155px;
    right: 12px;
    width: 44px;
    height: 44px;
    border-radius: 50px;
    background-color: rgba(180,30,30,0.85);
    border: 2px solid rgba(255,100,100,0.60);
    color: white;
    font-size: 20px;
    font-weight: 900;
    pointer-events: all;
    z-index: 20;
    cursor: pointer;
    box-shadow: 2px 2px 0px rgba(0,0,0,0.60);
    display: flex;
    align-items: center;
    justify-content: center;
}

.sidebar-toggle:hover {
    background-color: rgba(220,40,40,0.95);
    border-color: rgba(255,140,140,0.80);
}

/**/
.pet-mod-strip {
    display: flex;
    flex-direction: row;
    gap: 6px;
    margin-top: 8px;
}

.pet-mod-item {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background-color: rgba(52,211,153,0.10);
    border: 1px solid rgba(52,211,153,0.25);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}

.pet-curse-warning {
    font-size: 13px;
    font-weight: 800;
    color: rgba(248,113,113,0.85);
    margin-top: 6px;
    padding: 4px 8px;
    background-color: rgba(239,68,68,0.10);
    border: 1px solid rgba(248,113,113,0.20);
    border-radius: 6px;
}

/* Min chest requirement (displayed on left side bar)*/
.hud-min-chests {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 6px;
    padding: 4px 23px;
    background-color: rgba(0,0,0,0.35);
    border-radius: 6px;
    margin-top: 4px;
    justify-content: center;
}

.hud-min-chests-lbl {
    font-size: 18px;
    font-weight: 700;
    color: rgba(255,255,255,0.55);
}

.hud-min-chests-val {
    font-size: 18px;
    font-weight: 900;
    color: rgba(251,191,36,0.90);
}

/* MUSIC DEBUG */
.mm-dev-music-panel {
    position: absolute;
    bottom: 20px;
    right: 20px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px;
    background-color: rgba(4,1,13,0.90);
    border: 1px dashed rgba(244,114,182,0.30);
    border-radius: 6px;
    z-index: 99;
    pointer-events: all;
}

.mm-dev-music-label {
    font-size: 9px;
    font-weight: 900;
    color: rgba(244,114,182,0.60);
    letter-spacing: 0.20em;
    text-transform: uppercase;
    margin-bottom: 2px;
}

.mm-dev-btn {
    background-color: rgba(244,114,182,0.15);
    border: 1px solid rgba(244,114,182,0.30);
    border-radius: 4px;
    color: rgba(244,114,182,0.85);
    font-size: 10px;
    font-weight: 700;
    padding: 4px 8px;
    cursor: pointer;
    pointer-events: all;
    letter-spacing: 0.05em;
}

.mm-dev-btn:hover {
    background-color: rgba(244,114,182,0.25);
}

.mm-dev-btn-active {
    background-color: rgba(52,211,153,0.20);
    border-color: rgba(52,211,153,0.50);
    color: rgba(52,211,153,0.90);
}

/* =============== New SURVIVAL mode =============== */
.survival-timer {
    position: absolute;
    top: 100px;
    left: 50%;
    transform: translateX(-50%);
    width: 160px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 8px 16px;
    background-color: rgba(10,4,28,0.80);
    border: 2px solid rgba(239,68,68,0.35);
    border-radius: 10px;
    box-shadow: 3px 3px 0px rgba(0,0,0,0.55);
    z-index: 10;
}

.survival-timer-icon {
    font-size: 16px;
}

.survival-timer-val {
    font-size: 20px;
    font-weight: 900;
    color: rgba(251,191,36,0.90);
    letter-spacing: 0.04em;
    font-variant-numeric: tabular-nums;
}

.survival-spawn-track {
    position: absolute;
    top: 145px; /* just below the timer pill */
    left: 50%;
    transform: translateX(-50%);
    width: 160px;
    height: 6px;
    background-color: rgba(255,255,255,0.08);
    border-radius: 3px;
    overflow: hidden;
    z-index: 10;
}

.survival-spawn-fill {
    height: 100%;
    background-color: rgba(251,191,36,0.85);
    transition: width 0.1s linear;
}

/* CAT */
.mm-pet-hero-emoji image {
    width: 170px;   /* bump this up to whatever size you want */
    height: 170px;
    image-rendering: pixelated; /* keep it crisp if it's pixel art */
    margin-left: -10px;
}

.mm-pet-hero-emoji {
    position: relative;
}
.cat-anchor { position: relative; }



.cat-speech-bubble {
    position: absolute;
    top: -50px;
    left: 50%;
    transform: translateX(-50%);
    background-color: rgba(255,255,255,0.95);
    color: #1a1030;
    font-size: 14px;
    font-weight: 800;
    padding: 8px 14px;
    border-radius: 12px;
    white-space: nowrap;
    box-shadow: 2px 2px 0px rgba(0,0,0,0.4);
    z-index: 10;
    animation: bubble-pop 0.2s ease-out both;
}

.cat-speech-bubble::after {
    content: "";
    position: absolute;
    bottom: -6px;
    left: 50%;
    width: 12px;
    height: 12px;
    background-color: rgba(255,255,255,0.95);
    transform: translateX(-50%) rotate(45deg);
}

@keyframes bubble-pop {
    0%   { opacity: 0; transform: translateX(-50%) scale(0.7); }
    100% { opacity: 1; transform: translateX(-50%) scale(1.0); }
}