game/menu/mainmenu.razor.scss
/* ── Root ────────────────────────────────────────────────────── */
root {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    pointer-events: none;
    overflow: hidden;
}

/* ── Background base ─────────────────────────────────────────── */
.mm-bg {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #04010d;
    pointer-events: none;
    overflow: visible;
    z-index: 0; 
}

/* ── Grid animated background container ── */
/* ── Grid container ── */
/* ── Grid container ── */
@keyframes mm-grid-breathe {
    0%   { transform: scale(1.0); }
    50%  { transform: scale(1.12); }
    100% { transform: scale(1.0); }
}

.mm-grid-bg {
    position: absolute;
    left: -100px;
    top: -100px;
    width: 2400px;
    height: 1400px;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 5px;
    padding: 5px;
    transform-origin: center center;
    animation: mm-grid-breathe 20s infinite;
}

/* ── Base cell ── */
.mm-gc {
    width: 160px;
    height: 160px;
    border-radius: 6px;
    background-color: #0f0c1c;
    border: 2px solid #17122a;
    box-shadow: inset 2px 2px 0px #1a1530, inset -1px -1px 0px #07050e;
    flex-shrink: 0;
}

/* ── Edge vignette — replaces mm-overlay ── */
.mm-grid-fade {
    position: absolute;
    inset: 0px;
    pointer-events: none;
    background-color: transparent;
    border-width: 120px;
    border-color: #08060f;
    box-shadow: inset 0px 0px 120px 60px #08060f;
}

/* ── Keyframes — one per type ── */
@keyframes mm-gc-breathe {
    0%   { background-color: #0f0c1c; border-color: #17122a; }
    50%  { background-color: #131020; border-color: #1c1732; }
    100% { background-color: #0f0c1c; border-color: #17122a; }
}

@keyframes mm-gc-purp {
    0%   { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
    45%  { background-color: #1c0a38; border-color: #7035d5; box-shadow: inset 1px 1px 0px #32126a, inset -1px -1px 0px #0a0420; }
    55%  { background-color: #1c0a38; border-color: #7035d5; box-shadow: inset 1px 1px 0px #32126a, inset -1px -1px 0px #0a0420; }
    100% { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
}

@keyframes mm-gc-gold {
    0%   { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
    45%  { background-color: #251000; border-color: #c87215; box-shadow: inset 1px 1px 0px #4a2200, inset -1px -1px 0px #0d0600; }
    55%  { background-color: #251000; border-color: #c87215; box-shadow: inset 1px 1px 0px #4a2200, inset -1px -1px 0px #0d0600; }
    100% { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
}

@keyframes mm-gc-red {
    0%   { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
    45%  { background-color: #220508; border-color: #b82525; box-shadow: inset 1px 1px 0px #451010, inset -1px -1px 0px #0c0304; }
    55%  { background-color: #220508; border-color: #b82525; box-shadow: inset 1px 1px 0px #451010, inset -1px -1px 0px #0c0304; }
    100% { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
}

@keyframes mm-gc-chain {
    0%   { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
    45%  { background-color: #08141e; border-color: #155590; box-shadow: inset 1px 1px 0px #0e2538; }
    55%  { background-color: #08141e; border-color: #155590; box-shadow: inset 1px 1px 0px #0e2538; }
    100% { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530, inset -1px -1px 0px #07050e; }
}

@keyframes mm-gc-expl {
    0%   { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530; }
    78%  { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530; }
    80%  { background-color: #ff9030; border-color: #ffe060; box-shadow: inset 1px 1px 0px #ffee90; }
    83%  { background-color: #ff5c10; border-color: #ff8020; }
    87%  { background-color: #c03000; border-color: #ff5010; }
    93%  { background-color: #2c1000; border-color: #8a2c08; }
    100% { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530; }
}

@keyframes mm-gc-expl2 {
    0%   { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530; }
    60%  { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530; }
    62%  { background-color: #ff9030; border-color: #ffe060; box-shadow: inset 1px 1px 0px #ffee90; }
    65%  { background-color: #ff5c10; border-color: #ff8020; }
    69%  { background-color: #c03000; border-color: #ff5010; }
    75%  { background-color: #2c1000; border-color: #8a2c08; }
    100% { background-color: #0f0c1c; border-color: #17122a; box-shadow: inset 1px 1px 0px #1a1530; }
}

/* ── Animation bindings — one per class, no stacking ── */
.mm-gc-idle  { animation: mm-gc-breathe 4s   infinite; }
.mm-gc-purp  { animation: mm-gc-purp    4.5s infinite; }
.mm-gc-gold  { animation: mm-gc-gold    5s   infinite; }
.mm-gc-red   { animation: mm-gc-red     4.2s infinite; }
.mm-gc-chain { animation: mm-gc-chain   3.2s infinite; }
.mm-gc-expl  { animation: mm-gc-expl    7s   infinite; }
.mm-gc-expl2 { animation: mm-gc-expl2   9s   infinite; }

/* ── Vignette — keep your existing mm-overlay, or add this ── */
.mm-grid-bg-vignette {
    position: absolute;
    inset: 0px;
    background-color: transparent;
    pointer-events: none;
    box-shadow: inset 0px 0px 160px 100px #0a0812;
}

/* ---------------------------------------------------------------------- */

/* ── Background grid preview — animated 5x5 game simulation ─── */
.mm-grid-preview {
    display: flex;
    flex-direction: column;
    gap: 10px;
    opacity: 0.13;
    pointer-events: none;
	opacity: 0.13;
    transition: opacity 0.6s ease;
}

// light up grid when auto farm is active
.mm-grid-preview.active {
    opacity: 0.35;
}

/* Grid row — one horizontal line of cells */

.mm-prev-row {
    display: flex;
    flex-direction: row;
     gap: 8px; /* was 12px */ /* horizontal gap between cells — increase this */
}


/* ── Grid block — wraps header + grid preview as one unit ── */
.mm-farm-panel {
    display: flex;
    flex-direction: column;
    align-items: center;    /* centers children (grid, headers) horizontally within the panel */
    justify-content: center; /* centers children vertically */
    gap: 16px;
    width: 100%;            /* fill mm-center horizontally */
}

.mm-card-farm
{
    margin-top: 0px; /* moves it up */
    margin-right: 50px;
}

.mm-center-enter {
    animation: center-enter 0.35s cubic-bezier(0.22,1,0.36,1) both;
}

/* Cards surrounding our _tabs content*/
.mm-content-card {
    color: rgba(255,255,255,0.80);
    position: relative;
    right: 90px;
    background-color: rgba(8, 3, 22, 0.92);
    border: 2px solid rgba(120,80,220,0.30);
    border-radius: 14px;
    /* cel-shaded: hard offset */
    box-shadow: 6px 6px 0px rgba(0,0,0,0.65), inset 0px 1px 0px rgba(255,255,255,0.04);
    padding: 32px 36px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 700px;
    max-height: 180%;
}

@keyframes center-enter {
    0%   { opacity: 0; transform: translateY(14px) scale(0.97); }
    100% { opacity: 1; transform: translateY(0px) scale(1.0); }
}

.mm-grid-header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 570px;
    padding: 10px 16px;
    background-color: rgba(129,140,248,0.08);
    border: 1px solid rgba(129,140,248,0.18);
    border-radius: 12px;
    transition: opacity 0.6s ease;
}

.mm-grid-header.active
{
	opacity: 0.7;
}

.mm-grid-header-label {
    font-size: 18px;
    font-weight: 800;
    letter-spacing: 0.18em;
    color: rgba(129,140,248,0.90);
    text-transform: uppercase;
	flex-shrink: 0;
	width: 120px;   /* fixed width anchors left side */
}

.mm-grid-header-val {
    font-size: 18px;
    font-weight: 900;
    color: rgba(129,140,248,0.90);
	flex: 1;
    text-align: center; /* centers the fragment count between the two fixed elements */
}

.mm-grid-above-header-label
{
	font-size: 18px;
    font-weight: 800;
    letter-spacing: 0.18em;
    color: rgba(129,140,248,0.90);
    text-transform: uppercase;
	position: relative;
	padding: 0px 120px;
}




/* ── Grid preview — the actual 5x5 cells ── */
.mm-grid-preview {
    position: relative; /* for popup positioning */
    display: flex;
    flex-direction: column;
    gap: 8px;
    opacity: 0.13;
    pointer-events: none;
}


/* Individual grid cell — base style */
.mm-prev-cell {
    width: 76px;     /* was 106px */
    height: 76px;
    border-radius: 10px;
    border: 2px solid rgba(255,255,255,0.05);
    background-color: rgba(255,255,255,0.02);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Icon inside each cell */
.mm-prev-icon {
    font-size: 26px;  /* was 36px */
    pointer-events: none;
}

/* Transition when entering the menu  (on grid preview)
* The 0.3s delay lets the left side title and right side buttons start their mm-enter first, 
* then the grid fades in behind them — 
* so it feels layered rather than everything appearing simultaneously.
*/

/*The cubic-bezier(0.22,1,0.36,1) is the same spring curve used on the game over chest pops 
— gives it a slight overshoot feeling of snapping into place.*/

.mm-grid-enter {
    animation: grid-enter 1.0s cubic-bezier(0.22,1,0.36,1) 0.3s both;
}

@keyframes grid-enter {
    0%   { opacity: 0; transform: scale(0.94); }
    100% { opacity: 1; transform: scale(1.0); }
}

/* ── Grid cell types — static states ─────────────────────────── */

/* Empty cell — faint visible so full grid is readable */
.ct-empty {
    background-color: rgba(255, 255, 255, 0.226);
    border-color: rgba(255, 255, 255, 0.212);
}

/* Normal chest cell */
.ct-chest {
    background-color: rgba(206, 154, 76, 0.363);
    border-color: rgba(206, 165, 76, 0.281);
}

/* Gem chest — green tint */
.ct-gem {
    background-color: rgba(30, 160, 110, 0.233);
    border-color: rgba(50,200,150,0.40);
}

/* Bomb chest — purple tint */
.ct-bomb-chest {
    background-color: rgba(100,30,200,0.20);
    border-color: rgba(160,130,250,0.40);
}

/* Placed bomb — bright purple */
.ct-bomb {
    background-color: rgba(100,30,200,0.30);
    border-color: rgba(160,130,250,0.50);
}

/* Detonating bomb — yellow flash */
.ct-blast {
    background-color: rgba(251,191,36,0.80);
    border-color: rgba(251,191,36,1.0);
    animation: ca-detonate 0.6s ease-out forwards;
}

/* Destroyed chest — fades to empty after red flash */
.ct-destroyed {
    background-color: rgba(240, 80, 80, 0.712);
    border-color: rgba(240,80,80,0.30);
    animation: ca-destroy 0.4s ease-out forwards;
}

/* ── Grid cell animations — triggered by state changes ───────── */

/* Bomb detonation — yellow flash fades to empty */
@keyframes ca-detonate {
    0%   { background-color: rgba(251,191,36,0.80); }
    60%  { background-color: rgba(251,191,36,0.20); }
    100% { background-color: rgba(255, 255, 255, 0.212); }
}

/* Chest destroyed — red flash fades to ghost cell */
@keyframes ca-destroy {
    0%   { background-color: rgba(240,80,80,0.70); opacity: 1; }
    100% { background-color: rgb(163, 45, 45); opacity: 0.5; }
}

/* Blast range on empty cell — brief yellow tint */
@keyframes ca-blast-empty {
    0%   { background-color: rgba(251,191,36,0.25); }
    100% { background-color: rgba(255, 255, 255, 0.212); }
}

.ca-blast-empty {
    animation: ca-blast-empty 0.5s ease-out forwards;
}

/* ── Old static keyframe animations — kept for fallback ─────── */
/* These ran on hardcoded cells before the C# state system */

@keyframes bomb-fire {
    0%   { background-color: rgba(100,30,200,0.30); }
    30%  { background-color: rgba(100,30,200,0.30); }
    36%  { background-color: rgba(251,191,36,0.85); }
    48%  { background-color: rgba(100,30,200,0.30); }
    100% { background-color: rgba(100,30,200,0.30); }
}

@keyframes bomb-chain {
    0%   { background-color: rgba(100,30,200,0.30); }
    40%  { background-color: rgba(100,30,200,0.30); }
    46%  { background-color: rgba(196,181,253,0.85); }
    58%  { background-color: rgba(100,30,200,0.30); }
    100% { background-color: rgba(100,30,200,0.30); }
}

@keyframes chest-pop-1 {
    0%   { background-color: rgba(100,115,135,0.10); opacity: 1; }
    34%  { background-color: rgba(100,115,135,0.10); opacity: 1; }
    39%  { background-color: rgba(240,80,80,0.70); }
    47%  { background-color: rgba(240,80,80,0.10); opacity: 0.2; }
    57%  { opacity: 0; }
    70%  { opacity: 1; background-color: rgba(100,115,135,0.10); }
    100% { background-color: rgba(100,115,135,0.10); opacity: 1; }
}

@keyframes chest-pop-2 {
    0%   { background-color: rgba(100,115,135,0.10); opacity: 1; }
    38%  { background-color: rgba(100,115,135,0.10); opacity: 1; }
    43%  { background-color: rgba(240,80,80,0.70); }
    51%  { background-color: rgba(240,80,80,0.10); opacity: 0.2; }
    60%  { opacity: 0; }
    70%  { opacity: 1; background-color: rgba(100,115,135,0.10); }
    100% { background-color: rgba(100,115,135,0.10); opacity: 1; }
}

@keyframes chest-pop-3 {
    0%   { background-color: rgba(100,115,135,0.10); opacity: 1; }
    42%  { background-color: rgba(100,115,135,0.10); opacity: 1; }
    47%  { background-color: rgba(240,80,80,0.70); }
    55%  { background-color: rgba(240,80,80,0.10); opacity: 0.2; }
    63%  { opacity: 0; }
    70%  { opacity: 1; background-color: rgba(100,115,135,0.10); }
    100% { background-color: rgba(100,115,135,0.10); opacity: 1; }
}

@keyframes chest-pop-4 {
    0%   { background-color: rgba(100,115,135,0.10); opacity: 1; }
    45%  { background-color: rgba(100,115,135,0.10); opacity: 1; }
    50%  { background-color: rgba(240,80,80,0.70); }
    58%  { background-color: rgba(240,80,80,0.10); opacity: 0.2; }
    66%  { opacity: 0; }
    70%  { opacity: 1; background-color: rgba(100,115,135,0.10); }
    100% { background-color: rgba(100,115,135,0.10); opacity: 1; }
}

@keyframes chest-pop-5 {
    0%   { background-color: rgba(30,160,110,0.12); opacity: 1; }
    48%  { background-color: rgba(30,160,110,0.12); opacity: 1; }
    53%  { background-color: rgba(50,220,160,0.80); }
    61%  { background-color: rgba(30,160,110,0.12); opacity: 0.2; }
    68%  { opacity: 0; }
    70%  { opacity: 1; background-color: rgba(30,160,110,0.12); }
    100% { background-color: rgba(30,160,110,0.12); opacity: 1; }
}

@keyframes chest-pop-6 {
    0%   { background-color: rgba(100,115,135,0.10); opacity: 1; }
    51%  { background-color: rgba(100,115,135,0.10); opacity: 1; }
    56%  { background-color: rgba(240,80,80,0.70); }
    64%  { background-color: rgba(240,80,80,0.10); opacity: 0.2; }
    69%  { opacity: 0; }
    70%  { opacity: 1; background-color: rgba(100,115,135,0.10); }
    100% { background-color: rgba(100,115,135,0.10); opacity: 1; }
}

.ca-bomb  { animation: bomb-fire   7s ease-in-out infinite; }
.ca-chain { animation: bomb-chain  7s ease-in-out infinite; }
.ca-c1    { animation: chest-pop-1 7s ease-in-out infinite; }
.ca-c2    { animation: chest-pop-2 7s ease-in-out infinite; }
.ca-c3    { animation: chest-pop-3 7s ease-in-out infinite; }
.ca-c4    { animation: chest-pop-4 7s ease-in-out infinite; }
.ca-c5    { animation: chest-pop-5 7s ease-in-out infinite; }
.ca-c6    { animation: chest-pop-6 7s ease-in-out infinite; }

/* ── Dark overlay — sits above grid, below UI ────────────────── */
.mm-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(4,1,13,0.70);
    z-index: 1;
}

/* ── Rising particles — float up from bottom ─────────────────── */
.mm-particle {
    position: absolute;
    bottom: -5px;
    opacity: 0;
    animation-name: p-rise;
    animation-timing-function: ease-in;
    animation-iteration-count: infinite;
    pointer-events: none;
	z-index: 3; 
}

@keyframes p-rise {
    0%   { opacity: 0;   transform: translateY(0px); }
    15%  { opacity: 1; }
    80%  { opacity: 0.4; transform: translateY(-700px); }
    100% { opacity: 0;   transform: translateY(-1000px); }
}

/* ── Score popups — float up from destroyed chest positions ──── */
.mm-popup {
    position: absolute;
    font-weight: 900;
    pointer-events: none;
    opacity: 0;
    transform: translateX(-50%); /* center text on its spawn point */
    white-space: nowrap;
    z-index: 20;
}

/* Active state — triggers the rise animation */
.popup-active {
    animation: popup-rise 1.8s ease-out forwards;
}

@keyframes popup-rise {
    0%   { opacity: 0;   transform: translateY(0px); }
    15%  { opacity: 1; }
    80%  { opacity: 0.8; transform: translateY(-60px); }
    100% { opacity: 0;   transform: translateY(-80px); }
}

/* Popup tiers — size and color by reward magnitude */
.popup-small { font-size: 14px; color: rgba(129,140,248,0.90); }
.popup-nice  { font-size: 16px; color: rgba(52,211,153,0.95); }
.popup-chain { font-size: 20px; color: rgba(251,191,36,0.95); }
.popup-mega  { font-size: 24px; color: rgba(244,114,182,0.95); }
.popup-hit   { font-size: 13px; color: rgba(248,113,113,0.80); }

/* ── Daily fragment counter — absolute above the grid ────────── */
.mm-today-frags {
    position: absolute;
    /* mm-grid-preview starts at left:150px, right:0 — so center of that zone */
    left: 150px;
    right: 0;
    /* sits just above where the grid vertically centers — grid-preview is top:120px,
       the grid is ~540px tall and vertically centered in remaining space.
       This approximates "above the grid" without JS measurement */
    top: calc(50% - 850px);
	left: 830px;
    text-align: center;
    font-size: 30px;
    font-weight: 800;
    color: rgba(129,140,248,0.85);
    letter-spacing: 0.15em;
    z-index: 5; /* above mm-overlay */
    pointer-events: none;
}

/* ── Main UI layout — full screen flex row ───────────────────── */
.mm-ui {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: row;
    align-items: center;
    pointer-events: none;
    z-index: 5;
}

/* ── Left side — title and personal stats ────────────────────── */
.mm-left {
    position: relative;
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    padding-left: 90px;
    gap: 0px;
}

/* Small label above title */
.mm-eyebrow {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.5em;
    color: rgba(160,130,250,0.40);
    text-transform: uppercase;
    margin-bottom: 10px;
    margin-left: 6px;
    animation: mm-enter 0.6s ease-out 0.0s both;
}

/* Entrance animation — slides up from below */
@keyframes mm-enter {
    0%   { opacity: 0; transform: translateY(20px); }
    100% { opacity: 1; transform: translateY(0px); }
}

/* CHAIN — white title line */
.mm-title-chain {
    font-size: 112px;
    font-weight: 900;
    color: #ffffff;
    line-height: 1;
    margin-bottom: -16px;
    animation: mm-enter 0.7s ease-out 0.1s both;
    /* hard cel-shaded offset shadow */
    text-shadow: 4px 4px 0px #1a0e30, -1px -1px 0px #0e0820;
}

/* Wrapper for REACTION — handles entrance separately from glow */
.mm-title-reaction-wrap {
    animation: mm-enter 0.7s ease-out 0.2s both;
    margin-bottom: 18px;
}

/* REACTION — purple, slow color glow loop */
.mm-title-reaction {
    font-size: 112px;
    font-weight: 900;
    line-height: 1;
    color: #a78bfa;
    text-shadow: 4px 4px 0px #2d0e6e, -1px -1px 0px #0e0820;
    animation: reaction-glow 3s ease-in-out infinite alternate;
}

@keyframes reaction-glow {
    0%   { color: #7c3aed; text-shadow: 4px 4px 0px #1a0640, -1px -1px 0px #0e0820; }
    100% { color: #fdb5b5; text-shadow: 4px 4px 0px #801a1a, -1px -1px 0px #0e0820; }
}

/* Subtitle tagline */
.mm-tagline {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.32em;
    color: rgba(255,255,255,0.18);
    text-transform: uppercase;
    margin-bottom: 28px;
    margin-left: 4px;
    animation: mm-enter 0.6s ease-out 0.35s both;
}

/* Personal best stats card */
.mm-stats-personal {
    display: flex;
    flex-direction: column;
    gap: 0px;
    margin-bottom: 28px;
    animation: mm-enter 0.6s ease-out 0.5s both;
    background-color: rgba(10, 4, 28, 0.85);
    border: 2px solid rgba(120,80,220,0.35);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 4px 4px 0px rgba(0,0,0,0.60);
    width: 280px;
}
/* Single stat row inside the card */
.mm-sp-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 12px;
    padding: 12px 18px;
    border-bottom: 1px solid rgba(120,80,220,0.12);
}

/* Hover effect per row */
.mm-sp-row:hover {
    background-color: rgba(120,80,220,0.08);
}

.mm-sp-icon {
    font-size: 18px;
    width: 26px;
    text-align: center;
    flex-shrink: 0;
}

.mm-sp-val {
    font-size: 18px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: 0.02em;
    flex-shrink: 0;
}

.mm-sp-lbl {
    font-size: 10px;
    font-weight:900;
    bottom: 100px;
    color: rgba(160,130,250,0.55);
    text-transform: uppercase;
    letter-spacing: 0.2em;
    align-self: flex-end;
    padding-bottom: 2px;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Version tag bottom-left */
.mm-ver {
    font-size: 10px;
    font-weight: 600;
    color: rgba(255,255,255,0.08);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    animation: mm-enter 0.5s ease-out 0.7s both;
    margin-top: 4px;
    margin-left: 4px;
}

/*      SECTION 2 — RIGHT SIDE : play button + tab buttons      */
/* ──────────────────────────────────────────────────────────── */
/* ──────────────────────────────────────────────────────────── */
/* ────────── Right side — play button and tab panels ───────── */
.mm-right {
    width: 380px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    padding-right: 72px;
    gap: 8px;
    pointer-events: none;
}

/* Wrapper for play button — handles entrance animation */
.mm-play-wrap {
    animation: mm-enter 0.7s ease-out 0.4s both;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    margin-bottom: 6px;
}
/* Play button — cel-shaded raised tile */
.mm-play {
    position: relative;
    overflow: hidden;
    background-color: #00ff22;
    border: 2px solid #4ade80;
    border-radius: 10px;
    /* hard offset shadow = raised tile feel */
   // box-shadow: 4px 4px 0px #052e16, inset 0px 1px 0px rgba(255,255,255,0.10);
    color: white;
    font-size: 24px;
    font-weight: 900;
    letter-spacing: 0.22em;
    padding-top: 26px;
    padding-bottom: 26px;
    cursor: pointer;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 14px;
    pointer-events: all;
    animation: play-pulse 2.5s ease-in-out infinite alternate;
    transition: box-shadow 0.08s, transform 0.08s;
}

.mm-play.mm-play-locked {
    opacity: 0.35;
    cursor: default;
}

.mm-play.mm-play-locked:hover {
    background-color: #7c3aed;
}

/* Play button — slow purple pulse */
@keyframes play-glow {
    0%   { background-color: #28d937; }
    100% { background-color: #3aed49; }
}

@keyframes play-pulse {
    0%   { border-color: rgba(74,222,128,0.70); }
    100% { border-color: rgba(74,222,128,1.00); }
}

.mm-play:hover {
    background-color: #00ff62;
    box-shadow: 6px 6px 0px #052e16, inset 0px 1px 0px rgba(255,255,255,0.12);
}

.mm-play:active {
    transform: translate(3px, 3px);
    box-shadow: 1px 1px 0px #196e0e;
}

/* Shine sweep across play button */
.mm-play-shine {
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: 35%;
    background-color: rgba(255,255,255,0.06);
    animation: shine 4s ease-in-out infinite;
    pointer-events: none;
}

@keyframes shine {
    0%   { transform: translateX(-180%); }
    35%  { transform: translateX(420%); }
    100% { transform: translateX(420%); }
}
/* ------------------ Multiplayer button ------------------- */
/* Wrapper for multiplayer button — handles entrance animation */
.mm-multiplayer-wrap {
    animation: mm-enter 0.7s ease-out 0.45s both;
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

/* Multiplayer button — hero CTA */
.mm-multiplayer {
    position: relative;
    overflow: hidden;
    background-color: #f8050546;
    border: 2px solid rgba(250, 139, 139, 0.55);
    border-radius: 18px;
    color: white;
    font-size: 14px;
    font-weight: 900;
    letter-spacing: 0.18em;
    padding-top: 28px;
    padding-bottom: 28px;
    cursor: pointer;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 1px;
    pointer-events: all;
    animation: multiplayer-glow 2.3s ease-in-out infinite alternate;
}

/* Multiplayer button — slow purple pulse */
// @keyframes multiplayer-glow {
//     0%   { background-color: #0583f8; }
//     100% { background-color: #3ad8ed; }
// }

//.mm-play:hover { opacity: 0.88; }

/* Shine sweep across play button */
// .mm-multiplayer-shine {
//     position: absolute;
//     top: 0;
//     bottom: 0;
//     left: 0;
//     width: 35%;
//     background-color: rgba(0, 204, 255, 0.07);
//     animation: shine 3.5s ease-in-out infinite;
//     pointer-events: none;
// }

@keyframes mm-multiplayer-shine {
    0%   { transform: translateX(-180%); }
    40%  { transform: translateX(400%); }
    100% { transform: translateX(400%); }
}

/* ── Secondary tab buttons — leaderboard / stats / shop ──────── */
.mm-tabs {
    display: flex;
    flex-direction: column;
    gap: 6px;
    animation: mm-enter 0.6s ease-out 0.55s both;
}

.mm-tab {
    background-color: rgba(15, 8, 35, 0.80);
    border: 2px solid rgba(80,50,140,0.40);
    border-radius: 8px;
    box-shadow: 3px 3px 0px rgba(0,0,0,0.50);
    color: rgba(200,180,255,0.50);
    font-size: 14px;
    font-weight: 700;
    padding: 13px 16px;
    cursor: pointer;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    pointer-events: all;
    transition: background-color 0.08s, border-color 0.08s, box-shadow 0.08s, transform 0.08s;
    letter-spacing: 0.04em;
    overflow: hidden;
    width: 100%;
}

.mm-tab:hover {
    background-color: rgba(80,40,160,0.25);
    border-color: rgba(140,100,255,0.55);
    color: rgba(220,200,255,0.85);
    box-shadow: 4px 4px 0px rgba(0,0,0,0.60);
}

.mm-tab:active {
    transform: translate(2px, 2px);
    box-shadow: 1px 1px 0px rgba(0,0,0,0.50);
}

/* Active tab */
.mm-tab.on {
    background-color: rgba(80,30,180,0.30);
    border-color: rgba(167,139,250,0.70);
    color: #c4b5fd;
    box-shadow: 4px 4px 0px #1a0640;
    /* left accent bar */
    border-left-width: 4px;
}

/* Fragment count pill inside shop tab */
.mm-frags-pill {
    margin-left: auto;
    background-color: #6d28d9;
    border: 1px solid #a78bfa;
    color: white;
    font-size: 11px;
    font-weight: 900;
    border-radius: 6px;
    padding: 3px 8px;
    box-shadow: 2px 2px 0px #2d0e6e;
}

/* locked when menu tutorial */
.mm-tab.mm-tab-tut-locked {
    opacity: 0.35;
    cursor: default;
    pointer-events: none;
}

/* ── Tab content panels — leaderboard / stats / shop ─────────── */
.mm-panel {
    top: 0;
    bottom: 0;
    // left: 400px;   /* tune this — pushes right edge of mm-left */
    // right: 170px;  /* mm-right width */
    background-color: transparent;
    border: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    pointer-events: all;
    padding: 0;
}

// Add a background (light) when a tab button is opened
// .mm-panel-backdrop {
//     position: absolute;
//     top: 0;
//     left: 0;
//     right: 0;
//     bottom: 0;
//     background-color: rgba(4,1,13,0.82);
//     pointer-events: none;
// }

/* Panel section header */
.mm-panel-hd {
    font-size: 11px;
    font-weight: 900;
    color: rgba(200,180,255,0.60);
    letter-spacing: 0.26em;
    text-transform: uppercase;
    border-bottom: 2px solid rgba(120,80,220,0.20);
    padding-bottom: 10px;
    margin-bottom: 4px;
}

/* Empty state message */
.mm-panel-empty {
    font-size: 12px;
    color: rgba(255,255,255,0.20);
    padding-top: 10px;
    padding-bottom: 10px;
}


/* ──────────────────────────────────────────────────────────── */
/* SECTION 5 — LEADERBOARD ROWS                               */
/* ──────────────────────────────────────────────────────────── */

.mm-lb-row {
    display: flex;
    flex-direction: row;
    width: 100%;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border-radius: 8px;
    border: 1px solid rgba(80,50,140,0.12);
    background-color: rgba(255,255,255,0.02);
    transition: background-color 0.08s, border-color 0.08s;
}

.mm-lb-row:hover {
    background-color: rgba(80,40,160,0.10);
    border-color: rgba(120,80,220,0.25);
}

/* Top 3 gold row */
.mm-lb-row:first-child {
    background-color: rgba(120,80,10,0.18);
    border-color: rgba(251,191,36,0.35);
    box-shadow: 3px 3px 0px rgba(60,30,0,0.60);
}

/* Top 3 silver row */
.mm-lb-row:nth-child(2) {
    background-color: rgba(60,70,100,0.18);
    border-color: rgba(180,190,210,0.30);
    box-shadow: 3px 3px 0px rgba(20,25,40,0.60);
}

/* Top 3 bronze row */
.mm-lb-row:nth-child(3) {
    background-color: rgba(100,50,10,0.15);
    border-color: rgba(180,110,50,0.30);
    box-shadow: 3px 3px 0px rgba(40,15,0,0.60);
}

/* Current player row */
.mm-lb-row.me {
    background-color: rgba(80,30,180,0.22);
    border: 2px solid rgba(167,139,250,0.50);
    box-shadow: 3px 3px 0px rgba(20,0,60,0.65);
}

.mm-lb-rank {
    font-size: 16px;
    width: 32px;
    flex-shrink: 0;
    text-align: center;
}

/* Rank number for positions 4+ */
.mm-lb-rank-num {
    font-size: 11px;
    font-weight: 900;
    color: rgba(160,140,200,0.40);
    width: 32px;
    text-align: center;
    letter-spacing: 0.04em;
}

.mm-lb-name {
    flex: 1;
    font-size: 14px;
    font-weight: 700;
    color: rgba(220,210,255,0.70);
    letter-spacing: 0.04em;
}

.mm-lb-row.me .mm-lb-name {
    color: #e9d5ff;
    font-weight: 900;
}

/* Wave badge */
.mm-lb-wave {
    font-size: 10px;
    font-weight: 700;
    color: rgba(160,140,200,0.40);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    background-color: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 4px;
    padding: 2px 7px;
}

.mm-lb-score {
    font-size: 15px;
    font-weight: 900;
    color: #a78bfa;
    letter-spacing: 0.04em;
    min-width: 70px;
    text-align: right;
    text-shadow: 1px 1px 0px rgba(40,0,80,0.80);
}

.mm-lb-row:first-child .mm-lb-score { color: #fbbf24; text-shadow: 1px 1px 0px rgba(80,40,0,0.80); }
.mm-lb-row:nth-child(2) .mm-lb-score { color: #cbd5e1; text-shadow: 1px 1px 0px rgba(20,25,40,0.80); }
.mm-lb-row:nth-child(3) .mm-lb-score { color: #d97706; text-shadow: 1px 1px 0px rgba(60,25,0,0.80); }
.mm-lb-row.me .mm-lb-score { color: #c4b5fd; }

/* ──────────────────────────────────────────────────────────── */
/*                  SECTION 6 — STATS ROWS                      */
/* ──────────────────────────────────────────────────────────── */

/** Stats grid — 2 columns */
.mm-stats-grid {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 8px;
}

/* Big hero stat — spans full width, for best score */
.mm-srow-hero {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 18px 14px;
    border-radius: 10px;
    background-color: rgba(80,30,180,0.18);
    border: 2px solid rgba(167,139,250,0.35);
    box-shadow: 4px 4px 0px rgba(20,0,60,0.65);
    gap: 4px;
}

.mm-srow-hero .mm-slbl {
    font-size: 10px;
    letter-spacing: 0.22em;
    color: rgba(180,160,240,0.50);
    text-transform: uppercase;
}

.mm-srow-hero .mm-sval {
    font-size: 36px;
    font-weight: 900;
    color: #a78bfa;
    text-shadow: 2px 2px 0px rgba(40,0,80,0.80);
    letter-spacing: 0.04em;
}

/* Regular stat tile — half width */
.mm-srow {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 10px 14px;
    border-radius: 8px;
    border: 1px solid rgba(80,50,140,0.20);
    background-color: rgba(255,255,255,0.025);
    box-shadow: 3px 3px 0px rgba(0,0,0,0.50);
    width: 100%;
    overflow: hidden;
}

.mm-srow:hover {
    background-color: rgba(80,40,160,0.12);
    border-color: rgba(120,80,220,0.30);
}

.mm-slbl {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: rgba(180,160,240,0.55);
    text-transform: uppercase;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mm-sval {
    font-size: 16px;
    font-weight: 900;
    letter-spacing: 0.04em;
    color: #fbbf24;
    text-shadow: 1px 1px 0px rgba(100,50,0,0.80);
    flex-shrink: 0;
    text-align: right;
}

/* ── Shop panel ───────────────────────────────────────────────── */
.mm-shop-row {
    display: flex;
    flex-direction: row;
    width: 100%; // stretches row
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding-top: 14px;
    padding-bottom: 14px;
    background-color: rgba(80,80,200,0.07);
    border: 1px solid rgba(80,80,200,0.15);
    border-radius: 10px;
    font-size: 12px;
}

.mm-shop-balance {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    background-color: rgba(10,4,28,0.70);
    border: 2px solid rgba(80,200,220,0.20);
    border-radius: 8px;
    box-shadow: 3px 3px 0px rgba(0,0,0,0.50);
}

.mm-shop-balance-icon { font-size: 18px; }

.mm-shop-balance-val {
    font-size: 22px;
    font-weight: 900;
    color: #e9d5ff;
    letter-spacing: 0.02em;
}

.mm-shop-balance-lbl {
    font-size: 11px;
    font-weight: 700;
    color: rgba(100,220,240,0.70);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    align-self: flex-end;
    padding-bottom: 5px;
}

/* Displays our Grid of shoppable modifiers in the Shop card */
.mm-shop-grid {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 10px;
    max-height: 540px;        /* tune this — height of scroll area */
    overflow-y: scroll;       /* enable vertical scroll */
    padding-right: 1px;       /* space for scrollbar so cards don't touch it */
}

/* Scroll bar */

// .mm-shop-grid::-webkit-scrollbar {
//     width: 8px;
// }

// .mm-shop-grid::-webkit-scrollbar-track {
//     background-color: rgba(255,255,255,0.02);
//     border-radius: 4px;
// }

// .mm-shop-grid::-webkit-scrollbar-thumb {
//     background-color: rgba(167,139,250,0.30);
//     border-radius: 4px;
// }

// .mm-shop-grid::-webkit-scrollbar-thumb:hover {
//     background-color: rgba(167,139,250,0.50);
// }

/**/

.mm-mod-card {
    pointer-events: all;
    width: 195px;
    height: 230px;
    /* dark base */
    background-color: rgba(10, 4, 28, 0.88);
    border: 2px solid rgba(80,50,140,0.35);
    border-radius: 10px;
    /* cel-shaded raised tile */
    box-shadow: 4px 4px 0px rgba(0,0,0,0.65), inset 0px 1px 0px rgba(255,255,255,0.04);
    padding: 14px 12px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    transition: border-color 0.1s, background-color 0.1s, box-shadow 0.08s, transform 0.08s;
}

.mm-mod-card:hover {
    border-color: rgba(140,100,255,0.55);
    background-color: rgba(40,15,80,0.70);
    box-shadow: 6px 6px 0px rgba(0,0,0,0.70), inset 0px 1px 0px rgba(255,255,255,0.06);
    transform: translate(-1px, -1px);
}

/* Rarity borders */
.mm-mod-card.rarity-common { border-color: rgba(80,50,140,0.35); }
.mm-mod-card.rarity-rare   {
    border-color: rgba(96,165,250,0.45);
    box-shadow: 4px 4px 0px rgba(0,0,30,0.70);
}
.mm-mod-card.rarity-epic   {
    border-color: rgba(167,139,250,0.55);
    box-shadow: 4px 4px 0px rgba(20,0,60,0.70);
}

.mm-mod-icon {
    font-size: 30px;
    text-align: center;
    margin-bottom: 2px;
}

.mm-mod-name {
    font-size: 13px;
    font-weight: 900;
    color: rgba(240,235,255,0.92);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    letter-spacing: 0.03em;
}

.mm-mod-desc {
    font-size: 11px;
    font-weight: 600;
    color: rgba(180,165,220,0.45);
    text-align: center;
    flex: 1;
}

.mm-mod-footer {
    margin-top: auto;
    width: 100%;
}

.mm-mod-btn {
    width: 100%;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    padding: 9px 0;
    cursor: pointer;
    text-align: center;
    border: 2px solid transparent;
    pointer-events: all;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 4px;
    letter-spacing: 0.05em;
    transition: background-color 0.08s, transform 0.06s, box-shadow 0.06s;
    box-shadow: 2px 2px 0px rgba(0,0,0,0.55);
}

.mm-mod-btn:active {
    transform: translate(1px, 1px);
    box-shadow: 0px 0px 0px rgba(0,0,0,0.55);
}

/* Buy */
.mm-mod-btn.btn-buy {
    background-color: rgba(80,40,180,0.30);
    border-color: rgba(140,100,255,0.55);
    color: #c4b5fd;
    box-shadow: 2px 2px 0px #1a0640;
}
.mm-mod-btn.btn-buy:hover {
    background-color: rgba(100,55,200,0.40);
    border-color: rgba(167,139,250,0.80);
}
.mm-mod-btn.btn-buy.cant-afford {
    background-color: rgba(255,255,255,0.02);
    border-color: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.22);
    cursor: default;
    box-shadow: 2px 2px 0px rgba(0,0,0,0.40);
}

/* Active / owned */
.mm-mod-btn.btn-active {
    background-color: rgba(20,80,50,0.50);
    border-color: rgba(52,211,153,0.65);
    color: #34d399;
    box-shadow: 2px 2px 0px rgba(0,30,15,0.70);
}

/* Equip (inactive) */
.mm-mod-btn.btn-inactive {
    background-color: rgba(30,15,70,0.50);
    border-color: rgba(140,100,255,0.30);
    color: rgba(200,180,255,0.65);
}

.mm-mod-btn.btn-inactive:hover {
    background-color: rgba(60,30,140,0.40);
    border-color: rgba(167,139,250,0.55);
    color: #c4b5fd;
}

/* Slots full */
.mm-mod-btn.btn-capped {
    background-color: rgba(60,10,10,0.40);
    border-color: rgba(248,113,113,0.35);
    color: rgba(248,113,113,0.55);
    cursor: default;
    box-shadow: 2px 2px 0px rgba(40,0,0,0.55);
}

/* Let the player know how many slots are still available */
.mm-shop-slots {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: 7px 12px;
    background-color: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 6px;
}

.mm-shop-slots-lbl {
    color: rgba(255,255,255,0.30);
    font-weight: 600;
    font-size: 11px;
    letter-spacing: 0.06em;
}

.mm-shop-slots-val {
    color: rgba(200,180,255,0.75);
    font-weight: 900;
    font-size: 12px;
}

/* 1 — owned: subtle green border */
.mm-mod-card.owned {
    border-color: rgba(52,211,153,0.40);
    box-shadow: 4px 4px 0px rgba(0,0,0,0.65);
}

/* 2 — capped: red tint for owned but can't equip */
.mm-mod-card.capped {
    border-color: rgba(248,113,113,0.50);
    box-shadow: 4px 4px 0px rgba(40,0,0,0.70);
}

/* 3 — capped-unowned: dimmed for not owned and slots full */
.mm-mod-card.capped-unowned {
    opacity: 0.38;
}

/* 4 — active: green tint — MUST BE LAST to win over everything above */
.mm-mod-card.active {
    border-color: rgba(52,211,153,0.75);
    background-color: rgba(10,40,25,0.70);
    box-shadow: 4px 4px 0px rgba(0,0,0,0.65);
}

/* ── Diagonal drifting shapes ─────────────────────────── */
@keyframes shape-drift {
    0%   { transform: translate(0px, 0px)       rotate(0deg); }
    100% { transform: translate(280px, -280px)   rotate(160deg); }
}

.mm-shape {
    position: absolute;
    pointer-events: none;
    opacity: 0.08; /* always visible — fixed low opacity */
    animation-name: shape-drift;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    animation-direction: alternate; /* bounces back so no jump-reset */
}

.mm-shape.tri {
    width: 0;
    height: 0;
    background: transparent !important; /* triangles use border trick */
}

.mm-shape.sq {
    border-radius: 3px;
}

/* message */

.mm-grid-preview-wrap {
    position: relative;
    width: 420px;    /* was 578px */
    height: 420px;   /* was 578px */
}



/* Centered idle grid messages — same float-up as popups but bigger */
.idle-msg-neutral {
    font-size: 13px;
    color: rgba(255,255,255,0.40);
}
.idle-msg-small {
    font-size: 16px;
    color: rgba(129,140,248,0.90);
}
.idle-msg-nice {
    font-size: 20px;
    color: rgba(52,211,153,0.95);
}
.idle-msg-chain {
    font-size: 24px;
    color: rgba(251,191,36,0.95);
}
.idle-msg-mega {
    font-size: 28px;
    color: rgba(244,114,182,0.95);
}

/* Toggle Button for Grid Farm Idle */
.mm-idle-toggle {
    background-color: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 8px;
    color: rgba(255,255,255,0.50);
    font-size: 30px;
    padding: 15px 10px;
    cursor: pointer;
    pointer-events: all;
	flex-shrink: 0; /* never compress */
    width: 120px;   /* same as label width — keeps val truly centered */
    justify-content: center;   /* button content aligns right */
	right: 5px;
	position: relative;  /* ← THIS was missing — required for ::after to work */
	overflow: hidden; // required to not show sweep outside the button
	
}


.mm-idle-toggle:hover {
    background-color: rgba(255,255,255,0.10);
    color: rgba(255,255,255,0.80);
}

/* on */
.mm-idle-toggle.on {
	animation: none;
    border-color: rgba(129,140,248,0.35);
    color: rgba(129,140,248,0.80);
	letter-spacing: -0.32em;
}

.mm-idle-toggle.on::after {
    display: none;
}

/* off */
.mm-idle-toggle.off {
    animation: toggle-sleep 2.8s ease-in-out infinite;
	letter-spacing: -0.32em;
}

.mm-idle-toggle.off::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: -60%;
    width: 40%;
    background-color: rgba(255,255,255,0.08);
    animation: toggle-sweep 3s ease-in-out infinite;
}

@keyframes toggle-sleep {
    0%   { border-color: rgba(255,255,255,0.06); }
    50%  { border-color: rgba(255,255,255,0.22); background-color: rgba(255,255,255,0.04); }
    100% { border-color: rgba(255,255,255,0.06); }
}

@keyframes toggle-sweep {
    0%   { transform: translateX(0%); }
    40%  { transform: translateX(500%); }
    100% { transform: translateX(500%); }
}

/* Pannels in the center */

.mm-center {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    pointer-events: all;
    min-height: 0;
}

/* Shop tabs (pets, modifiers, ...)*/
.mm-shop-tabs {
    display: flex;
    flex-direction: row;
    gap: 5px;
    margin-bottom: 4px;
    padding-bottom: 12px;
    border-bottom: 2px solid rgba(120,80,220,0.15);
}

.mm-shop-tab {
    background-color: rgba(15,8,35,0.80);
    border: 2px solid rgba(80,50,140,0.35);
    border-radius: 7px;
    box-shadow: 2px 2px 0px rgba(0,0,0,0.50);
    color: rgba(200,180,255,0.45);
    font-size: 12px;
    font-weight: 700;
    padding: 8px 13px;
    cursor: pointer;
    pointer-events: all;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 5px;
    transition: background-color 0.08s, border-color 0.08s, transform 0.08s, box-shadow 0.08s;
}

.mm-shop-tab:hover {
    background-color: rgba(80,40,160,0.20);
    border-color: rgba(140,100,255,0.45);
    color: rgba(220,200,255,0.80);
}

.mm-shop-tab:active {
    transform: translate(1px, 1px);
    box-shadow: 1px 1px 0px rgba(0,0,0,0.50);
}

.mm-shop-tab.on {
    background-color: rgba(80,30,180,0.28);
    border-color: rgba(167,139,250,0.65);
    border-bottom-width: 3px;
    color: #c4b5fd;
    box-shadow: 3px 3px 0px #1a0640;
}

.mm-shop-tab.disabled {
    opacity: 0.40;
    cursor: default;
    pointer-events: none;
}

.mm-shop-tab-coming {
    font-size: 9px;
    font-weight: 900;
    color: rgba(251,191,36,0.70);
    background-color: rgba(251,191,36,0.08);
    border-radius: 4px;
    padding: 2px 5px;
    letter-spacing: 0.05em;
}

/* pet sleeping */ 
.mm-idle-toggle.sleeping {
    background-color: rgba(120,80,220,0.08);
    border-color: rgba(120,80,220,0.20);
    color: rgba(180,150,250,0.60);
    cursor: default;
    animation: pet-sleep 3s ease-in-out infinite;
}

.mm-idle-toggle.sleeping::after {
    display: none;
}

@keyframes pet-sleep {
    0%, 100% { opacity: 0.6; transform: scale(1.0); }
    50%      { opacity: 0.9; transform: scale(1.03); }
}

/* Debug Editor */

.mm-dev-menu {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-top: 12px;
    padding: 8px;
    background-color: rgba(244,114,182,0.05);
    border: 1px dashed rgba(244,114,182,0.30);
    border-radius: 6px;
}

.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);
}

/* ────────────────────────────────────────────────────────────── */
/* ────────────────── Welcome gift overlay ────────────────────── */
/* ────────────────────────────────────────────────────────────── */

.mm-welcome-bg {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: rgba(4, 1, 13, 0.85);
    z-index: 99;
    pointer-events: all;
    animation: welcome-bg-fade 0.4s ease-out both;
}

@keyframes welcome-bg-fade {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

.mm-welcome-gift {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: rgba(20, 8, 50, 0.98);
    border: 2px solid rgba(251, 191, 36, 0.60);
    border-radius: 20px;
    padding: 40px 60px;
    z-index: 100;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    pointer-events: all;
    animation: gift-pop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

@keyframes gift-pop {
    0% { opacity: 0; transform: translate(-50%, -50%) scale(0.5); }
    100% { opacity: 1; transform: translate(-50%, -50%) scale(1.0); }
}

.mm-gift-title {
    font-size: 36px;
    font-weight: 900;
    color: rgba(251, 191, 36, 0.95);
    letter-spacing: 0.15em;
    animation: title-glow 1.5s ease-in-out infinite alternate;
}

@keyframes title-glow {
    0%   { color: rgba(251, 191, 36, 0.80); }
    100% { color: rgba(251, 191, 36, 1.00); }
}

.mm-gift-subtitle {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.60);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    margin-bottom: 12px;
}

.mm-gift-chests {
    display: flex;
    flex-direction: row;
    gap: 20px;
    margin: 12px 0;
}

/* Single chest container — closed or opened */
.mm-gift-chest {
     position: relative;
    width: 180px;
    height: 200px;
    background-color: rgba(255, 255, 255, 0.04);
    border: 2px solid rgba(255, 255, 255, 0.10);
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 16px;
    transition: border-color 0.3s ease, background-color 0.3s ease;
}

/* Active state — pulsing, inviting to click */
.mm-gift-chest.active {
    border-color: rgba(251, 191, 36, 0.80);
    background-color: rgba(251, 191, 36, 0.10);
    cursor: pointer;
    pointer-events: all;
    animation: chest-pulse 0.8s ease-in-out infinite alternate;
}

@keyframes chest-pulse {
    0%   { transform: scale(1.00); border-color: rgba(251, 191, 36, 0.60); }
    100% { transform: scale(1.04); border-color: rgba(251, 191, 36, 1.00); }
}

.mm-gift-chest.active:hover {
    background-color: rgba(251, 191, 36, 0.20);
}

/* Opened state — shows the reward inside */
.mm-gift-chest.opened {
    border-color: rgba(52, 211, 153, 0.50);
    background-color: rgba(52, 211, 153, 0.08);
    animation: chest-open 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

@keyframes chest-open {
    0%   { transform: scale(1.0) rotate(0deg); }
    30%  { transform: scale(0.85) rotate(-3deg); }
    60%  { transform: scale(1.15) rotate(3deg); }
    100% { transform: scale(1.0) rotate(0deg); }
}

/* Chest icon (closed state) */
.mm-chest-icon {
    font-size: 64px;
    animation: chest-bounce 1.2s ease-in-out infinite;
}

@keyframes chest-bounce {
    0%, 100% { transform: translateY(0px); }
    50%      { transform: translateY(-6px); }
}

.mm-chest-label {
    font-size: 11px;
    font-weight: 900;
    color: rgba(251, 191, 36, 0.85);
    letter-spacing: 0.2em;
    margin-top: 4px;
}

/* Gift icon (opened state) */
.mm-gift-icon {
    font-size: 48px;
    animation: gift-reveal 0.6s ease-out both;
}

@keyframes gift-reveal {
    0%   { opacity: 0; transform: scale(0.3); }
    60%  { opacity: 1; transform: scale(1.2); }
    100% { opacity: 1; transform: scale(1.0); }
}

.mm-gift-name {
    font-size: 15px;
    font-weight: 900;
    color: rgba(52, 211, 153, 0.95);
    letter-spacing: 0.05em;
    text-align: center;
}

.mm-gift-desc {
    font-size: 13px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.795);
    text-align: center;
    //line-height: 10.3;
}

/* "Let's play" close button — appears when all chests opened */
.mm-gift-close {
    background-color: rgba(109, 40, 217, 0.50);
    border: 1px solid rgba(167, 139, 250, 0.70);
    border-radius: 12px;
    color: white;
    font-size: 16px;
    font-weight: 900;
    padding: 14px 32px;
    cursor: pointer;
    pointer-events: all;
    letter-spacing: 0.12em;
    margin-top: 12px;
    animation: close-appear 0.5s ease-out both;
}

@keyframes close-appear {
    0%   { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0px); }
}

.mm-gift-close:hover {
    background-color: rgba(109, 40, 217, 0.70);
}

/* Confettis overlay (when gifts) */
.mm-confetti-wrap {
    position: absolute; /* ← fixed instead of absolute */
    top: -20px;
    left: 0;
    right: 0;
    height: 120vh; /* ← taller than screen */
    pointer-events: none;
    overflow: visible; /* ← allow pieces to fall below card */
    z-index: 198; /* ← below the gift card (z-index 100) but above bg (99) */
}

.mm-confetti-piece {
    position: absolute;
    top: -10px;
    border-radius: 2px;
    opacity: 0;
    animation-name: confetti-fall;
    animation-timing-function: ease-in;
    animation-iteration-count: infinite; /* ← loops forever */
    pointer-events: none;
}

@keyframes confetti-fall {
    0%   { opacity: 0;   transform: translateY(-10px) rotate(0deg);   }
    10%  { opacity: 1; }
    90%  { opacity: 0.6; transform: translateY(600px) rotate(540deg); }
    100% { opacity: 0;   transform: translateY(700px) rotate(600deg); }
}

/* ================================================= */
/* ────────────────── SHOP CATALOG ───────────────── */
/* ================================================= */

/* Blast pattern hint — small label below bomb name */
.mm-bomb-hint {
    font-size: 11px;
    font-weight: 700;
    color: rgba(167,139,250,0.60);
    letter-spacing: 0.08em;
    text-align: center;
    text-transform: uppercase;
}

/* Trial badge — shown when player still has trial runs */
.mm-bomb-trial-badge {
    font-size: 11px;
    font-weight: 800;
    color: rgba(251,191,36,0.85);
    background-color: rgba(251,191,36,0.08);
    border: 1px solid rgba(251,191,36,0.25);
    border-radius: 6px;
    padding: 4px 8px;
    text-align: center;
    flex-shrink: 0;
    justify-content: center;
    word-spacing: 0.1em;  
}

/* Bomb cards — taller than modifier cards to fit hint + trial badge */
.mm-bomb-card {
    height: auto;
    min-height: 200px;  /* same as modifier cards — won't shrink below this */
}

// wraps the badge and button, to push them at the bottom
.mm-bomb-footer {
    margin-top: 60px;  /* pushes to bottom */
    display: flex;
    flex-direction: column;
    gap: 6px;
    width: 100%;
}

/* ================================================= */
/* ──────────────── CONSUMABLE TAB ───────────────── */
/* ================================================= */

/* Consumable cards — same as bomb cards */
.mm-consumable-card {
    height: auto;
    min-height: 230px;
}

/* Stock badge — shows how many you own */
.mm-consumable-stock {
    font-size: 11px;
    font-weight: 800;
    color: rgba(52,211,153,0.85);
    background-color: rgba(52,211,153,0.08);
    border: 1px solid rgba(52,211,153,0.25);
    border-radius: 6px;
    padding: 4px 8px;
    text-align: center;
}

/* ================================================= */
/* ──────────────── Pet display card ─────────────── */
/* ================================================= */
.mm-pet-display {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 24px;
    background-color: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 16px;
    margin-bottom: 8px;
}

.mm-pet-emoji {
    font-size: 72px;
    animation: pet-idle 2s ease-in-out infinite alternate;
}

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

.mm-pet-name {
    font-size: 20px;
    font-weight: 900;
    color: white;
}

.mm-pet-level {
    font-size: 12px;
    font-weight: 700;
    color: rgba(167,139,250,0.70);
    letter-spacing: 0.15em;
    text-transform: uppercase;
}

/* XP progress bar */
.mm-pet-xp-track {
    width: 100%;
    height: 8px;
    background-color: rgba(255,255,255,0.06);
    border-radius: 4px;
    overflow: hidden;
}

.mm-pet-xp-fill {
    height: 100%;
    background-color: #a78bfa;
    border-radius: 4px;
    transition: width 0.6s ease;
}

.mm-pet-xp-label {
    font-size: 11px;
    font-weight: 600;
    color: rgba(255,255,255,0.35);
}

/* Next evolution preview */
.mm-pet-next {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 16px;
    background-color: rgba(255,255,255,0.02);
    border: 1px dashed rgba(255,255,255,0.08);
    border-radius: 12px;
}

.mm-pet-next-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255,255,255,0.30);
    text-transform: uppercase;
    letter-spacing: 0.12em;
}

.mm-pet-next-emoji {
    font-size: 36px;
    opacity: 0.35;
    filter: grayscale(100%);
}

.mm-pet-next-hint {
    font-size: 11px;
    font-weight: 600;
    color: rgba(255,255,255,0.25);
}

/* ----------------------------------------- */
/* ---------- Pet Big In Menu Tab ---------- */
/* ----------------------------------------- */

.mm-pet-unlock-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(4, 1, 13, 0.88);
    z-index: 110;
    pointer-events: all;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    animation: welcome-bg-fade 0.4s ease-out both;
}
.mm-pet-unlock-popup {
    position: relative;
    top: 180px; 
    left: 340px;
    background-color: rgba(20, 8, 50, 0.98);
    border: 2px solid rgba(167,139,250,0.55);
    border-radius: 20px;
    box-shadow: 6px 6px 0px rgba(20,0,60,0.80);
    padding: 48px 64px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    pointer-events: all;
    animation: gift-pop 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

/* ── Pet card — replaces the entire farm tab content ── */

.mm-pet-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0px;
    width: 100%;
}

.mm-pet-unlock-eyebrow {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.28em;
    color: rgba(167,139,250,0.70);
    text-transform: uppercase;
}

/* ── Big pet emoji — hero display ── */
.mm-pet-hero-emoji {
    font-size: 140px;
    animation: pet-float 3s ease-in-out infinite alternate;
    margin-bottom: 4px;
    margin-top: 20px;
}
.mm-pet-emoji image
{
    width: 72px;
    height: 72px;
}

.mm-pet-hero-emoji image
{
    width: 130px;
    height: 130px;
}

@keyframes pet-float {
    0%   { transform: translateY(0px) scale(1.0); }
    100% { transform: translateY(-10px) scale(1.04); }
}

/* ── Pet name ── */
.mm-pet-hero-name {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: 0.04em;
    text-shadow: 2px 2px 0px rgba(80,30,180,0.60);
}

/* ── Level badge ── */
.mm-pet-hero-level {
    font-size: 11px;
    font-weight: 800;
    color: rgba(167,139,250,0.65);
    text-transform: uppercase;
    letter-spacing: 0.22em;
    margin-top: 2px;
    margin-bottom: 14px;
}


.mm-pet-unlock-title {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: 0.04em;
}

.mm-pet-unlock-desc {
    font-size: 14px;
    font-weight: 600;
    color: rgba(200,185,255,0.60);
    text-align: center;
    letter-spacing: 0.04em;
}

.mm-pet-unlock-egg {
    font-size: 96px;
    animation: pet-float 2s ease-in-out infinite alternate;
    margin: 8px 0;
}

/* ── XP bar track ── */
.mm-pet-xp-track {
    width: 100%;
    height: 10px;
    background-color: rgba(255,255,255,0.05);
    border-radius: 5px;
    border: 1px solid rgba(120,80,220,0.20);
    overflow: hidden;
    margin-bottom: 6px;
}

.mm-pet-xp-fill {
    height: 100%;
    background-color: #7c3aed;
    border-radius: 5px;
    transition: width 0.8s ease;
    box-shadow: 2px 0px 0px rgba(167,139,250,0.40);
}

.mm-pet-xp-label {
    font-size: 10px;
    font-weight: 600;
    color: rgba(180,160,240,0.40);
    letter-spacing: 0.08em;
    margin-bottom: 20px;
    align-self: flex-end;
}

/* ── Stat bonuses grid ── */
.mm-pet-stats {
    display: flex;
    flex-direction: column;
    gap: 0px;
    width: 100%;
    border: 2px solid rgba(120,80,220,0.25);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 4px 4px 0px rgba(0,0,0,0.55);
}

.mm-pet-stat-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    border-bottom: 1px solid rgba(120,80,220,0.10);
    background-color: rgba(10,4,28,0.70);
    gap: 10px;
}

.mm-pet-stat-row:last-child {
    border-bottom: none;
}

.mm-pet-stat-row:hover {
    background-color: rgba(80,40,160,0.12);
}

.mm-pet-stat-icon {
    font-size: 15px;
    width: 22px;
    text-align: center;
    flex-shrink: 0;
}

.mm-pet-stat-lbl {
    font-size: 11px;
    font-weight: 700;
    color: rgba(180,160,240,0.55);
    text-transform: uppercase;
    letter-spacing: 0.10em;
    flex: 1;
}

.mm-pet-stat-val {
    font-size: 13px;
    font-weight: 900;
    color: #4ade80;
    text-shadow: 1px 1px 0px rgba(0,40,15,0.80);
    letter-spacing: 0.04em;
}

/* Locked stat — not yet unlocked at current level */
.mm-pet-stat-val.locked {
    color: rgba(255,255,255,0.15);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
}

/* ── Next evolution teaser ── */
.mm-pet-next-hint {
    margin-top: 14px;
    font-size: 10px;
    font-weight: 700;
    color: rgba(160,130,250,0.30);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    align-self: center;
}

/* Name pet */
.mm-pet-name-edit {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
    pointer-events: all;
}

.mm-pet-name-prompt {
    font-size: 10px;
    font-weight: 700;
    color: rgba(167,139,250,0.60);
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.mm-pet-name-field {
    background-color: rgba(10,4,28,0.95);
    border: 2px solid rgba(167,139,250,0.70);
    border-radius: 8px;
    padding: 10px 18px;
    min-width: 240px;
    box-shadow: 3px 3px 0px rgba(0,0,0,0.55), inset 0px 1px 0px rgba(167,139,250,0.10);
    animation: name-field-pulse 1.5s ease-in-out infinite alternate;
}

@keyframes name-field-pulse {
    0%   { border-color: rgba(167,139,250,0.50); }
    100% { border-color: rgba(167,139,250,1.00); }
}

.mm-pet-name-cursor {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 0.04em;
    min-height: 28px;
}

.mm-pet-name-hint {
    font-size: 9px;
    font-weight: 600;
    color: rgba(167,139,250,0.35);
    letter-spacing: 0.10em;
    text-align: center;
}

.mm-pet-name-buttons {
    display: flex;
    flex-direction: row;
    gap: 8px;
    margin-top: 4px;
}

.mm-pet-name-confirm {
    background-color: rgba(20,80,50,0.60);
    border: 2px solid rgba(52,211,153,0.60);
    border-radius: 6px;
    box-shadow: 2px 2px 0px rgba(0,30,15,0.60);
    color: #4ade80;
    font-size: 14px;
    font-weight: 900;
    padding: 8px 16px;
    cursor: pointer;
    pointer-events: all;
}

.mm-pet-name-cancel {
    background-color: rgba(60,10,10,0.50);
    border: 2px solid rgba(248,113,113,0.40);
    border-radius: 6px;
    box-shadow: 2px 2px 0px rgba(40,0,0,0.55);
    color: rgba(248,113,113,0.80);
    font-size: 14px;
    font-weight: 900;
    padding: 8px 16px;
    cursor: pointer;
    pointer-events: all;
}

.mm-pet-name-preview {
    font-size: 22px;
    font-weight: 700;
    color: #ffffff;
    background-color: rgba(10,4,28,0.95);
    border: 2px solid rgba(167,139,250,0.70);
    border-radius: 8px;
    padding: 10px 18px;
    min-width: 240px;
    min-height: 46px;
    letter-spacing: 0.04em;
    animation: name-field-pulse 1.2s ease-in-out infinite alternate;
}

@keyframes name-field-pulse {
    0%   { border-color: rgba(167,139,250,0.40); }
    100% { border-color: rgba(167,139,250,1.00); }
}

/* hide the actual TextEntry so it doesn't show as a floating box */
.mm-pet-name-input {
    width: 240px;
    height: 48px;
    background-color: rgba(10,4,28,0.95);
    border: 2px solid rgba(167,139,250,0.70);
    border-radius: 8px;
    padding: 10px 18px;
    color: #ffffff;
    font-size: 20px;
    font-weight: 700;
    letter-spacing: 0.04em;
    pointer-events: all;
    animation: name-field-pulse 1.2s ease-in-out infinite alternate;
    box-shadow: 3px 3px 0px rgba(0,0,0,0.55);
}

.mm-pet-name-input-wrap {
    width: 240px;
    height: 48px;
    pointer-events: all;
}

/* Evolution pet */
.mm-evo-bg {
    position: absolute;
    top: 0px;
    left: 0px;
    right: 0px;
    bottom: 0px;
    z-index: 200;
    pointer-events: all;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    background-color: #04010d;
}

.mm-evo-pet {
    font-size: 260px;
}
.mm-evo-pet image {
    width: 220px;
    height: 220px;
}

.cat-sprite {
    width: 64px;
    height: 64px;
    background-image: url("ui/icons/cat/cat_normal_spritesheet.png");
    background-repeat: no-repeat;
    background-size: auto 100%; // adjust if needed
    animation: cat-walk 0.8s steps(4) infinite; // steps(N) = N frames
}

@keyframes cat-walk {
    from { background-position: 0 0; }
    to   { background-position: -256px 0; } // frame_width_px × total_frames
}
.mm-evo-egg-icon
{
    width: 200px;
    height: 200px;
}

.mm-evo-pet.evo-start { animation: evo-wobble 0.6s ease-in-out infinite; }
.mm-evo-pet.evo-shake { animation: evo-shake  0.2s ease-in-out infinite; }
.mm-evo-pet.evo-flash { font-size: 200px; }
.mm-evo-pet.evo-reveal { animation: evo-appear 0.6s ease-out both; }

@keyframes evo-wobble {
    0%   { margin-left: 0px; }
    25%  { margin-left: -10px; }
    75%  { margin-left: 10px; }
    100% { margin-left: 0px; }
}

@keyframes evo-shake {
    0%   { margin-left: 0px; }
    20%  { margin-left: -14px; }
    40%  { margin-left: 14px; }
    60%  { margin-left: -8px; }
    80%  { margin-left: 8px; }
    100% { margin-left: 0px; }
}

@keyframes evo-appear {
    0%   { opacity: 0; margin-top: 30px; }
    100% { opacity: 1; margin-top: 0px; }
}

.mm-evo-flash {
    position: absolute;
    top: 0px; left: 0px; right: 0px; bottom: 0px;
    background-color: #ffffff;
    animation: evo-flash-fade 0.8s ease-out forwards;
    pointer-events: none;
}

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

.mm-evo-name {
    font-size: 36px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: 0.06em;
    animation: evo-appear 0.6s ease-out both;
}

.mm-evo-level {
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.28em;
    color: rgba(167,139,250,0.65);
    text-transform: uppercase;
    animation: evo-appear 0.6s ease-out 0.15s both;
}

@keyframes evo-text-appear {
    0%   { opacity: 0; margin-top: 20px; }
    100% { opacity: 1; margin-top: 0px; }
}

.mm-evo-text {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: 0.06em;
    text-align: center;
    text-shadow: 2px 2px 0px rgba(0,0,0,0.80);
    animation: evo-text-appear 0.4s ease-out both;
    margin-bottom: 20px;
}

/* Pulse the text during shake phase */
.mm-evo-text.evo-shake {
    animation: evo-text-pulse 0.6s ease-in-out infinite alternate;
}

@keyframes evo-text-pulse {
    0%   { opacity: 0.7; }
    100% { opacity: 1.0; }
}

/* Revealed text gets a gold color */
.mm-evo-text.evo-reveal {
    color: #fbbf24;
    font-size: 32px;
    text-shadow: 2px 2px 0px rgba(100,50,0,0.80);
    animation: evo-text-appear 0.5s ease-out both;
}

/* Edit Pet Name Button */
.mm-pet-name-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-bottom: 4px;
}


// .mm-pet-name-row:hover {
//     background-color: rgba(167,139,250,0.18);
//     border-color: rgba(167,139,250,0.55);
// }

.mm-pet-rename-btn:hover {
    background-color: rgba(167,139,250,0.15);
}

.mm-pet-rename-btn {
    font-size: 14px;
    background-color: rgba(20,20,50,.80);
    border: none;
    cursor: pointer;
    pointer-events: all;
    padding: 4px 4px;
    border-radius: 4px;
    transition: background-color 0.1s;
}

/* LEADERBOARD */ 
.mm-lb-mode-tabs {
    display: flex;
    flex-direction: row;
    gap: 6px;
    margin-bottom: 8px;
}

.mm-lb-mode-btn {
    background-color: rgba(15,8,35,0.80);
    border: 2px solid rgba(80,50,140,0.35);
    border-radius: 7px;
    color: rgba(200,180,255,0.45);
    font-size: 12px;
    font-weight: 700;
    padding: 7px 16px;
    cursor: pointer;
    pointer-events: all;
    transition: background-color 0.08s, border-color 0.08s;
}

.mm-lb-mode-btn:hover {
    background-color: rgba(80,40,160,0.20);
    border-color: rgba(140,100,255,0.45);
    color: rgba(220,200,255,0.80);
}

.mm-lb-mode-btn.on {
    background-color: rgba(80,30,180,0.28);
    border-color: rgba(167,139,250,0.65);
    color: #c4b5fd;
    box-shadow: 3px 3px 0px #1a0640;
}

.mm-lb-pet-badge {
    font-size: 12px;
    font-weight: 700;
    color: rgba(167,139,250,0.70);
    background-color: rgba(167,139,250,0.08);
    border: 1px solid rgba(167,139,250,0.20);
    border-radius: 5px;
    padding: 2px 7px;
    flex-shrink: 0;
}

/* The top best Chain Reaction Sequences (+score) */
.mm-lb-name-col {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
    overflow: hidden;
}

.mm-lb-chain-title {
    font-size: 10px;
    font-weight: 700;
    color: rgba(251,191,36,0.65);
    letter-spacing: 0.08em;
}

.mm-lb-chain-badge {
    font-size: 12px;
    font-weight: 900;
    color: rgba(196,181,253,0.90);
    background-color: rgba(139,92,246,0.12);
    border: 1px solid rgba(139,92,246,0.25);
    border-radius: 5px;
    padding: 2px 8px;
    flex-shrink: 0;
}

/* TOP 100 CONTRIBUTORS FORCE PANEL PROGRESS BAR (left side) */
/* ── Force panel on left side ── */
.mm-force-panel {
    display: flex;
    flex-direction: column;
    gap: 6px;
    width: 280px;
    padding: 12px 16px;
    background-color: rgba(10,4,28,0.85);
    border: 2px solid rgba(251,191,36,0.25);
    border-radius: 12px;
    box-shadow: 4px 4px 0px rgba(0,0,0,0.60);
    margin-top: 8px;
    animation: mm-enter 0.6s ease-out 0.6s both;
}

.mm-force-panel-lbl {
    font-size: 10px;
    font-weight: 800;
    color: rgba(251,191,36,0.70);
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.mm-force-panel-sub {
    font-size: 10px;
    font-weight: 600;
    color: rgba(255,255,255,0.25);
    letter-spacing: 0.06em;
}

.mm-force-bar-track {
    width: 100%;
    height: 8px;
    background-color: rgba(255,255,255,0.06);
    border-radius: 4px;
    overflow: hidden;
}

.mm-force-bar-fill {
    height: 100%;
    background-color: rgba(251,191,36,0.85);
    border-radius: 4px;
    transition: width 0.8s ease;
}

/* ── Force summary inside leaderboard tab ── */
.mm-force-summary {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px 14px;
    background-color: rgba(251,191,36,0.06);
    border: 1px solid rgba(251,191,36,0.20);
    border-radius: 8px;
    margin-bottom: 8px;
}

.mm-force-summary-lbl {
    font-size: 10px;
    font-weight: 800;
    color: rgba(251,191,36,0.70);
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.mm-force-summary-pct {
    font-size: 12px;
    font-weight: 900;
    color: rgba(251,191,36,0.90);
    align-self: flex-end;
}

/* ── Mini contribution bar per row ── */
.mm-force-bar-mini-wrap {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 6px;
    flex: 1;
}

.mm-force-bar-mini {
    flex: 1;
    height: 6px;
    background-color: rgba(255,255,255,0.06);
    border-radius: 3px;
    overflow: hidden;
}

.mm-force-bar-mini-fill {
    height: 100%;
    background-color: rgba(251,191,36,0.70);
    border-radius: 3px;
}

.mm-force-pct {
    font-size: 10px;
    font-weight: 700;
    color: rgba(251,191,36,0.70);
    width: 36px;
    text-align: right;
    flex-shrink: 0;
}


/* HALL OF FAME (TOP 3 PLAYERS) left side */
.mm-hall-of-fame {
    display: flex;
    flex-direction: column;
    gap: 0px;
    width: 280px;
    background-color: rgba(10,4,28,0.85);
    border: 2px solid rgba(251,191,36,0.25);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 4px 4px 0px rgba(0,0,0,0.60);
    margin-top: 8px;
    animation: mm-enter 0.6s ease-out 0.55s both;
}

.mm-hof-title {
    font-size: 10px;
    font-weight: 800;
    color: rgba(251,191,36,0.70);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    padding: 10px 16px 8px;
    border-bottom: 1px solid rgba(251,191,36,0.12);
}

.mm-hof-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    padding: 9px 16px;
    border-bottom: 1px solid rgba(255,255,255,0.04);
}

.mm-hof-row:last-child {
    border-bottom: none;
}

.mm-hof-medal {
    font-size: 16px;
    flex-shrink: 0;
}

.mm-hof-name {
    font-size: 12px;
    font-weight: 700;
    color: rgba(220,210,255,0.75);
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mm-hof-score {
    font-size: 12px;
    font-weight: 900;
    color: rgba(251,191,36,0.85);
    flex-shrink: 0;
}

/* Pet unlocked visual (tab) */
.mm-tab-locked {
    position: relative;
    border-color: rgba(251,191,36,0.30);
    background-color: rgba(251,191,36,0.06);
}

.mm-tab-lock-hint {
    display: contents;
    font-size: 14px;
    font-weight: 700;
    color: rgba(251,191,36,0.55);
    letter-spacing: 0.08em;
    margin-top: 2px;
}

.mm-pet-locked-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 40px 30px;
}

.mm-pet-locked-chest {
    font-size: 80px;
    animation: chest-card-idle 2s ease-in-out infinite alternate;
}

.mm-pet-locked-title {
    font-size: 28px;
    font-weight: 900;
    color: rgba(255,255,255,0.20);
    letter-spacing: 0.3em;
}

.mm-pet-locked-desc {
    word-spacing: 1px;
    font-size: 14px;
    font-weight: 600;
    color: rgba(255,255,255,0.40);
}

.mm-pet-locked-count {
    color: #fbbf24;
    font-weight: 900;
    padding: 0px 6px;
    margin-top: -2px;
}

.mm-pet-locked-progress {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    width: 100%;
}

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

.mm-pet-locked-fill {
    position: absolute;
    top: 0; left: 0; bottom: 0;
    background-color: #fbbf24;
    border-radius: 3px;
    min-width: 0px;
}

.mm-pet-locked-pips {
    display: flex;
    flex-direction: row;
    gap: 12px;
}

.mm-pet-locked-pip {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 2px rgba(255,255,255,0.12);
    background-color: rgba(255,255,255,0.04);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 800;
    color: rgba(255,255,255,0.25);
}

.mm-pet-locked-pip.done {
    border-color: rgba(251,191,36,0.60);
    background-color: rgba(251,191,36,0.12);
    color: #fbbf24;
}

/* ------------------------------------*/
/* ---------- Community Tab ---------- */
/* ------------------------------------*/

.mm-comm-from {
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 0.28em;
    color: rgba(251,191,36,0.50);
    text-transform: uppercase;
    margin-bottom: 2px;
}

.mm-comm-greeting {
    font-size: 22px;
    font-weight: 900;
    color: rgba(255,255,255,0.92);
    margin-bottom: 10px;
}

.mm-comm-body {
    font-size: 13px;
    color: rgba(255,255,255,0.55);
    margin-bottom: 16px;
    font-style: italic;
}

.mm-comm-devnote {
    display: flex;
    flex-direction: column;
    gap: 5px;
    background-color: rgba(251,191,36,0.05);
    border: 1px solid rgba(251,191,36,0.20);
    border-left-width: 3px;
    border-left-color: rgba(251,191,36,0.60);
    border-radius: 8px;
    padding: 10px 14px;
    margin-bottom: 4px;
}

.mm-comm-devnote-label {
    font-size: 9px;
    font-weight: 900;
    color: rgba(251,191,36,0.70);
    letter-spacing: 0.22em;
}

.mm-comm-devnote-text {
    font-size: 13px;
    color: rgba(255,255,255,0.65);
    font-style: italic;
}

.mm-letter-divider {
    height: 1px;
    background-color: rgba(255,255,255,0.06);
    margin: 14px 0;
}

.mm-letter-section-title {
    font-size: 15px;
    font-weight: 700;
    color: rgba(255,255,255,0.30);
    letter-spacing: 0.12em;
    margin-bottom: 10px;
}

.mm-community-event-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(255,255,255,0.04);
}

.mm-event-badge {
    font-size: 9px;
    font-weight: 800;
    padding: 3px 8px;
    border-radius: 4px;
    min-width: 54px;
    text-align: center;
}

.mm-badge-green  { background-color: rgba(52,211,153,0.12);  color: rgba(52,211,153,0.95);  border: 1px solid rgba(52,211,153,0.25); }
.mm-badge-purple { background-color: rgba(167,139,250,0.12); color: rgba(167,139,250,0.95); border: 1px solid rgba(167,139,250,0.25); }
.mm-badge-yellow { background-color: rgba(251,191,36,0.12);  color: rgba(251,191,36,0.95);  border: 1px solid rgba(251,191,36,0.25); }
.mm-badge-gray   { background-color: rgba(255,255,255,0.04); color: rgba(255,255,255,0.35); border: 1px solid rgba(255,255,255,0.08); }

.mm-event-text {
    font-size: 12px;
    color: rgba(255,255,255,0.55);
}

.mm-comm-discord-row {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.mm-comm-discord-text {
    font-size: 12px;
    color: rgba(255,255,255,0.35);
    font-style: italic;
}

.mm-discord-btn {
    background-color: rgba(88,101,242,0.85);
    border: 1px solid rgba(120,130,255,0.50);
    border-radius: 8px;
    color: rgba(255,255,255,0.95);
    font-size: 13px;
    font-weight: 800;
    padding: 11px 22px;
    cursor: pointer;
    pointer-events: all;
    letter-spacing: 0.05em;
    box-shadow: 3px 3px 0px rgba(20,25,80,0.70);
}

.mm-discord-btn:hover {
    background-color: rgba(88,101,242,1.0);
}

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

/* CREDITS PAGE */
.mm-credits-section {
    margin-bottom: 28px;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(167,139,250,0.12);
}

.mm-credits-section.last {
    border-bottom: none;
}

.mm-credits-role {
    font-size: 13px;
    color: rgba(167,139,250,0.7);
    margin-bottom: 10px;
    margin-right: 5px;
}

.mm-credits-name {
    font-size: 15px;
    color: rgba(255,255,255,0.9);
    margin-bottom: 6px;
    margin-right: 5px;
}

.mm-credits-footer {
    margin-top: 28px;
    font-size: 12px;
    color: rgba(255,255,255,0.3);
}

.mm-musiclink-btn{
    background-color:#b82525;
    border: 1px solid rgba(120,130,255,0.50);
    border-radius: 8px;
    color: rgba(255,255,255,0.95);
    font-size: 13px;
    font-weight: 800;
    padding: 5px 10px;
    margin-top: -10px;
    cursor: pointer;
    pointer-events: all;
    letter-spacing: 0.05em;
    box-shadow: 3px 3px 0px rgba(240, 80, 80, 0.712);
}

/* CREDITS PAGE */
.mm-multiplayer.mm-mode-locked {
    opacity: 0.35;
    cursor: default;
    animation: none;
}

.survival-loadout-card {
    max-width: 620px;
    max-height: 85vh;       /* cap relative to viewport */
    overflow-y: auto;       /* let the whole card scroll if content is tall */
    padding: 32px 48px;     /* slightly tighter than default mm-welcome-gift padding */
}

.survival-loadout-hint {
    font-size: 12px;
    font-weight: 800;
    color: rgba(251,191,36,0.75);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 18px;
}

.survival-bomb-grid {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
    overflow-y: visible;
}

.survival-bomb-card {
    position: relative;
    width: 140px;
    background-color: rgba(15, 8, 32, 0.95);
    border: 2px solid rgba(140,110,230,0.40);
    border-radius: 12px;
    padding: 18px 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    pointer-events: all;
    transition: border-color 0.12s, background-color 0.12s, transform 0.08s;
}

.survival-bomb-card:hover {
    border-color: rgba(180,150,255,0.70);
    background-color: rgba(70,30,150,0.30);
    transform: translateY(-2px);
}

.survival-bomb-card.selected {
    border-color: rgba(74,222,128,0.90);
    background-color: rgba(34,150,90,0.18);
    box-shadow: 0px 0px 18px rgba(74,222,128,0.20);
}

.survival-bomb-check {
    position: absolute;
    top: 8px;
    right: 10px;
    font-size: 16px;
    font-weight: 900;
    color: #4ade80;
    text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
}

.survival-bomb-icon {
    font-size: 36px;
    line-height: 1;
}

.survival-bomb-name {
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: 0.02em;
}

.survival-bomb-hint {
    font-size: 11px;
    font-weight: 700;
    color: rgba(220,210,255,0.75);
    text-align: center;
    line-height: 1.4;
}